<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-29109313</id><updated>2012-02-16T15:01:42.527-06:00</updated><category term='education'/><category term='user experience'/><category term='knowledge management'/><category term='IE6'/><category term='google maps'/><category term='ajax'/><category term='programming'/><category term='smartlist'/><category term='pathways'/><category term='rants'/><category term='browser support'/><category term='redesign'/><category term='inspiration'/><category term='css frameworks'/><category term='jquery'/><category term='accessibility'/><category term='social capital'/><category term='blogosphere'/><category term='ie7.js'/><category term='stumble'/><category term='CMS'/><category term='performance'/><category term='version control'/><category term='clients'/><category term='data'/><category term='magnolia'/><category term='usability'/><category term='brand'/><title type='text'>ennuigination</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>50</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-29109313.post-4218921715236412353</id><published>2010-07-16T11:49:00.004-05:00</published><updated>2010-07-16T13:41:16.600-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='knowledge management'/><title type='text'>Higher Ed Institutional Blogging Server Usage Guidelines</title><content type='html'>&lt;p&gt;This was one of those projects that I thought would take half a day and ended up taking a week. If I&amp;rsquo;m going to sink that much work into it, I might as well share what I&amp;rsquo;ve learned.&lt;/p&gt;
&lt;p&gt;I started out looking for lists of higher ed blogs. I didn&amp;rsquo;t realize at the time that I&amp;rsquo;d be documenting the process so I didn&amp;rsquo;t save the lists I ended up using. Those playing along at home can &lt;a href="http://lmgtfy.com/?q=higher+education+blogs"&gt;Google it&lt;/a&gt;. Once I found my lists, I looked for blogs that lived on a .edu top level domain. Then I looked for any links that mentioned usage guidelines or policies, went to the home page and performed site searches, played around with the wording, and whatever else I could come up with to locate the sort of info I was hunting for. Sometimes the leads I found would be walled up inside an intranet, which is understandable if not a little disappointing. I ended up with around a dozen promising leads.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blogs.nd.edu/web-musings/2010/05/20/from-zero-to-blogging-in-five-easy-steps/"&gt;From Zero to Blogging in Five Easy Steps&lt;/a&gt; on the &lt;a href="http://blogs.nd.edu/web-musings/"&gt;Web Musings blog&lt;/a&gt; from &lt;a href="http://agency.nd.edu/"&gt;agency.nd.edu&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.brandeis.edu/about/"&gt;Blogs @ Brandeis University&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.stanford.edu/node/61"&gt;Create A Blog at Stanford&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ncs.mc.vanderbilt.edu/RSSBlog/BlogRequestVUMC.aspx"&gt;Requesting a Blog Account from Vanderbilt Medical Center&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://its.vanderbilt.edu/vublogs/faq"&gt;Vanderbilt ITS Blog FAQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://spark.uit.tufts.edu/toolList.jsp?toolName=blog"&gt;Blogs on Spark at Tufts&lt;/a&gt; (I love the whole idea of &lt;a href="https://spark.uit.tufts.edu/"&gt;Spark&lt;/a&gt; by the way)&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www2.binghamton.edu/social-media/recommendations.html"&gt;General Recommendations for Social Media from Binghamton U&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://web.uflib.ufl.edu/libsys/mmm/BlogProcedures.html"&gt;Policies and Procedures for Smathers Libraries Blog at Uni of Florida&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.oregonstate.edu/help/"&gt;Wordpress Help Blog at Oregon State U&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://comp-resources.berkeley.edu/policy/socialmedia.html"&gt;Berkely breaks out the P-word for Use of Social Media&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.yale.edu/its/policy/web.html"&gt;Yale University Web institutional server policies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.law.harvard.edu/terms-of-use/"&gt;Weblogs at Harvard Law School &amp;raquo; Terms of Use&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From those links, I collected about 60 phrases from 7 different schools (in no particular order).&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Brandeis&lt;/li&gt;
&lt;li&gt;Stanford&lt;/li&gt;
&lt;li&gt;Vanderbilt&lt;/li&gt;
&lt;li&gt;Tufts&lt;/li&gt;
&lt;li&gt;University of Florida&lt;/li&gt;
&lt;li&gt;Yale&lt;/li&gt;
&lt;li&gt;Harvard&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I grouped those phrases under common themes and came up with these 9 common elements.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The stuff you publish here is visible to the entire internet and could be cached by search engines or archiving services for a very long time.&lt;/li&gt;
&lt;li&gt;This server/service exists to support the mission of the institution, if your intended purpose is at odds with this then there are many freely available blogging services available to you elsewhere.&lt;/li&gt;
&lt;li&gt;Content, including comment moderation, is your responsibility (and liability), not the institution&amp;rsquo;s.&lt;/li&gt;
&lt;li&gt;Don&amp;rsquo;t do anything stupid or illegal.&lt;/li&gt;
&lt;li&gt;We can re-purpose your content (from RSS feeds to marketing campaigns).&lt;/li&gt;
&lt;li&gt;We can delete your stuff, up to and including your entire blog/account.&lt;/li&gt;
&lt;li&gt;We provide a certain level of technical service/support but there are limits. (Varies widely from one institution to the next)&lt;/li&gt;
&lt;li&gt;We can change our minds about any of this with or without notice.&lt;/li&gt;
&lt;li&gt;Explanation of process for obtaining an account.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Not every school covered all those points. Not surprisingly, &lt;a href="http://blogs.law.harvard.edu/terms-of-use/"&gt;Harvard Law has one of the most thorough documents&lt;/a&gt; and they&amp;rsquo;ve been nice enough to license their terms under a &lt;a href="http://creativecommons.org/licenses/by-sa/3.0/us/"&gt;Creative Commons Attribution-Share Alike 3.0 United States License&lt;/a&gt;. If you need to put together some guidelines in a hurry I recommend starting there and adjusting the wording to meet the needs of your particular institution.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-4218921715236412353?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/4218921715236412353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=4218921715236412353' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/4218921715236412353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/4218921715236412353'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2010/07/higher-ed-institutional-blogging-server.html' title='Higher Ed Institutional Blogging Server Usage Guidelines'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-93007330145823847</id><published>2010-07-07T14:38:00.008-05:00</published><updated>2010-07-07T16:30:11.621-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='performance'/><category scheme='http://www.blogger.com/atom/ns#' term='css frameworks'/><title type='text'>Performance: Where Do We Draw the Line?</title><content type='html'>&lt;p&gt;I endorse the majority of the content of the following presentation:&lt;/p&gt;
&lt;h2&gt;The Top 5 Mistakes of Massive CSS&lt;/h2&gt;
&lt;object width="400" height="250"&gt;&lt;param name="movie" value="http://www.youtube.com/v/j6sAm7CLoCQ&amp;amp;hl=en_US&amp;amp;fs=1"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/j6sAm7CLoCQ&amp;amp;hl=en_US&amp;amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="400" height="250"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;h2&gt;Dissension!&lt;/h2&gt;
&lt;p&gt;It&amp;rsquo;s not even so much that I disagree with what she&amp;rsquo;s saying up there. I just apparently have a slightly different comfort level than she does when it comes to altering my work flow for the sake of performance gains. The only point I really have exceptions to is the idea of avoiding IDs in CSS.&lt;/p&gt;
&lt;p&gt;I think IDs make perfect sense for major page areas like &lt;code&gt;#footer&lt;/code&gt; or for elements that are truly unique like &lt;code&gt;#logo&lt;/code&gt;. But I&amp;rsquo;m not gonna throw the baby out with the bathwater. She&amp;rsquo;s right that there are &lt;em&gt;trade offs&lt;/em&gt; in using IDs and we should be &lt;strong&gt;aware&lt;/strong&gt; of them so that we can &lt;strong&gt;make informed decisions&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;It only took me 159 lines of CSS to find a use of an ID that makes me &lt;a href="http://www.osnews.com/story/19266/WTFs_m"&gt;question the sanity of my former self&lt;/a&gt;. Applying a class to objects using the same design pattern would be more elegant in that situation. I probably have a dozen or so more of those I can clean up when I find the time (HA!).&lt;/p&gt;
&lt;h3&gt;Case in Point: Facebook&lt;/h3&gt;
&lt;p&gt;The primary case study in the above presentation is Facebook. Here&amp;rsquo;s &lt;a href="http://static.ak.fbcdn.net/rsrc.php/z81GG/hash/f5ka64c5.css"&gt;some CSS from Facebook&lt;/a&gt;. I see around 20 instances of IDs used in selectors; stuff like &lt;code&gt;#content&lt;/code&gt; and &lt;code&gt;#pageFooter&lt;/code&gt;. Even her primary example doesn&amp;rsquo;s practice what she&amp;rsquo;s preaching with full on zealotry.&lt;/p&gt;
&lt;p&gt;We are quick to forget that presentations like this are designed for oral communication. Nicole wants the people &lt;em&gt;in that room&lt;/em&gt; with her to leave the conference with a few big ideas stuck in their minds. But it gets recorded and published as a video. That changes the medium. The medium is the message. So the audience expectations change. We non-attendees fault the speaker for presenting things in absolute terms. We expect video content to at least pay lip service to the fairness doctrine. But that&amp;rsquo;s really not fair.&lt;/p&gt;
&lt;h3&gt;Presentational Class Names&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://www.stubbornella.org/content/"&gt;Nicole&lt;/a&gt; doesn&amp;rsquo;t spend a lot of time on this, but she mentions it in passing, so I&amp;rsquo;ll take a moment to get up on this particular soap box. My biggest problem with stuff like &lt;a href="http://oocss.org/template.html"&gt;object oriented CSS&lt;/a&gt; and &lt;a href="http://developer.yahoo.com/yui/grids/"&gt;YUI Grids&lt;/a&gt; is presentational class names. That clashes with philosophies like &lt;a href="http://www.alistapart.com/articles/behavioralseparation"&gt;the separation of content, style, and behavior&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Progressive_enhancement"&gt;progressive enhancement&lt;/a&gt; that I&amp;rsquo;m not willing to sacrifice. And not &lt;a href="http://jeffcroft.com/blog/2007/aug/09/myth-content-and-presentation-separation/"&gt;just because Zeldman told me so&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I honestly believe these ideals bring value to the work I do above and beyond simple efficiency. That probably has something to do with the fact that I work in-house. The few client based projects I&amp;rsquo;ve done over the years tend to get junked up with presentational markup a couple hours after the client takes over anyway. If that was the &lt;strong&gt;only&lt;/strong&gt; sort of work I ever did, I&amp;rsquo;d probably be in love with &lt;a href="http://www.blueprintcss.org/"&gt;Blueprint&lt;/a&gt;. I can see the value of such frameworks for quickly producing a &lt;a href="http://www.uxbooth.com/blog/concerning-fidelity-and-design/"&gt;high fidelity prototype&lt;/a&gt;. But just like a mechanical engineer wouldn&amp;rsquo;t put a part produced by a &lt;a href="http://en.wikipedia.org/wiki/3D_printing"&gt;3-D printer&lt;/a&gt; into a final product, I wouldn&amp;rsquo;t put a CSS framework into production.&lt;/p&gt;
&lt;p&gt;But that&amp;rsquo;s an informed decision I&amp;rsquo;ve made for myself. Your millage &lt;strong&gt;will&lt;/strong&gt; vary. Just try to keep yourself up to date and consider the trade offs so that you can make your own informed decisions.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-93007330145823847?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/93007330145823847/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=93007330145823847' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/93007330145823847'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/93007330145823847'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2010/07/performance-where-do-we-draw-line.html' title='Performance: Where Do We Draw the Line?'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-375018052036018320</id><published>2010-07-06T12:55:00.006-05:00</published><updated>2010-07-06T14:07:44.817-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><title type='text'>White Space Matters</title><content type='html'>&lt;p&gt;So far today I&amp;rsquo;ve read two really good articles dealing with web analytics: &lt;a href="http://blogs.omniture.com/2010/06/17/metrics-and-dimensions-and-reports-oh-my/"&gt;Metrics and Dimensions and Reports &amp;mdash; Oh My!&lt;/a&gt; from the Omniture blog and &lt;a href="http://www.uxbooth.com/blog/complete-beginners-guide-to-web-analytics-and-measurement/"&gt;The Complete Beginner&amp;#8217;s Guide to Web Analytics and Measurement&lt;/a&gt; from UX Booth.&lt;/p&gt;
&lt;p&gt;But seeing these two articles open in adjacent tabs lead me to do some side by side comparisons. I noticed my gut reaction the the Omniture blog was &amp;#8220;I don&amp;rsquo;t want to read &lt;em&gt;all that&lt;/em&gt;!&amp;#8221; The UX Booth article was considerably longer, but it didn&amp;rsquo;t illicit such a knee jerk reaction. I think the reason for this is white space. UX Booth gives their content a bit more room to breath.&lt;/p&gt;
&lt;h2&gt;Screen Shots&lt;/h2&gt;
&lt;p&gt;The following screen shots show the first 910-ish characters of content. I attempted to preserve the white space between this content and off screen elements. I&amp;rsquo;m using PNG-8 to avoid jpg compression making the text fuzzy. The downside is the photo from Oniture ends up looking a bit off. My fault, not theirs. Also, Blogger appears to be scaling these images to be the same width. The Omniture Blog screen shot is actually about 20px wider, for what that&amp;rsquo;s worth.&lt;/p&gt;
&lt;h3&gt;Omniture Blog&lt;/h3&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_t7JJgFKP-NY/TDNxNUEol8I/AAAAAAAAAF4/0q2gYr7gkZc/s1600/Omniture_Blog.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 193px;" src="http://3.bp.blogspot.com/_t7JJgFKP-NY/TDNxNUEol8I/AAAAAAAAAF4/0q2gYr7gkZc/s400/Omniture_Blog.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5490856844235151298" /&gt;&lt;/a&gt;
&lt;h3&gt;UX Booth&lt;/h3&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_t7JJgFKP-NY/TDNxNAmHWBI/AAAAAAAAAFw/-qMasB5rTnI/s1600/UX_Booth.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 309px;" src="http://1.bp.blogspot.com/_t7JJgFKP-NY/TDNxNAmHWBI/AAAAAAAAAFw/-qMasB5rTnI/s400/UX_Booth.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5490856839006869522" /&gt;&lt;/a&gt;
&lt;h2&gt;Counting Pixels&lt;/h2&gt;
&lt;p&gt;The textual content here are within 5 characters of each other, 912 characters for Omniture vs. 907 characters for UX Booth. Both spend some screen real estate on supplementary content, a photo or a table of contents. But I find the UX Booth content much more inviting. And by my count they use about &lt;strong&gt;a third more pixels&lt;/strong&gt; to present their content.&lt;/p&gt;
&lt;h2&gt;What Do You Think?&lt;/h2&gt;
&lt;p&gt;Do you notice a difference anything like what I&amp;rsquo;m talking about? Or am I &amp;#8220;putting the &amp;lsquo;anal&amp;rsquo; in analytics&amp;#8221; to borrow a phrase from the Omniture blog? Either way, the quality of the content in both cases is top notch. Definitely worth a read if you&amp;rsquo;re into that sort of thing.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-375018052036018320?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/375018052036018320/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=375018052036018320' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/375018052036018320'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/375018052036018320'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2010/07/white-space-matters.html' title='White Space Matters'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_t7JJgFKP-NY/TDNxNUEol8I/AAAAAAAAAF4/0q2gYr7gkZc/s72-c/Omniture_Blog.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-3215742349768189888</id><published>2010-06-18T14:37:00.003-05:00</published><updated>2010-06-18T17:53:56.825-05:00</updated><title type='text'>Costs and Benefits of Website Performance Optimization</title><content type='html'>&lt;p&gt;My &lt;a href="http://dap6000.blogspot.com/2010/06/guide-to-intermediate-website.html"&gt;last post&lt;/a&gt; covered the how, and supplied just enough explanation of the benefits to keep people interested. Here I will try to go in depth with my analysis of the costs and benefits of the website performance optimization steps I have taken this week.&lt;/p&gt;
&lt;h2&gt;Costs&lt;/h2&gt;
&lt;p&gt;I spent the better part of 4 days this week focusing on site performance enhancements. Since we launched the new site in November of last year, I may have spent as much as another 4 days on similar tasks. That time would have been spread out an hour here and there rather than devoting most of a work week to it. Let&amp;rsquo;s say in total I&amp;rsquo;ve spent 2 work weeks setting up these various tweaks. Setup is a one time cost.&lt;/p&gt;
&lt;p&gt;Some of the costs stretch back to developing the redesign. It took a lot more time to separate content, presentation, and behavior than it would have to just export from Photoshop to Dreamweaver and push the results up the server. At the time I was thinking more in terms of quality than performance. But it would paint an incomplete picture to ignore that end of the equation. There are benefits above and beyond performance for that sort of attention to detail as well. The overall code footprint for the new site is about 4% that of the old site, and normal site maintenance takes a fraction of the time it once did.  I&amp;rsquo;ve blogged on that topic before, although that entry is on the WordPress server which is currently down for maintenance. (3.0 upgrade! w00t!)&lt;/p&gt;
&lt;p&gt;My previous entry included a step by step altered workflow for doing something as simple as adding a new icon to our footer. But to be honest most of the extra steps are trivial. A couple of extra &amp;#8220;Save As&amp;#8221; in DreamWeaver and minifying the results. These things take seconds or even a fraction of a second. That&amp;rsquo;s nothing compared to the normal edit/test/debug/publish cycle. Occasionally we&amp;rsquo;ll hit an image sprite edit that will be complex. But most of those will be as simple as sticking the new element at the bottom of the existing file and saving under a new version number. I&amp;rsquo;d be hard pressed to assign a number to this cost. As a percentage of my time, it&amp;rsquo;s probably somewhere in the single digits, low single digits at that.&lt;/p&gt;
&lt;h3&gt;Costs in a Nutshell&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Two weeks&lt;/strong&gt; up front &lt;em&gt;to set up&lt;/em&gt;. Another &lt;strong&gt;two to four weeks per year&lt;/strong&gt; in &lt;em&gt;recurring maintenance costs&lt;/em&gt;. And the &lt;strong&gt;human capital investment&lt;/strong&gt; to have the people around to pull it off. (That means pay enough to hire someone who knows what they are doing, or put forth the time and effort to educate yourself.)&lt;/p&gt;
&lt;h2&gt;Benefits&lt;/h2&gt;
&lt;p&gt;To gauge our progress, I ran tests on &lt;a href="http://www.webpagetest.org/"&gt;WebPageTest.org&lt;/a&gt; as I completed each website performance optimization milestone. Full results for each test are publicly available and linked from a &lt;a href="http://dap6000.blogspot.com/2010/06/optimizing-site-performance.html"&gt;previous post&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As a sample, I selected 3 pages. The &lt;strong&gt;home page&lt;/strong&gt; represents only itself, but alone it accounts for &lt;em&gt;35% of our page views&lt;/em&gt;. The &lt;strong&gt;Current Students page&lt;/strong&gt; represents our role based navigation pages and the A to Z index. These are only 6 such pages, but together they account for another &lt;em&gt;28% of our page views&lt;/em&gt;. The &lt;strong&gt;Library home page&lt;/strong&gt; represents around 250 department/office home pages which taken together account for about &lt;em&gt;21% of our page views&lt;/em&gt;. I didn&amp;rsquo;t worry about the remaining 16% of our traffic since it&amp;rsquo;s distributed across about 1,000 other pages.&lt;/p&gt;
&lt;h3&gt;Definitions&lt;/h3&gt;
&lt;dl&gt;
&lt;dt&gt;Start Render&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;The time it takes for the browser to receive enough information to start rendering the page. In other words, time our users spend staring at a blank screen.&lt;/p&gt;&lt;/dd&gt;
&lt;dt&gt;Load Time&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;Time spent loading all requests, including AJAX calls made after &lt;code&gt;onLoad&lt;/code&gt; (when the status bar says &amp;#8220;Done&amp;#8221;) For us this includes loading Google Analytics.&lt;/p&gt;&lt;/dd&gt;
&lt;dt&gt;Total Requests&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;The number of calls between the browser and the web server. Think of the server as something like a switch board operator answering around 7 calls per second, non stop. Each request is one of these calls. Our server must get really annoyed with us.&lt;/p&gt;&lt;/dd&gt;
&lt;dt&gt;Total kb&lt;/dt&gt;
&lt;dd&gt;&lt;p&gt;Total kilobytes transferred throughout the entire process. This should translate directly to bandwidth cost savings.&lt;/p&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;h3&gt;Estimates &amp;amp; Assumptions&lt;/h3&gt;
&lt;p&gt;Based on Google Analytics data collected over the past 7 months, we average around &lt;strong&gt;3,000,000 page views per year&lt;/strong&gt;. Traffic calculations for the pages represented by our test sample are outlined above. Approximately 25% of our page views are from first time visitors, placing the other 75% into the repeat views category.&lt;/p&gt;
&lt;h3&gt;Home Page&lt;/h3&gt;
&lt;h4&gt;First Visit&lt;/h4&gt;
&lt;p&gt;3,000,000 total page views times 35% represented in sample times 25% first time visitors = 262,500 per year.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
  &lt;tr&gt;
     &lt;th&gt;Metric&lt;/th&gt;
      &lt;th&gt;Monday&amp;rsquo;s Test&lt;/th&gt;
      &lt;th&gt;Thursday&amp;rsquo;s Test&lt;/th&gt;
      &lt;th&gt;Difference&lt;/th&gt;
      &lt;th&gt;Percent Change&lt;/th&gt;
      &lt;th&gt;Yearly Savings&lt;/th&gt;
  &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
   &lt;tr&gt;
     &lt;td&gt;Start Render&lt;/td&gt;
      &lt;td&gt;1.089s&lt;/td&gt;
      &lt;td&gt;0.854s&lt;/td&gt;
      &lt;td&gt;-0.235s&lt;/td&gt;
      &lt;td&gt;21.579% decrease&lt;/td&gt;
      &lt;td&gt;0.7 days&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Load Time&lt;/td&gt;
      &lt;td&gt;6.350s&lt;/td&gt;
      &lt;td&gt;4.250s&lt;/td&gt;
      &lt;td&gt;-2.1s&lt;/td&gt;
      &lt;td&gt;33.071% decrease&lt;/td&gt;
      &lt;td&gt;6.4 days&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Total Requests&lt;/td&gt;
      &lt;td&gt;41&lt;/td&gt;
      &lt;td&gt;26&lt;/td&gt;
      &lt;td&gt;-15 &lt;/td&gt;
      &lt;td&gt;36.585% decrease&lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Total kb&lt;/td&gt;
      &lt;td&gt;524&lt;/td&gt;
      &lt;td&gt;389&lt;/td&gt;
      &lt;td&gt;-135&lt;/td&gt;
      &lt;td&gt;25.763 % decrease&lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
   &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Repeat Visit&lt;/h4&gt;
&lt;p&gt;3,000,000 total page views times 35% represented in sample times 75% repeat visitors = 787,500 per year.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
  &lt;tr&gt;
     &lt;th&gt;Metric&lt;/th&gt;
      &lt;th&gt;Monday&amp;rsquo;s Test&lt;/th&gt;
      &lt;th&gt;Thursday&amp;rsquo;s Test&lt;/th&gt;
      &lt;th&gt;Difference&lt;/th&gt;
      &lt;th&gt;Percent Change&lt;/th&gt;
      &lt;th&gt;Yearly Savings&lt;/th&gt;
  &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
   &lt;tr&gt;
     &lt;td&gt;Start Render&lt;/td&gt;
      &lt;td&gt;0.920s&lt;/td&gt;
      &lt;td&gt;0.523s&lt;/td&gt;
      &lt;td&gt;-0.397s&lt;/td&gt;
      &lt;td&gt;43.152 % decrease&lt;/td&gt;
      &lt;td&gt;3.6 days&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Load Time&lt;/td&gt;
      &lt;td&gt;2.572s&lt;/td&gt;
      &lt;td&gt;1.462s&lt;/td&gt;
      &lt;td&gt;-1.110s&lt;/td&gt;
      &lt;td&gt;43.157 % decrease&lt;/td&gt;
      &lt;td&gt;10.1 days&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Total Requests&lt;/td&gt;
      &lt;td&gt;38&lt;/td&gt;
      &lt;td&gt;4&lt;/td&gt;
      &lt;td&gt;-34&lt;/td&gt;
      &lt;td&gt;89.474 % decrease&lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;total kb&lt;/td&gt;
      &lt;td&gt;59&lt;/td&gt;
      &lt;td&gt;52&lt;/td&gt;
      &lt;td&gt;-7&lt;/td&gt;
      &lt;td&gt;11.864 % decrease&lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
   &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Current Students Page&lt;/h3&gt;
&lt;h4&gt;First Visit&lt;/h4&gt;
&lt;p&gt;3,000,000 total page views times 28% represented in sample times 25% first time visitors = 210,000 per year.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
  &lt;tr&gt;
     &lt;th&gt;Metric&lt;/th&gt;
      &lt;th&gt;Monday&amp;rsquo;s Test&lt;/th&gt;
      &lt;th&gt;Thursday&amp;rsquo;s Test&lt;/th&gt;
      &lt;th&gt;Difference&lt;/th&gt;
      &lt;th&gt;Percent Change&lt;/th&gt;
      &lt;th&gt;Yearly Savings&lt;/th&gt;
  &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
   &lt;tr&gt;
     &lt;td&gt;Start Render&lt;/td&gt;
      &lt;td&gt;1.075s&lt;/td&gt;
      &lt;td&gt;0.785s&lt;/td&gt;
      &lt;td&gt;-0.290s&lt;/td&gt;
      &lt;td&gt;26.977 % decrease&lt;/td&gt;
      &lt;td&gt;0.7 days&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Load Time&lt;/td&gt;
      &lt;td&gt;7.162s&lt;/td&gt;
      &lt;td&gt;4.342s&lt;/td&gt;
      &lt;td&gt;-2.820s&lt;/td&gt;
      &lt;td&gt;39.374 % decrease&lt;/td&gt;
      &lt;td&gt;6.9 days&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Total Requests&lt;/td&gt;
      &lt;td&gt;38&lt;/td&gt;
      &lt;td&gt;26&lt;/td&gt;
      &lt;td&gt;-12&lt;/td&gt;
      &lt;td&gt;31.579 % decrease&lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Total kb&lt;/td&gt;
      &lt;td&gt;521&lt;/td&gt;
      &lt;td&gt;382&lt;/td&gt;
      &lt;td&gt;-139&lt;/td&gt;
      &lt;td&gt;26.679 % decrease&lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
   &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Repeat Visit&lt;/h4&gt;
&lt;p&gt;3,000,000 total page views times 28% represented in sample times 75% repeat visitors = 630,000 per year.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
  &lt;tr&gt;
     &lt;th&gt;Metric&lt;/th&gt;
      &lt;th&gt;Monday&amp;rsquo;s Test&lt;/th&gt;
      &lt;th&gt;Thursday&amp;rsquo;s Test&lt;/th&gt;
      &lt;th&gt;Difference&lt;/th&gt;
      &lt;th&gt;Percent Change&lt;/th&gt;
      &lt;th&gt;Yearly Savings&lt;/th&gt;
  &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
   &lt;tr&gt;
     &lt;td&gt;Start Render&lt;/td&gt;
      &lt;td&gt;1.222s&lt;/td&gt;
      &lt;td&gt;0.519s&lt;/td&gt;
      &lt;td&gt;-0.703s&lt;/td&gt;
      &lt;td&gt;57.529 % decrease&lt;/td&gt;
      &lt;td&gt;5.1 days&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Load Time&lt;/td&gt;
      &lt;td&gt;2.625s&lt;/td&gt;
      &lt;td&gt;1.475s&lt;/td&gt;
      &lt;td&gt;-1.15s&lt;/td&gt;
      &lt;td&gt;43.81 % decrease&lt;/td&gt;
      &lt;td&gt;8.4 days&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Total Requests&lt;/td&gt;
      &lt;td&gt;35&lt;/td&gt;
      &lt;td&gt;4&lt;/td&gt;
      &lt;td&gt;-31&lt;/td&gt;
      &lt;td&gt;88.571 % decrease&lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Total kb&lt;/td&gt;
      &lt;td&gt;66&lt;/td&gt;
      &lt;td&gt;63&lt;/td&gt;
      &lt;td&gt;-3&lt;/td&gt;
      &lt;td&gt;4.545 % decrease&lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
   &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Library Home Page&lt;/h3&gt;
&lt;h4&gt;First Visit&lt;/h4&gt;
&lt;p&gt;3,000,000 total page views times 21% represented in sample times 25% first time visitors = 157,500 per year.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
  &lt;tr&gt;
     &lt;th&gt;Metric&lt;/th&gt;
      &lt;th&gt;Monday&amp;rsquo;s Test&lt;/th&gt;
      &lt;th&gt;Thursday&amp;rsquo;s Test&lt;/th&gt;
      &lt;th&gt;Difference&lt;/th&gt;
      &lt;th&gt;Percent Change&lt;/th&gt;
      &lt;th&gt;Yearly Savings&lt;/th&gt;
  &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
   &lt;tr&gt;
     &lt;td&gt;Start Render&lt;/td&gt;
      &lt;td&gt;1.379s&lt;/td&gt;
      &lt;td&gt;0.943s&lt;/td&gt;
      &lt;td&gt;-0.436s&lt;/td&gt;
      &lt;td&gt;31.617 % decrease&lt;/td&gt;
      &lt;td&gt;0.8 days&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Load Time&lt;/td&gt;
      &lt;td&gt;4.994s&lt;/td&gt;
      &lt;td&gt;4.983s&lt;/td&gt;
      &lt;td&gt;-0.011s&lt;/td&gt;
      &lt;td&gt;0.22 % decrease&lt;/td&gt;
      &lt;td&gt;0.02 days&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Total Requests&lt;/td&gt;
      &lt;td&gt;33&lt;/td&gt;
      &lt;td&gt;22&lt;/td&gt;
      &lt;td&gt;-11&lt;/td&gt;
      &lt;td&gt;33.333 % decrease&lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Total kb&lt;/td&gt;
      &lt;td&gt;470&lt;/td&gt;
      &lt;td&gt;369&lt;/td&gt;
      &lt;td&gt;-101&lt;/td&gt;
      &lt;td&gt;21.489 % decrease&lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
   &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h4&gt;Repeat Visit&lt;/h4&gt;
&lt;p&gt;3,000,000 total page views times 21% represented in sample times 75% repeat visitors = 472,500 per year.&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
  &lt;tr&gt;
     &lt;th&gt;Metric&lt;/th&gt;
      &lt;th&gt;Monday&amp;rsquo;s Test&lt;/th&gt;
      &lt;th&gt;Thursday&amp;rsquo;s Test&lt;/th&gt;
      &lt;th&gt;Difference&lt;/th&gt;
      &lt;th&gt;Percent Change&lt;/th&gt;
      &lt;th&gt;Yearly Savings&lt;/th&gt;
  &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
   &lt;tr&gt;
     &lt;td&gt;Start Render&lt;/td&gt;
      &lt;td&gt;1.249s&lt;/td&gt;
      &lt;td&gt;0.515s&lt;/td&gt;
      &lt;td&gt;-0.734s&lt;/td&gt;
      &lt;td&gt;58.767 % decrease&lt;/td&gt;
      &lt;td&gt;4.0 days&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Load Time&lt;/td&gt;
      &lt;td&gt;2.266s&lt;/td&gt;
      &lt;td&gt;1.472s&lt;/td&gt;
      &lt;td&gt;-0.794s&lt;/td&gt;
      &lt;td&gt;35.04 % decrease&lt;/td&gt;
      &lt;td&gt;4.3 days&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Total Requests&lt;/td&gt;
      &lt;td&gt;30&lt;/td&gt;
      &lt;td&gt;3&lt;/td&gt;
      &lt;td&gt;-27&lt;/td&gt;
      &lt;td&gt;90.000 % decrease&lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
   &lt;/tr&gt;
   &lt;tr&gt;
     &lt;td&gt;Total kb&lt;/td&gt;
      &lt;td&gt;70&lt;/td&gt;
      &lt;td&gt;80&lt;/td&gt;
      &lt;td&gt;+10&lt;/td&gt;
      &lt;td&gt;14.286 % increase&lt;/td&gt;
      &lt;td&gt;&amp;nbsp;&lt;/td&gt;
   &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Benefits in a Nutshell&lt;/h3&gt;
&lt;p&gt;Over the next year, visitors to our site will spend about &lt;strong&gt;15 fewer days&lt;/strong&gt; staring at a &lt;em&gt;blank screen&lt;/em&gt; waiting for our server to respond and about &lt;strong&gt;36 fewer days&lt;/strong&gt; waiting for our pages to &lt;em&gt;completely load&lt;/em&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-3215742349768189888?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/3215742349768189888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=3215742349768189888' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/3215742349768189888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/3215742349768189888'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2010/06/costs-and-benefits-of-website.html' title='Costs and Benefits of Website Performance Optimization'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-5782226003793949955</id><published>2010-06-18T09:56:00.005-05:00</published><updated>2010-06-18T17:55:52.731-05:00</updated><title type='text'>Guide to Intermediate Website Performance Optimization</title><content type='html'>&lt;p&gt;If you need a primer on website performance optimization, check out &lt;a href="http://code.google.com/speed/page-speed/docs/rules_intro.html"&gt;these best practices from Google&lt;/a&gt; and &lt;a href="http://developer.yahoo.com/performance/rules.html"&gt;these best practices from Yahoo&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The Easy Stuff&lt;/h2&gt;
&lt;p&gt;As long as we&amp;rsquo;re &lt;a href="http://www.zeldman.com/dwws/"&gt;designing our sites with web standards&lt;/a&gt; some of these practices will already be familiar.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;External CSS and JS files&lt;/li&gt;
&lt;li&gt;Avoid CSS expressions and filters&lt;/li&gt;
&lt;li&gt;Lighter markup compared to table based layouts (fewer DOM elements)&lt;/li&gt;
&lt;li&gt;Specify a character set early&lt;/li&gt;
&lt;li&gt;Avoid empty tags and duplicate scripts&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Other best practices are super easy to implement given clean, efficient, and (mostly) standard coding practices.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; over &lt;code&gt;@import&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Put CSS at the top, scripts at the bottom&lt;/li&gt;
&lt;li&gt;Combine external CSS and JS files&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Not-So-Easy Stuff&lt;/h2&gt;
&lt;h3&gt;Image Optimization&lt;/h3&gt;
&lt;p&gt;Unfortunately this isn&amp;rsquo;t as simple as using &amp;#8220;Save for Web&amp;#8221; in Photoshop. To really squeeze every byte out of your image bandwidth without quality loss requires a little research into image formats and which one is appropriate for a given situation. Optimization tools like &lt;a href="http://www.smushit.com/ysmush.it/"&gt;Smush.it&lt;/a&gt; are nice too. You can see &lt;a href="http://code.google.com/speed/page-speed/docs/payload.html#CompressImages"&gt;Google&amp;rsquo;s suggestions&lt;/a&gt; and &lt;a href="http://developer.yahoo.com/performance/rules.html#opt_images"&gt;Yahoo&amp;rsquo;s suggestions&lt;/a&gt; but I&amp;rsquo;ll summarize my understanding below.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;JPG and PNG files handle almost everything quite well&lt;/li&gt;
&lt;li&gt;JPG for photos, PNG for everything else (icons, backgrounds, etc)&lt;/li&gt;
&lt;li&gt;PNG-8 does everything GIF can do except for animations&lt;/li&gt;
&lt;li&gt;The last browser support hurdle for PNG is alpha channel transparency, which is not possible with GIF anyway&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Minification&lt;/h3&gt;
&lt;p&gt;Things start to get a bit more involved at this stage. Even &amp;#8220;advanced&amp;#8221; image optimization is a fire-and-forget sort of process. You do it right the first time and reap the benefits forever after. Minification effectively adds a compile step to our workflow and a lot of us webbies aren&amp;rsquo;t used to that sort of thing.&lt;/p&gt;
&lt;p&gt;But it&amp;rsquo;s not as difficult as it may sound. I keep a non-minified version of code around to edit and test with, then minify it before putting it into production. I started out using &lt;a href="http://developer.yahoo.com/yui/compressor/"&gt;Yahoo&amp;rsquo;s command line compressor&lt;/a&gt;. Since &lt;a href="http://code.google.com/speed/page-speed/download.html"&gt;Google Page Speed&lt;/a&gt; is part of my standard testing routine, it&amp;rsquo;s trivial to save the minified version straight from its report once I&amp;rsquo;m satisfied with the changes.&lt;/p&gt;
&lt;p&gt;Visitors to &lt;a href="http://www.volstate.edu/"&gt;www.volstate.edu&lt;/a&gt; are served minified JavaScript (&lt;strong&gt;40% smaller&lt;/strong&gt;) and CSS (&lt;strong&gt;19% smaller&lt;/strong&gt;).&lt;/p&gt;
&lt;h3&gt;CSS Sprites&lt;/h3&gt;
&lt;p&gt;You can find a ton of resources on this topic &lt;a href="http://lmgtfy.com/?q=css+sprites"&gt;with a quick Google search&lt;/a&gt;, but &lt;a href="http://www.alistapart.com/articles/sprites"&gt;I prefer the classics&lt;/a&gt;. This technique can get quite confusing, and I recommend taking the time to really understand it before implementing it. That being said, we have &lt;a href="http://csssprites.com/"&gt;many&lt;/a&gt; &lt;a href="http://css-sprit.es/"&gt;online&lt;/a&gt; &lt;a href="http://csssprites.org/"&gt;sprite&lt;/a&gt; &lt;a href="http://spritegen.website-performance.org/"&gt;tools&lt;/a&gt; to make the job easier. I used &lt;a href="http://spriteme.org/"&gt;SpriteMe&lt;/a&gt; and found it useful enough. Just make sure you create a test page to run it on that makes use of every image you plan to sprite, and you may want to adjust the suggested sprites to minimize white space.&lt;/p&gt;
&lt;p&gt;The downside is a certain loss of agility when changing or adding images to the site. If we want to add LinkedIn to our social media icons in the footer of our site, we&amp;rsquo;ll have to edit the &lt;a href="http://www.volstate.edu/images/Icons.v1.2.png"&gt;Icons sprite&lt;/a&gt; rather than just uploading a new icon to the server and linking it in separately. But there are also benefits.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fewer HTTP requests (&lt;strong&gt;reduced by about a third&lt;/strong&gt; on our site)&lt;/li&gt;
&lt;li&gt;Sprites are often no bigger than the combined file size of the individual files, sometimes even smaller&lt;/li&gt;
&lt;li&gt;Commonly used images are effectively preloaded even if not used on the initial page visited&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Be warned that sprites aren&amp;rsquo;t appropriate for everything. I tried to combine &lt;a href="http://www.volstate.edu/images/Logo_FullColor_220_tag.png"&gt;our PNG logo&lt;/a&gt; with the &lt;a href="http://www.volstate.edu/images/RODP.jpg"&gt;JPG RODP logo&lt;/a&gt; and the resulting sprite was 27k larger than the individual files. I think that was due to things like gradients and shadows in the RODP logo greatly increasing the number of colors required. I stuck with jpg for that.&lt;/p&gt;
&lt;h3&gt;Compression&lt;/h3&gt;
&lt;p&gt;Now we&amp;rsquo;re moving to server configuration. I&amp;rsquo;m lucky enough to have access to and admin rights on the server, so I could do this stuff myself. In another organization I might have to rely on the server admin group for this.&lt;/p&gt;
&lt;p&gt;I used a combination of &lt;a href="http://weblogs.asp.net/owscott/archive/2004/01/12/57916.aspx"&gt;blogs&lt;/a&gt; and &lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/5bce429d-c4a7-4f9e-a619-5972497b932a.mspx?mfr=true"&gt;official documentation&lt;/a&gt; to set this up on our IIS server. It seems to be easier on Apache. Since I&amp;rsquo;ve never set it up on Apache myself I can&amp;rsquo;t vouch for the quality of the available documentation, but once again a &lt;a href="http://lmgtfy.com/?q=apache+compression"&gt;quick Google search&lt;/a&gt; should turn up a wealth of information. On either platform, the important things to remember are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Static, plain text content (HTML, CSS, JavaScript, etc.) should be heavily compressed and the resulting file cached server side to save on CPU cycles&lt;/li&gt;
&lt;li&gt;Dynamic content (PHP, ASP, etc.) should be freshly compressed with each request &amp;mdash; no caching &amp;mdash; and not quite as heavily compressed as static content&lt;/li&gt;
&lt;li&gt;Compressing binary files such as images, PDFs, Word documents, etc. costs CPU cycles on the server with little to no benefit &amp;mdash; in some cases compressing such files can even make them larger&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Like image optimization, this is something you set up right the first time and reap the benefits with no repeating costs. It&amp;rsquo;s worth it to buddy up with the server admins to get this done. Compression has netted us around &lt;strong&gt;70% reduction&lt;/strong&gt; in transferred file size for both static and dynamic content and our hardware isn&amp;rsquo;t remotely taxed even when serving up around 10,000 visits per day.&lt;/p&gt;
&lt;h3&gt;Browser &amp;amp; Proxy Caching&lt;/h3&gt;
&lt;p&gt;I took this step only after some heavy thought. This involves more server configuration and has a dramatic impact on workflow. Essentially we set up the server to tell the browser to not even bother asking for new copies of static content until a given date or until after X time has passed. This content is loaded from the local cache. The benefit is nearly instant page renders for repeat visitors. Of course, that means if the file has changed since it was saved in the local cache, the user won&amp;rsquo;t see that change.&lt;/p&gt;
&lt;h4&gt;On the Server&lt;/h4&gt;
&lt;p&gt;After snooping around with &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/3829/"&gt;HTTP Live Headers&lt;/a&gt; I determined that our server was already sending last-modified information, although our plain text documents seem to always use the create date. Could be because I edit on a Mac and upload to a Windows server. Binary files like images are fine. &lt;a href="http://technet.microsoft.com/en-us/library/cc732442.aspx"&gt;Setting up content expiration&lt;/a&gt; on IIS was pretty easy. Be mindful that all binary files will be cached. The browser won&amp;rsquo;t even request the file for however long you specify (or until after whatever date you specify). For us that was a problem because we have a lot of PDF newsletters that are updated by simply saving over the old file on the server. So rather than enabling content expiration on the entire site I did the CSS, JavaScript, and image directories. That covers that vast majority of the content that will benefit the most from client side caching.&lt;/p&gt;
&lt;h4&gt;Workflow Changes&lt;/h4&gt;
&lt;p&gt;To get users to updated content, we have to change the file name. That means we also have to change the markup, CSS, and/or JavaScript that references these files. HTML pages won&amp;rsquo;t be cached, so in the case of markup we just have the one extra step. Of course, if a link is hard coded into a few thousand pages, that one extra step can get pretty massive. Server side includes help us avoid those kinds of problems. CSS and JavaScript files themselves will be cached. That complicates things. To return to a previous example, let&amp;rsquo;s say we add a new social media icon to our footer. Here&amp;rsquo;s the process to do something like that.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Edit sprite image to incorporate the new icon&lt;/li&gt;
&lt;li&gt;Save the updated sprite with a new file name &amp;mdash; I recommend version numbering&lt;/li&gt;
&lt;li&gt;Edit un-minified CSS to reference the new image and adjust other styles as appropirate&lt;/li&gt;
&lt;li&gt;Save CSS with a new file name&lt;/li&gt;
&lt;li&gt;Test and debug cycle&lt;/li&gt;
&lt;li&gt;Minify CSS&lt;/li&gt;
&lt;li&gt;Update &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; in universal header include to point to updated CSS file&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That&amp;rsquo;s a bit more complex than uploading the new icon and editing the CSS file as needed. If I miss something in the test and debug cycle, I can&amp;rsquo;t just make a quick edit and call it a day. I have to start the whole process over again because anyone who hit the site in the meantime will be stuck with a cached copy of those files for the next 6 months. My CSS and JavaScript files now have a change log in the comments at the top, complete with file dependencies. These sorts of workflow changes are stuff we &lt;em&gt;should&lt;/em&gt; be doing anyway but getting serious about website performance &lt;strong&gt;forces&lt;/strong&gt; us to treat web development a bit more like software engineering.&lt;/p&gt;
&lt;h2&gt;Benefits&lt;/h2&gt;
&lt;p&gt;After incorporating all these changes, first time page loads for first time visitors are about 2 seconds faster. Subsequent page loads, even for first time visitors, are about 1 second faster. That means in a year&amp;rsquo;s time our users will spend about &lt;strong&gt;1 month less time waiting for our pages to load&lt;/strong&gt;. Plus the gains that brings to the user experience (a bit harder to quantify). Plus the associated reduction in bandwidth costs (a question for our IT department). Plus possibly gaining favor with search engines.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-5782226003793949955?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/5782226003793949955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=5782226003793949955' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/5782226003793949955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/5782226003793949955'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2010/06/guide-to-intermediate-website.html' title='Guide to Intermediate Website Performance Optimization'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-7140377389480018503</id><published>2010-06-14T09:26:00.014-05:00</published><updated>2010-06-17T15:21:49.671-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><title type='text'>Optimizing Site Performance</title><content type='html'>&lt;h2&gt;Purpose &amp;amp; Goal&lt;/h2&gt;
&lt;p&gt;Right now I’m running some tests through &lt;a href="http://www.webpagetest.org/"&gt;webpagetest.org&lt;/a&gt; to establish baselines for site performance. This week I hope to generate some &lt;a href="http://www.alistapart.com/articles/sprites"&gt;CSS sprites&lt;/a&gt; for  our common images and set up &lt;a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_3.html"&gt;gzip&lt;/a&gt; and &lt;a href="http://developer.yahoo.net/blog/archives/2007/05/high_performanc_2.html"&gt;xpiration headers&lt;/a&gt; on the server. Those are the last 3 big things pointed out by &lt;a href="http://developer.yahoo.com/yslow/"&gt;YSlow&lt;/a&gt; (actually I&amp;rsquo;m using &lt;a href="http://code.google.com/speed/page-speed/"&gt;Google Page Speed&lt;/a&gt;, but YSlow is cool too). Hopefully soon I'll be able to run a new set of tests to compare to the baselines I'm running now.&lt;/p&gt;
&lt;h2&gt;Sampling&lt;/h2&gt;
&lt;p&gt;I'm trying to get a representative sample of of pages to test. The &lt;a href="http://www.volstate.edu/"&gt;home page&lt;/a&gt; gets the most traffic, followed by the &lt;a href="http://www.volstate.edu/Current.php"&gt;Current Students page&lt;/a&gt;. &lt;a href="http://www.volstate.edu/Pride/"&gt;Pride Online&lt;/a&gt; has the most popular departmental home page, but it's utilitarian and not representative of other pages.  That moves us down to the &lt;a href="http://www.volstate.edu/Library/"&gt;home page for the library&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Those 3 pages realistically represent only about 1/6 of our total pages, but it’s the most heavily visited 1/6. I could add one more test case and increase my representativeness to the majority of our pages, but we’d see diminishing returns in terms of traffic (only about 16% of total site traffic). Also, the remaining 5/6 of pages are mostly text heavy and image lite. The benefits to those pages will come from optimizing the overall site template, which will be partially reflected in the 3 chosen test cases.&lt;/p&gt;
&lt;p&gt;Thanks to Google Analytics for the ability to access that info easily.&lt;/p&gt;
&lt;p&gt;The Site Performance widget in Google Webmaster Tools says we gained nearly half a second in our rendering time around June 6th. That half second was enough to move us up from around the 73rd percentile to the 82nd percentile. I have no idea why we saw this jump in overall site performance but I'm glad to have it. Maybe we can even hold onto it.&lt;/p&gt;
&lt;h2&gt;The Results Are (Mostly) In&lt;/h2&gt;
&lt;p&gt;The 3rd and final test is still running as I type this. I’ll link out to the results as they become available.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100614_55B/"&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100614_55P/"&gt;Current Students Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100614_5ET/"&gt;Library&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Step 1: CSS Sprites&lt;/h2&gt;
&lt;p&gt;I'm using &lt;a href="http://spriteme.org/"&gt;SpriteMe&lt;/a&gt; and my own best judgement to create some CSS sprites for commonly used background images. I'm assuming SpriteMe already has something like &lt;a href="http://www.smushit.com/ysmush.it/"&gt;Smush.it&lt;/a&gt; built in.&lt;/p&gt;
&lt;h2&gt;Results&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100614_5V2/"&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100614_5VC/"&gt;Current Students page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100614_5VF/"&gt;Library Home page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ok, maybe I need to smush my sprites after all. I've added about 60kb to each page load while freeing up about 15 http requests. Smush.it can’t find anything to optimize, but the image optimizer in YSlow can shave about 5k total from 2 of the sprites. SpriteMe makes some less than optimal choices, even occasionally introducing bugs. But like all software it has to make certain assumptions and those don’t always pan out. I need to improve upon the default sprites while I’m at it. With these newly optimized sprites, let’s look at the trade offs.&lt;/p&gt;
&lt;h3&gt;jQuery UI Theme Icons for Play Controls&lt;/h3&gt;
&lt;p&gt;The first sprite I made was actually already made for me thanks to the &lt;a href="http://jqueryui.com/themeroller/"&gt;jQuery UI Theme Roller&lt;/a&gt;. I used the blue and red versions of the UI sprite to replace the play control icons under the featured stories on the home page. The bad news is that almost doubles raw file size. In exchange, I pre-load a lot of UI elements that we're not currently using anywhere else. But I plan to make more use of the jQuery UI in the future. So I think this is a worthwhile change.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;
&lt;th scope="col"&gt;Baseline&lt;/th&gt;
&lt;th scope="col"&gt;With Sprites&lt;/th&gt;
&lt;th scope="col"&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;HTTP Requests&lt;/th&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;-6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Total Bytes&lt;/th&gt;
&lt;td&gt;5,310&lt;/td&gt;
&lt;td&gt;9,724&lt;/td&gt;
&lt;td&gt;+4,414&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Stripes Sprite&lt;/h3&gt;
&lt;p&gt;Both the header and the footer have background stripes that go all the way across the page. These were tiny, 1 pixel wide repeated images. But they were easy enough to combine.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;
&lt;th scope="col"&gt;Baseline&lt;/th&gt;
&lt;th scope="col"&gt;With Sprites&lt;/th&gt;
&lt;th scope="col"&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;HTTP Requests&lt;/th&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;-1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Total Bytes&lt;/th&gt;
&lt;td&gt;905&lt;/td&gt;
&lt;td&gt;122&lt;/td&gt;
&lt;td&gt;-783&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Image &amp;amp; Badge Drop Shadows&lt;/h3&gt;
&lt;p&gt;Some day I’ll be able to pull this off with pure CSS but in the meantime I’m stuck with background images. The one for the standard large image gets used on most pages. The one for smaller images at the same aspect ratio and the badges gets used fairly often too. The other 2 don’t see as much use. Some pages don’t use any of these, but the majority of our high traffic pages do. The image produced by SpriteMe left extra white space to the right of the 16px icons screwing up the placement. I had to edit the sprite in Photoshop. After that Smush.it actually did a better job compressing the resulting image than YSlow.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;
&lt;th scope="col"&gt;Baseline&lt;/th&gt;
&lt;th scope="col"&gt;With Sprites&lt;/th&gt;
&lt;th scope="col"&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;HTTP Requests&lt;/th&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;-3&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Total Bytes&lt;/th&gt;
&lt;td&gt;4,018&lt;/td&gt;
&lt;td&gt;5,092&lt;/td&gt;
&lt;td&gt;+1,074&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Icons&lt;/h3&gt;
&lt;p&gt;The image produced by SpriteMe left extra white space to the right of the 16px icons screwing up the placement. I had to edit the sprite in Photoshop. After that Smush.it actually did a better job compressing the resulting image than YSlow.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;
&lt;th scope="col"&gt;Baseline&lt;/th&gt;
&lt;th scope="col"&gt;With Sprites&lt;/th&gt;
&lt;th scope="col"&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;HTTP Requests&lt;/th&gt;
&lt;td&gt;18&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;-17&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Total Bytes&lt;/th&gt;
&lt;td&gt;14,589&lt;/td&gt;
&lt;td&gt;13,677&lt;/td&gt;
&lt;td&gt;-912&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;Logos&lt;/h3&gt;
&lt;p&gt;I combined our logo with the RODP logo that’s featured on every page. But that only nets us 1 less HTTP request and as you’ll see below costs us significant bytes due to the differences between .jpg and .png image formats.&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt; &lt;/th&gt;
&lt;th scope="col"&gt;Baseline&lt;/th&gt;
&lt;th scope="col"&gt;With Sprites&lt;/th&gt;
&lt;th scope="col"&gt;Change&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;HTTP Requests&lt;/th&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;-1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Total Bytes&lt;/th&gt;
&lt;td&gt;12,270&lt;/td&gt;
&lt;td&gt;39,876&lt;/td&gt;
&lt;td&gt;+27,606&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3&gt;In a Nutshell&lt;/h3&gt;
&lt;p&gt;In a best case, a single page that references all these images (which is not terribly realistic), we’ve traded 28 fewer HTTP requests for 31,399 more bytes. That’s about 22 additional HTTP packets. Based on our test cases we’re realistically saving 12 – 15 HTTP requests per page. I know we’ll see a big pay off when we start effectively caching and gzipping this stuff, but I have to admit I’m disappointed with this first round of results.&lt;/p&gt;
&lt;h2&gt;Step 1.1: Learning from Mistakes&lt;/h2&gt;
&lt;p&gt;Ok, now I understand why the RODP logo was initially flagged as not to be included in a sprite due to being a jpg. I need to roll back the Logos sprite. I also need to alter the way we’re doing the random headers. We’ve been using something based on &lt;a href="http://www.alistapart.com/articles/randomizer/"&gt;Dan Benjamin’s method from A List Apart&lt;/a&gt; but in terms of site performance it’s one of our slowest resources.&lt;/p&gt;
&lt;h3&gt;Results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100615_WZ/"&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100615_X9/"&gt;Current Students Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100615_XJ/"&gt;Library Home Page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We’re starting to see some minor pay off on the repeat viewing. Start render time on the current students page is now under 1 second. That’s pretty awesome, but we’ve still got work to do.&lt;/p&gt;
&lt;h2&gt;Step 2: GZip&lt;/h2&gt;
&lt;p&gt;I followed &lt;a href="http://weblogs.asp.net/owscott/archive/2004/01/12/57916.aspx"&gt;this guide&lt;/a&gt; as well as some &lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/502ef631-3695-4616-b268-cbe7cf1351ce.mspx?mfr=true"&gt;official&lt;/a&gt; &lt;a href="http://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/5bce429d-c4a7-4f9e-a619-5972497b932a.mspx?mfr=true"&gt;documentation&lt;/a&gt; from Microsoft. This &lt;a href="http://www.gidnetwork.com/tools/gzip-test.php"&gt;online gzip test&lt;/a&gt; says we’re still not using compression but my &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/60/"&gt;web developer tool bar&lt;/a&gt; begs to differ.&lt;/p&gt;
&lt;h3&gt;Results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100615_10C/"&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100615_10F/"&gt;Current Students Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100615_10Q/"&gt;Library Home Page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I just alphabetized the properties in each CSS declaration, primarily as a way to clean up my CSS and make it easier to manage. But &lt;a href="http://code.google.com/speed/page-speed/docs/payload.html#GzipCompression"&gt;Google’s Page Speed documentation&lt;/a&gt; points out the possibility of alphabetized CSS seeing more efficient gzip compression. Checking the alphabetized, minified, and gzipped version against the just minified and gzipped version with the Web Developer Toolbar (Information —&amp;gt; View Document Size) shows 8k either way. It doesn’t break it down into units any smaller than that. So maybe it saved me a few bytes, but not a kilobyte. So if we saw any gzip efficiency change from alphabetizing the CSS it’s less than 12.5%. If we assume rounding, then it’s less than 6.25%.&lt;/p&gt;
&lt;h2&gt;Step 3: Browser Cache&lt;/h2&gt;
&lt;p&gt;This one will be labor intensive. Before I put in the hours to set expiration dates and last modified dates for our various static resources I want to make sure they are properly optimized. We’ve covered CSS and JavaScript, but all the images that didn’t find their way into a sprite will need to be tested. I started this entry on Monday morning. It is now 1:30 on Wednesday. I this step will probably keep me busy the rest of today and a good chunk of tomorrow.&lt;/p&gt;
&lt;p&gt;Ok, the clean up and optimization process has saved me about 10,000,000 bytes and 400 files. Gzip has been running for a full day and server&amp;rsquo;s resources don&amp;rsquo;t seem to be at all taxed. So far so good. Time to dive into &lt;a href="http://code.google.com/speed/page-speed/docs/caching.html#LeverageBrowserCaching"&gt;Leverage Browser Caching&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I have a problem in that IIS reports the wrong last-modified date for certain files. Images seem fine. PHP files and other plain text files are not. Maybe I&amp;rsquo;m missing something in Dreamweaver. Our server also sends &lt;a href="http://developer.yahoo.net/blog/archives/2007/07/high_performanc_11.html"&gt;E-Tag hashes&lt;/a&gt;, which are newer than and in theory superior to last-modified headers. But they are also redundant together. E-Tags are apparently frowned upon when using multiple servers, such as a Content Delivery Network. All our content comes from just the one server so I don&amp;rsquo;t think it&amp;rsquo;s an issue with us. At worst we&amp;rsquo;s sending a single redundant HTTP response header.&lt;/p&gt;
&lt;p&gt;So half the browser caching equation was essentially taken care of for us by IIS&amp;rsquo;s default settings. The other end of that equation is &lt;a href="http://technet.microsoft.com/en-us/library/cc732442.aspx"&gt;content expiration&lt;/a&gt;. I did not like that IIS just gave me a single check box to turn content expiration on. I wanted to be able to set it up by file extension. No such luck. I turned it on and did some testing with the &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/3829/"&gt;Live HTTP Headers&lt;/a&gt; extension for Firefox. I was able to confirm that our php pages were not caching. Which is good. The last thing I want is someone to spend the next 6 months with an unchanging copy of our home page stuck in their browser cache. CSS and JavaScript files were caching, along with images. I already use version numbering on CSS, JavaScript, and image sprites. For the most part other images will have specific names anyway, so that&amp;rsquo;s good. Then I tested PDF files and did not like what I found.&lt;/p&gt;
&lt;p&gt;I downloaded the PDF of our campus map and saw that the response headers told the browser to cache it for the next 6 months as well. We may need to update the map in the next 6 months. Maybe an office location changes to a new building or something. Worse still, many of our PDFs are newsletters. Monthly newsletters. Some offices have an archive listing years&amp;rsquo; worth of issues while others just link to the most recent issue. In the latter case, I just save the new issue over the old issue on the server. With browsers caching these files, that wouldn&amp;rsquo;t work anymore. I&amp;rsquo;d have to give each issue a distinct name and adjust the HTML links to match, greatly complicating that process.&lt;/p&gt;
&lt;p&gt;I rolled back those changes and tried setting up expiration on a directory by directory basis. So far I&amp;rsquo;ve only done /images/, /css/, and /js/. That covers the vast majority of our static files. Occasionally a directory off of root will have its own images directory. For now I&amp;rsquo;m leaving those alone. The handful of child directories inside /images/ also &lt;del&gt;apparently did not&lt;/del&gt; &lt;ins&gt;&lt;em&gt;did&lt;/em&gt;&lt;/ins&gt; inherit the expiration settings of their parent folder.&lt;/p&gt;
&lt;p&gt;The downside to all this experimenting is I have to bounce the IIS service for changes to take effect. That only takes about 8 seconds by my count, but I&amp;rsquo;t to think of someone submitting their final form for online orientation during that tiny window.&lt;/p&gt;
&lt;p&gt;Page Speed still says we fail the browser cache check, but that&amp;rsquo;s due to the FEMA widget currently on our site. All resources being served from volstate.edu pass. So let&amp;rsquo;s run another batch of tests.&lt;/p&gt;
&lt;h3&gt;Results&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100617_4ZC/"&gt;Home Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100617_4ZH/"&gt;Current Students Page&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.webpagetest.org/result/100617_4ZN/"&gt;Library Home Page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;This has been less a blog entry and more 4 days of notes to myself. Tomorrow I will try to recap the high points and present my data analysis.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-7140377389480018503?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/7140377389480018503/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=7140377389480018503' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/7140377389480018503'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/7140377389480018503'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2010/06/optimizing-site-performance.html' title='Optimizing Site Performance'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-990611872788780494</id><published>2010-05-27T11:02:00.003-05:00</published><updated>2010-05-27T11:35:05.824-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inspiration'/><category scheme='http://www.blogger.com/atom/ns#' term='blogosphere'/><title type='text'>Why I Became a Web Geek</title><content type='html'>&lt;p&gt;&lt;a href="http://www.amberweinberg.com/why-i-became-a-web-developer/"&gt;Amber&lt;/a&gt; asked for web dev origin stories. Here&amp;rsquo;s mine.&lt;/p&gt;
&lt;p&gt;In the late 1940s, in the parts of the world that mattered, the end of WWII and the atomic bomb had brought the philosophical shift we now label post-modernism into the cultural mainstream. But in rural Tennessee, just down the road from the house I grew up in, my grandmother was being loaded onto a wagon to make the 5-mile trip &amp;#8220;in to town.&amp;#8221; My dad was a breech birth. Home birth had taken a turn for the worse and they needed to get a doctor involved. 40 years later my dad bought about 42 acres of farm land he occasionally plows with a team of mules just for the fun of it. This is just a hobby. He earned his living by dismantling nuclear weapons in the same facility that enriched the uranium for &lt;a href="http://en.wikipedia.org/wiki/Fat_Man"&gt;Fat Man&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Little_Boy"&gt;Little Boy&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This is the culture that produced me. About 5 years after I was born, satellite dishes cropped up like kudzu and started piping in the culture of the greater global village. It was amazing to watch the communication/information explosion transform this area.&lt;/p&gt;
&lt;p&gt;For example, I found &lt;a href="http://www.cbc.ca/"&gt;the CBC&lt;/a&gt; fascinating. I didn&amp;rsquo;t understand all the politics involved, but I knew they had a station that broadcast in French because that was the primary language in Quebec and that they had a station out of the North West Territories that featured a lot of content relevant to the First Peoples population there. I didn&amp;rsquo;t really see that same kind of diversity in American media. We had a lot of forced tolerance, but as we tried to blur lines based on gender and race we drew a greater distinction along class lines. The prevailing message was small towns and small people didn&amp;rsquo;t matter.&lt;/p&gt;
&lt;p&gt;That could be do in part to the overall wealth worship fetish America had in the 80s. Compare Bill Cosby&amp;rsquo;s Dr. Cliff Huxtable to Fat Albert and the Cosby Kids from the decade before. I could (and still do) identify with the Cosby Kids despite geographic and racial boundaries. The Huxtable kids lived in a different world and that had very little to do with race. The Cosby Kids were a rare example of the not-rich and not-famous among pop culture characters; and closer to my day to day reality than Larry, Darryl and Darryl.&lt;/p&gt;
&lt;p&gt;Getting rural areas and poor areas connected to the mass media grid gave these marginalized populations a window to the world. Getting connected to the internet would give us a voice. I wanted to be part of that.&lt;/p&gt;
&lt;p&gt;Also, growing up on a &amp;#8220;farm&amp;#8221; affected my work ethic. I don&amp;rsquo;t miss manual labor under the blazing Tennessee sun. It was 80 degrees at 8 am today, and it&amp;rsquo;s not even truly summer yet. I feel most fulfilled if I can point to something at the end of the day and tell myself &amp;#8220;I made that. That didn&amp;rsquo;t exist this morning and now it does.&amp;#8221; Luckily I discovered that digital artifacts scratch that psychological itch just as effectively as a freshly planted row of crops. And with significantly less sun burn. If only typing code burned calories as effectively.&lt;/p&gt;
&lt;p&gt;On top of that, I&amp;rsquo;ve been extremely lucky to be in the right place at the right time both educationally and professionally. Everything fell into place and I feel like I&amp;rsquo;ve found the perfect fit to &lt;a href="http://www.amazon.com/What-You-Are-Personality-Type-Revised/dp/0316880655"&gt;do what I am&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;My dad&amp;rsquo;s birth story sounds like a scene from a &lt;a href="http://www.imdb.com/name/nm0000406/"&gt;John Ford&lt;/a&gt; movie and I earn a living building communication systems out of ASCII characters. That&amp;rsquo;s a huge jump in just 2 generations. I have 2 kids of my own. I can&amp;rsquo;t imagine what their adult lives will be like.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-990611872788780494?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/990611872788780494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=990611872788780494' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/990611872788780494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/990611872788780494'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2010/05/why-i-became-web-geek.html' title='Why I Became a Web Geek'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-4956919593520626804</id><published>2010-05-19T15:24:00.002-05:00</published><updated>2010-05-19T17:09:36.902-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='social capital'/><title type='text'>Why I Stay Busy</title><content type='html'>&lt;p&gt;On Friday &lt;a href="http://twitter.com/kdc"&gt;@kdc&lt;/a&gt; retweeted something from &lt;a href="http://twitter.com/eduguru"&gt;@eduguru&lt;/a&gt; that sent me to &lt;a href="http://twitter.com/educheckup"&gt;@educheckup&lt;/a&gt; where I watched several videos, including the one &lt;a href="http://educheckup.com/2010/04/16/miami-dade-college-episode-163/"&gt;on Miami-Dade&lt;/a&gt; where he mentions one of the few things they did right was pausing the story rotation when you click on a particular number to view a particular story.&lt;/p&gt;
&lt;p&gt;Hmm&amp;hellip; Do we do that?&lt;/p&gt;
&lt;p&gt;No. &lt;strong&gt;Crap&lt;/strong&gt;!&lt;/p&gt;
&lt;p&gt;Ok. We can fix this. Our front page story rotation is based on the &lt;a href="http://jquery.malsup.com/cycle/"&gt;jQuery Cycle plugin&lt;/a&gt; from &lt;a href="http://twitter.com/malsup"&gt;@malsup&lt;/a&gt;. Let&amp;rsquo;s start there.&lt;/p&gt;
&lt;p&gt;New version is out as of last month. Might as well update. Should probably update my version of jQuery while I&amp;rsquo;m at it. We were still running 1.3. Update both scripts, re-minify our local file (plug in collection and custom code), and make sure nothing breaks.&lt;/p&gt;
&lt;p&gt;Background color change on pager links to indicate currently active slide no longer works. Fire up FireBug. Eventually figure out &lt;code&gt;activeSlide&lt;/code&gt; class is being applied to the &lt;code&gt;li&lt;/code&gt; tags rather than the &lt;code&gt;a&lt;/code&gt; tags inside the list items. For our implementation, that means the buttons were being flagged as active rather than the actual pager links. Created a custom function for &lt;code&gt;updateActivePagerLink&lt;/code&gt; and all was well again.&lt;/p&gt;
&lt;p&gt;Pshew! We&amp;rsquo;re in the clear. Checking the docs for Cycle. Source code reveals some new stuff that hasn't made its way onto the web documentation yet. Luckily Mike does a good job of commenting his code. The functionality I need isn&amp;rsquo;t built in, but a couple of options get close, such as &lt;code&gt;pause&lt;/code&gt; and &lt;code&gt;pauseOnPagerHover&lt;/code&gt;. I didn&amp;rsquo;t have either of those enabled, and &lt;code&gt;pause&lt;/code&gt; has been built-in forever. Learning about one usability gotcha lead me to discover another.&lt;/p&gt;
&lt;p&gt;At this point the easy, built in stuff is fixed. I turn my attention back to the initial issue. Following the conventions set up by 2 existing options within the plugin (&lt;code&gt;pauseOnPagerHover&lt;/code&gt; and &lt;code&gt;onPagerEvent&lt;/code&gt;) I create a new option called &lt;code&gt;pauseOnPagerEvent&lt;/code&gt; and insert 2 new lines of code: an &lt;code&gt;if&lt;/code&gt; statement to check the state of the new option and code lifted from &lt;code&gt;pauseOnPagerHover&lt;/code&gt; to actually trigger the pause. Amazingly, this works on the first try.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m still not happy with that solution because I think a more elegant way to do it would involve &lt;code&gt;onPagerEvent&lt;/code&gt;. I just spent another hour trying to figure out how to write my own function for that callback and failed yet again.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-4956919593520626804?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/4956919593520626804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=4956919593520626804' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/4956919593520626804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/4956919593520626804'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2010/05/why-i-stay-busy.html' title='Why I Stay Busy'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-5240870249080370770</id><published>2010-05-02T12:26:00.003-05:00</published><updated>2010-05-02T12:38:05.327-05:00</updated><title type='text'>Nashlantis</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_t7JJgFKP-NY/S922jrU2hJI/AAAAAAAAAFY/HoG1QKrK2eY/s1600/MeMowing.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://4.bp.blogspot.com/_t7JJgFKP-NY/S922jrU2hJI/AAAAAAAAAFY/HoG1QKrK2eY/s400/MeMowing.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5466726246739510418" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_t7JJgFKP-NY/S922j4g-pyI/AAAAAAAAAFg/O1weoEXQClE/s1600/Flood.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_t7JJgFKP-NY/S922j4g-pyI/AAAAAAAAAFg/O1weoEXQClE/s400/Flood.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5466726250280036130" /&gt;&lt;/a&gt;
&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_t7JJgFKP-NY/S922kKspw9I/AAAAAAAAAFo/3kqKr4X3HuA/s1600/MeInFlood.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://1.bp.blogspot.com/_t7JJgFKP-NY/S922kKspw9I/AAAAAAAAAFo/3kqKr4X3HuA/s400/MeInFlood.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5466726255160837074" /&gt;&lt;/a&gt;
&lt;p&gt;13 inches of rain so far with another 4 or 5 on the way.&lt;/p&gt;
&lt;p&gt;The first photo here is me mowing our lawn a couple of summers ago. I'm a tiny little dot way back there, but you can see me if you squint. Take note of the big maple tree in the left of that image, the square of concrete to the right, and the row of 2 chestnut trees further back from that.&lt;/p&gt;
&lt;p&gt;The 2nd photo is taken from right next to the big maple tree. The 3rd photo was taken from the concrete pad. Norma was ankle deep taking that photo, even with 5 inches of concrete between her and the ground. I'm standing about 3 paces beyond the edge of the concrete. You can see how deep it is out there.&lt;/p&gt;
&lt;p&gt;The water has actually receded since we took those photos, about a foot by depth, several yards by horizontal progress. The concrete is no longer covered, for example. But there's another storm coming and the big one that dumped all that on top of us is technically still in the watershed the feeds into the lake near here. I'm hoping the worst is past us but I'm not going to count on that.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-5240870249080370770?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/5240870249080370770/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=5240870249080370770' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/5240870249080370770'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/5240870249080370770'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2010/05/nashlantis.html' title='Nashlantis'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_t7JJgFKP-NY/S922jrU2hJI/AAAAAAAAAFY/HoG1QKrK2eY/s72-c/MeMowing.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-4533962256227842935</id><published>2010-04-22T12:21:00.006-05:00</published><updated>2010-04-23T10:06:58.554-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><title type='text'>Trusting Second Guessing My Gut</title><content type='html'>&lt;p&gt;Since December I've been blogging on the new multi-user WordPress server at work, but it's currently down. Once we get it back I need to figure out how to automate cross posting. This blog space belongs to me, Derek Pennycuff. The blog on the WordPress server technically belongs to the webmaster position at Vol State. If/When I leave Vol State this will still be mine. The other will not. Echos of the knowledge management course.&lt;/p&gt;
&lt;h2&gt;The Web as She Is Used&lt;/h2&gt;
&lt;p&gt;Anyway, right now I'm struggling with some stuff that my gut tells me is right but I have no evidence to support or refute it. I'll try to lay it out here and cite some specific examples.&lt;/p&gt;
&lt;h3&gt;Email Links&lt;/h3&gt;
&lt;p&gt;The default behavior of a mailto link is to launch your default email client. Here at work that means Outlook. On a default install of Windows it usually means Outlook Express. Our audience does not make heavy use of email. Most of them probably don't have a default email client. What email they use is probably web based. Some browsers let us &lt;a href="http://gmailblog.blogspot.com/2008/07/power-tip-set-gmail-as-your-default.html"&gt;set our web based email client of choice as the default&lt;/a&gt;, but how many users actually bother to do that? Personally, I tend to use Firefox's "copy email address" feature from the contextual menu when I right click a mailto link. But I've spent enough time working tech support to know that most people don't know much about advanced features such as right click menus.&lt;/p&gt;
&lt;p&gt;So I prefer to use the actual email address as the link text for mailto links. In addition to all of the above, it's a nice visual cue to differentiate a mailto link from a standard hyperlink.&lt;/p&gt;
&lt;h3&gt;Telephone Numbers&lt;/h3&gt;
&lt;p&gt;Making that change introduced a new problem. The easiest way for me to make this change is to add a column at the end of the table and move the email addresses there. But that puts the telephone numbers in the middle of the table. A mailto link is designed to be used online. A telephone number is non-interactive. &lt;/p&gt;
&lt;p&gt;&lt;em&gt;(Although I confirmed over the weekend that a Nexus One phone does recognize a well formed phone number on a web page and makes it behave a bit like a mailto link. Among our users that's an edge case and I have no confirmation of how other mobile devices treat phone numbers. [Several people have pointed out this is de facto standard behavior on smart phones.])&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;My gut tells me most people will either dial the number from the screen or write it down. Either will involve a bit of eye darting on and off the screen. Have you ever had to look away from one specific table cell and then locate it again quickly when you look back? Working in Excel can cause this just as much as tabular data on a website. It's not easy. I think putting the phone number at the &lt;em&gt;end&lt;/em&gt; of the table helps with this a bit. This brings us to a 3rd iteration of a staff listing page.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_t7JJgFKP-NY/S9G2WzeicfI/AAAAAAAAAFA/8M6wchUTV8A/s1600/Option1.gif"&gt;&lt;img style="cursor: pointer; width: 400px; height: 162px;" src="http://1.bp.blogspot.com/_t7JJgFKP-NY/S9G2WzeicfI/AAAAAAAAAFA/8M6wchUTV8A/s400/Option1.gif" alt="" id="BLOGGER_PHOTO_ID_5463348325868794354" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_t7JJgFKP-NY/S9G2XEl6n-I/AAAAAAAAAFI/nFQ_EF-Hqy0/s1600/Option2.gif"&gt;&lt;img style="cursor: pointer; width: 400px; height: 162px;" src="http://2.bp.blogspot.com/_t7JJgFKP-NY/S9G2XEl6n-I/AAAAAAAAAFI/nFQ_EF-Hqy0/s400/Option2.gif" alt="" id="BLOGGER_PHOTO_ID_5463348330463141858" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_t7JJgFKP-NY/S9G2XXoEdII/AAAAAAAAAFQ/tlNlOzbc2Ic/s1600/Option3.gif"&gt;&lt;img style="cursor: pointer; width: 400px; height: 162px;" src="http://1.bp.blogspot.com/_t7JJgFKP-NY/S9G2XXoEdII/AAAAAAAAAFQ/tlNlOzbc2Ic/s400/Option3.gif" alt="" id="BLOGGER_PHOTO_ID_5463348335572448386" border="0" /&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Aesthetics vs. Usability&lt;/h2&gt;
&lt;p&gt;The list above shows a progression of what my gut tells me is increasing usability. However, my eye disagrees. Aesthetically I see each version as a &lt;strong&gt;step down&lt;/strong&gt; from the previous. And without any real usability data I'm at a loss as to how to resolve this cognitive dissonance. I'm dealing with opinion either way. And since so much of the usability issue hinges on action taken off-line, picking up a phone and making a call, I can't think of a way to A/B test it.&lt;/p&gt;
&lt;p&gt;I need to standardize these pages. Inconsistency kills both the usability and the aesthetics. All I've got to go by is my own conflicting opinions, so if you've got any ideas please share them.&lt;/p&gt;
&lt;h2&gt;Update&lt;/h2&gt;
&lt;p&gt;A strong preference for option #2 is already apparent among the people who have chimed in on this issue. Apparently I'm on to something with the email address as link text for mailto links but I'm probably over thinking the telephone number thing. I'm going to continue to mull this over mentally so feel free to continue to comment or email me if you're reading this now and have anything to share. But in the interest of productivity I'm going to make option #2 the standard format and get to work. :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-4533962256227842935?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/4533962256227842935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=4533962256227842935' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/4533962256227842935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/4533962256227842935'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2010/04/trusting-second-guessing-my-gut.html' title='&lt;del&gt;Trusting&lt;/del&gt; Second Guessing My Gut'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_t7JJgFKP-NY/S9G2WzeicfI/AAAAAAAAAFA/8M6wchUTV8A/s72-c/Option1.gif' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-8215264273526152380</id><published>2009-12-16T13:24:00.002-06:00</published><updated>2009-12-16T13:36:39.423-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><title type='text'>Badges, Banners, and Calls to Action</title><content type='html'>&lt;h2&gt;The Problem&lt;/h2&gt; &lt;p&gt;The folks in Admissions are getting phone calls from people who can’t find a link to the online application.&lt;/p&gt; &lt;h2&gt;Probable Causes&lt;/h2&gt; &lt;ol&gt;&lt;li&gt;Users can’t find content “below the fold”&lt;/li&gt;&lt;li&gt;General placement of call to action does not align with relative importance&lt;/li&gt;&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Banner_blindness" mce_href="http://en.wikipedia.org/wiki/Banner_blindness"&gt;Banner blindness&lt;/a&gt;
&lt;/li&gt;&lt;/ol&gt; &lt;h2&gt;Data&lt;/h2&gt; &lt;p&gt;When I have a problem, I like to &lt;del datetime="2009-12-16T15:20:39+00:00"&gt;kill it with fire&lt;/del&gt; attack it with data; Google Analytics to the rescue! As of today, we’ve got just over 6 weeks worth of data since launch. Here’s what the numbers tell us about &lt;a href="http://www.volstate.edu/Admissions/Application.php" mce_href="http://www.volstate.edu/Admissions/Application.php"&gt;this page&lt;/a&gt;:&lt;/p&gt; &lt;table class="mceItemTable" border="0"&gt; &lt;thead&gt; &lt;tr&gt; &lt;th&gt;How They Got There&lt;/th&gt; &lt;th&gt;How Many Times They Got There&lt;/th&gt; &lt;th&gt;Percentage of Total Traffic for This Page&lt;/th&gt; &lt;/tr&gt; &lt;/thead&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://www.volstate.edu/Future.php" mce_href="http://www.volstate.edu/Future.php"&gt;Future Students Landing Page&lt;/a&gt; text link in content&lt;/td&gt; &lt;td&gt;3,314&lt;/td&gt; &lt;td&gt;65.2%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://www.volstate.edu/" mce_href="http://www.volstate.edu/"&gt;Home Page&lt;/a&gt; badge&lt;/td&gt; &lt;td&gt;518&lt;/td&gt; &lt;td&gt;10.2%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://www.volstate.edu/Admissions/" mce_href="http://www.volstate.edu/Admissions/"&gt;Admissions Home Page&lt;/a&gt;
&lt;/td&gt; &lt;td&gt;299&lt;/td&gt; &lt;td&gt;5.9%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://www.volstate.edu/Future.php" mce_href="http://www.volstate.edu/Future.php"&gt;Future Students Landing Page&lt;/a&gt; badge&lt;/td&gt; &lt;td&gt;199&lt;/td&gt; &lt;td&gt;3.9%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;External (usually Google or another search)&lt;/td&gt; &lt;td&gt;158&lt;/td&gt; &lt;td&gt;3.1%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;a href="http://www.volstate.edu/AZ.php" mce_href="http://www.volstate.edu/AZ.php"&gt;A to Z Index&lt;/a&gt;
&lt;/td&gt; &lt;td&gt;120&lt;/td&gt; &lt;td&gt;2.4%&lt;/td&gt; &lt;/tr&gt; &lt;tr&gt; &lt;td&gt;&lt;b&gt;Total&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;5,081&lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;100.0%&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt; &lt;/tbody&gt; &lt;tbody&gt;&lt;/tbody&gt; &lt;/table&gt; &lt;p&gt;That’s data pulled together from several different reports as interpreted by me. There could be some rounding on Google’s part and some fudging on mine. But the general trend we see is reliable.&lt;/p&gt; &lt;h3&gt;What Does That Mean?&lt;/h3&gt; &lt;p&gt;By far, the most effective way we’re sending people to this content is the link about 1/3 of the way down the Future Students landing page that clearly states “The first step is to fill out an application.” In fact, 9.66% of all the people who see this page follow that link. It’s the 3rd most popular link on that page after Programs of Study and the Current Students landing page.&lt;/p&gt;  &lt;p&gt;Taken together, the 2 badges are the 2nd biggest traffic producer, but we have a big drop off between 65% of traffic at #1 and 14% combined for #2 and #4.
&lt;/p&gt;&lt;p&gt;After that we get a noticeable long tail effect, but that's normal for this type of data.
&lt;/p&gt; &lt;h4&gt;Applying the Data to Possible Causes
&lt;/h4&gt; &lt;h5&gt;Content Below the Fold&lt;/h5&gt; &lt;p&gt;The problem does not seem to have anything to do with scrolling. A wealth of &lt;a href="http://www.boxesandarrows.com/view/blasting-the-myth-of" mce_href="http://www.boxesandarrows.com/view/blasting-the-myth-of"&gt;previous&lt;/a&gt; &lt;a href="http://blog.clicktale.com/2007/10/05/clicktale-scrolling-research-report-v20-part-1-visibility-and-scroll-reach/" mce_href="http://blog.clicktale.com/2007/10/05/clicktale-scrolling-research-report-v20-part-1-visibility-and-scroll-reach/"&gt;research&lt;/a&gt; shows that content “below the fold” doesn’t really suffer for it. But it’s nice to see confirmation of this in our own data. The most effective link to this page is only visible after a bit of scrolling even on my rather large monitor. Comparing the people who &lt;b&gt;are&lt;/b&gt; getting to the page to those who &lt;i&gt;are not&lt;/i&gt; getting there could be apples and oranges, right? But we know about the 2nd group because they are calling us. Both the main telephone number and the direct number to the Admissions Office require a bit of scrolling to find. These people are obviously finding &lt;b&gt;that&lt;/b&gt; information, so scrolling isn’t presenting a significant hurdle to finding information among this population.&lt;/p&gt; &lt;h5&gt;Sub-Optimal Placement on the Page&lt;/h5&gt; &lt;p&gt;We could still have a misalignment of placement vs. purpose even if scrolling doesn’t enter into the equation. The purpose of the badges is to feature timely content. The application process should probably be permanently featured, but a permanent badge runs askew of the core purpose of being timely and changing often. The link to the schedule for next semester makes for an excellent badge because that content is in high demand right now but in a couple of months we should be able to safely replace it with something more timely, perhaps a badge for the Academic Calendar so that people can quickly and easily find the dates for Spring Break.&lt;/p&gt; &lt;p&gt;So what are some other ways we can permanently incorporate “Apply Now” into the overall site template?&lt;/p&gt; &lt;p&gt;The primary navigation is all user role based, so adding it there wouldn't make sense. Putting it below the primary navigation would make it look like secondary navigation. At one point the site template had a “default” secondary navigation for those pages that didn’t have such a menu. It muddied the waters as to the purpose of that area of the page and it was an early cut in the design process. The area at the top, with links for the People Finder and A – Z Index, could work, but it’s already full. We’d need to delete a link in order to make room for it and I’m not comfortable dropping anything currently there.&lt;/p&gt; &lt;p&gt;We could add it to the Help Center under the Registration heading. Right now everything in that category applies to students who are already admitted, but I doubt most incoming students have a clear understanding of that distinction. Ask the average senior at Gallatin High School what the difference is between &lt;i&gt;applying for admissions&lt;/i&gt; to Vol State and &lt;i&gt;registering for classes&lt;/i&gt; at Vol State and they’ll probably look at you like you’ve got 3 heads. I would have at 17.&lt;/p&gt; &lt;p&gt;We could also list it in the Help Center under the Students heading. Either of those options fail to put the link visible on the screen by default, but it is accessible from (almost) any page. The footer is also an option, although that would take a bit more work on my part. We’ve got space to spare down there, but I want each area to have a clearly defined purpose.&lt;/p&gt; &lt;h5&gt;Banner Blindness&lt;/h5&gt; &lt;p&gt;But I think a bigger issue has been brought to light here. I’ve just gone through the navigation summary for all 7 pages that feature badges. None of the badges appear in the list of top 10 links for those pages. That may not be a bad thing if it means people are finding what they are looking for in the actual content. But it could also indicate a bad case of banner blindness.&lt;/p&gt; &lt;h6&gt;Or Is It?&lt;/h6&gt; &lt;p&gt;But approaching it from the other side, 92% of the traffic coming into the &lt;a href="http://www.volstate.edu/Schedule/" mce_href="http://www.volstate.edu/Schedule/"&gt;Schedule of Classes page&lt;/a&gt; are getting there through one of the various badges. That 92% translates into about 1,225 total page views, which is so tiny in comparison to the traffic coming through the landing pages that it may not make a blip on the radar. &lt;a href="http://www.volstate.edu/LearningHelp/" mce_href="http://www.volstate.edu/LearningHelp/"&gt;Learning Help Centers&lt;/a&gt; gets about 75% of its traffic from badges. &lt;a href="http://www.volstate.edu/SEEK/" mce_href="http://www.volstate.edu/SEEK/"&gt;SEEK&lt;/a&gt; gets about 94% of its traffic from the badges. But again page views measured in the hundreds are so small in comparison to the total traffic pumping through the various landing pages it’s probably easy for those numbers to fall through the cracks.&lt;/p&gt; &lt;p&gt;Overall badges seem to channel a significant percentage of traffic for the sorts of things people would not otherwise be aware of, such as SEEK and the Learning Help Centers. They also seem to work well for new site content such as the dedicated page for class schedule information. Both SEEK and the Learning Help Centers are fairly recent additions to the site as well. Badges seem to preform less well for older content with high awareness and lots of paths of entry. But even in the case of the “Apply Now!” badge, 14% of total incoming traffic may not sound like a significant boost, but it still translates into 700 visits. That’s nothing to sneeze at.&lt;/p&gt; &lt;h2&gt;Conclusions&lt;/h2&gt; &lt;p&gt;Lots of people are eventually getting to the application page, but that doesn’t change the fact that some are not and this is driving a noticeable number of phone calls to the Admissions Office. Some of the people who are eventually getting there may not be getting their &lt;i&gt;easily&lt;/i&gt;. Maybe 10% of them were 30 seconds away from calling us too. And for every person who calls, maybe 3 or 4 other people just give up without even calling us. We really have no way of knowing. So I’m not pulling out these numbers as a means to dismiss the problem as it was reported to me. I aim to use the data available to understand the scope and context of the problem in order to find effective solutions.&lt;/p&gt; &lt;p&gt;We can increase our link coverage by adding it to a few of the persistent template elements:&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Help Center —&gt; Registration&lt;/li&gt;&lt;li&gt;Quick Links —&gt; Students&lt;/li&gt;&lt;li&gt;Footer, not sure exactly where yet&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;We can tag and measure the performance of these links over time to gauge their effectiveness. But ultimately more data is needed. And it’s the sort of data Google Analytics can’t really give us.&lt;/p&gt; &lt;p&gt;In the near future, I plan to do some usability testing with potential students. Locating the online application will be one of the primary tasks for that research. The results may help us arrive at a long term solution.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-8215264273526152380?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/8215264273526152380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=8215264273526152380' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/8215264273526152380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/8215264273526152380'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2009/12/badges-banners-and-calls-to-action.html' title='Badges, Banners, and Calls to Action'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-7191963469718332566</id><published>2009-12-03T19:04:00.001-06:00</published><updated>2009-12-03T19:08:06.909-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><title type='text'>First month with the new site</title><content type='html'>&lt;p&gt;Yesterday was December 2nd. We launched the new site on November 2nd. So as of today, I have one solid month of data on the new site available in Google Analytics. Let&amp;rsquo;s take a look at how we&amp;rsquo;re doing compared to November 3rd through December 3rd of last year. The dates don&amp;rsquo;t match up exactly so that we start on a Monday and end on a Tuesday with both date ranges.&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Visits up 27.53%&lt;/li&gt;&lt;li&gt;Unique Visitors up 89.16%&lt;/li&gt;&lt;li&gt;Page views up 38.51%&lt;/li&gt;&lt;li&gt;Average page views up 8.61%&lt;/li&gt;&lt;li&gt;Average time on site up 22.44%&lt;/li&gt;&lt;li&gt;Bounce rate down 46.09%&lt;/li&gt;&lt;li&gt;Percentage of new visits up 90.69%&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;These are all positive changes. Bounce rate is a bad thing, so seeing that number go down is good. We&amp;rsquo;re reaching more people, who are looking at more pages and spending longer stretches of time before leaving. But I&amp;rsquo;m not ready to say all this is due to the redesign. After all, we&amp;rsquo;ve seen a significant enrollment increase this semester, so all these numbers &lt;strong&gt;should&lt;/strong&gt; be improved over a year ago.&lt;/p&gt; &lt;p&gt;So let&amp;rsquo;s also compare the first month with the new site to a similar date range the month previous; 11/02/2009 through 12/02/2009 compared to 9/28/2009 through 10/28/2009, again starting on a Monday and ending on a Tuesday.&lt;/p&gt; &lt;ul&gt;&lt;li&gt;Visits up 0.22%&lt;/li&gt;&lt;li&gt;Unique Visitors up 15.27%&lt;/li&gt;&lt;li&gt;Page views up 30.01%&lt;/li&gt;&lt;li&gt;Average page views up 29.72%&lt;/li&gt;&lt;li&gt;Average time on site up 41.74%&lt;/li&gt;&lt;li&gt;Bounce rate down 51.39%&lt;/li&gt;&lt;li&gt;Percentage of new visits up 35.89%&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;This comparison is less straight forward. The new site has Thanksgiving break in this data set where the old site has no breaks, which would seem to put the new site at a disadvantage. But the old site&amp;rsquo;s figures come before registration opened up for the Spring, so in other ways it&amp;rsquo;s at a disadvantage. In other words, don&amp;rsquo;t read too much into this comparison.&lt;/p&gt; &lt;p&gt;It does help make it clear that the sorts of metrics tied to raw traffic have little to do with the redesign. The percentage change in visits is virtually zero. But metrics that measure engagement, such as time on site and bounce rate, actually show more improvement against a month ago than they do against a year ago. This probably helps show the natural boost we get thanks to registration opening up this time of year. When we&amp;rsquo;re talking about aggregate data it&amp;rsquo;s important to keep in mind all the variables that have nothing to do with the design of the site.&lt;/p&gt; &lt;p&gt;I&amp;rsquo;m more comfortable attributing large shifts in metrics for specific sections of site content that have been significantly overhauled as part of the redesign. For example, the list of our programs of study saw an increase in visits of 502.65% and an increase in unique visitors of 290.45% compared to figures for October of this year. Compared to a year ago, the difference is 548.75% increase in visits, 333.29% increase in unique visitors. One of my primary goals with the redesign was to increase the visibility of this content because I think it&amp;rsquo;s an important part of the &amp;#8220;shopping&amp;#8221; process. I think we can safely call that a success. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-7191963469718332566?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/7191963469718332566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=7191963469718332566' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/7191963469718332566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/7191963469718332566'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2009/12/first-month-with-new-site.html' title='First month with the new site'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-4789768015641641871</id><published>2009-11-01T17:01:00.004-06:00</published><updated>2009-11-02T08:45:47.633-06:00</updated><title type='text'>Don't mind me</title><content type='html'>&lt;p&gt;I just need some links from a non Vol State domain to test the custom 404 page.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.volstate.edu/davesnothereman/"&gt;broken link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.volstate.edu/IT/Helpdesk.html"&gt;html to php change&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.volstate.edu/IT/invalidpage.html"&gt;invalid page, valid directory&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.volstate.edu/davesnothereman/invalidpage.html"&gt;invalid page, invalid directory&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-4789768015641641871?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/4789768015641641871/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=4789768015641641871' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/4789768015641641871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/4789768015641641871'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2009/11/dont-mind-me.html' title='Don&apos;t mind me'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-5550715739869242767</id><published>2009-07-08T10:53:00.004-05:00</published><updated>2009-07-08T12:40:36.232-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='accessibility'/><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><category scheme='http://www.blogger.com/atom/ns#' term='knowledge management'/><title type='text'>The Culture of Technological Abundance</title><content type='html'>&lt;p&gt;In one of my computer science courses the instructor asked if computing resources have reached the point where efficiency can safely be ignored. I responded with a resounding &amp;#8220;No!&amp;#8221; but some of the younger pups in the class disagreed. I'm begging to think I was showing my age, at least within certain contexts.&lt;/p&gt;
&lt;p&gt;Something in my brain makes me love the idea of optimization. I actually police myself away from it, but I still find myself spending hours upon hours thinking about &amp;#8220;better ways&amp;#8221; to do things. I was recently debating with myself about storing telephone numbers in a database as integers vs. strings. I found the integer approach most appealing. It just &lt;em&gt;felt&lt;/em&gt; right. But I quickly figured out that would require formatting the data to be human readable every time I needed to display it as well as a bit of trickery on the front end to get the form input (which would be in a human readable format) into a basic int structure. That consumes a lot of my time, and possibly a lot of time for the users who eventually put the collected data to use. In exchange, I save a little bit of hard drive space.&lt;/p&gt;
&lt;p&gt;The new server has 500 gigs of RAIDed space. A formatted telephone number string, such as &amp;#8220;(888) 555 - 1234&amp;#8221; takes up 16 characters. That's a 17 byte VARCHAR. Even less if we default to something shorter for unrequired fields left blank by the user. But for the sake of argument let&amp;rsquo;s go with VARCHAR. Storing &amp;#8220;8885551234&amp;#8221; as a BIGINT requires 8 bytes, saving us 9 bytes. That&amp;rsquo;s 9 out of over 500 &lt;strong&gt;billion&lt;/strong&gt; available. We&amp;rsquo;ll end up with a few hundred form fields that will see a few hundred hits per year. For the sake of argument let&amp;rsquo;s say 400 squared, or 160,000. If my attempts at optimization save an average of 9 bytes per field per record, we'll run out of space after about 350,000 years. I'm not sure what the clock cycles are involved in fetching or even comparing a 16 character string vs a 10 digit number, but probably even more negligible than the storage space. Obviously, &lt;a href="http://www.wired.com/techbiz/it/magazine/17-07/mf_freer?currentPage=all"&gt;server resources are abundant when compared to my time and the time of my users&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m about half way done building the forms on my to-do list and I just convinced myself to change the way I handle things. Oy vey.&lt;/p&gt;
&lt;p&gt;If data is collected for the purpose of being later presented to humans, I will store it as a string, optimization be damned. I&amp;rsquo;ll use numeric types for data that is collected to be crunched, which in all honesty if rare right now. In situations where it could conceivably be used for both, such as dates, I&amp;rsquo;m probably better off storing both versions and fetching (or sorting by) whichever is most appropriate rather than running a timestamp through the date() function as needed or converting user input into the MySQL DATE format (which is both human readable and easily sortable).&lt;/p&gt;
&lt;p&gt;2 years into this redesign project and I&amp;rsquo;m still not done. In hindsight, the biggest setback has been my own perfectionism. I have a hand crafted attitude towards my work. I take great pride in it. But at what cost? It feels great when I see something like &lt;a href="http://www.smashingmagazine.com/2009/07/07/web-form-validation-best-practices-and-tutorials/"&gt;Smashing Magazine&amp;rsquo;s list of current best practices in form validation&lt;/a&gt; and I realize I&amp;rsquo;m already doing the majority of those things simply because they &amp;#8220;feel right&amp;#8221;. But I spent all day yesterday working on a single form, stayed 45 minutes late, and still didn&amp;rsquo;t get it done. That felt anything but great. What&amp;rsquo;s the trade off? Where do I draw the line?&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m even doing it now. I&amp;rsquo;m encoding my apostrophes and quote marks. Can anyone out there notice the difference between &amp;#8220;this&amp;#8221; and "this"? It's 12 extra key strokes for me to use the "proper" encoded characters. For all I know, Blogger auto-converts them for me anyway. (*EDIT* No, it doesn&amp;rsquo;t.) I've just developed the habit over the years of hand coding HTML. 12 keystrokes per quote pairs times 5 quotes per page times 3,000 pages at 400 characters per minute is 7.5 hours. That's a full workday over the past 2 years. Is that too high a price to pay for typographic correctness?&lt;/p&gt;
&lt;p&gt;What's the cost of XHTML validation? Of &lt;abbr title="Americans with Disabilities Act"&gt;ADA&lt;/abbr&gt; compliance? That last one could end up saving us a mint if lawsuits start getting tossed around. I know where my personal comfort level lies on most of these issues and I'm willing to re-evaluate in light of new information and fresh perspectives. As the only web guy around here I guess I get to make those judgement calls for the institution. But in a freelance situation my time is the client's money, which is definitely a scarce resource. A 0.2% markup cost for things like typographic correctness may not sit well with some clients, but there's plenty of designers out there who also don't care. Maybe they can service those clients.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-5550715739869242767?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/5550715739869242767/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=5550715739869242767' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/5550715739869242767'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/5550715739869242767'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2009/07/culture-of-technological-abundance.html' title='The Culture of Technological Abundance'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-6237755192907166009</id><published>2009-06-30T09:37:00.002-05:00</published><updated>2009-06-30T10:27:22.974-05:00</updated><title type='text'>New York Post op ed says degrees aren't worth it</title><content type='html'>&lt;a href="http://www.nypost.com/seven/06282009/postopinion/opedcolumnists/dont_get_that_college_degree__176545.htm?page=0"&gt;DON'T GET THAT COLLEGE DEGREE!
INTELLECTUALLY AND FINANCIALLY, STUDIES SHOW IT'S NOT WORTH IT
By JACK HOUGH&lt;/a&gt;

&lt;p&gt;Not the most well reasoned or argued article I’ve ever read (I know it’s just the Post, but the blogs I read are typically better written than this) and I don’t agree with his prescribed fix, but he hits on 2 big issues I think are vital to the future of higher ed.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;We're too slow.&lt;/li&gt;
&lt;li&gt;We have no accountability.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;We’re too slow.&lt;/h3&gt; 
&lt;p&gt;Someone has to decide to go to college, then apply for admissions, then apply for financial aid (which may spoil the deal if not enough is available), then wait around for registration to open, then pray the classes they want/need get enough people to &amp;#8220;make&amp;#8221; but not enough people to fill up, then wait around for classes to start.  It’s a lot of hoops for the students to jump through that have very little to do with the core value we offer them. Some of it is necessary, even beneficial, but the benefit isn't immediately apparent to the &amp;#8220;end user&amp;#8221;. I think in the next 10 years we'll be able to greatly streamline this process and make it much more student centered.  If we don't, someone else will, and we may find ourselves obsolete.&lt;/p&gt;
&lt;p&gt;Hough balances this with the abundance of cheap or even free quality educational resources available thanks to stuff like &lt;a href="http://www.ocwconsortium.org/"&gt;Open CourseWare&lt;/a&gt; and &lt;a href="http://www.apple.com/education/mobile-learning/"&gt;iTunes U&lt;/a&gt;.  &amp;#8220;Today's student who decides to learn at 1 a.m. should be doing it by 1:30. A process that makes him wait 18 months is not an education system. It's a barrier to education.&amp;#8221;  I don’t think it’s as bad as an 18 month wait, especially not here (we're a 2 year school were students can literally walk in the day before classes start and leave with a schedule for the coming semester, which I think is awesome), but I agree with the spirit of what he’s saying.&lt;/p&gt;
&lt;h3&gt;We have no accountability.&lt;/h3&gt;
&lt;p&gt;His focus is more on the ivy leagues, who seem to play a game of recruiting the brightest students who leave with a degree, still bright, but not much more so. Hough compares Harvard to a hospital who turns away the least healthy 92% of its patients and then takes credit for the health and longevity of the patients it treats. A degree is supposed to certify a graduate has met a certain standard of learning and competency, but everyone just has to take our word for it (&amp;#8220;our&amp;#8221; meaning the higher ed industry as a whole). Grade inflation and downright degree milling are eroding employers' faith in our authority to make such claims about our graduates.&lt;/p&gt;
&lt;p&gt;He calls for government regulation enforced by standardized testing.  I think that's horribly short sighted. But maybe we need something like the Bureau of Labor Statistics but for the long term impact of education. If longitudinal data was collected and made publically available in a standardized format, we’d have no choice but to get some accountability.  Even with newspapers failing, there will always be someone out there willing to take us to task over statistics.&lt;p&gt;
&lt;p&gt;The hypothetical example Hough uses sets the groundwork for the type of data that could be collected.  Median income 1 year after graduation, 5 years after, 10, 25, etc. Median education related debt at graduation with interest rates.  We'd have to correct for outside influences such as social-economic status.  Maybe comparing graduate incomes to the incomes of their own parents?  Someone better at statistics than me could tackle that problem.  Schools shouldn't be punished simply for servicing a poor area (although we all now they already are).&lt;/p&gt;
&lt;p&gt;Other fuzzy areas would be attempt to collect data on productivity and employer satisfaction. Standardized testing could play a role in measuring things like value added.  If there was a way to compare GRE scores to ACT/SAT scores, or maybe create a new test that's taken on the way in and on the way out to establish how much was actually learned. I think a large percentage of what is learned in a college or university experience would be hard to test for, so the results would have to be tampered with other data.&lt;/p&gt;
&lt;p&gt;There's also the type of research that goes into works such as &lt;a href="http://www.ctcl.org/"&gt;Colleges That Change Lives&lt;/a&gt;.  That has very little to do with economic issues such as debt and income and much more to do with civic engagement and overall satisfaction with ones own life. Hough would probably disagree with me there, since colleges that change lives tend to spend a lot of time on &amp;#8220;frivolous&amp;#8221; but engaging topics like gender studies.&lt;/p&gt;
&lt;p&gt;I also agree with Hough that we have an over reliance on the degree model. But Hough seems ready to completely abandon the degree model.  I think it works quite well in some areas, but not as well in others.  I think we're ready to see the rise of several different models, each suiting certain educational goals better than others.  There will of course be a transitional period where square pegs are pounded into new round holes, but eventually each model will focus on its own strengths and attract students with the proper kind of attitudes and learning styles.  I also think this will help us move away from viewing graduation as a culminating event and seek out models for life long learning.&lt;/p&gt;
&lt;p&gt;That may be horribly idealistic of me, but I also realize this won't happen over night.  My kids will probably be the square pegs being pounded into round holes.  And by the time my grandkids are ready for college, there will be a fresh crop of issues to address.  I expect evolution and improvement, not utopia.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-6237755192907166009?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/6237755192907166009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=6237755192907166009' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6237755192907166009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6237755192907166009'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2009/06/new-york-post-op-ed-says-degrees-arent.html' title='New York Post op ed says degrees aren&apos;t worth it'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-2872018858617771601</id><published>2009-06-04T12:11:00.003-05:00</published><updated>2009-06-04T13:33:14.410-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><category scheme='http://www.blogger.com/atom/ns#' term='inspiration'/><category scheme='http://www.blogger.com/atom/ns#' term='brand'/><title type='text'>.Edu websites and brand perception</title><content type='html'>&lt;p&gt;I&amp;rsquo;ve been a member of a site called &lt;a href="http://www.edustyle.net/"&gt;EduStyle&lt;/a&gt; since right after I took this job.  It’s a gallery site for higher ed redesigns.  I’ve been consistently blown away by the innovations, both visually and technologically, coming out of small, private colleges and universities compared to the standard 4-years.&lt;/p&gt;
&lt;p&gt;In regards to technology, Douglas Adams said:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Everything that's already in the world when you're born is just normal;&lt;/li&gt;
&lt;li&gt;anything that gets invented between then and before you turn thirty is incredibly exciting and creative and with any luck you can make a career out of it;&lt;/li&gt;
&lt;li&gt;anything that gets invented after you're thirty is against the natural order of things and the beginning of the end of civilization as we know it until it's been around for about ten years when it gradually turns out to be alright really.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The modern web was &amp;#8220;born&amp;#8221; in 1993.  We can go with the release of &lt;a href="http://en.wikipedia.org/wiki/Mosaic_(web_browser)"&gt;Mosaic&lt;/a&gt; and say April 22, in which case the web is now old enough to drive.  Or we can move a little later in the year with the &lt;a href="http://en.wikipedia.org/wiki/Eternal_September"&gt;Eternal September&lt;/a&gt; in which case the web is still stuck with a learner&amp;rsquo;s permit.  Either way, it&amp;rsquo;s old enough to be shopping around online and planning for its academic future.  Our personified web will be a traditional starting freshman come Fall 2011.&lt;/p&gt;
&lt;p&gt;A .edu website communicates a lot about the brand of the institution.  If we're horribly behind the times in technology that our primary recruiting demographic considers part of the natural order of things, we will suffer for it.  I&amp;rsquo;ve observed a gap developing over the past couple of years, and I admit that &lt;a href="http://www.volstate.edu/"&gt;our site&lt;/a&gt; is on the wrong end of that gap.  But I'm trying to &lt;a href="http://beta.volstate.edu/"&gt;catch up&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Compare &lt;a href="http://yale.edu/"&gt;Yale&lt;/a&gt; and &lt;a href="http://www.columbia.edu/"&gt;Columbia&lt;/a&gt; to &lt;a href="http://www.denverseminary.edu/"&gt;Denver Seminary&lt;/a&gt; and &lt;a href="http://www.biola.edu/undergrad/"&gt;Biola Undergraduate Admissions&lt;/a&gt;. I&amp;rsquo;m picking on the Ivy League and perhaps a bit unfairly.  &lt;a href="http://www.cornell.edu/"&gt;Cornell&amp;rsquo;s design&lt;/a&gt; is good enough that it&amp;rsquo;s inspired many other redesigns, including our own.  But it&amp;rsquo;s possible that the &lt;a href="http://www.usc.edu/"&gt;University of Southern California&lt;/a&gt; inspired Cornell.&lt;/p&gt;
&lt;p&gt;The reason I single out the Ivy Leagues is because today&amp;rsquo;s potential students have an innate, subconscious ability to judge us based on our web presence even if they lack the prior knowledge to understand things like published research and accreditation.  Does anyone go to the &lt;a href="http://www.phoenix.edu/"&gt;University of Phoenix&lt;/a&gt; because of the great research they produce?  I highly doubt it.  But their website feels more up to date than &lt;a href="http://mit.edu/"&gt;MIT&lt;/a&gt;.  We can delude ourselves and pretend that somehow our students are too smart to fall for such marketing gimmicks.  But it ain&amp;rsquo;t just gimmicks to them.&lt;/p&gt;
&lt;p&gt;I think it&amp;rsquo;s easy for us to forget what it&amp;rsquo;s like to be a teenager shopping for a school.  We&amp;rsquo;ve turned academics into a career, so we forget how alien a world it can be to an outsiders.  And let&amp;rsquo;s be honest, the vast majority of our potential students are outsiders.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;ve been at the top of my class throughout my entire academic career.  I was recommended for West Point and was encouraged to apply to lots of prestigious schools.  I didn&amp;rsquo;t pursue those options because I wanted to stay in Tennessee and I didn&amp;rsquo;t think I could afford &lt;a href="http://www.vanderbilt.edu/"&gt;Vandy&lt;/a&gt;.  I don&amp;rsquo;t regret those decisions, but I admit I may have chosen differently had I been equipped with a better understanding of financial aid.  I didn&amp;rsquo;t know who &lt;a href="http://www.sacs.org/"&gt;SACS&lt;/a&gt; was until &lt;a href="http://tntech.edu/"&gt;my alma mater&lt;/a&gt; went through their own accreditation review while I was a student.  I &lt;strong&gt;still&lt;/strong&gt; don&amp;rsquo;t know the exact different between a Bachelor of &lt;em&gt;Arts&lt;/em&gt; and a Bachelor of &lt;em&gt;Science&lt;/em&gt;.  If I ever need to list my degrees, I&amp;rsquo;ve gotta go look that up.  I didn&amp;rsquo;t know my degree from &lt;a href="http://pstcc.edu/"&gt;Pellisiippi&lt;/a&gt; was an Associates of Applied Science until I literally had the piece of paper in my hand.  All I knew was that it was &lt;a href="http://www.pstcc.edu/departments/mdt/web_about.htm"&gt;a degree that could advance my chosen career path&lt;/a&gt;. I had no reason to care about the academic nomenclature.  I doubt today&amp;rsquo;s students are much different.&lt;/p&gt;
&lt;p&gt;Managing and protecting our online brand perception is a big part of my job.  As much as I loathe jargon, I can't really think of a better way to say it.  I&amp;rsquo;m lucky to be working on a campus that understands that concept (if not in all the gory technical detail) in spite of the rarity of an administrator who was under 30 in 1993. :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-2872018858617771601?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/2872018858617771601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=2872018858617771601' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/2872018858617771601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/2872018858617771601'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2009/06/edu-websites-and-brand-perception.html' title='.Edu websites and brand perception'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-3022713954884116613</id><published>2009-04-22T20:34:00.003-05:00</published><updated>2009-04-22T21:40:13.457-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><title type='text'>The Proper Care and Feeding of VolState.edu</title><content type='html'>&lt;p&gt;Most literature on user centered design (UCD) focuses on redesigning existing products or creating wholly new products.  No literature I’ve found focuses on applying these ideas to established, mature products in the maintenance stage of their lifecycles.  However, with an eye towards abstraction, I think we should be able to take the high-level concepts and apply them to any stage of a product’s lifecycle.  My goal with this document is to establish some guidelines for making iterative improvements to &lt;a href="http://beta.volstate.edu/"&gt;VolState.edu&lt;/a&gt; using my current understanding of UCD practices, without having to shift into a full redesign.&lt;/p&gt;
&lt;p&gt;There is a split among experts in the field of usability.  Some strive for true science.  Tests use many participants, drawn from the target audience, with tight statistical fit.  Conditions are controlled and kept close to real-world environments.  Participants use high fidelity prototypes that are functionally complete, or very nearly so.  The data such tests produce is significant and reliable.  But these tests also cost into the tens or even hundreds of thousands of dollars.  Attempts have been made to codify formal systems for web site development, but these systems do little to address the practical concerns of time and money. (De Troyer &amp; Leune, 1998)&lt;/p&gt;
&lt;p&gt;In 1989, &lt;a href="http://www.useit.com/"&gt;Jacob Nielsen&lt;/a&gt; introduced the concept of discount usability in a paper titled &amp;#8220;Usability engineering at a discount&amp;#8221;.  The gist of the argument, to borrow a phrase from Steve Krug is &amp;#8220;Testing with 1 user is 100% better than testing none.&amp;#8221;  Many people, Nielsen included, have tried to show statistically where the sweet spot for return on investment lies in conducting usability studies.  Many other people, such as &lt;a href="http://www.uie.com/"&gt;Jared Spool&lt;/a&gt;, have counter argued against such reasoning. Each side tends to rely on math supplemented with anecdotal evidence.  This is all well and good as a distraction for academics.  Personally, I’m much more interested in producing a better product for our users than in the math and science underlying the methodology.&lt;/p&gt;
&lt;p&gt;I’m following Krug’s ideas most closely.  He goes even beyond Nielsen’s discount usability into what he calls &amp;#8220;lost our lease, going out of business sale usability testing&amp;#8221;.  Such testing can have value without the need for strict scientific validity.  He’s even gone so far as to call himself a usability testing evangelist, actively encouraging people to integrate it into their workflow.  In his book, &lt;i&gt;&lt;a href="http://www.amazon.com/Dont-Make-Me-Think-Usability/dp/0321344758/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1240451324&amp;sr=8-1"&gt;Don’t Make Me Think&lt;/a&gt;&lt;/i&gt;, he addresses the top 5 excuses for not performing usability testing.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;No time&lt;/strong&gt; &amp;ndash; Keep testing as small a deal as possible and you can fit it into one morning a month.  The data produced will actually save time by pointing out obvious flaws in a way that sidesteps most possible internal politics and by catching these problems as early as possible, when they are most easily fixed.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No money&lt;/strong&gt; &amp;ndash; Testing can be performed for as little as $50-$100 per session.  While that’s not free, it’s far from the $50,000+ price tag of big ticket professional testing.  In terms of ROI, it’s one of the wisest investments you can make.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No expertise&lt;/strong&gt; &amp;ndash; Experts will be better at it, but virtually any human being of reasonable intelligence and patience can conduct basic testing that will produce valuable results.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No usability lab&lt;/strong&gt; &amp;ndash; You don’t need one.  Since Krug first wrote his book, things have actually gotten even easier with software such as &lt;a href="http://silverbackapp.com/"&gt;Silverback&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Can’t interpret results&lt;/strong&gt; &amp;ndash; You don’t have to use SPSS to mine for valuable data.  The biggest problems will be the most obvious.  Even if you only identify and fix the most obvious 3 problems, that’s 3 fewer problems in the final product.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Obviously if my goal were to get published, even as a case study, I would worry a bit more about scientific validity than Krug stresses. Although even among the academic literature some examples of successful case studies can be found where no attempt was made in recruiting beyond very broad user categories. (Bordac &amp; Rainwater, 2008)  But my goal in this document is to create a framework for usability testing that is simple and affordable enough to be actionable at Vol State.  Ideally, it should be straightforward enough to persist beyond my tenure in this position.  For those goals, Krug seems a perfect fit.&lt;/p&gt;
&lt;h2&gt;Involving Users Through the Development Process&lt;/h2&gt;
&lt;h3&gt;Step 1: Identify a Problem or Unmet Need&lt;/h3&gt;
&lt;p&gt;Occasionally, users may volunteer information related to areas where improvements are possible or identify desired features not currently available.  Anything we can do to encourage and facilitate this can only help. &lt;/p&gt;
&lt;p&gt;Direct observation may also provide vital insight.  Students may be observed unobtrusively in computer labs or in the library.  Employees could be observed, with their permission, within their everyday work environment.  Surveys and focus groups may also assist in identifying unmet needs at a high level of abstraction.&lt;/p&gt;
&lt;p&gt;Problems exist within the context of users and goals.  A proper definition of a problem should identify these contexts.  Some possible examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Students wish they could perform a task online that currently requires a visit to an office on campus&lt;/li&gt;
&lt;li&gt;Parents want easier access to a certain type of data&lt;/li&gt;
&lt;li&gt;Faculty need a way to share educational resources&lt;/li&gt;
&lt;li&gt;Sports fans need a better way of viewing or sorting our events listings&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Understanding these contexts is vital to the success of a possible solution.  If parents express a desire for easier access to student records, that may very well violate &lt;a href="http://www.ed.gov/policy/gen/guid/fpco/ferpa/index.html"&gt;FERPA&lt;/a&gt;, in which case that problem is not actionable.  Faculty looking for ways to share educational resources may be best served by training on &lt;a href="http://delicious.com/"&gt;Delicious&lt;/a&gt;.  Even though we won’t stress a strict statistical fit with our test participants, understanding user groups in broad categories such as this allows for quick and easy targeting which should add value to the data collected via future testing.&lt;/p&gt;
&lt;h3&gt;Step 2: Establish Benchmark (Where Applicable)&lt;/h3&gt;
&lt;p&gt;Persistent, longitudinal data collected via survey could also apply at this step.  Google Analytics is another powerful tool we have at our disposal.  The type of benchmarking would depend greatly on the type of problem.  For example, problems that require adding new pages to the site would have no data available in Google Analytics against which to establish benchmarking.  But if those pages address an unmet need revealed via surveys that fail to turn up as an unmet need in a future survey, that could serve as a benchmark. (Comeaux, 2008) While I hope to incorporate this step as often as possible, I don’t want it to serve as justification for abandoning a project due to a lack of a method of establishing a proper benchmark.&lt;/p&gt;
&lt;h3&gt;Step 3: Wireframe Possible Solutions&lt;/h3&gt;
&lt;p&gt;Brainstorm for possible solutions to the problem.  Produce low-fi wireframes such as semi-functional HTML prototypes or paper prototypes.  Research seems to indicate that testing multiple prototypes produces more useful data (Tohidi et al, 2006).  Test 3 or 4 users loosely recruited from the broad user category identified in step 1.  Aim for 3 testable prototypes, but again don’t let this guideline derail an otherwise healthy project.&lt;/p&gt;
&lt;h3&gt;Step 4: Develop Solution Based on Wireframe Testing&lt;/h3&gt;
&lt;p&gt;Perhaps a clear winner will emerge from step 3, or perhaps the best possible solution will incorporate elements from multiple prototypes.  Entering into the development phase with even a small dose of user involvement cuts down on costs and ensures that we &amp;#8220;get the right design.&amp;#8221; (Tohidi et al, 2006)&lt;p&gt;
&lt;h3&gt;Step 5: Think-Aloud Usability Testing with Prototype&lt;/h3&gt;
&lt;p&gt;Construct a task list informed by the context and goal(s) identified in step 1.  Recruit loosely from the broad user group as in step 3.  Spend a morning walking 3 or 4 users through the task list.  Record sessions using Silverback.  Take quick notes between each session, recording the biggest issues while they are fresh in memory.  Produce a single page list of issues, not a full report.  Writing formal reports consume a lot of time better invested in fixing problems or further testing.  Review session recordings with stakeholders as appropriate.&lt;p&gt;
&lt;h3&gt;Step 6: Tweak Based on Testing&lt;/h3&gt;
&lt;p&gt;Fix the biggest 3 issues revealed in step 5.  Avoid the temptation to go for the low hanging fruit until the truly catastrophic issues have been resolved.  If something can be fixed with 15 minutes of work, by all means do so.  But don’t count that as one of the big 3 unless it is also a major problem.  After the big 3 and the easy fixes are addressed, act on any remaining issues as time permits.&lt;/p&gt;
&lt;h3&gt;Step 7: Launch &amp;amp; Evaluate&lt;/h3&gt;
&lt;p&gt;Put the solution into production.  If benchmarks were established, collect data for a length of time allowing for a reasonable comparison up to a maximum of 1 year.  If the data does not indicate improvement (and the criteria for judging this will be highly subjective and depend a great deal on context) consider returning to step 1 with an eye towards testing any assumptions in the original problem description.&lt;/p&gt;
&lt;h2&gt;Don’t Sweat the Details&lt;/h2&gt;
&lt;p&gt;Use the tools at our disposal to the best of their ability. Maybe a focus group would be the perfect tool for a given job.  But we can pull that off because of finances or because it’s summer and campus is like a ghost town.  Move on to a less than perfect solution, or plan to readdress that particular issue when the timing is right.  But if we postpone one project, we should find something to keep us busy in the meantime. With a site as large and complex as VolState.edu, we should always be able to find something to improve.&lt;/p&gt;
&lt;h3&gt;The Tools of the Trade&lt;/h3&gt;
&lt;p&gt;In this section I will list some of the tools available to us.  While I’ve made an honest effort to exhaust my knowledge on the subject, I make no claims to knowing every possible method.  We should actively look for new tools and add them to this list as we become aware of them.&lt;/p&gt;
&lt;h4&gt;Card Sort Studies&lt;/h4&gt;
&lt;p&gt;These studies are often used for organization and naming conventions.  There are 2 varieties.  (a) Closed card sort studies involve asking participants to sort pre-determined items into pre-determined categories.  (b) Open card sort studies involve asking participants to sort pre-determined items into groups which can then be labeled any way the participant chooses.  Such studies are cheap and easy to conduct and provide valuable information within the limited context of language choices and organization schemes.  Such problems are commonly reported in the literature involving case studies of university libraries. (Bordac &amp; Rainwater, 2008; Proffitt, 2007; Shafikova, 2005)&lt;/p&gt;
&lt;h4&gt;Surveys&lt;/h4&gt;
&lt;p&gt;In the past we’ve had great luck with &lt;a href="http://www.surveymonkey.com/"&gt;SurveyMonkey.com&lt;/a&gt;.  Care should be taken in wording questions in such a way as to avoid biasing the answers.  Surveys, particularly those delivered online, allow for a great number of participants from a wide range of our target audience.  Smaller, more targeted surveys can also be conducted in person or on paper depending on the need.  We also have access to data collected through marketing surveys conducted in 2003, 2008, and hopefully 2009.&lt;/p&gt;
&lt;h4&gt;Observation&lt;/h4&gt;
&lt;p&gt;Don’t underestimate the power of simply watching people using a system under normal conditions.  Observation alone will often only produce hints or assumptions about possible problem areas.  But that can be a great starting point from which to branch out into interviews or surveys.  In the case of formal observations, such as with employees, a quick follow up interview can probe for more details immediately. (Pekkola et al, 2006)&lt;/p&gt;
&lt;h4&gt;Focus Groups&lt;/h4&gt;
&lt;p&gt;While there are dangers associated with relying too heavily on preference and opinion based data such as that produced by focus groups, they can provide data useful to our purposes.  For example, it could be a great way to test assumptions arrived at through observing students using the website at the library.  We’ve observed students doing X, which we assume is a way of working around problem Y.  We could conduct a focus group to discover if Y really is a problem at all, or if students are engaging in behavior X for reasons we didn’t think of.  Focus groups are most effective when drawn from within a single user category.  For example, we probably would not want to mix students and faculty in the same focus group, nor faculty and administrators for that matter. (Kensing &amp; Blomberg, 1998)&lt;/p&gt;
&lt;h4&gt;Interviews&lt;/h4&gt;
&lt;p&gt;Interviews could be paired with observations, helping to clarify and test assumptions much like a focus group.  Or they could be used to help us construct personas.  They would be most useful early on to help explain the context within which a given problem may be occurring.&lt;/p&gt;
&lt;h4&gt;Prototypes&lt;/h4&gt;
&lt;p&gt;Paper mock ups for a possible user interface can be produced quickly and cheaply.  In a team environment, building such prototypes could even become a collaborative, iterative process.  Some teams have reported success even with complex interactive paper prototypes. (Tohidi et al, 2006; see also &lt;a href="http://wireframes.tumblr.com/"&gt;i &amp;hearts; wireframes&lt;/a&gt;)  Testing with such low-fi prototypes can lead to a greater willingness for participants to offer criticism since it’s obviously a work in progress.&lt;/p&gt;
&lt;p&gt;HTML prototypes can range from semi-functional to fully functional.  I’m personally much better at HTML wireframing than illustrating, so in the absence of outside assistance I will probably rely on HTML prototypes for both low-fi and high-fi testing.&lt;/p&gt;
&lt;h4&gt;Personas&lt;/h4&gt;
&lt;p&gt;Using demographic data, marketing research, and perhaps focus groups/interviews to construct an idealized but fictional user can help make user needs more personal and real (ironically enough) to a development team.  Knowing that we have students with family and work obligations is important.  But building a persona around that particular cluster of user attributes can make it easier to relate to and also give the development team a shorthand for addressing those issues.&lt;/p&gt;
&lt;p&gt;For example, we could create a persona named Barbara who is a single mother of 2, working full time graveyard shift as a manager at a 24 hour restaurant, attending Vol State for 3-6 hours per semester working on a degree in Hospitality Management.  She tries as often as possible to take classes on Tuesday/Thursday to minimize the burden of day time child care.  She’s not technologically proficient, but she’s willing to learn.  If given the choice between driving 45 minutes to campus or performing a task online, she prefers the online option in spite of her technological limitations.&lt;/p&gt;
&lt;p&gt;That’s a very basic persona, but it still gives us enough detail to say &amp;#8220;But what about Barbara?&amp;#8221; rather than &amp;#8220;But what about students who may have family or work obligations that prevent them from easily making an on campus visit on Mondays and Wednesdays?&amp;#8221;  Obviously personas could have applications outside of the realm of website development.  Barbara could also provide insight into event planning, for example.&lt;/p&gt;
&lt;h4&gt;Think-Aloud Usability Study&lt;/h4&gt;
&lt;p&gt;This is the crown jewel in my usability toolbox.  In a nutshell, it’s as simple as sitting a real human being in front of your product and watching them try to make sense of and use it.  Ideally, you should have some specific tasks to ask them to perform and keep them talking about what they are looking at, what they think they should do next, what they expect to happen when they do it, their reaction to what actually happens when they do it, etc.&lt;/p&gt;
&lt;p&gt;Full descriptions of the methodology can be found in lots of different places.  I personally recommend Krug’s book.  He’s even made the final 3 chapters of the first edition available on &lt;a href="http://www.sensible.com/"&gt;his website&lt;/a&gt; as a free download.  Those chapters contain the bulk of the info on this sort of testing.  There are other books, academic articles, and even blogs available, so pick your poison.  Jakob Nielsen and Jared Spool have both written prolifically across many distribution channels.&lt;/p&gt;
&lt;h4&gt;Heuristic Study/Expert Review&lt;/h4&gt;
&lt;p&gt;My list would not be complete were I to leave this off, but personally I find this the most suspect.  The general idea is you have an expert go over the interface and critique it based on a list of guidelines.  This idea originated with Nielsen too and his list of guidelines can be found on his website. (Nielsen, 2005)&lt;/p&gt;
&lt;p&gt;The highest value should be placed on methods that involve observations of real people interacting with some form of the interface in question.  Preference and opinion based methods, such as surveys, focus groups, and interviews, can be quite effective for collecting marketing type data.  But usability data relies too heavily on context for these methods to work alone. (Krug, 2008) However, any methods requiring direct human contact in the context of a college campus present a particular problem.&lt;/p&gt;
&lt;h2&gt;Sweat Some Details, but Document Them&lt;/h2&gt;
&lt;p&gt;One detail we have to sweat is the Institutional Review Board.  All those highly valued methods that involve human interaction will require IRB approval.  Even with approval, there’s no guarantee that a particular methodology will work.  For example, I recently put together a proposal for a card sort study that failed to successfully recruit any participants.  The good news is I’ve learned one method that does not work on this campus, so we can avoid any recruitment schemes that rely solely on face to face recruitment with no offers of compensation in the future.  Eventually we will discover methods that both appease the IRB and meet with success out in the field.  When that happens, we should save the IRB proposal, the information letter, the release forms, and all other deliverables.  The next time the need for such a test comes up, we can build on the previous success.  Many researchers, Krug among them, provide examples of their own materials that we can also integrate into our workflow.&lt;/p&gt;
&lt;h2&gt;Recommendations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Develop an easy to use feedback mechanism into VolState.edu such as a simple for to &amp;#8220;Report a problem with this page&amp;#8221; or an Amazon style &amp;#8220;Was this page helpful to you?&amp;#8221; tool.  Possibly both.&lt;/li&gt;
&lt;li&gt;Develop a standardized survey to be delivered via SurveyMonkey.com on an annual basis.  Collecting standardized, longitudinal data will allow for some forms of benchmarking.  Each iteration of the survey can include a handful of questions of a more timely nature in addition to the standard set.  For example, a question about a specific change made in the past year.&lt;/li&gt;
&lt;li&gt;Continue to develop our use of Google Analytics for statistical and possible benchmarking data.  However, do so with the understanding that Jared Spool has called analytics “voodoo data” because they lack context. (Spool, 2009)&lt;/li&gt;
&lt;li&gt;Integrate user testing to provide the context currently missing from our toolset as laid out in the 7 step model above.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;Bibliography&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Bordac, S, &amp; Rainwater, J (2008). User-Centered Design in Practice: The Brown University Experience. &lt;i&gt;Journal of Web Librarianship&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;Comeaux, D.J. (2008). Usability Studies and User-Centered Design in Digital Libraries. &lt;i&gt;Journal of Web Librarianship&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;De Troyer, O, &amp; Leune, C (1998). WSDM: a user centered design method for Web sites. &lt;i&gt;Computer Networks and ISDN Systems&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;Kensing, F, &amp; Blomberg, J (1998). Participatory Design: Issues and Concerns. &lt;i&gt;Computer Supported Cooperative Work&lt;/i&gt;.&lt;/li&gt;
&lt;li&gt;Krug, S (2005). &lt;i&gt;Don't Make Me Think: A Common Sense Approach to Web Usability, 2nd Edition&lt;/i&gt;. New Riders.&lt;/li&gt;
&lt;li&gt;Krug, S (2008). Steve Krug on the least you can do about usability. Retrieved April 22, 2009, from blip.tv Web site: &lt;a href="http://blip.tv/file/1557737/"&gt;http://blip.tv/file/1557737/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Nielsen, J (2005). Heurisitics for User Interface Design . Retrieved April 22, 2009, from useit.com: usable information technology Web site: &lt;a href="http://www.useit.com/papers/heuristic/heuristic_list.html"&gt;http://www.useit.com/papers/heuristic/heuristic_list.html&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Pekkola, S, Kaarilahti, N, &amp; Pohjola, P (2006). Towards formalised end-user participation in information systems development process: bridging the gap between participatory design and ISD methodologies. &lt;i&gt;Proceedings of the ninth conference on Participatory design: Expanding boundaries in design. 1&lt;/i&gt;, 21-30.&lt;/li&gt;
&lt;li&gt;Proffitt, M (2007). How and Why of User Studies: RLG's RedLightGreen as a Case Study. &lt;i&gt;Journal of Archival Organization&lt;/i&gt;. 4&lt;/li&gt;
&lt;li&gt;Spool, J Journey to the Center of Design. Retrieved April 22, 2009, from YouTube Web site: &lt;a href="http://www.youtube.com/watch?v=WCLGnMdBeW8"&gt;http://www.youtube.com/watch?v=WCLGnMdBeW8&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tohidi, M, Buxton, W, Baecker, R, &amp; Sellen, A (2006). Getting the right design and the design right. &lt;i&gt;Proceedings of the SIGCHI conference on Human Factors in computing systems&lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-3022713954884116613?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/3022713954884116613/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=3022713954884116613' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/3022713954884116613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/3022713954884116613'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2009/04/proper-care-and-feeding-of-volstateedu.html' title='The Proper Care and Feeding of VolState.edu'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-8225415111862029396</id><published>2009-04-13T15:07:00.003-05:00</published><updated>2009-04-13T15:41:52.881-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><category scheme='http://www.blogger.com/atom/ns#' term='version control'/><title type='text'>Version Control for the Web</title><content type='html'>&lt;p&gt;Does #lazyweb work on blogs?&lt;/p&gt;
&lt;p&gt;So I've had an idea.  And it may be what finally gets me to implement a version control system around here.&lt;/p&gt;
&lt;p&gt;A little over a year ago, I did a survey with our website visitors (by &amp;#8220;our website&amp;#8221; I mean &lt;a href="http://www.volstate.edu/"&gt;VolState.edu&lt;/a&gt;).  I expected the biggest problem to be reported would be trouble locating information.  I have full access to the server and have worked directly with the file structure for nearly 2 years now and I still have trouble finding stuff.  I was surprised to see that problems with findability were the 2nd most commonly reported.  #1 went to outdated info.&lt;/p&gt;
&lt;p&gt;I assume the 2 problems feed off each other.  You spend 15 minutes trying to find something, and then once you finally locate it, it's obviously out of date.  I know I'd be upset if placed in the same situation.  And unfortunately that's a situation we place our website visitors in every day.&lt;/p&gt;
&lt;p&gt;I can publish content updates once they cross my desk, but I can't summon them from thin air.  But I also realize we've got a lot of busy people on this campus who may not have the time to proofread their web content and alert me when updates are needed.  I could use that as an excuse, pass the buck, and move on with my life.  But I don't like that.&lt;/p&gt;
&lt;p&gt;One thing I've done in &lt;a href="http://beta.volstate.edu/"&gt;the redesign&lt;/a&gt; is to link to content from a single authoritative source as often as possible.  For example, the current site often lists &lt;a href="http://www.volstate.edu/HIT/courses.html"&gt;course&lt;/a&gt; and &lt;a href="http://www.volstate.edu/HIT/curriculum.html"&gt;curriculum&lt;/a&gt; info.  (I'm using our Health Information Technology program as an example here, but most of our programs follow this model.)  Now that's important info for both current and potential students, so I understand why we'd want to publish it.  But that's redundant info that can quickly fall out of date.  The catalog is the definitive source for course descriptions and curricula info.  I can also count on that getting updated every year.  Thankfully, &lt;a href="http://www.acalog.com/"&gt;Acalog&lt;/a&gt;, our 3rd party online catalog service, makes it possible to link to individual program descriptions.  So &lt;a href="http://beta.volstate.edu/hit/"&gt;the redesigned program pages&lt;/a&gt; send people there for the course and curriculum info.&lt;/p&gt;
&lt;p&gt;That's one less point of possible failure.  I know those pages will be kept up to date.  I no longer have to worry about them, and neither do the deans and program directors.&lt;/p&gt;
&lt;p&gt;Along the same lines, I'm thinking about a way to implement a reporting system that could alert me to each page that has gone X days without an update.  I figure a good version control system would support this, but at this stage that's a big assumption on my part.&lt;/p&gt;
&lt;p&gt;But if that's possible, I could create a system where the people responsible for providing content would be notified when a page could potentially be out of date.  If nothing has changed in the past X days to render the content out of date, that's fine, but I'd like to be able to document that.  I don't want to be seen as The Web Nazi, but if the first gentle reminder fails to get any feedback, I could follow up in a month or so including traffic figures from Google Analytics.  &amp;#8220;X people have viewed potentially out of date information on http://www.volstate.edu/YourDirectory/ since [date of initial notice]&amp;#8221;&lt;/p&gt;
&lt;p&gt;So my goals for this week are to generate a deliverable for my user centered design course (I tried a research project, but that failed to materalize once I hit the recruitment stage, still learned a lot though) and researching SVN, Git, CVS, etc.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-8225415111862029396?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/8225415111862029396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=8225415111862029396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/8225415111862029396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/8225415111862029396'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2009/04/version-control-for-web.html' title='Version Control for the Web'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-4942704272161987308</id><published>2009-04-02T09:59:00.002-05:00</published><updated>2009-04-02T10:07:53.037-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><title type='text'>An open letter to the University of Alberta</title><content type='html'>&lt;p&gt;Good morning everyone.  I've got a bit of an odd situation, so let me start off with some background info.&lt;/p&gt;

&lt;p&gt;I'm an international grad student enrolled in the MACT program.  Since that program is offered primarily online, I'm still living at "home" in Gallatin Tennessee.  I picked this program because it seemed more reputable than competing programs I found in the US, both those available within commuting distance and those offered online.  The online nature of the program seemed to soften most of the hurdles traditionally associated with seeking a degree across international borders.&lt;/p&gt;

&lt;p&gt;For the first year of the program, all those assumptions proved true and I was very happy with my overall experience with both the MACT program and the University of Alberta as a whole.&lt;/p&gt;

&lt;p&gt;Then you stopped accepting credit cards.&lt;/p&gt;

&lt;p&gt;Now the entire landscape has changed.  Had my first few semesters gone like this, I would not have stuck with the program.  By the time things took a turn for the worse, I was heavily invested in the program and hated to turn back.  I can't say for certain that this move is costing you business, but I can state with authority that it has greatly tarnished my personal experience with and perception of the U of A brand.&lt;/p&gt;

&lt;p&gt;As of right now, I still have a balance of $20.66 CAD.  But on the day I made my international wire transfer payment, I printed the exchange rates published on the U of A website along with the info sheet for international wire transfers.  I took this to my bank and paid a $45 USD fee for the wire transfer.  Apparently in the 4 days or so it took the transfer to clear, the exchange rate was not kind to me, so my payment fell short by about 2.8%.&lt;/p&gt;

&lt;p&gt;But how am I supposed to deal with this?  I took the most up to date info available to me at the time, provided by you.  I have no more control over the markets than you do.  Last semester, the same thing happened, only I ended up over paying by about $25 CAD.  That semester, I sent money orders via international post.  That cost about $18 USD, required me to fill out customs forms, would not allow me to get any sort of delivery confirmation, and took several weeks for delivery.  I had assumed it was the length of time that resulted in the imbalance, so this term I tried the faster yet more expensive method of international wire transfer.  Although I must admit the relative speed is also much easier on my mind.  Having no way to track or confirm delivery of something as important as payment for my education provided a very stressful couple of weeks last semester.  That stress stems from a process over which you have no control, but the fact of the matter is I experienced that stress as a direct result of a change to your systems.  So that experience tarnishes your brand perception anyway.  I can avoid that stress in the future by disassociating myself with your brand.&lt;/p&gt;

&lt;p&gt;With credit card payments, Visa or Mastercard took care of all the exchange rate madness instantly, so such discrepancies did not happen.  Now, international wire transfer is the fastest method available to me, and that takes close to a full business week.  It will be virtually impossible for me to make a payment that is correct to the penny.  If I'm short, I can either spend $18 (USD) to send you $20 (CAD), and wait for several weeks.  Or I can spend $45 (USD) to send you $20 (CAD) and wait about a week.  Either way we can easily end up in a Zeno's Arrow situation where I'm faced with spending $18 or $45 (USD) to send you $0.60 (CAD) a month later.  If I'm over, I'm sure your institution is placed in a similar situation.  Only I lack the means or authority to state and enforce exchange rates past the initial transaction.  And to tell the truth, I probably wouldn't worry about it even if I could.  How much hassle justifies that last 3% lost to the market?&lt;/p&gt;

&lt;p&gt;So to avoid all this, I've asked a classmate, an Edmonton native, to settle up my account as a personal favor to me.  Given my options, being indebted to a classmate is the least ugly and gets around the volatility of the market.&lt;/p&gt;

&lt;p&gt;Chances are, I'm an edge case.  I doubt you have many, if any, other international students who are not actually living in Canada.  Such students would have access to Canadian bank accounts and thus would be able to pay with "electronic checks" using native Canadian currency.  But I would not be surprised to learn that the parents of international students have found themselves in situations similar to my own.  If you've noticed a dip in the recruitment or retention rate of international students, the added red tape introduced by removing the option to pay with a credit card would be the first place to look.&lt;/p&gt;

&lt;p&gt;This process costs me about an extra 3% per semester anyway.  There's no quantitative measure for the added stress, and I have no means to track the time lost compared to the simplicity of the "old" credit card based payment system.  If your institution offered an option to pay with a credit card given a ~3% markup to cover the added costs to you, I'd accept that offer in a heartbeat.  And your brand perception could shrug off the layers of stress and aggravation I've come to associate with it over the past year.&lt;/p&gt;

&lt;p&gt;Thank you for your time.&lt;br/&gt;
Derek Pennycuff&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-4942704272161987308?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/4942704272161987308/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=4942704272161987308' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/4942704272161987308'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/4942704272161987308'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2009/04/open-letter-to-university-of-alberta.html' title='An open letter to the University of Alberta'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-6884690157763485516</id><published>2009-02-12T14:43:00.004-06:00</published><updated>2009-02-13T14:16:34.297-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='IE6'/><title type='text'>Javascript performance testing</title><content type='html'>&lt;p&gt;I've been horribly disappointed with IE's performance with some of my javascript, so the point that I've pretty much decided to simply hide the troublesome functions from IE users.  That's nearly 85% of our audience who won't get to experience the work I've put in to some of this stuff.  I thought I needed to get some actual figures on performance, so I took the worst offender and turned it into &lt;a href="http://beta.volstate.edu/organizationalchart/test131.html"&gt;a test case&lt;/a&gt;.  Then I thought while I'm doing that I might as well compare jQuery 1.2.6 to jQuery 1.3.1.  So I made &lt;a href="http://beta.volstate.edu/organizationalchart/test126.html"&gt;a 2nd test case&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;First of all, you need to understand that I'm terribly abusing the plugin in question.  I'm using &lt;a href="http://bassistance.de/jquery-plugins/jquery-plugin-treeview/"&gt;treeview&lt;/a&gt; to do the online version of our organizational chart.  There's a &lt;a href="http://jquery.bassistance.de/treeview/demo/large.html"&gt;demo&lt;/a&gt; showing how it works with large lists.  That demo has 290 total list items, 53 of which are expandable.  Our org chart has 403 list items, 81 of which are expandable.  It's large enough that I had to edit the default images to extend all the way down the fully expanded list.&lt;/p&gt;
&lt;p&gt;I added a crude counter to the plugin.  &lt;a href="http://beta.volstate.edu/js/jquery.treeview.js"&gt;Here's the code&lt;/a&gt;.  The lines involving Date() and getTime() and alert() functions are my additions (114 to 127 or so).  It's far from perfect, but it should be equally imperfect for all browsers and therefore free of bias.  What this does is whenever the expand all or collapse all function is triggered, it grabs the time early on in that process, then grabs the time again near the end of that process, computes the difference (in milliseconds) and alerts the value.  In each browser I expanded the list, recorded the value, collapsed the list, recorded that value, and repeated the process until I had 15 measurements for both the expand and the collapse feature.&lt;/p&gt;
&lt;h2&gt;The Data&lt;/h2&gt;
&lt;p&gt;We'll do the Mac browsers first.  I'm running on a 20 inch iMac with a 2.0 gHz Intel Core Duo processor and 4 gigs of RAM.  I ran these tests under "normal" conditions.  So I had other applications going and in the case of Firefox several other tabs open.&lt;/p&gt;
&lt;p&gt;All figures are in milliseconds.&lt;/p&gt;
&lt;h3&gt;Firefox 3.0.6&lt;/h3&gt;
&lt;table border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;jQuery:&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.3.1&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.2.6&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;
&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Tests&lt;/th&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;838&lt;/li&gt;
&lt;li&gt;840&lt;/li&gt;
&lt;li&gt;847&lt;/li&gt;
&lt;li&gt;826&lt;/li&gt;
&lt;li&gt;827&lt;/li&gt;
&lt;li&gt;821&lt;/li&gt;
&lt;li&gt;839&lt;/li&gt;
&lt;li&gt;835&lt;/li&gt;
&lt;li&gt;827&lt;/li&gt;
&lt;li&gt;827&lt;/li&gt;
&lt;li&gt;825&lt;/li&gt;
&lt;li&gt;839&lt;/li&gt;
&lt;li&gt;824&lt;/li&gt;
&lt;li&gt;816&lt;/li&gt;
&lt;li&gt;845&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;1178&lt;/li&gt;
&lt;li&gt;1184&lt;/li&gt;
&lt;li&gt;1183&lt;/li&gt;
&lt;li&gt;1188&lt;/li&gt;
&lt;li&gt;1188&lt;/li&gt;
&lt;li&gt;1184&lt;/li&gt;
&lt;li&gt;1187&lt;/li&gt;
&lt;li&gt;1205&lt;/li&gt;
&lt;li&gt;1186&lt;/li&gt;
&lt;li&gt;1190&lt;/li&gt;
&lt;li&gt;1189&lt;/li&gt;
&lt;li&gt;1182&lt;/li&gt;
&lt;li&gt;1185&lt;/li&gt;
&lt;li&gt;1182&lt;/li&gt;
&lt;li&gt;1190&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;506&lt;/li&gt;
&lt;li&gt;514&lt;/li&gt;
&lt;li&gt;511&lt;/li&gt;
&lt;li&gt;493&lt;/li&gt;
&lt;li&gt;482&lt;/li&gt;
&lt;li&gt;513&lt;/li&gt;
&lt;li&gt;480&lt;/li&gt;
&lt;li&gt;510&lt;/li&gt;
&lt;li&gt;493&lt;/li&gt;
&lt;li&gt;484&lt;/li&gt;
&lt;li&gt;508&lt;/li&gt;
&lt;li&gt;484&lt;/li&gt;
&lt;li&gt;492&lt;/li&gt;
&lt;li&gt;512&lt;/li&gt;
&lt;li&gt;491&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;1006&lt;/li&gt;
&lt;li&gt;1024&lt;/li&gt;
&lt;li&gt;999&lt;/li&gt;
&lt;li&gt;998&lt;/li&gt;
&lt;li&gt;1011&lt;/li&gt;
&lt;li&gt;998&lt;/li&gt;
&lt;li&gt;1010&lt;/li&gt;
&lt;li&gt;1003&lt;/li&gt;
&lt;li&gt;1009&lt;/li&gt;
&lt;li&gt;1008&lt;/li&gt;
&lt;li&gt;1005&lt;/li&gt;
&lt;li&gt;1002&lt;/li&gt;
&lt;li&gt;1000&lt;/li&gt;
&lt;li&gt;997&lt;/li&gt;
&lt;li&gt;994&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Min&lt;/th&gt;
&lt;td&gt;816&lt;/td&gt;
&lt;td&gt;1178&lt;/td&gt;
&lt;td&gt;480&lt;/td&gt;
&lt;td&gt;994&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Max&lt;/th&gt;
&lt;td&gt;847&lt;/td&gt;
&lt;td&gt;1205&lt;/td&gt;
&lt;td&gt;514&lt;/td&gt;
&lt;td&gt;1024&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Range&lt;/th&gt;
&lt;td&gt;31&lt;/td&gt;
&lt;td&gt;27&lt;/td&gt;
&lt;td&gt;34&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Median&lt;/th&gt;
&lt;td&gt;827&lt;/td&gt;
&lt;td&gt;1186&lt;/td&gt;
&lt;td&gt;493&lt;/td&gt;
&lt;td&gt;1003&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Average&lt;/th&gt;
&lt;td&gt;831.73&lt;/td&gt;
&lt;td&gt;1186.73&lt;/td&gt;
&lt;td&gt;498.2&lt;/td&gt;
&lt;td&gt;1004.26&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;The most surprising thing here is that jQuery 1.2.6 is actually a bit faster than 1.3.1.  Of course, 1.3.2 is supposed to release soon.  And as we'll see that's not true for every browser.  Collapsing takes longer than expanding.  I'll leave explaining that to someone that knows more about jQuery DOM transversal.&lt;/p&gt;

&lt;h3&gt;Safari 3.2.1&lt;/h3&gt;
&lt;table border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;jQuery:&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.3.1&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.2.6&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;
&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Tests&lt;/th&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;262&lt;/li&gt;
&lt;li&gt;256&lt;/li&gt;
&lt;li&gt;267&lt;/li&gt;
&lt;li&gt;269&lt;/li&gt;
&lt;li&gt;264&lt;/li&gt;
&lt;li&gt;269&lt;/li&gt;
&lt;li&gt;266&lt;/li&gt;
&lt;li&gt;267&lt;/li&gt;
&lt;li&gt;270&lt;/li&gt;
&lt;li&gt;270&lt;/li&gt;
&lt;li&gt;267&lt;/li&gt;
&lt;li&gt;269&lt;/li&gt;
&lt;li&gt;292&lt;/li&gt;
&lt;li&gt;267&lt;/li&gt;
&lt;li&gt;267&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;161&lt;/li&gt;
&lt;li&gt;159&lt;/li&gt;
&lt;li&gt;164&lt;/li&gt;
&lt;li&gt;163&lt;/li&gt;
&lt;li&gt;167&lt;/li&gt;
&lt;li&gt;164&lt;/li&gt;
&lt;li&gt;169&lt;/li&gt;
&lt;li&gt;165&lt;/li&gt;
&lt;li&gt;163&lt;/li&gt;
&lt;li&gt;164&lt;/li&gt;
&lt;li&gt;165&lt;/li&gt;
&lt;li&gt;164&lt;/li&gt;
&lt;li&gt;164&lt;/li&gt;
&lt;li&gt;166&lt;/li&gt;
&lt;li&gt;166&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;311&lt;/li&gt;
&lt;li&gt;311&lt;/li&gt;
&lt;li&gt;326&lt;/li&gt;
&lt;li&gt;316&lt;/li&gt;
&lt;li&gt;314&lt;/li&gt;
&lt;li&gt;311&lt;/li&gt;
&lt;li&gt;311&lt;/li&gt;
&lt;li&gt;319&lt;/li&gt;
&lt;li&gt;312&lt;/li&gt;
&lt;li&gt;314&lt;/li&gt;
&lt;li&gt;310&lt;/li&gt;
&lt;li&gt;316&lt;/li&gt;
&lt;li&gt;318&lt;/li&gt;
&lt;li&gt;318&lt;/li&gt;
&lt;li&gt;317&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;147&lt;/li&gt;
&lt;li&gt;146&lt;/li&gt;
&lt;li&gt;149&lt;/li&gt;
&lt;li&gt;151&lt;/li&gt;
&lt;li&gt;148&lt;/li&gt;
&lt;li&gt;148&lt;/li&gt;
&lt;li&gt;146&lt;/li&gt;
&lt;li&gt;149&lt;/li&gt;
&lt;li&gt;149&lt;/li&gt;
&lt;li&gt;149&lt;/li&gt;
&lt;li&gt;149&lt;/li&gt;
&lt;li&gt;151&lt;/li&gt;
&lt;li&gt;148&lt;/li&gt;
&lt;li&gt;152&lt;/li&gt;
&lt;li&gt;150&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Min&lt;/th&gt;
&lt;td&gt;256
&lt;/td&gt;
&lt;td&gt;159
&lt;/td&gt;
&lt;td&gt;310
&lt;/td&gt;
&lt;td&gt;146
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Max&lt;/th&gt;
&lt;td&gt;292
&lt;/td&gt;
&lt;td&gt;169
&lt;/td&gt;
&lt;td&gt;326
&lt;/td&gt;
&lt;td&gt;152
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Range&lt;/th&gt;
&lt;td&gt;36
&lt;/td&gt;
&lt;td&gt;10
&lt;/td&gt;
&lt;td&gt;16
&lt;/td&gt;
&lt;td&gt;6
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Median&lt;/th&gt;
&lt;td&gt;267
&lt;/td&gt;
&lt;td&gt;164
&lt;/td&gt;
&lt;td&gt;314
&lt;/td&gt;
&lt;td&gt;149
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Average&lt;/th&gt;
&lt;td&gt;268.13
&lt;/td&gt;
&lt;td&gt;164.27
&lt;/td&gt;
&lt;td&gt;314.9
&lt;/td&gt;
&lt;td&gt;148.8
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;At first I thought the performance boost for 1.3.1 here was pretty small, but I think the fact that all the numbers involved is tiny threw me off.  If you add up the median figures, you'll find a difference of about 7.5%.  That's nothing compared to the relative advantage Safari already has over most of the other browsers, but I think it's still a decent speed boost for the new jQuery release.&lt;/p&gt;
&lt;p&gt;Safri's js engine is awesome. :)&lt;/p&gt;
&lt;p&gt;Can anyone explain why in Safari collapse is quicker than expand, but in Firefox it's the other way around?&lt;/p&gt;



&lt;h3&gt;Opera 9.63&lt;/h3&gt;
&lt;table border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;jQuery:&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.3.1&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.2.6&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;
&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Tests&lt;/th&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;692&lt;/li&gt;
&lt;li&gt;690&lt;/li&gt;
&lt;li&gt;737&lt;/li&gt;
&lt;li&gt;667&lt;/li&gt;
&lt;li&gt;711&lt;/li&gt;
&lt;li&gt;703&lt;/li&gt;
&lt;li&gt;715&lt;/li&gt;
&lt;li&gt;703&lt;/li&gt;
&lt;li&gt;704&lt;/li&gt;
&lt;li&gt;692&lt;/li&gt;
&lt;li&gt;719&lt;/li&gt;
&lt;li&gt;680&lt;/li&gt;
&lt;li&gt;731&lt;/li&gt;
&lt;li&gt;695&lt;/li&gt;
&lt;li&gt;682&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;698&lt;/li&gt;
&lt;li&gt;709&lt;/li&gt;
&lt;li&gt;721&lt;/li&gt;
&lt;li&gt;709&lt;/li&gt;
&lt;li&gt;715&lt;/li&gt;
&lt;li&gt;730&lt;/li&gt;
&lt;li&gt;697&lt;/li&gt;
&lt;li&gt;695&lt;/li&gt;
&lt;li&gt;692&lt;/li&gt;
&lt;li&gt;696&lt;/li&gt;
&lt;li&gt;705&lt;/li&gt;
&lt;li&gt;704&lt;/li&gt;
&lt;li&gt;697&lt;/li&gt;
&lt;li&gt;713&lt;/li&gt;
&lt;li&gt;696&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;875&lt;/li&gt;
&lt;li&gt;944&lt;/li&gt;
&lt;li&gt;904&lt;/li&gt;
&lt;li&gt;875&lt;/li&gt;
&lt;li&gt;872&lt;/li&gt;
&lt;li&gt;869&lt;/li&gt;
&lt;li&gt;864&lt;/li&gt;
&lt;li&gt;929&lt;/li&gt;
&lt;li&gt;905&lt;/li&gt;
&lt;li&gt;910&lt;/li&gt;
&lt;li&gt;891&lt;/li&gt;
&lt;li&gt;885&lt;/li&gt;
&lt;li&gt;926&lt;/li&gt;
&lt;li&gt;857&lt;/li&gt;
&lt;li&gt;918&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;691&lt;/li&gt;
&lt;li&gt;711&lt;/li&gt;
&lt;li&gt;692&lt;/li&gt;
&lt;li&gt;692&lt;/li&gt;
&lt;li&gt;684&lt;/li&gt;
&lt;li&gt;692&lt;/li&gt;
&lt;li&gt;741&lt;/li&gt;
&lt;li&gt;688&lt;/li&gt;
&lt;li&gt;652&lt;/li&gt;
&lt;li&gt;687&lt;/li&gt;
&lt;li&gt;674&lt;/li&gt;
&lt;li&gt;707&lt;/li&gt;
&lt;li&gt;701&lt;/li&gt;
&lt;li&gt;692&lt;/li&gt;
&lt;li&gt;690&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Min&lt;/th&gt;
&lt;td&gt;667
&lt;/td&gt;
&lt;td&gt;692
&lt;/td&gt;
&lt;td&gt;857
&lt;/td&gt;
&lt;td&gt;652
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Max&lt;/th&gt;
&lt;td&gt;737
&lt;/td&gt;
&lt;td&gt;730
&lt;/td&gt;
&lt;td&gt;944
&lt;/td&gt;
&lt;td&gt;741
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Range&lt;/th&gt;
&lt;td&gt;70
&lt;/td&gt;
&lt;td&gt;38
&lt;/td&gt;
&lt;td&gt;87
&lt;/td&gt;
&lt;td&gt;89
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Median&lt;/th&gt;
&lt;td&gt;703
&lt;/td&gt;
&lt;td&gt;698
&lt;/td&gt;
&lt;td&gt;891
&lt;/td&gt;
&lt;td&gt;692
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Average&lt;/th&gt;
&lt;td&gt;701.4
&lt;/td&gt;
&lt;td&gt;705.13
&lt;/td&gt;
&lt;td&gt;894.93
&lt;/td&gt;
&lt;td&gt;692.93
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Opera seems slow compared to Safari, but it's on par with Firefox, and more than tolerable.  We also see a decent speed boost with 1.3.1 here.
&lt;/p&gt;


&lt;h2&gt;Windows Browsers&lt;/h2&gt;
&lt;p&gt;I'm running Windows XP via virtualization with 412 megs of RAM.  These tests were run with no other running applications, so more "ideal" conditions than the Mac browsers got.  Then again, the Macs get a ton more RAM and aren't running in a virtual machine.  I tested both Firefox 2 and Firefox 3 because a decent portion of our Firefox using audience haven't upgraded yet.&lt;/p&gt;

&lt;h3&gt;Firefox 2.0.0.20&lt;/h3&gt;
&lt;table border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;jQuery:&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.3.1&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.2.6&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;
&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Tests&lt;/th&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;1018&lt;/li&gt;
&lt;li&gt;1069&lt;/li&gt;
&lt;li&gt;1019&lt;/li&gt;
&lt;li&gt;1019&lt;/li&gt;
&lt;li&gt;1019&lt;/li&gt;
&lt;li&gt;1019&lt;/li&gt;
&lt;li&gt;989&lt;/li&gt;
&lt;li&gt;1049&lt;/li&gt;
&lt;li&gt;1019&lt;/li&gt;
&lt;li&gt;989&lt;/li&gt;
&lt;li&gt;1029&lt;/li&gt;
&lt;li&gt;1009&lt;/li&gt;
&lt;li&gt;1029&lt;/li&gt;
&lt;li&gt;999&lt;/li&gt;
&lt;li&gt;969&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;1169&lt;/li&gt;
&lt;li&gt;1109&lt;/li&gt;
&lt;li&gt;1129&lt;/li&gt;
&lt;li&gt;1129&lt;/li&gt;
&lt;li&gt;1139&lt;/li&gt;
&lt;li&gt;1159&lt;/li&gt;
&lt;li&gt;1129&lt;/li&gt;
&lt;li&gt;1189&lt;/li&gt;
&lt;li&gt;1149&lt;/li&gt;
&lt;li&gt;1129&lt;/li&gt;
&lt;li&gt;1128&lt;/li&gt;
&lt;li&gt;1129&lt;/li&gt;
&lt;li&gt;1129&lt;/li&gt;
&lt;li&gt;1189&lt;/li&gt;
&lt;li&gt;1119&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;629&lt;/li&gt;
&lt;li&gt;629&lt;/li&gt;
&lt;li&gt;609&lt;/li&gt;
&lt;li&gt;649&lt;/li&gt;
&lt;li&gt;609&lt;/li&gt;
&lt;li&gt;639&lt;/li&gt;
&lt;li&gt;619&lt;/li&gt;
&lt;li&gt;629&lt;/li&gt;
&lt;li&gt;619&lt;/li&gt;
&lt;li&gt;649&lt;/li&gt;
&lt;li&gt;630&lt;/li&gt;
&lt;li&gt;629&lt;/li&gt;
&lt;li&gt;640&lt;/li&gt;
&lt;li&gt;629&lt;/li&gt;
&lt;li&gt;639&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;740&lt;/li&gt;
&lt;li&gt;719&lt;/li&gt;
&lt;li&gt;739&lt;/li&gt;
&lt;li&gt;729&lt;/li&gt;
&lt;li&gt;749&lt;/li&gt;
&lt;li&gt;749&lt;/li&gt;
&lt;li&gt;749&lt;/li&gt;
&lt;li&gt;730&lt;/li&gt;
&lt;li&gt;739&lt;/li&gt;
&lt;li&gt;739&lt;/li&gt;
&lt;li&gt;759&lt;/li&gt;
&lt;li&gt;750&lt;/li&gt;
&lt;li&gt;759&lt;/li&gt;
&lt;li&gt;719&lt;/li&gt;
&lt;li&gt;769&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Min&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Max&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Range&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Median&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Average&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Here we're starting to get slower than I'd like.  A full second for anything to happen is a bit much.  Then again, 403 list items in 81 lists is a lot of munch on.  Once again we loose a little speed with the new jQuery release.  Hmm.&lt;/p&gt;


&lt;h3&gt;Firefox 3.0.6&lt;/h3&gt;
&lt;table border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;jQuery:&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.3.1&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.2.6&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;
&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Tests&lt;/th&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;431&lt;/li&gt;
&lt;li&gt;449&lt;/li&gt;
&lt;li&gt;461&lt;/li&gt;
&lt;li&gt;434&lt;/li&gt;
&lt;li&gt;464&lt;/li&gt;
&lt;li&gt;472&lt;/li&gt;
&lt;li&gt;558&lt;/li&gt;
&lt;li&gt;493&lt;/li&gt;
&lt;li&gt;481&lt;/li&gt;
&lt;li&gt;436&lt;/li&gt;
&lt;li&gt;457&lt;/li&gt;
&lt;li&gt;442&lt;/li&gt;
&lt;li&gt;472&lt;/li&gt;
&lt;li&gt;462&lt;/li&gt;
&lt;li&gt;458&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;657&lt;/li&gt;
&lt;li&gt;688&lt;/li&gt;
&lt;li&gt;648&lt;/li&gt;
&lt;li&gt;623&lt;/li&gt;
&lt;li&gt;657&lt;/li&gt;
&lt;li&gt;708&lt;/li&gt;
&lt;li&gt;632&lt;/li&gt;
&lt;li&gt;650&lt;/li&gt;
&lt;li&gt;695&lt;/li&gt;
&lt;li&gt;649&lt;/li&gt;
&lt;li&gt;634&lt;/li&gt;
&lt;li&gt;649&lt;/li&gt;
&lt;li&gt;648&lt;/li&gt;
&lt;li&gt;659&lt;/li&gt;
&lt;li&gt;625&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;450&lt;/li&gt;
&lt;li&gt;467&lt;/li&gt;
&lt;li&gt;424&lt;/li&gt;
&lt;li&gt;475&lt;/li&gt;
&lt;li&gt;443&lt;/li&gt;
&lt;li&gt;456&lt;/li&gt;
&lt;li&gt;446&lt;/li&gt;
&lt;li&gt;472&lt;/li&gt;
&lt;li&gt;460&lt;/li&gt;
&lt;li&gt;477&lt;/li&gt;
&lt;li&gt;449&lt;/li&gt;
&lt;li&gt;464&lt;/li&gt;
&lt;li&gt;483&lt;/li&gt;
&lt;li&gt;468&lt;/li&gt;
&lt;li&gt;440&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;618&lt;/li&gt;
&lt;li&gt;650&lt;/li&gt;
&lt;li&gt;634&lt;/li&gt;
&lt;li&gt;638&lt;/li&gt;
&lt;li&gt;667&lt;/li&gt;
&lt;li&gt;637&lt;/li&gt;
&lt;li&gt;632&lt;/li&gt;
&lt;li&gt;632&lt;/li&gt;
&lt;li&gt;646&lt;/li&gt;
&lt;li&gt;643&lt;/li&gt;
&lt;li&gt;622&lt;/li&gt;
&lt;li&gt;614&lt;/li&gt;
&lt;li&gt;628&lt;/li&gt;
&lt;li&gt;651&lt;/li&gt;
&lt;li&gt;640&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Min&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Max&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Range&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Median&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Average&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Here we go!  Come on Firefox users, update already!&lt;/p&gt;



&lt;h3&gt;Safari 3.2.1&lt;/h3&gt;
&lt;table border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;jQuery:&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.3.1&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.2.6&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;
&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Tests&lt;/th&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;253&lt;/li&gt;
&lt;li&gt;326&lt;/li&gt;
&lt;li&gt;277&lt;/li&gt;
&lt;li&gt;257&lt;/li&gt;
&lt;li&gt;268&lt;/li&gt;
&lt;li&gt;288&lt;/li&gt;
&lt;li&gt;278&lt;/li&gt;
&lt;li&gt;269&lt;/li&gt;
&lt;li&gt;244&lt;/li&gt;
&lt;li&gt;271&lt;/li&gt;
&lt;li&gt;264&lt;/li&gt;
&lt;li&gt;281&lt;/li&gt;
&lt;li&gt;284&lt;/li&gt;
&lt;li&gt;281&lt;/li&gt;
&lt;li&gt;293&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;141&lt;/li&gt;
&lt;li&gt;171&lt;/li&gt;
&lt;li&gt;148&lt;/li&gt;
&lt;li&gt;160&lt;/li&gt;
&lt;li&gt;147&lt;/li&gt;
&lt;li&gt;143&lt;/li&gt;
&lt;li&gt;147&lt;/li&gt;
&lt;li&gt;150&lt;/li&gt;
&lt;li&gt;151&lt;/li&gt;
&lt;li&gt;171&lt;/li&gt;
&lt;li&gt;163&lt;/li&gt;
&lt;li&gt;158&lt;/li&gt;
&lt;li&gt;154&lt;/li&gt;
&lt;li&gt;142&lt;/li&gt;
&lt;li&gt;147&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;303&lt;/li&gt;
&lt;li&gt;300&lt;/li&gt;
&lt;li&gt;324&lt;/li&gt;
&lt;li&gt;327&lt;/li&gt;
&lt;li&gt;313&lt;/li&gt;
&lt;li&gt;312&lt;/li&gt;
&lt;li&gt;283&lt;/li&gt;
&lt;li&gt;297&lt;/li&gt;
&lt;li&gt;355&lt;/li&gt;
&lt;li&gt;332&lt;/li&gt;
&lt;li&gt;367&lt;/li&gt;
&lt;li&gt;332&lt;/li&gt;
&lt;li&gt;360&lt;/li&gt;
&lt;li&gt;317&lt;/li&gt;
&lt;li&gt;307&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;130&lt;/li&gt;
&lt;li&gt;133&lt;/li&gt;
&lt;li&gt;129&lt;/li&gt;
&lt;li&gt;134&lt;/li&gt;
&lt;li&gt;135&lt;/li&gt;
&lt;li&gt;134&lt;/li&gt;
&lt;li&gt;129&lt;/li&gt;
&lt;li&gt;130&lt;/li&gt;
&lt;li&gt;132&lt;/li&gt;
&lt;li&gt;130&lt;/li&gt;
&lt;li&gt;133&lt;/li&gt;
&lt;li&gt;135&lt;/li&gt;
&lt;li&gt;148&lt;/li&gt;
&lt;li&gt;133&lt;/li&gt;
&lt;li&gt;129&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Min&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Max&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Range&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Median&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Average&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Safari continues to be awesome, even on Windows. :)&lt;/p&gt;



&lt;h3&gt;Opera 9.63&lt;/h3&gt;
&lt;table border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;jQuery:&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.3.1&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.2.6&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;
&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Tests&lt;/th&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;470&lt;/li&gt;
&lt;li&gt;480&lt;/li&gt;
&lt;li&gt;469&lt;/li&gt;
&lt;li&gt;480&lt;/li&gt;
&lt;li&gt;480&lt;/li&gt;
&lt;li&gt;499&lt;/li&gt;
&lt;li&gt;490&lt;/li&gt;
&lt;li&gt;580&lt;/li&gt;
&lt;li&gt;469&lt;/li&gt;
&lt;li&gt;519&lt;/li&gt;
&lt;li&gt;460&lt;/li&gt;
&lt;li&gt;470&lt;/li&gt;
&lt;li&gt;479&lt;/li&gt;
&lt;li&gt;563&lt;/li&gt;
&lt;li&gt;480&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;399&lt;/li&gt;
&lt;li&gt;410&lt;/li&gt;
&lt;li&gt;429&lt;/li&gt;
&lt;li&gt;409&lt;/li&gt;
&lt;li&gt;419&lt;/li&gt;
&lt;li&gt;399&lt;/li&gt;
&lt;li&gt;419&lt;/li&gt;
&lt;li&gt;409&lt;/li&gt;
&lt;li&gt;400&lt;/li&gt;
&lt;li&gt;400&lt;/li&gt;
&lt;li&gt;400&lt;/li&gt;
&lt;li&gt;430&lt;/li&gt;
&lt;li&gt;410&lt;/li&gt;
&lt;li&gt;399&lt;/li&gt;
&lt;li&gt;399&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;949&lt;/li&gt;
&lt;li&gt;989&lt;/li&gt;
&lt;li&gt;949&lt;/li&gt;
&lt;li&gt;929&lt;/li&gt;
&lt;li&gt;939&lt;/li&gt;
&lt;li&gt;939&lt;/li&gt;
&lt;li&gt;939&lt;/li&gt;
&lt;li&gt;929&lt;/li&gt;
&lt;li&gt;939&lt;/li&gt;
&lt;li&gt;939&lt;/li&gt;
&lt;li&gt;959&lt;/li&gt;
&lt;li&gt;949&lt;/li&gt;
&lt;li&gt;958&lt;/li&gt;
&lt;li&gt;1009&lt;/li&gt;
&lt;li&gt;989&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;370&lt;/li&gt;
&lt;li&gt;380&lt;/li&gt;
&lt;li&gt;390&lt;/li&gt;
&lt;li&gt;409&lt;/li&gt;
&lt;li&gt;400&lt;/li&gt;
&lt;li&gt;390&lt;/li&gt;
&lt;li&gt;370&lt;/li&gt;
&lt;li&gt;390&lt;/li&gt;
&lt;li&gt;380&lt;/li&gt;
&lt;li&gt;400&lt;/li&gt;
&lt;li&gt;399&lt;/li&gt;
&lt;li&gt;420&lt;/li&gt;
&lt;li&gt;380&lt;/li&gt;
&lt;li&gt;400&lt;/li&gt;
&lt;li&gt;420&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Min&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Max&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Range&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Median&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Average&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;With Opera on Windows, we see some pretty solid speed boosts with the 1.3.1 release of jQuery.&lt;/p&gt;



&lt;h3&gt;Chrome 1.0.154.48&lt;/h3&gt;
&lt;table border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;jQuery:&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.3.1&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.2.6&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;
&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Tests&lt;/th&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;229&lt;/li&gt;
&lt;li&gt;203&lt;/li&gt;
&lt;li&gt;191&lt;/li&gt;
&lt;li&gt;195&lt;/li&gt;
&lt;li&gt;158&lt;/li&gt;
&lt;li&gt;208&lt;/li&gt;
&lt;li&gt;201&lt;/li&gt;
&lt;li&gt;188&lt;/li&gt;
&lt;li&gt;204&lt;/li&gt;
&lt;li&gt;244&lt;/li&gt;
&lt;li&gt;360&lt;/li&gt;
&lt;li&gt;327&lt;/li&gt;
&lt;li&gt;307&lt;/li&gt;
&lt;li&gt;305&lt;/li&gt;
&lt;li&gt;178&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;88&lt;/li&gt;
&lt;li&gt;77&lt;/li&gt;
&lt;li&gt;119&lt;/li&gt;
&lt;li&gt;88&lt;/li&gt;
&lt;li&gt;79&lt;/li&gt;
&lt;li&gt;106&lt;/li&gt;
&lt;li&gt;84&lt;/li&gt;
&lt;li&gt;86&lt;/li&gt;
&lt;li&gt;95&lt;/li&gt;
&lt;li&gt;158&lt;/li&gt;
&lt;li&gt;116&lt;/li&gt;
&lt;li&gt;145&lt;/li&gt;
&lt;li&gt;135&lt;/li&gt;
&lt;li&gt;61&lt;/li&gt;
&lt;li&gt;81&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;512&lt;/li&gt;
&lt;li&gt;598&lt;/li&gt;
&lt;li&gt;546&lt;/li&gt;
&lt;li&gt;607&lt;/li&gt;
&lt;li&gt;607&lt;/li&gt;
&lt;li&gt;640&lt;/li&gt;
&lt;li&gt;526&lt;/li&gt;
&lt;li&gt;674&lt;/li&gt;
&lt;li&gt;545&lt;/li&gt;
&lt;li&gt;631&lt;/li&gt;
&lt;li&gt;549&lt;/li&gt;
&lt;li&gt;635&lt;/li&gt;
&lt;li&gt;581&lt;/li&gt;
&lt;li&gt;616&lt;/li&gt;
&lt;li&gt;531&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;111&lt;/li&gt;
&lt;li&gt;112&lt;/li&gt;
&lt;li&gt;133&lt;/li&gt;
&lt;li&gt;115&lt;/li&gt;
&lt;li&gt;109&lt;/li&gt;
&lt;li&gt;105&lt;/li&gt;
&lt;li&gt;103&lt;/li&gt;
&lt;li&gt;103&lt;/li&gt;
&lt;li&gt;105&lt;/li&gt;
&lt;li&gt;106&lt;/li&gt;
&lt;li&gt;133&lt;/li&gt;
&lt;li&gt;112&lt;/li&gt;
&lt;li&gt;109&lt;/li&gt;
&lt;li&gt;110&lt;/li&gt;
&lt;li&gt;114&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Min&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Max&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Range&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Median&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Average&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Chrome also sees some good boosts from 1.3.1 and manages to out awesome even Safari.  When you look at the range as a percentage, it's all over the place.  Sometimes the alert box would have a check box in it that would say something to the effect of "prevent this site from producing alert boxes" and I think those tended to take longer to generate.  Maybe Chrome's doing other stuff behind the scenes.  I'd need to do more specific research to figure this one out.&lt;/p&gt;


&lt;h3&gt;IE 7.0.5730.13&lt;/h3&gt;
&lt;table border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;jQuery:&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.3.1&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.2.6&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;
&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Tests&lt;/th&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;2990&lt;/li&gt;
&lt;li&gt;2897&lt;/li&gt;
&lt;li&gt;2867&lt;/li&gt;
&lt;li&gt;2917&lt;/li&gt;
&lt;li&gt;3016&lt;/li&gt;
&lt;li&gt;2877&lt;/li&gt;
&lt;li&gt;2877&lt;/li&gt;
&lt;li&gt;2847&lt;/li&gt;
&lt;li&gt;2907&lt;/li&gt;
&lt;li&gt;2897&lt;/li&gt;
&lt;li&gt;2877&lt;/li&gt;
&lt;li&gt;2916&lt;/li&gt;
&lt;li&gt;2897&lt;/li&gt;
&lt;li&gt;2888&lt;/li&gt;
&lt;li&gt;2848&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;1718&lt;/li&gt;
&lt;li&gt;1738&lt;/li&gt;
&lt;li&gt;1832&lt;/li&gt;
&lt;li&gt;1718&lt;/li&gt;
&lt;li&gt;1668&lt;/li&gt;
&lt;li&gt;1708&lt;/li&gt;
&lt;li&gt;1678&lt;/li&gt;
&lt;li&gt;1678&lt;/li&gt;
&lt;li&gt;1698&lt;/li&gt;
&lt;li&gt;1709&lt;/li&gt;
&lt;li&gt;1728&lt;/li&gt;
&lt;li&gt;1738&lt;/li&gt;
&lt;li&gt;1689&lt;/li&gt;
&lt;li&gt;1688&lt;/li&gt;
&lt;li&gt;1708&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;2538&lt;/li&gt;
&lt;li&gt;2587&lt;/li&gt;
&lt;li&gt;2557&lt;/li&gt;
&lt;li&gt;2557&lt;/li&gt;
&lt;li&gt;2577&lt;/li&gt;
&lt;li&gt;2568&lt;/li&gt;
&lt;li&gt;2567&lt;/li&gt;
&lt;li&gt;2557&lt;/li&gt;
&lt;li&gt;2548&lt;/li&gt;
&lt;li&gt;2707&lt;/li&gt;
&lt;li&gt;2548&lt;/li&gt;
&lt;li&gt;2708&lt;/li&gt;
&lt;li&gt;2558&lt;/li&gt;
&lt;li&gt;2568&lt;/li&gt;
&lt;li&gt;2568&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;1248&lt;/li&gt;
&lt;li&gt;1219&lt;/li&gt;
&lt;li&gt;1249&lt;/li&gt;
&lt;li&gt;1248&lt;/li&gt;
&lt;li&gt;1279&lt;/li&gt;
&lt;li&gt;1249&lt;/li&gt;
&lt;li&gt;1208&lt;/li&gt;
&lt;li&gt;1228&lt;/li&gt;
&lt;li&gt;1258&lt;/li&gt;
&lt;li&gt;1229&lt;/li&gt;
&lt;li&gt;1229&lt;/li&gt;
&lt;li&gt;1239&lt;/li&gt;
&lt;li&gt;1389&lt;/li&gt;
&lt;li&gt;1229&lt;/li&gt;
&lt;li&gt;1239&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Min&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Max&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Range&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Median&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Average&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Ugh!  I'm in browser hell!  What's up with this?  2.5 to 3 seconds to expand the list?  Come on!&lt;/p&gt;



&lt;h3&gt;IE6&lt;/h3&gt;
&lt;p&gt;I don't know the exact version number here because of the way the &lt;a href="http://tredosoft.com/Multiple_IE"&gt;Multiple IE&lt;/a&gt; installer works.&lt;/p&gt;
&lt;table border="1"&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;jQuery:&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.3.1&lt;/th&gt;
&lt;th scope="col" colspan="2"&gt;1.2.6&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;
&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;th scope="col"&gt;Expand&lt;/th&gt;
&lt;th scope="col"&gt;Collapse&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Tests&lt;/th&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;10779&lt;/li&gt;
&lt;li&gt;12577&lt;/li&gt;
&lt;li&gt;13060&lt;/li&gt;
&lt;li&gt;14085&lt;/li&gt;
&lt;li&gt;15034&lt;/li&gt;
&lt;li&gt;16123&lt;/li&gt;
&lt;li&gt;17272&lt;/li&gt;
&lt;li&gt;19549&lt;/li&gt;
&lt;li&gt;19859&lt;/li&gt;
&lt;li&gt;21121&lt;/li&gt;
&lt;li&gt;23080&lt;/li&gt;
&lt;li&gt;23249&lt;/li&gt;
&lt;li&gt;24961&lt;/li&gt;
&lt;li&gt;24770&lt;/li&gt;
&lt;li&gt;25953&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;4935&lt;/li&gt;
&lt;li&gt;5165&lt;/li&gt;
&lt;li&gt;5774&lt;/li&gt;
&lt;li&gt;5964&lt;/li&gt;
&lt;li&gt;6314&lt;/li&gt;
&lt;li&gt;7032&lt;/li&gt;
&lt;li&gt;7152&lt;/li&gt;
&lt;li&gt;8021&lt;/li&gt;
&lt;li&gt;8231&lt;/li&gt;
&lt;li&gt;8611&lt;/li&gt;
&lt;li&gt;9082&lt;/li&gt;
&lt;li&gt;9402&lt;/li&gt;
&lt;li&gt;9892&lt;/li&gt;
&lt;li&gt;9959&lt;/li&gt;
&lt;li&gt;10349&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;11078&lt;/li&gt;
&lt;li&gt;12617&lt;/li&gt;
&lt;li&gt;13167&lt;/li&gt;
&lt;li&gt;14785&lt;/li&gt;
&lt;li&gt;15684&lt;/li&gt;
&lt;li&gt;16876&lt;/li&gt;
&lt;li&gt;19643&lt;/li&gt;
&lt;li&gt;21740&lt;/li&gt;
&lt;li&gt;20642&lt;/li&gt;
&lt;li&gt;21947&lt;/li&gt;
&lt;li&gt;22726&lt;/li&gt;
&lt;li&gt;23925&lt;/li&gt;
&lt;li&gt;36235&lt;/li&gt;
&lt;li&gt;28810&lt;/li&gt;
&lt;li&gt;29422&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;ol&gt;
&lt;li&gt;3899&lt;/li&gt;
&lt;li&gt;4005&lt;/li&gt;
&lt;li&gt;4356&lt;/li&gt;
&lt;li&gt;4715&lt;/li&gt;
&lt;li&gt;5105&lt;/li&gt;
&lt;li&gt;5534&lt;/li&gt;
&lt;li&gt;6453&lt;/li&gt;
&lt;li&gt;7366&lt;/li&gt;
&lt;li&gt;6842&lt;/li&gt;
&lt;li&gt;7453&lt;/li&gt;
&lt;li&gt;7801&lt;/li&gt;
&lt;li&gt;8241&lt;/li&gt;
&lt;li&gt;9700&lt;/li&gt;
&lt;li&gt;9364&lt;/li&gt;
&lt;li&gt;9849&lt;/li&gt;
&lt;/ol&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Min&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Max&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Range&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Median&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope="row"&gt;Average&lt;/th&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;No.  I was wrong before.  &lt;strong&gt;This&lt;/strong&gt; is browser hell.  Notice how each test gains about 1 full second?  I think that means we've got memory leaks.  I closed and relaunched the browser between test cases to avoid skewing the results between jQuery versions.&lt;/p&gt;
&lt;p&gt;I'll complete the number crunching and do a bit more in depth analysis tomorrow.  It's 5 o'clock and I'm heading home for the day.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-6884690157763485516?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/6884690157763485516/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=6884690157763485516' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6884690157763485516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6884690157763485516'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2009/02/javascript-performance-testing.html' title='Javascript performance testing'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-1806480561703253282</id><published>2009-02-05T12:57:00.003-06:00</published><updated>2009-02-05T14:06:33.786-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='IE6'/><title type='text'>Content!  Third-hand content, but still, content!</title><content type='html'>&lt;p&gt;One of the people I encountered in all the discussion on higher ed in the web design industry is &lt;a href="http://imtheschmidt.com/"&gt;Kurt Schmidt&lt;/a&gt;.  (ImTheSchmidt.com, isn't that one of the greatest domain names ever?)&lt;/p&gt;
&lt;p&gt;Since then, I've been following his blog semi-daily.  Earlier today he posted &lt;a href="http://imtheschmidt.com/2009/02/make-your-site-faster-or-else/"&gt;Make Your Site Faster - Or Else!&lt;/a&gt;, which is his take on info from &lt;a href="http://glinden.blogspot.com/2006/11/marissa-mayer-at-web-20.html"&gt;Geeking with Greg&lt;/a&gt;.  I started to reply to Kurt, but about the time I started my 3rd paragraph I figured I should just turn it into a blog post here.  See what I mean about blogs and peer review?&lt;/p&gt;
&lt;p&gt;The importance of speed and performance on the user experience is something that I'm currently struggling with.  In the redesign I'm working on, I've made extensive use of jQuery.  Everything runs super quick on all the Mac browsers.  Chrome and Safari on Windows also blaze.  Firefox on Windows is noticeably slower than the rest, but still tolerable.  Who does that leave to drool on his shirt and crap his pants at the browser testing party?&lt;/p&gt;
&lt;p&gt;Both IE6 and IE7 are intolerably slow.  I've considered simply filtering out IE6 from all the js goodness.  Since I've designed for &lt;a href="http://en.wikipedia.org/wiki/Progressive_Enhancement"&gt;progressive enhancement&lt;/a&gt;, everything will still function, just not the same way.  But that still leaves IE7 users with a clunky and ungraceful experience.  As much as I hate IE, I won't kid myself about it's market share.&lt;/p&gt;
&lt;p&gt;The best solution from the users' point of view would be to test each jQuery implementation on the site separately and selectively enable/disable for IE based on performance in context.  Some of the stuff I'm doing on the redesign works fine in IE.  I know because I've been doing it on the current site for more than a year.&lt;/p&gt;
&lt;p&gt;I also need to dig deeper into my jQuery-fu and make sure my calls are as efficient as possible.  But some of it is straight up plug in functionality.  I'm not too keen on rewriting other people's plug ins to increase efficiency. The next version of Firefox will probably incorporate ideas currently only available in Chrome's V8 js engine, making it's tolerable performance that much better.  But that will probably just widen the gap between IE users and everyone else even more!&lt;/p&gt;
&lt;p&gt;The &lt;s&gt;next&lt;/s&gt; current version of jQuery (which I haven't updated to yet, oops) will also have a &lt;a href="http://sizzlejs.com/"&gt;revamped selection engine&lt;/a&gt; that should boost performance across the board.  But unless those changes impact performance in IE a hell of a lot more than everyone else, the gap will still be huge.  It's the gap in the user experience that worries me.&lt;/p&gt;
&lt;p&gt;What little testing I've done so far would seem to indicate that IE6 is bad at say 2000 milliseconds.  IE7 is barely any better and a lot less consistent, with speeds ranging from 1500-2300ms.  Firefox is around 700ms.  Opera is 300-400ms.  Safari is 200-300ms.  Chrome is about 150ms (10 times better than IE7's best run!).  I guess with those numbers, even if sizzle improves performance by 20% across the board, Chrome gains 30ms and IE7 gains at least 300ms.  Maybe the gap will get smaller.  But still, 1.2 seconds waiting for all the js to trigger is unacceptable from a user centered outlook.  But why should I be punished as a designer and the 20% or so of our users who &lt;strong&gt;don't&lt;/strong&gt; run IE miss out on those enhancements simply because IE can't get it's crap together?  These sorts of situations are the only part of my job I hate.  I'll stop there before this turns into a rant.&lt;/p&gt;
&lt;p&gt;Well, now that I know the new version of jQuery is out, it's pointless to flap my jaw any more about this stuff until I've updated and retested.  I've got work to do.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-1806480561703253282?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/1806480561703253282/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=1806480561703253282' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/1806480561703253282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/1806480561703253282'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2009/02/content-thrid-hand-content-but-still.html' title='Content!  Third-hand content, but still, content!'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-4418981429842689311</id><published>2009-02-05T08:54:00.002-06:00</published><updated>2009-02-05T12:27:44.791-06:00</updated><title type='text'>I've been neglecting all my imaginary readers</title><content type='html'>&lt;p&gt;Things have been crazy.  Professionally, academically, personally; you name it.  Chaos defines me.  Even more than usual.  I've had plenty of blog worthy thoughts in the past month, but this is the first chance I've had to sit down and actually blog, you know, as a verb.&lt;/p&gt;
&lt;p&gt;There was an explosion of discussion over at &lt;a href="http://alistapart.com/"&gt;A List Apart&lt;/a&gt; on higher ed and web design.  And by explosion, I mean I posted a lot and the discussion was meaningful to me.  I'm sure there are articles with a hell of a lot more discussion.&lt;/p&gt;
&lt;p&gt;The articles in question are &lt;a href="http://alistapart.com/articles/elevatewebdesignattheuniversitylevel"&gt;Elevate Web Design at the University Level&lt;/a&gt;
by Leslie Jensen-Inman and &lt;a href="http://alistapart.com/articles/brighterhorizonsforwebeducation"&gt;Brighter Horizons for Web Education&lt;/a&gt; by Aarron Walter.  Both are worth checking out if you haven't already.&lt;/p&gt;
&lt;p&gt;I've tried, and failed, to articulate what my heart tells me about this issue.  I've posted discussions for both those articles.  I've posted to the &lt;a href="http://cuwebd.ning.com/"&gt;University Web Devlopers&lt;/a&gt; group on Ning.  I've posted on various blogs where the discussion has spilled over.  I've carried on conversations via email with a few folks.  The closest I've come to getting it right is probably &lt;a href="http://alistapart.com/comments/elevatewebdesignattheuniversitylevel?page=6#51"&gt;this comment&lt;/a&gt; in response to Leslie's article.&lt;/p&gt;
&lt;p&gt;I'm trying to make the case in favor of a new type of &amp;#8220;digital apprenticeship&amp;#8221; in the industry.  I think a formal education can work in our field.  No.  I &lt;em&gt;know&lt;/em&gt; it can.  My bachelors was a great model and actually follows a lot of the suggestions that people have come up with in these ongoing discussions.  But the shelf life of that program as I experienced it was limited to about 5 years.  A change in leadership is all it took to bring it back to business as usual (in other words, the kind of troubled program Leslie was targeting with her research).  I don't think our industry can afford to wait a generation for the top level of campus politics to embrace the educational philosophies required to produce marketable graduates.  For the next 20 years we'll see a lot of hit or miss programs, and some campuses will be more progressive in that respect than others.  There are probably half a dozen or so solid programs in existence right now that have the proper institutional support to remain viable and stable.  But I don't think students should be required to seek out places like MIT to find a decent web design program.  And I'm sure less prestigious/well known campuses are capable of fielding the sort of program I'm talking about, but we're still faced with the problem of how do students find out about them?  I mean, the only reason I found the program at TTU is because I started out there as an engineering student.&lt;/p&gt;
&lt;p&gt;So while I appreciate the efforts that are being made to entice higher ed to get with the program, I don't think that's a sphere where we have any real influence.  A lack of solid educational material hasn't been a problem in this industry for at least a decade.  The fact that most academics will pay no mind to such material until it's formalized in a book or an accepted peer reviewed journal is a failing on their part (within the context of our industry), not on our part.  In my mind, the spirit of peer review is alive and well on prominent blogs.  And the transparent nature of the comment and debate system removes a lot of the politics that can infect trade journals.  Movements like open course ware seem to indicate that some academics understand this and are forging new educational models.  But until that kind of thinking can emerge from the underground, it only serves as a further means of exclusion.&lt;/p&gt;
&lt;p&gt;We can't make higher ed listen to us.  And we can't force HR departments to not require a degree for a given position.  But I don't think we have to.  Before we can effectively maneuver around the momentum and bureaucracy of the old schools of thought, we may be able to build a better model ourselves.  After a couple of hiring cycles of employees with graphic design or computer science degrees who can't address the full range of skills a web position requires, HR might learn to value portfolios and experience a bit more, at least for these positions.  If universities start noticing problems with retention and the ability of their graduates to compete in the market, they'll come to use for a solution.&lt;/p&gt;
&lt;p&gt;Right now I feel like we're trying to cook a more enticing meal for a man who doesn't even realize he's hungry.  But he's not just hungry, he's starving.  Things like the &lt;a href="http://www.opera.com/company/education/curriculum/"&gt;Opera Web Standards Curriculum&lt;/a&gt; are great.  But in the mind of most academics, it's &lt;a href="http://en.wikipedia.org/wiki/Foistware"&gt;foistware&lt;/a&gt;.  We're pitching a solution to a problem that isn't even on the radar yet.&lt;/p&gt;
&lt;p&gt;But, I have a bit more hope now than a few weeks ago.  Leslie's article on ALA was largely preaching to the choir.  But she's an academic herself (and a fellow Tennessean).  The research that lead her to produce the ALA article is also the sort of research that academics may be willing to pay attention to. In fact, &lt;a href="http://chronicle.com/wiredcampus/article/3582/colleges-get-poor-grades-on-teaching-web-skills"&gt;she caught the attention of the Chronicle of Higher Education&lt;/a&gt;.  Maybe academia is more willing to listen than I've assumed.  Still, I'll believe it when I see it.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-4418981429842689311?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/4418981429842689311/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=4418981429842689311' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/4418981429842689311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/4418981429842689311'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2009/02/ive-been-neglecting-all-my-imaginary.html' title='I&apos;ve been neglecting all my imaginary readers'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-6641663019634079291</id><published>2009-01-06T09:51:00.002-06:00</published><updated>2009-01-06T10:06:06.820-06:00</updated><title type='text'>The fruits of my labor</title><content type='html'>&lt;p&gt;It's taken a year and a half, but I have reached a milestone here at work.&lt;/p&gt;
&lt;p&gt;After 18 months of listening to iTunes and rating every song, I now have a library of nearly 3,500 songs that are all 4 or 5 stars in my not so humble opinion.  I've culled the rest of the herd (from my work library anyway, I keep the 3 stars at home).&lt;/p&gt;
&lt;p&gt;Of course, I complete this little project just as Genius becomes available and somewhat renders my library of nothing but awesome songs less relevant.&lt;/p&gt;
&lt;p&gt;In the past I've tried Pandora and Last.fm.  I like them both, a lot.  It's a great way to discover new music.  But they both tend to get a bit repetitive after a solid week or so of listening.  That's not a viable long term solution for me.  Also, I worry about bandwidth issues here at work.  If I can create a &amp;#8220;My Top Rated&amp;#8221; playlist that's 11 days long, I probably should.  If we get several people streaming Pandora on the campus network, it would probably start to present some congestion issues.  So I'll do my part to conserve a limited resource.  :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-6641663019634079291?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/6641663019634079291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=6641663019634079291' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6641663019634079291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6641663019634079291'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2009/01/fruits-of-my-labor.html' title='The fruits of my labor'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-454217571580307696</id><published>2008-12-17T10:32:00.003-06:00</published><updated>2008-12-17T12:22:41.358-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='stumble'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='blogosphere'/><title type='text'>Image Evolution</title><content type='html'>&lt;p&gt;Ten days ago... No, wait. &lt;a href="http://www.youtube.com/watch?v=Acrcm09NDdE"&gt;That's something else&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Eight days ago, I &lt;a href="http://www.stumbleupon.com/"&gt;stumbled&lt;/a&gt; onto &lt;a href="http://rogeralsing.com/2008/12/07/genetic-programming-evolution-of-mona-lisa/"&gt;Genetic Programming: Evolution of Mona Lisa&lt;/a&gt;.  I thought it was pretty awesome.  Today, I stumbled upon &lt;a href="http://alteredqualia.com/visualization/evolve/"&gt;this simulation of the same idea you can run in your browser&lt;/a&gt;.  Doesn't work in IE, but I really hope anyone reading this isn't using IE (any version) as your default browser anyway.  Right now, mine is at 1,077/17,000.  That means out of 17,000 &amp;#8220;mutations&amp;#8221; 1,077 have been an improvement over the previous best fit.  I just hit 90% fit.  Which looks like 005874.jpg on the example shots from the original post.  That leads me to believe the offline version is a bit more efficient than the online version, since it's taken about 3 times the number of mutations to get there.  But that's to be expected.&lt;/p&gt;
&lt;p&gt;I think the ability to watch it develop over time in your own browser hammers home the idea a bit better than the static example provided in the first post from Roger Alsing.  But I think there's still room for improvement.  For one thing, Roger's program makes it look like it would take almost 1,000,000 generations to get a decent replication of the low res detail of the Mona Lisa he used as his example.  That's a necessary abstraction to get this kind of simulation to run on a computer.  In real evolution, each generation produces several nodes, each with their own mutations.  The node tree would fork out to very huge, very quickly, due to exponential growth.&lt;/p&gt;
&lt;p&gt;But applying survival of the fittest to the tree structure would get us to the best fit much more quickly.  The version that runs in a browser addresses this somewhat with the x/y display.  I'm currently at 91.10% with 1238/23000.  On average so far, it's taken about 18.5 generations to find a better fit.  If we could fork that into a node tree, even a simple node tree of 2 child nodes per parent node, we'd hit the first improvement in about 5 generations.  Actually, we'd almost hit the first 2 improvements in 5 generations.  After 5 more generations, we'd be hitting quantum leaps where over 2,000 mutations are tried.  And that number doubles every generation.&lt;/p&gt;
&lt;p&gt;Ok, I'm proving to not be a strong enough math geek to really get these thoughts out of my head in a way that makes sense.  But the way these programs are running is a bit like &lt;a href="http://en.wikipedia.org/wiki/Selection_sort"&gt;selection sort&lt;/a&gt; whereas the node tree approach is more like &lt;a href="http://en.wikipedia.org/wiki/Heapsort"&gt;heap sort&lt;/a&gt;.  In another browser tab, I just hit ~94% fit after ~ 50,000 mutations (but only 1900 improvements).  Selection sort has an efficiency rating of n&lt;sup&gt;2&lt;/sup&gt;.  So if it's taken ~50,000 steps to reach ~94%, that means n is about 224.  Heap sort runs at n(log n), so to reach ~94% using that method would only take about 527 steps rather than ~50,000.  That's a closer fit to the number of true, natural generations it would take to get the same sort of results through evolution.&lt;/p&gt;
&lt;p&gt;A better approach to visualizing this sort of thing would allow for multiple source images and create a node tree instead of using the linear approach.  The multiple source images would allow for a simulation of speciesization.  The node tree would be less of an abstraction from the natural processes (although still astronomically simplified in comparison) and give a more natural indication of true &amp;#8220;generations&amp;#8221; required to reach a goal.  Ideally, the number of descendant nodes would depend on past history of improvements.  So &amp;#8220;blood lines&amp;#8221; that have produced a high number of improvements in the past would be more fruitful.  Those with poor histories would get fewer chances, and eventually die out. There would also need to be a threshold after which a given line is only compared to the source image it seems to be naturally drifting towards.  This would simulate the migration into more specialized environments over time.  It would also cut down on the processing power required to make it all run, but such a system would experience exponential growth and would quickly overrun any processor or pile of RAM currently available.  As abstract as such a program would still be, it would require hardware we won't see until quantum computing becomes a reality.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-454217571580307696?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/454217571580307696/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=454217571580307696' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/454217571580307696'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/454217571580307696'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/12/image-evolution.html' title='Image Evolution'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-6341709460430562323</id><published>2008-12-16T12:45:00.003-06:00</published><updated>2008-12-16T13:45:01.320-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='knowledge management'/><title type='text'>The plan</title><content type='html'>&lt;p&gt;I probably won't have time to put this plan into action until I'm off for the holidays.  Or maybe even until I'm back from the holiday break.  I'm sure it will undergo some quick evolution once it's made contact with the enemy, so to speak.&lt;/p&gt;
&lt;h2&gt;Tags&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Languages&lt;/dt&gt;
&lt;dd&gt;&lt;ul&gt;&lt;li&gt;php&lt;/li&gt;&lt;li&gt;css&lt;/li&gt;&lt;li&gt;html&lt;/li&gt;&lt;li&gt;xml&lt;/li&gt;&lt;li&gt;js&lt;/li&gt;&lt;li&gt;jquery&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Technically jQuery is not a language.  But I find myself writing more jQuery than straight JavaScript anymore.  So in effect the &amp;#8220;js&amp;#8221; tag will simply mean &amp;#8220;JavaScript that isn't jQuery&amp;#8221;.&lt;/p&gt;&lt;/dd&gt;
&lt;dt&gt;Tools/Software&lt;/dt&gt;
&lt;dd&gt;&lt;ul&gt;&lt;li&gt;dreamweaver&lt;/li&gt;&lt;li&gt;photoshop&lt;/li&gt;&lt;li&gt;browsers&lt;/li&gt;&lt;li&gt;firefox&lt;/li&gt;&lt;li&gt;safari&lt;/li&gt;&lt;li&gt;opera&lt;/li&gt;&lt;li&gt;chrome&lt;/li&gt;&lt;li&gt;ie&lt;/li&gt;&lt;li&gt;ie6&lt;/li&gt;&lt;li&gt;ie7&lt;/li&gt;&lt;li&gt;ie8&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;The first two are the biggies.  Usually when I see something pertaining to browsers, it's a comparison among several.  Sometimes it's more specific, a Firefox plug in for example, or a bug in IE.  That's the main reason for breaking IE into different versions.  Each version has it's own set of bugs.  :(&lt;/p&gt;&lt;/dd&gt;
&lt;dt&gt;Content type&lt;/dt&gt;
&lt;dd&gt;&lt;ul&gt;&lt;li&gt;tutorial&lt;/li&gt;&lt;li&gt;plug in&lt;/li&gt;&lt;li&gt;code&lt;/li&gt;&lt;li&gt;framework&lt;/li&gt;&lt;li&gt;tips&lt;/li&gt;&lt;li&gt;gallery&lt;/li&gt;&lt;li&gt;interview&lt;/li&gt;&lt;li&gt;list&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;I've put those in order of descending anticipated usefulness.  A &amp;#8220;tutorial&amp;#8221; is an article or blog post that deals with a specific goal in depth.  Photoshop tutorials are the most obvious example, but there are tutorials for PHP, jQuery, CSS, DreamWeaver, even specific plug ins like Firebug (which may end up getting its own tag under Tools/Software depending on how much content I find).&lt;/p&gt;
&lt;p&gt;Software can have a &amp;#8220;plug in&amp;#8221; but so can languages and frameworks.  &amp;#8220;Code&amp;#8221; would apply to any specific technique within a language that is meant to be copied and pasted rather than published as a plug in.  It's also distinguished from the more general philosophical stuff that would normally be tagged as &amp;#8220;tips&amp;#8221;.&lt;/p&gt;
&lt;p&gt;The &amp;#8220;framework&amp;#8221; tag is something that will probably fall out of favor as I research more frameworks.  If I end up adopting Cake PHP as my PHP framework of choice, then I'll probably start using a &amp;#8220;cake&amp;#8221; or &amp;#8220;cake php&amp;#8221; tag the same way I plan to use &amp;#8220;jquery&amp;#8221;.  The framework itself will be promoted to a tag describing the language.&lt;/p&gt;
&lt;p&gt;&amp;#8220;Tips&amp;#8221; aren't plug ins and they aren't code, they are less concrete than either of those.  Both the articles I linked to yesterday about writing style guides and creating maintainable CSS are good examples of tips.&lt;/p&gt;
&lt;p&gt;A &amp;#8220;gallery&amp;#8221; is usually but not always visual.  There are many galleries of CSS designs out there meant to inspire other designers.  But there are also galleries of plug ins and code snippits.  The &amp;#8220;interview&amp;#8221; tag is self explanatory.&lt;/p&gt;
&lt;p&gt;Usually, the stuff worth tagging will be a few of the individual resources being linked to on a &amp;#8220;list&amp;#8221;.  I'm thinking of all those &amp;#8220;50 CSS Tricks You Can't Live Without!&amp;#8221; and &amp;#8220;Avogadro's Number Photoshop Tutorials for People Who Spend More Time Reading About Photoshop than Working in Photoshop&amp;#8221; that have gotten so popular lately.&lt;/p&gt;&lt;dd&gt;
&lt;dt&gt;Content source&lt;/dt&gt;
&lt;dd&gt;&lt;ul&gt;&lt;li&gt;blog&lt;/li&gt;&lt;li&gt;article&lt;/li&gt;&lt;li&gt;video&lt;/li&gt;&lt;li&gt;screen cast&lt;/li&gt;&lt;li&gt;pod cast&lt;/li&gt;&lt;li&gt;wiki&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;I think most of what I find would technically be classified as &amp;#8220;blog&amp;#8221; posts. If I notice myself tagging several posts from the same blog, I should probably add it to my RSS reader.&lt;/p&gt;
&lt;p&gt;Speaking of RSS feeds, that can cause some problems with the &amp;#8220;article&amp;#8221; tag.  The articles I read online are often from sources that provide RSS feeds (&lt;a href="http://alistapart.com/"&gt;A List Apart&lt;/a&gt;, &lt;a href="http://www.smashingmagazine.com/"&gt;Smashing Magazine&lt;/a&gt;, &lt;a href="http://www.sitepoint.com/recentarticles/"&gt;SitePoint&lt;/a&gt;, &lt;a href="http://thinkvitamin.com/features/"&gt;ThinkVitamin&lt;/a&gt;, etc.).  But I'd also use that tag for anything from a peer reviewed journal, for example, the 80+ articles I've dug up on web usability studies as part of my lit review for my final project.  RSS feeds are much less common in that world.&lt;/p&gt;
&lt;p&gt;Is the different enough to justify coming up with a new way to categorize content such as &lt;a href="http://www.alistapart.com/articles/taminglists/"&gt;Taming Lists&lt;/a&gt; vs. &lt;a href="http://portal.acm.org/citation.cfm?doid=634067.634236"&gt;Testing web sites: five users is nowhere near enough&lt;/a&gt;?  My heart tells me no.  &lt;a href="http://www.uie.com/brainsparks/"&gt;Jared Spool blogs&lt;/a&gt;.  As important as peer review is, I think that sort of review process happens more quickly and more transparently online.  So blogs, the good blogs at least (those that actually get read, possibly unlike this one), are not free from such a review process.  At this stage, I think the academic model servers more as a means of exclusion than as any real control on quality of content.  Portals like ACM may be on their way out in favor of &lt;a href="http://technorati.com/"&gt;Technocrati&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Anyway, I was talking about these tags, but I think the remaining ones are self descriptive enough to not explore in detail. :)&lt;/p&gt;&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;That should provide enough of an organizational skeleton for me to get started.  I'm sure it will expand and evolve with use.  The most important thing, I think, is to keep it detailed enough to describe resources in a useful way while staying small enough to be maintainable.&lt;/p&gt;
&lt;p&gt;And someday, I'll need to work in the need to organize and tag stuff that isn't exactly work related.  Luckily, the nature of tags will keep most of that content separate naturally.  There may be the occasional overlap with a tag like &amp;#8220;funny&amp;#8221 and resources like &lt;a href="http://www.mydamnchannel.com/Big_Fat_Brain/You_Suck_at_Photoshop/YouSuckatPhotoshop1_398.aspx"&gt;You Suck at Photoshop&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-6341709460430562323?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/6341709460430562323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=6341709460430562323' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6341709460430562323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6341709460430562323'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/12/plan.html' title='The plan'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-6497337495527360885</id><published>2008-12-15T15:59:00.003-06:00</published><updated>2008-12-15T16:17:49.990-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='knowledge management'/><title type='text'>Future KM entries</title><content type='html'>&lt;p&gt;Lately I've been on an tagging/organizing kick with my knowledge management posts.  But there are other areas I need to explore too.  As my post from earlier today pointed out, the lack of organizational structure behind the existing site (or at least the lack of documentation of any such structure, the difference between it existing with me failing to understand it vs simply failing to exist is effectively nothing) makes for a lot of unfun time.  Once I eventually vacate this seat for whatever reason, I hope to leave my replacement in better shape than I currently find myself.&lt;/p&gt;
&lt;p&gt;That means I need to work on documentation ranging from &lt;a href="http://alistapart.com/articles/writingainterfacestyleguide/"&gt;style guides&lt;/a&gt; to &lt;a href="http://natbat.net/2008/Sep/28/css-systems/"&gt;well documented, maintainable code&lt;/a&gt; to official policies and guidelines that better fit into the bureaucratic mindset of the campus than all that geeky stuff.  (Both the resources I linked to there are written by women.  I wonder if that is at all relevant or just a simple coincidence?)&lt;/p&gt;
&lt;p&gt;In a time of &lt;a href="http://cpm.aiga.org/content.cfm/good-advice-for-bad-times"&gt;economic crunch&lt;/a&gt; and &lt;a href="http://www.tennessean.com/apps/pbcs.dll/article?AID=2008812140398"&gt;budget cuts&lt;/a&gt;, many people would probably shy away from purposefully making themselves easier to replace.  But if knowledge management is really about boosting the productivity of knowledge workers, isn't it possible that turning our backs on knowledge management now could very well extend the economic troubles?  KM is about a lot more than just easing the transition for my eventual replacement.  One thing I learned early on in my career about commenting my code, the person I'm communicating with in my comments may very well be my future self.  Six months after I've written something, there's a good chance I won't be able to figure out what the hell was going on without at least a little guidance.  It may be more important for someone who has never seen the code before, but that doesn't eliminate the very real (and almost immediate) benefits such documentation provides for me.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-6497337495527360885?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/6497337495527360885/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=6497337495527360885' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6497337495527360885'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6497337495527360885'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/12/future-km-entries.html' title='Future KM entries'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-3102884564532344776</id><published>2008-12-15T14:29:00.003-06:00</published><updated>2008-12-15T14:56:42.752-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='magnolia'/><category scheme='http://www.blogger.com/atom/ns#' term='knowledge management'/><title type='text'>Bad tagging habits?</title><content type='html'>&lt;p&gt;In my last KM post, I hinted that SU's swelling user base may be a contributing factor in the rampant miscategorization of content.  Of course, I'm really doing a lot of projecting.  The tags that work best for me might not work at all for the majority of users.  The act of tagging takes its meaning from the &lt;a href="http://en.wikipedia.org/wiki/Idiolect"&gt;idiolect&lt;/a&gt; of the person writing the tags.  It doesn't get much more personal than that.&lt;/p&gt;
&lt;p&gt;But different people have different goals in mind with their tagging.  I'm trying to come up with a manageable set of tags that can efficiently describe the majority of the work related online resources I make use of both now and in the future (and hopefully scale well for future growth).  Essentially, I'm trying to &lt;a href="http://en.wikipedia.org/wiki/Ephemeralization"&gt;do more with less&lt;/a&gt; when it comes to my tagging structure.  Obviously, that's not everyone's goal.  Even among my personal heroes, such as Jeffrey Zeldman, the tagging structures used by other people can be called &amp;#8220;improper&amp;#8221; for my purposes.  Zeldman has less than 2000 bookmarks with over 5000 tags in &lt;a href="http://ma.gnolia.com/people/apartness"&gt;his Ma.gnolia account&lt;/a&gt;.  In fact, he's currently averaging 2.58 tags per entry.  And that assumes that each tag is unique.  Obviously that's not the case.  He's currently got 62 items tagged with &amp;#8220;iphone&amp;#8221; and 259 items tagged with &amp;#8220;webdesign&amp;#8221;.  I also see some redundancy at work.  He's got items tagged with &amp;#8220;palin&amp;#8221;, &amp;#8220;sarah palin&amp;#8221;, and &amp;#8220;sarahpalin&amp;#8221;.  &lt;a href="http://ma.gnolia.com/people/apartness/bookmarks/chiriyuza"&gt;This entry&lt;/a&gt; is tagged with &amp;#8220;september11th&amp;#8221;, &amp;#8220;911&amp;#8221;, &amp;#8220;9-11&amp;#8221;, &amp;amp; &amp;#8220;9/11&amp;#8221;.  Since that's all on one entry I assume Zeldman's doing it on purpose and not just forgetting what his primary tag for that concept is from entry to entry.  That's precisely the sort of redundancy I hope to avoid.  But obviously it's working for him.&lt;/p&gt;
&lt;p&gt;So in my previous entries I've said some things that could be taken as insulting my fellow users of social media.  I should be more forgiving.  If everyone used social media for the same ends, there wouldn't be much of a point, right?  I guess just like any other social construct (democracy, economics, etc) simply by participating in it we take on the responsibility to be mindful of our own needs and tolerant of the needs of others.&lt;/p&gt;
&lt;p&gt;I'm going to go find a drumming circle to join.  More later.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-3102884564532344776?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/3102884564532344776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=3102884564532344776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/3102884564532344776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/3102884564532344776'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/12/bad-tagging-habits.html' title='Bad tagging habits?'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-8291414418273691666</id><published>2008-12-15T13:13:00.003-06:00</published><updated>2008-12-15T13:35:27.228-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><title type='text'>Cleaning up the existing site</title><content type='html'>&lt;p&gt;At first I thought we'd be launching the redesign before our &lt;a href="http://www.sacs.org/"&gt;SACS&lt;/a&gt; review.  The powers that be have other plans.  At first I was happy to have a few extra months to work and test and debug prior to launch.  But then it hit me.  I was gonna need to clean up the site content for the review.  That means I've got to deal with the pretty much total lack of any real information architecture on the existing site.&lt;/p&gt;
&lt;p&gt;As a first pass, I ran a site wide link report.  My first step was to get rid of the orphans.  I quickly discovered 2 problems wit this idea.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;The current site uses many JavaScript driven pop up windows using code generated by GoLive.  DreamWeaver apparently doesn't know how to check these links.  Therefore all such content shows up as orphaned.&lt;/li&gt;
&lt;li&gt;Ditto for the Flash stuff.  This is more surprising since Flash is also a Macromedia product from back in the day.  This means the the thousands of photos we have in the various Flash driven galleries all show up as orphans.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The initial report said that out of 24,000+ files, 13,000+ were orphans.  More than half the files on the server showed up as not being linked to at all.  Of those 24,000-something files, 10,626 were HTML/ASP files.  The rest were images, PDFs, and stuff like that.  We're now down to a total of 19,957 files, 9,413 of which are HTML/ASP.  But 6,138 still show up as orphaned.  I bet a few of those really are orphans.  Probably no more than 200.  And most of those would be images.  I'm primarily worried about indexable content that could turn up in a Google search but present horribly outdated information.  The trouble there is not all of those files are orphaned.  We're still linking to many of them.  I guess the next step will be to search for obviously outdated files.  Stuff with years in the file names, for example.  Then I'll probably need to run another orphan check for freshly orphaned files once that content is cleaned up.&lt;/p&gt;
&lt;p&gt;The good news is I've reduced the size of my local directory by 45%, from about 3.4 gigs to 1.9 gigs.  The majority of that was &lt;a href="http://www.volstate.edu/cit/"&gt;the files we're still hosting&lt;/a&gt; from last year's &lt;a href="http://www.league.org/2009cit/"&gt;CIT conference&lt;/a&gt;.  But I never need to update those, so there's no need to store them locally.  Some of those PowerPoint files got crazy big.&lt;/p&gt;
&lt;p&gt;Of course, currently the beta site takes up a total of 339 megs.  But it's not quite complete.  Still, I'll be surprised if it grows to anywhere near 1.9 gigs before launch.  Due to simple changes like getting rid of tables for layout and abandoning the &amp;lt;font&amp;gt; tag in favor of CSS we've shaved about 35k per page.  We've also eliminated many pages.  The beta site currently contains just 985 PHP files.  That's about 10% of the files the current site contains, but we've migrated way more than 10% of the content.  One of the big changes in that regard is that we now link to the online catalog for curriculum and course descriptions.  There goes 2 pages per degree program plus at least a page per course offered.  I think the current site has a lot of redundancy in course description pages among the various program directories.  Most of the remaining content will be database driven.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-8291414418273691666?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/8291414418273691666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=8291414418273691666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/8291414418273691666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/8291414418273691666'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/12/cleaning-up-existing-site.html' title='Cleaning up the existing site'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-8975032540578006615</id><published>2008-12-14T13:27:00.003-06:00</published><updated>2008-12-14T14:23:26.258-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='magnolia'/><category scheme='http://www.blogger.com/atom/ns#' term='stumble'/><category scheme='http://www.blogger.com/atom/ns#' term='knowledge management'/><category scheme='http://www.blogger.com/atom/ns#' term='IE6'/><title type='text'>The Social Side of Social Bookmarking</title><content type='html'>&lt;p&gt;There's a decent amount of discovery power available through Ma.gnolia as well.  I still think Stumble Upon does it better.  But it would be silly to not explore the 2nd best tool available for the job.  Ironically, but doing so, I was quickly reminded of the problems with default tagging in SU.  I pulled up a couple of recent bookmarks from &lt;a href="http://www.zeldman.com/"&gt;Jeffry Zeldman&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The first is a blog post from Simon Clayson on &lt;a href="http://www.simonclayson.co.uk/reportage/ie_6_text_only/"&gt;feeding IE6 a basic style sheet&lt;/a&gt; using the sort of techniques that were once common for targeting Netscape Navigator 4 with a set of specific, dumbed down styles while simultaneously protecting NN4 users from that browsers botched implementation of the majority of CSS which was safe to show to less craptastic browsers.  Now NN4 is little but a ghost to haunt the nightmares of us old school CSS scribes and IE6 is now the crappiest browser still in common usage.  I'll probably spend the rest of December debugging the redesign in IE6.  Had I found this idea a year ago, I probably would have served IE6 a very simple style sheet and skipped the debugging.  In all honesty, even at this stage it may be less work to implement these ideas rather than try to &amp;#8220;fix&amp;#8221; IE6.&lt;/p&gt;
&lt;p&gt;So anyway, I thought this was a potentially useful technique, so I thumbed it up.  This didn't pull up the form for submitting new content to SU, so I knew someone else had already submitted this particular link.  This gave me a great opportunity to see what the default tag would be.  &lt;a href="http://jackosborne.stumbleupon.com/"&gt;jackosborne&lt;/a&gt; says this page is primarily about &amp;#8220;graphic-design&amp;#8221;.  It deals &lt;em&gt;exclusively&lt;/em&gt; with serving specific CSS code targeted at a specific web browser.  I can think of at least half a dozen tags more useful for this content than &amp;#8220;graphic-design&amp;#8221;.  But the current SU system gives too much power to the person submitting the content.  Jack's actually got more stumbles tagged &amp;#8220;web-design&amp;#8221; (54) than &amp;#8220;graphic-design&amp;#8221; (45), but apparently that's due to other people's default tags on the pages he is thumbing up.  Looking at his discoveries, he's also submitted this article on &lt;a href="http://forabeautifulweb.com/blog/about/five_css_design_browser_differences_i_can_live_with/"&gt;Five CSS Design Browser Differences I Can Live With&lt;/a&gt; by Andy Clarke and &lt;a href="http://snook.ca/archives/javascript/jquery-bg-image-animations/"&gt;Using jQuery for Background Image Animations&lt;/a&gt; from Snook.ca as &amp;#8220;graphic-design&amp;#8221;.  Maybe that tagging scheme server Jack well.  It makes SU virtually worthless for me when it comes to organizing and retrieving the resources I discover through it.&lt;/p&gt;
&lt;p&gt;The other page I discovered via Zeldman is &lt;a href="http://www.westciv.com/style_master/academy/browser_support/index.html"&gt;Western Civ's guide to CSS browser support&lt;/a&gt;.  Again, this page deals exclusively with CSS and web browsers, so for my purposes it would be pretty easy to tag.  It was submitted by SU user &lt;a href="http://kancerman.stumbleupon.com/"&gt;kancerman&lt;/a&gt; uh...wow, 3 years ago.  If I'm reading this right, I'm only the 10th person to thumb this up in those 3 years.  That could be because it was submitted into the category &amp;#8220;internet-tools&amp;#8221;.  For me, that category is better suited for things like online mortgage calculators or &lt;a href="http://www.writeboard.com/"&gt;WriteBoard&lt;/a&gt;.  But due to the way kancerman submitted this page, &amp;#8220;internet-tools&amp;#8221; is the default tag.  Now I can look at his entry for this page and see that his 2nd tag is in fact &amp;#8220;CSS&amp;#8221;, but since that's the 2nd tag on his entry, it holds no bearing for how it is tagged by default when I thumb up the page.&lt;/p&gt;
&lt;p&gt;Maybe this problem in the design of SU is worse than I thought.  Not only does the default tagging scheme make it harder for me to go back and look up stuff I have previously thumbed up without bothering to write a review and/or manually tag myself.  But it also seems to have a negative impact on the effectiveness of SU to function as a discovery engine.  How many times have I found a page via means other than SU, thumbed it up, didn't see the new content submission form pop up, assumed whoever beat me to the punch on submitting the content at least submitted it properly, and went on my way?  How often does the average SU user do that?  One thing I've noticed since I started paying attention to the default tagging scheme in SU is how often I see content that is submitted into the wrong category.  If I have found this content via SU, then I can use the &amp;#8220;report last stumble&amp;#8221; feature.  But that only works if I stumble into something in one of my defined interests that really should be tagged as some other of my defined interest.  If someone submits a CSS gallery as &amp;#8220;photography&amp;#8221; for example.  But if I get to that page without being referred there by SU, there's no way for me to bring the miscategorization  to the attention of whoever addresses such things.  That is most likely to happen if someone submits content that should fall within one of my defined interests as pertaining to a topic of interest that isn't on my list.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;Oh look, this jQuery plug-in has been submitted under &amp;#8220;alternative-medicine&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;There's no way I can do anything about that.  All I can do is tag it properly within my own account.  But since very few web designers are going to be stumbling through the alternative medicine category (then again, maybe I assume too much), and very few people looking for alternative medicine information will give a rat's ass about a jQuery plug-in, very few people who care about that content will ever stumble into that content.  I can't even resubmit it.  Once a page is submitted, all I can do is tag and review it myself.  In effect, such content is quarantined, cut off from it's true target audience.  I've got to think there are ways for SU to address this.  If Mac OS X can have a pretty effective &lt;a href="http://www.tuaw.com/2008/11/19/mac-101-shorten-text-using-the-summarize-service/"&gt;summarize tool&lt;/a&gt; built in, can't a similar algorithm be run against the content of new submissions to SU in an attempt to verify the categorization of that content?  Couldn't meta tags, key words, or the sort of tricks search engines use to categorize content be applied?  I know these things aren't cheap, but they are possible, and SU has a larger user base than delicious (which may actually be a big part of the problem).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-8975032540578006615?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/8975032540578006615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=8975032540578006615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/8975032540578006615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/8975032540578006615'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/12/social-side-of-social-bookmarking.html' title='The Social Side of Social Bookmarking'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-993013340733862887</id><published>2008-12-12T14:55:00.003-06:00</published><updated>2008-12-12T16:19:03.145-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='magnolia'/><category scheme='http://www.blogger.com/atom/ns#' term='knowledge management'/><title type='text'>Getting organized with tags and Ma.gnolia</title><content type='html'>&lt;p&gt;I've been mulling over how to approach planning out my tags for using Ma.gnolia (M) to store and organize the work related resources I find via Stumble Upon (SU).  At first I thought about a matrix of some sort allowing me to drill down within a topic.  But how would I share that here?  An HTML table won't work without getting really nasty with the colspan attribute.  Mind mapping software could work, but the image it would produce would to far too huge to post here.  I even tried to think of it in terms of XML and custom Doctypes where I could use &amp;#8220;web design&amp;#8221; like a root element and have a bunch of descendant tags from there.  That lead me to two realizations:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Only someone &lt;em&gt;at least&lt;/em&gt; as geeky as me would have any chance of understanding such a system&lt;/li&gt;
&lt;li&gt;I was ultimately still thinking in hierarchies&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The philosophy behind tagging is to address areas where hierarchies break down.  For example, as I explored such a matrix, I found myself coming up with compound tags like &amp;#8220;javascript-framework&amp;#8221; and &amp;#8220;php-framework&amp;#8221;.  Part of the reason for this line of thinking is due to the structure of SU, where such compound tags would be useful.  But M allows to search and sort based on a combination of tags.  Resources on Cake PHP, Zend, Ruby on Rails, and jQuery could all take the tag &amp;#8220;framework&amp;#8221;.  I could also tag such resources with their associated language: &amp;#8220;php&amp;#8221;, &amp;#8220;php&amp;#8221;, &amp;#8220;ruby&amp;#8221;, and &amp;#8220;javascript&amp;#8221; respectively.&lt;p&gt;
&lt;p&gt;Simply typing this out here has lead to another discovery.  Typing out &amp;#8220;javascript&amp;#8221; sucks.  I don't plan on tagging stuff with &amp;#8220;cascading style sheets&amp;#8221; either, so I'll steal an idea I've been using in my directory structures for years and shorten &amp;#8220;javascript&amp;#8221; to &amp;#8220;js&amp;#8221;.  That will be clear to me and should be clear to any other web professional who happens to browse through my links in Ma.gnolia.  In theory, that should also apply to anyone taking over this position in the future.&lt;/p&gt;
&lt;p&gt;I also realized that trying to use a root tag such as &amp;#8220;web design&amp;#8221; is short sighted.  Not everything I do is related to design.  Some of the server administration or &lt;abbr title="Search Engine Optimization"&gt;SEO&lt;/abbr&gt; stuff I do would stretch the common definition of design.&lt;/p&gt;
&lt;p&gt;Leaving behind the idea of a hierarchy should also allow me more freedom for future growth.  If I'm simply tagging resources with an associated language (&amp;#8220;css&amp;#8221;, &amp;#8220;js&amp;#8221;, &amp;#8220;php&amp;#8221;) it becomes much easier to just add a new tag for any new languages I start to use or learn (&amp;#8220;perl&amp;#8221;, &amp;#8220;ruby&amp;#8221;, &amp;#8220;&lt;a href="http://lolcode.com/"&gt;lolcode&lt;/a&gt;&amp;#8221;).  This industry evolves so quickly, that sort of scalability will likely pay off in ways I currently can't even predict.  Five years from now my job may require as much understanding of psychology as it currently does programming and design.  I'm pretty sure we're one high profile lawsuit away from moving a solid understanding of the legal implications of accessibility from the &amp;#8220;recommended skills&amp;#8221; to the &amp;#8220;required skills&amp;#8221; section of job descriptions such as mine.&lt;/p&gt;
&lt;p&gt;I'm going to give some thought to classification of tags I will need.  Languages are an obvious example of what I'm talking about.  Maybe I should add a class of tags for software, Dreamweaver, Photoshop, etc.  I try to keep what I do tool-neutral, but I'd be lying if I said I never use Photoshop tutorials from the internet.  If the Adobe Creative Suite was not already bought and paid for, I could get buy using free text editors and open source programs like &lt;a href="http://www.gimp.org/"&gt;the GIMP&lt;/a&gt;.  But the reality of my job is that I spend a lot of time working with Adobe software so it's probably a good idea to reflect that in my tag structure.  I'll also put some thought towards the need for consistency.  Luckily, Ma.gnolia offers an auto-complete function based on previously used tags.  SU offers no such feature.  I just realized Blogger has the same sort of auto-complete function in the tag field for my blog entries.  That should at least keep me from forking my tags due to a common misspelling or something silly like that.  I'll continue to think things over and share my thoughts over the weekend.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-993013340733862887?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/993013340733862887/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=993013340733862887' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/993013340733862887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/993013340733862887'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/12/getting-organized-with-tags-and.html' title='Getting organized with tags and Ma.gnolia'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-5666972992541068113</id><published>2008-12-11T10:16:00.003-06:00</published><updated>2008-12-11T12:58:16.140-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='css frameworks'/><title type='text'>Does anyone actually read this?</title><content type='html'>&lt;p&gt;I've been emailing some of my designer/developer heroes asking for opinions on CSS frameworks.  Not sure if those efforts will bear any fruit, but in the past even the rock stars of the industry have been pretty approachable.&lt;/p&gt;
&lt;p&gt;I thought I might as well try to get the conversation going here as well. (Assuming anyone is actually out there with whom to converse.)&lt;/p&gt;
&lt;p&gt;My thoughts on what I've seen so far have not been good.  &lt;s&gt;Even Google, who usually awakens my inner fan boy, seems to miss the boat on this one.&lt;/s&gt; (Just got confirmation from John Resig [I told you even the rock stars are approachable] that Blueprint is hosted by Google Code but isn't itself a Google product.  Apparently &lt;a href="http://www.google.com/search?q=google%27s+blueprint&amp;ie=utf-8&amp;oe=utf-8"&gt;I'm not alone in my confusion&lt;/a&gt;.  Still, it's the de facto king of CSS frameworks so I'll continue to pick on it anyway.)  &lt;a href="http://www.blueprintcss.org/"&gt;Blueprint&lt;/a&gt; strikes me as a tangled mess of presentational class names.  Actually, &lt;a href="http://www.blueprintcss.org/blueprint/src/forms.css"&gt;forms.css&lt;/a&gt; isn't so bad.  It's got .title, .text, .error, .notice, and .success.  Those classes make semantic sense.  I can see myself actually using the core ideas behind that style sheet if not the actual framework code itself.  And it's things like that which give me hope for the general idea of a CSS framework.  &lt;a href="http://www.blueprintcss.org/blueprint/src/typography.css"&gt;tyopgraphy.css&lt;/a&gt; starts to get a bit more iffy.  As much as I hate the idea of classes like .left and .right for floating images within text, I have to admit I often use them myself.  So I can't point too many fingers there.  Classes like .added and .removed have obvious uses for AJAX-y goodness.  And I can see uses for classes such as .first and .last assuming they are applied dynamically (by jQuery, for example).  I can even imagine common uses for classes like .small &amp;amp; .large and .quiet &amp;amp; .loud, but those start to fall outside my personal comfort level when it comes to putting non-semantic, presentational classes into my markup.&lt;/p&gt;
&lt;p&gt;The deal killer for me is &lt;a href="http://www.blueprintcss.org/blueprint/src/grid.css"&gt;grid.css&lt;/a&gt;, which is really the main selling point of the idea of a CSS framework.  Almost everything in that style sheet is purely presentational.&lt;/p&gt;
&lt;p&gt;Let's say I'm building a site using Blueprint to do a basic 3 column layout.  I start out with 6-12-6 and put the needed classes into the markup to accomplish that.  I build a couple hundred pages and put it into production.  A few months later I realize that the sort of content I've got going down the right hand side (AdSense, social bookmarking feeds, etc) is not coequal with the primary navigation in the left column and I want to shift things a bit to say 7-13-4.  Now I have to alter class names on a few hundred pages worth of markup rather than making these presentational edits to the CSS where they really belong.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&amp;#8220;But you could easily do that with a find/replace. Quit yer bitchin'.&amp;#8221;&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;Ok, that's true.  I see your find/replace and raise you a redesign requiring a horizontal primary navigation menu.  If you're keeping your markup all &lt;a href="http://csszengarden.com/"&gt;Zen-like&lt;/a&gt;, you edit one file and the changes magically appear site wide.  You might still conceivably be able to pull off such a change with a few find/replace operations using Blueprint (or any other grid based CSS framework using presentational class names, I'm using Blueprint as an example but just about everything I've seen suffers the same flaws). But it would take some pretty complex work.  And even running find/replace across hundreds of pages of markup is more work than changing a couple of rules in a centrally located CSS file.&lt;/p&gt;
&lt;p&gt;But this is a lot like how I felt about js frameworks vs. rolling my own &lt;a href="http://www.onlinetools.org/articles/unobtrusivejavascript/"&gt;unobtrusive&lt;/a&gt; &lt;a href="http://domscripting.com/blog/"&gt;DOM scripting&lt;/a&gt; before I found &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;.  I knew there was potential there, but I just wasn't seeing enough trade off in benefit offered in exchange for giving up so much control of my code.  It helped the jQuery applies CSS style selector logic to scripting and thus meshed well with the way my brain already thinks about these things.  I imagine if I had both the time and talent required to build my own js framework, it would end up working a lot like jQuery.  I have yet to experience that with a CSS framework.&lt;/p&gt;
&lt;h2&gt;Exploring the Potential&lt;/h2&gt;
&lt;p&gt;I haven't taken an in depth look at everything yet, but there &lt;strong&gt;are&lt;/strong&gt; two CSS frameworks that managed to not send me running away screaming after mere moments of peaking at the source code of the available demos.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="http://code.google.com/p/css-boilerplate/"&gt;Boilerplate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.contentwithstyle.co.uk/content/a-css-framework"&gt;Content with Style&lt;/a&gt;
&lt;/ol&gt;
&lt;p&gt;The language used to introduce the concept on the home page for Boilerplate is enough to get me findin' religion.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;As one of the original authors of Blueprint CSS I&amp;#x27;ve decided to re-factor my ideas into a stripped down framework which provides the bare essentials to begin any project. This framework will be lite and strive not to suggest un-semantic naming conventions. You&amp;#x27;re the designer and your craft is important.  &lt;/p&gt;&lt;p&gt;If you prefer: &lt;/p&gt;&lt;pre&gt; { float: left; width: 240px; margin-right: 110px; }&lt;/pre&gt;&lt;p&gt;over &lt;/p&gt;&lt;pre&gt;class=&amp;quot;column span-2 append-1&amp;quot;&lt;/pre&gt;&lt;p&gt;then you&amp;#x27;re in the right place my friend. &lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Yes&lt;/strong&gt;! But wait, it's only at version number 0.3 and it looks like that version is nearly a year old.  Is my best lead effectively abandonware?  That makes me a sad panda.  Still, it may give me a good place from which to start future projects.  Let's download this bad boy and take a look under the hood.&lt;/p&gt;
&lt;p&gt;Not significantly different from Blueprint.  I see an almost identical typography.css file, down to the somewhat uncomfortable .small &amp;amp; .large.  There's also .quite, but no .loud.  I'm also seeing a pretty basic reset.css (I personal prefer to slightly modified version of Eric Meyer's &lt;a href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/"&gt;Reset Reloaded&lt;/a&gt;), a small collection of basic IE hacks in ie.css, and a few form styles that aren't really enough to save me significant time vs. writing my own from scratch or cannibalizing my own back catalog.&lt;/p&gt;
&lt;p&gt;While Boilerplate avoids going deeply enough into the realm of presentational class names to catch my ire, I'm not seeing much in the way of benefit here either.  At least with Blueprint I could wireframe something up in a day to show to a client, even if it's not the sort of thing I would want to put into production.  I see nothing mind blowing here.  Maybe if it ever hits version 1.0 I'll take another look.  :(&lt;/p&gt;
&lt;p&gt;Moving on to Content with Style.  Yes, this is better.  But it seems more like a philosophy more so than a true framework.  Maybe I'll feel different after checking out the source code.  This also hasn't been updated in just over a year (and then only once, and that wasn't really a change to the code at all, just a license addition).  That also contributes to an overall feeling that I'm better off applying the underlying ideas to my own design work rather than using these exact files.  But that's pretty much how I feel about Blueprint.  I can figure out which classes would apply to a given element in the design I aim to achieve and rather than apply those class names to the element I could simply apply the styles for that class to whatever semantic class or ID I use for that element.  The philosophy is sound.  It's just the execution that leaves a bad taste in my mouth.&lt;/p&gt;
&lt;p&gt;Looking at the code feels a lot like looking at my own code.  But rather than feeling like the epiphany behind jQuery, this just feels like a slightly more systematic method of reusing the code snippets I've been using for years.  It's far from bad.  It's quite good in fact.  But it's nothing I couldn't do myself.  And by doing it myself it will mesh better with the way I approach things and thus be more usable and useful.&lt;/p&gt;
&lt;h2&gt;Why I Care&lt;/h2&gt;
&lt;p&gt;My biggest concern is that those currently learning CSS will fall back on these frameworks to save time for things like class projects or one off work for portfolio fodder.  In those situations, giving up the separation of content and style to gain a bit of agility is probably justified.  But I fear that in the process the vast majority of the next generation of web developers will miss out on the philosophical core of web standards.  I think it could set back the industry, right at the time when I was finally starting to feel that education (both formal and informal) was starting to get things right in this industry.&lt;/p&gt;
&lt;p&gt;Or maybe I'm chicken little and the sky isn't really falling.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-5666972992541068113?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/5666972992541068113/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=5666972992541068113' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/5666972992541068113'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/5666972992541068113'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/12/does-anyone-actually-read-this.html' title='Does anyone actually read this?'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-396108645457797203</id><published>2008-12-10T15:00:00.003-06:00</published><updated>2008-12-10T16:06:49.810-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='magnolia'/><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><category scheme='http://www.blogger.com/atom/ns#' term='stumble'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='knowledge management'/><title type='text'>My personal knowledge management problem</title><content type='html'>&lt;h2&gt;Full Disclosure:&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;This post and probably a couple of future posts will serve to fulfill a requirement in my graduate course on knowledge management.  But I'm trying hard to approach this in such a way that such requirements are totally transparent asside from this note.  Maybe I'll pull it off and this will bear some interest for folks other than &lt;a href="http://www.knowledgeresources.ca/Knowledge_Resources/Bio.html"&gt;my proff&lt;/a&gt;.  Or maybe I'll totally drop the ball and not engage anyone with this content and totally screw up the assignment to boot.  If so, maybe I'll at least fail spectacularly enough to get some good schadenfreude going.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I tried going through the &lt;a href="http://www.knowledgeresources.ca/Knowledge_Resources/PKM_Planning.html"&gt;exercises&lt;/a&gt; Kirby put together.  The basic goal is to figure out which tasks I perform as a &lt;a href="http://en.wikipedia.org/wiki/Knowledge_worker"&gt;knowledge worker&lt;/a&gt; bring the most value to my organization, then figure out how much of my time I spend on those tasks vs. less valuable tasks, then try to maximize the time I can devote to the valuable stuff and minimize the time wasted (although that's a slightly harsher term than it needs to be in this context) on less valuable tasks.&lt;/p&gt;
&lt;p&gt;I'll be honest, I don't think those exercises work for me right now.  There's a couple of reasons for this.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I'm 18 months in to this job and the task that has dominated my time thus far, redesigning &lt;a href="http://www.volstate.edu/"&gt;the website&lt;/a&gt; (we launched the &lt;a href="http://beta.volstate.edu/"&gt;beta&lt;/a&gt; by the way, I don't think I took the time to announce that officially here, although I did on &lt;a href="http://volunteerstatecommunitycollege.blogspot.com/2008/11/redesign-beta-is-go.html"&gt;the Vol State blog&lt;/a&gt;), is not typical of the work someone in this position would be doing otherwise.  Once the redesign launches, the way I work will shift, rather radically.  It's hard if not impossible for me to look at the last 18 months and make conjectures for the next 18 months.&lt;/li&gt;
&lt;li&gt;The biggest drain on my productivity falls outside of my realm of influence; IE it's a trend I am powerless to address.  I won't go into detail here but Kirby if you want specifics just email me and I'll fill you in.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;So I've been looking at the way Kirby breaks down his &lt;a href="http://www.knowledgeresources.ca/Knowledge_Resources/PKM_Model.html"&gt;model of personal knowledge management&lt;/a&gt; and one area I see a lot of room for improvement in the way I currently handle things is with information organization and retrieval. The sad part is I've been sitting on the tools to address this issue for years.  I just need to be mindful of how I use them.&lt;/p&gt;
&lt;p&gt;I signed up for a &lt;a href="http://ma.gnolia.com/"&gt;Ma.gnolia&lt;/a&gt; account back when they were still in beta.  I used it for a while, then I found &lt;a href="http://www.stumbleupon.com/"&gt;Stumble Upon&lt;/a&gt; (hereafter: SU).  My thoughts at the time were that SU did all the social bookmarking stuff I had been using Ma.gnolia for with the added element of discovery of new content at the push of a button.  That's true in theory.  2 years later, it's obvious that it falls apart in practice.&lt;/p&gt;
&lt;p&gt;SU does the whole discovery thing very well.  I don't think I ever would have found jQuery without SU.  I had been underwhelmed by the JavaScript libraries I had seen during the first few months of that whole buzz and had pretty much written off the whole idea.  I was just gonna stick to writing my own custom &lt;a href="http://www.onlinetools.org/articles/unobtrusivejavascript/"&gt;unobtrusive JavaScript&lt;/a&gt; using &lt;a href="http://www.w3.org/DOM/"&gt;the Document Object Model&lt;/a&gt;.  Now I literally use jQuery every day.  My job would not be the same without it.&lt;/p&gt;
&lt;p&gt;But I discovered jQuery at a time when I actually had the time to take on the learning curve, as gentle as it may be.  The official documentation is complete enough that managing access to the information I needed to direct my own learning wasn't an issue either.  The only exception I could find to that would be the plug ins, but truth be told if the plug in doesn't make intuitive sense and isn't well documented, I don't use it.&lt;/p&gt;
&lt;p&gt;Compare that to some things I hope to learn more about in the near future, such as &lt;a href="http://drupal.org/"&gt;Drupal&lt;/a&gt; and &lt;a href="http://cakephp.org/"&gt;Cake PHP&lt;/a&gt; or &lt;a href="http://www.perl.org/"&gt;Perl&lt;/a&gt;.  Or even compare it to some of the stuff I'm already using but need to reference source material rather than working from the top of my head, like &lt;a href="http://en.wikipedia.org/wiki/Regular_expression"&gt;regular expressions&lt;/a&gt; and &lt;a href="http://pear.php.net/"&gt;PEAR&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Active_Directory"&gt;Active Directory&lt;/a&gt;.  Now we're talking about steeper learning curves just as what little time to learning new skills is shaved away as I try to push the redesign through the beta testing phase and into launch. I keep stumbling onto sources for these topics, but lacking the time to fully digest them, I thumb them up and move on.&lt;/p&gt;
&lt;p&gt;Ok, that last statement begs the question, if I don't have time to digest this stuff how do I have time to keep stumbling onto new content?  First of all, SU is addictive.  On top of that, it's so easy to just click the stumble button (with or without specifying a topic to stumble through, such as web design) that I can click through a fresh page or two while I'm checking in the files I just completed working on in Dreamweaver (hereafter: DW).  Or while I wait for DW to generate the broken link reports I've been running lately.  Actually, now that I bring that up, I really hope DW performs better on the redesigned site.  The current site is such a mess of spaghetti code that DW is prone to take its sweet time or even crash when I ask it to perform a site wide action.  The redesign is much leaner.  Based on the work done so far, the code we shave off should be equivelant to about 68 copies of the complete works of Shakespeare.  &lt;strong&gt;No, really&lt;/strong&gt;.  &lt;a href="http://www.gutenberg.org/"&gt;Project Gutenberg&lt;/a&gt; has the complete works of Shakespeare as a plain text file.  I've done the math.  :)&lt;/p&gt;
&lt;p&gt;This is where the problem comes in.  I find these great resources, or at least potentially great, but going back to find them later gets to be a real pain.  Sometimes I don't take the time to write my own tags for a page.  I just thumb it up and switch back to DW or click the stumble button again.  But SU being socially driven, the tags default to the category chosen by the person submitting the site.  I currently have 143 stumbles tagged with &amp;#8220;graphic-design&amp;#8221;.  I'm not a graphic designer.  I don't really even consider myself a web designer.  If you want to split hairs, I consider myself more of a web developer.  When I tag an article relating to design, I use &amp;#8220;web-design&amp;#8221;.  I've got 418 of those.  But it's possible I didn't personally tag all of them.  If the person submitting them tagged it as &amp;#8220;web-design&amp;#8221; and I just thumbed it up and moved on without bothering to apply my own tags to it, then that's how it would default.  It's obvious that graphic design is a pretty popular tag in the wild and the zeitgeist is polluting my tag cloud.&lt;/p&gt;
&lt;h2&gt;An Example&lt;/h2&gt;
&lt;p&gt;Over a year ago (November 1st of 2007 according to my SU history), I stumbled upon &lt;a href="http://www.scottjehl.com/v7/index.php/process/stylemap_v2_visual_sitemap/"&gt;Scott Jehl's StyleMap script&lt;/a&gt;.  At the time I thought, &amp;#8220;This is how we need to do the org charts.&amp;#8221;. Previously we had done the org charts in Microsoft Viso and then those files were exported to HTML.  But that produces a tangled mess of frames and images.  It's hard to navigate, hard to maintain, and doesn't even work on my Mac (thanks Microsoft).  I thumbed it up and moved on.&lt;/p&gt;
&lt;p&gt;In October of this year, I finally turned my attention to the org charts for the redesign.  I remembered stumbling upon this script a long time ago that would be perfect.  But I couldn't find it in my SU history.  I tried Google searching every combination I could think of.  I literally wasted an entire day trying to find this script.&lt;/p&gt;
&lt;p&gt;The problem was the default tag the page was assigned had nothing to do with how &lt;strong&gt;I&lt;/strong&gt; conceptualized the content of the page.  I don't even remember what it was now and I have since gone back and edited the entry with my own tags.  Google wasn't working because I had forgotten that it was written as a script to do site maps rather than org charts.  To add insult to injury, when I finally dug up the article and tried to put the script into use, our org chart proved to be way too complex.  But I could have discovered that in an hour had I not wasted an entire day (and part of the following morning) digging up the script.&lt;/p&gt;
&lt;h2&gt;The Problem&lt;/h2&gt;
&lt;p&gt;Partly due to flaws in the way I use it, and partly due to flaws in the way it's designed, SU is failing me as a means of efficient information organization and retrieval.  In defense of the development team behind SU, it &lt;strong&gt;is&lt;/strong&gt; designed more as a discovery engine than as an organization tool.  And I can't sing enough praises as to how well it performs its core function.&lt;/p&gt;
&lt;h2&gt;The Solution?&lt;/h2&gt;
&lt;p&gt;So I turn my attention to my neglected Ma.gnolia account.  If I start using both these tools to perform the tasks for wich they were designed, and approach my use of these tools in a mindful way, I think I can milk a lot more productivity out of my days.  I'll map out that plan in a future entry.  Stay tuned.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-396108645457797203?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/396108645457797203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=396108645457797203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/396108645457797203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/396108645457797203'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/12/my-personal-knowledge-management.html' title='My personal knowledge management problem'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-7897907016167434693</id><published>2008-12-05T13:17:00.003-06:00</published><updated>2008-12-05T13:41:28.915-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='education'/><category scheme='http://www.blogger.com/atom/ns#' term='blogosphere'/><title type='text'>When it rains it pours</title><content type='html'>&lt;p&gt;Getting caught up on my blog reading, which always gets me thinking, and once my comments to the entries of others grow longer than &lt;a href="http://csstinderbox.raykonline.com/?p=59"&gt;the entry to which I am replying&lt;/a&gt;, I figure I'm better off putting it here.&lt;/p&gt;
&lt;p&gt;I have both a 2 year and a 4 year degree in web design.  As in, the word &amp;#8220;web&amp;#8221; is actually printed somewhere on my physical degrees.  One says &amp;#8220;&lt;a href="http://www.pstcc.edu/departments/mdt/web_about.htm"&gt;Web Development Technology&lt;/a&gt;&amp;#8221; and the other says &amp;#8220;&lt;a href="http://webdesign.tntech.edu/"&gt;Web Design&lt;/a&gt;&amp;#8221;.  I got a lot out of my education because the timing and my mindset were right for it.  I had a few years of field work under my belt, so even when the course work did a crappy job of tying the concepts to real world examples I was able to fill in those gaps.&lt;/p&gt;
&lt;p&gt;The downside is at the undergraduate level classes have to assume no prior knowledge on the part of the student, at least nothing above and beyond what is taught in high school.  In other words, the first few classes assume you can type and that's about it.  The problem there is some of the most promising students will be turned off early on in such a program, say to hell with it, and go get a job with the basic skills they already have.  The other edge of that particular sword is you quickly go from the early hand holding courses to being expected to understand stuff like &lt;a href="http://en.wikipedia.org/wiki/OSI_model"&gt;the OSI Model&lt;/a&gt; or object oriented programming in detail.  If I were playing a video game with a learning curve that steep, controllers would be bouncing off walls, likely in multiple pieces.  But my prior experiences made things more manageable and I was mentally prepared for the challenges that came up.&lt;/p&gt;
&lt;p&gt;A lot of people would not be.  That doesn't make them bad people or somehow less intelligent than me.  If anything it indicates that the traditional academic model is poorly suited to cover highly technical disciplines like web design.&lt;/p&gt;
&lt;p&gt;I say the timing was right because the 2 year program had just entered a stage of growth and was updating its curriculum to be more relevant. The first semester I was in that program the textbooks and course materials were very 1996.  Browser sniffing, tables for layout, optimizing animated gifs; scary stuff.  By the time I graduated they were offering classes on CSS and XML.  Still far from cutting edge, but they managed to advance their curriculum about 7-8 years in the 3 semesters I was there.  The problem is the nature of most colleges and universities make it very hard to do such changes more often than once a decade or so.&lt;/p&gt;
&lt;p&gt;The 4 year program was brand new.  I'm the 6th person to graduate with that degree.  Since it was so new, the curriculum had not yet had time to get stale.  The director of the program was also both knowledgeable and passionate, and he personally taught most of the core classes in the program.&lt;/p&gt;
&lt;p&gt;In a single lecture we might start out talking about the Iliad and how it's an example of an epic, then move in to how the structure of an epic is guided by oral traditions.  And just when you're starting to wonder why the hell we're talking about this stuff in a class on web design, we shift to talk about how communication on the web shares a lot of characteristics with oral communications (you and I are having a type of conversation right now).  From there we talk about how the structure of an epic poem can be seen as an early prototype of hypertext with the various ways the narrative loops back on itself and includes passing references to other epics from the same cannon.  And I use phrases like "we talk" for a reason; the courses were very much structured around discussion and team work.  I learned more from my fellow students than from the professor and that was by design.  My current graduate program hasn't managed to pull together ideas as seemingly disparate in 2 years as Bob routinely did over the course of an hour.&lt;/p&gt;
&lt;p&gt;But literally the day I graduated the director of the program packed his bags and drove several hours north to become the new &lt;a href="http://www.esc.edu/esconline/across_esc/acadaffairs.nsf/wholeshortlinks2/Robert+Clougherty?opendocument"&gt;Director of Graduate Studies at Empire State College&lt;/a&gt; in Saratoga Springs, NY.  Without his leadership, I don't know how well the content of the courses will be kept up to date or how well the structure of the courses will translate to new professors covering that material. I'm very lucky to have gone through the program when I did.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-7897907016167434693?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/7897907016167434693/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=7897907016167434693' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/7897907016167434693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/7897907016167434693'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/12/when-it-rains-it-pours.html' title='When it rains it pours'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-2673927239139296566</id><published>2008-12-05T12:16:00.003-06:00</published><updated>2008-12-05T12:20:50.337-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE6'/><title type='text'>Antique Browser</title><content type='html'>&lt;p&gt;What reminded me to come back and complete that last post is a response I wrote in &lt;a href="http://csstinderbox.raykonline.com/"&gt;yet another design blog&lt;/a&gt;.  The thoughts that lead to that reply were obviously inspired by the ideas that have been kicking around in my head for the past month while my last post was locked in draft stasis.  I'll go ahead and share those thoughts here as well, slightly more detailed than in my reply to &lt;a href="http://csstinderbox.raykonline.com/?p=61"&gt;Raymond's entry on hating IE6&lt;/a&gt; (I took the time to do the math).&lt;/p&gt;
&lt;p&gt;I was thinking just last night that an appropriate metaphor to explain to non-techies why IE6 sucks would be to compare it to an antique car.&lt;/p&gt;
&lt;p&gt;The &lt;a href="http://en.wikipedia.org/wiki/Ford_Model_T"&gt;Model T&lt;/a&gt; was not the first car, and &lt;a href="http://en.wikipedia.org/wiki/Mosaic_(web_browser)"&gt;Mosiac&lt;/a&gt; was not the first browser, but both brought those particular products into the main stream an birthed industries to support them. So we’ll use those are our anchor points for comparison.&lt;/p&gt;
&lt;p&gt;The first Model T rolled off the assembly line in 1908. So the automobile as we know it is 100 years old this year. Mosaic was released on April 22, 1993.  Today being December 5th, 2008, that makes the modern web browser 15.6226243 years old. IE6 came out August 27, 2001, so it is 7.274739 years old. That means IE6 is 46.5654096% as old as the modern web.&lt;/p&gt;
&lt;p&gt;If you were driving a car manufactured in 1963, would you expect to meet modern safety standards? Would you expect to pass modern emissions testing? You couldn’t use a modern gas pump without using an artificial additive to replace the lead that was commonly added to fuels 46 years ago. There’s a reason most people who own antique cars usually drive them only to auto shows or for the occasional pleasure cruise and don’t use them for every day driving. If you drove such a car the typical 1,000 miles or so a month, you would expect to pay much more in maintenance costs than someone driving a newer model.&lt;/p&gt;
&lt;p&gt;The primary appeal of an antique car is the cool factor. They offer styles not available in the modern market and you just look cooler behind the wheel of a cherry antique than just about any modern automobile. &lt;strong&gt;No one&lt;/strong&gt; is impressed by your antique browser. So why are you still using it?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-2673927239139296566?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/2673927239139296566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=2673927239139296566' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/2673927239139296566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/2673927239139296566'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/12/antique-browser.html' title='Antique Browser'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-1112279426182900692</id><published>2008-11-13T12:46:00.007-06:00</published><updated>2008-12-05T12:15:32.043-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='blogosphere'/><category scheme='http://www.blogger.com/atom/ns#' term='IE6'/><title type='text'>Charging more to support craptastic and/or old browsers</title><content type='html'>&lt;p&gt;Good God.  I literally started writing this entry a month ago, got busy, and left it suspended in draft mode for ages.  Let me brush off the dust and get this bad boy ready for publication...&lt;/p&gt;
&lt;p&gt;This started as a reply to &lt;a href="http://theodin.co.uk/blog/web-design/should-designers-charge-more-for-old-browser-support.html"&gt;a post from Philip Beel&lt;/a&gt;, which was in turn explaining his thoughts in response to item #10 on &lt;a href="http://www.hackification.com/2008/11/06/ten-web-development-tips-i-wish-id-known-two-years-ago/"&gt;Ten Web Development Tips I Wish I'd Known Two Years Ago&lt;/a&gt; over at hackification.  By the time my comment hit it's 6th paragraph, I figured I'd be better off just putting my thoughts into my own blog post.  Ain't the web grand?&lt;/p&gt;
&lt;p&gt;Philip says in part:&lt;/p&gt;
&lt;blockquote&gt;Consider that you were sold a car, but told you could only drive it on motorways, as the wheels may fall off if you drove it on any other roads.&lt;/blockquote&gt;
&lt;p&gt;But I think that's the wrong way to look at the situation.  My thinking is a bit closer to the hackification article, which states in part:&lt;/p&gt;
&lt;blockquote&gt;Explain to the client that since older browsers work in a different way to modern ones (which they do), that’s extra work and hence extra &lt;em&gt;cost&lt;/em&gt;. (I’d suggest approximately 10% on top). Explain that IE6 has approximately 25-30% &lt;em&gt;market share&lt;/em&gt;, and let them make the &lt;em&gt;cost/benefit&lt;/em&gt; call. &lt;em&gt;Money&lt;/em&gt; has an amazing focusing effect: it forces people to really think about what they want and need. (emphasis added)&lt;/blockquote&gt;
&lt;p&gt;As designers, we're concerned with stuff like use experience, so we tend to think of things in terms of the end user/consumer.  But our clients are often business people, so I think it's more effective to talk to them in the language of business people.&lt;/p&gt;
&lt;p&gt;I think the &amp;#8220;buying a car that only works on motorways&amp;#8221; example wouldn't work well on most clients. The situation is more akin to opening a new convenience store 7 years after the last gasoline powered car has rolled off the assembly line.  Would you want to take on the cost of installing and maintaining a gas pump for a market segment that is no longer in the majority and will be forever dwindling?  Even installing just a single pump alongside the hydrogen system (or quick charge stations or whatever the new technology happens to be) would require redoing a lot of the same type of work.  The systems aren't interchangeable or compatible.  There would be redundant systems; more things to build and eventually need repair.&lt;/p&gt;
&lt;p&gt;I think most clients would understand that analogy.  It probably would not be hard to come up with one more targeted towards their own business model.&lt;/p&gt;
&lt;p&gt;But another problem is that consumers are better informed as to the cars they drive than the browsers they use.  The owner and employees of the hypothetical fueling station above would probably never have to deal with an irate customer who doesn't understand why the hydrogen hose or quick charge plug won't fit into his gas tank.  Sites like &lt;a href="http://browsehappy.com/"&gt;Browse Happy&lt;/a&gt; can come in handy for educating consumers, but the kind of people who are the most problematic (don't even realize browsers and other software are entities separate from &amp;#8220;the computer&amp;#8221;, never update whatever shipped with their operating system, etc) are the least likely to go there or truly understand the content once they get there.  So the ethical considerations are still not dodged.&lt;/p&gt;
&lt;p&gt;But I think the ethical issues are drastically different from the issues involved in getting clients to understand the cost associated with &amp;#8220;supporting&amp;#8221; old browsers.  And a lot depends on how you define &amp;#8220;support&amp;#8221; as well.  &lt;/p&gt;
&lt;p&gt;If you want the 0.1% (or hopefully even lower than that) of folks still surfing on Netscape 4 to be able to use some Ajax based enhancement, that's gonna take a heck of a lot more work.  What's the return on investment of that work?  Expecting the &lt;a href="http://marketshare.hitslink.com/report.aspx?qprid=2"&gt;21.53%&lt;/a&gt; (and dropping) of IE6 users to see rounded corners exactly like what someone on Safari 3 sees is like expecting a 1993 Geo Metro to handle and perform just like a Tesla Roadster.&lt;/p&gt;
&lt;p&gt;In my current work with jQuery, I'm noticing drastic performance difference even between IE6 and IE7.  The features &lt;strong&gt;work&lt;/strong&gt; in IE6, but it's not as smooth nor as quick.  With the move towards just in time scripting execution in Google Chrome and future browsers, such performance differences will become even more noticeable.  So what's the acceptable level of differences in appearance and performance from browser to browser?  That will change from project to project, but the price tag for the work we do needs to also change to reflect the shift in work load (be it up or down).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-1112279426182900692?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/1112279426182900692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=1112279426182900692' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/1112279426182900692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/1112279426182900692'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/11/charging-more-to-support-craptastic.html' title='Charging more to support craptastic and/or old browsers'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-2649797035851043224</id><published>2008-09-23T10:49:00.002-05:00</published><updated>2008-09-23T11:19:00.256-05:00</updated><title type='text'>Let's hear it for the girls</title><content type='html'>&lt;p&gt;In the past 10 issues of &lt;a href="http://alistapart.com/"&gt;A List Apart&lt;/a&gt;, 17 authors have been featured (not counting 2 articles penned by &amp;#8220;ALA Staff&amp;#8221;).  Of these, 8 have been women.  I'm not sure if that's due to a conscience effort on the part of ALA to pick up the slack on the (perceived) gender bias in the industry or not.  Either way, I think it's pretty cool.  I know &lt;a href="http://molly.com/"&gt;some&lt;/a&gt; of these &lt;a href="http://www.sushiandrobots.com/"&gt;ladies&lt;/a&gt; better than others, but they seem just as knowledgeable and respectable as their male counterparts and I'm glad to see them getting some exposure.&lt;/p&gt;

&lt;p&gt;Not like &lt;strong&gt;that&lt;/strong&gt;.  Get your mind out of the gutter.  And hand mine up to me while you're down there.&lt;/p&gt;

&lt;p&gt;In mildly related news, &lt;a href="http://www.happycog.com/"&gt;Happy Cog&lt;/a&gt;, the design firm founded in part by ALA founder &lt;a href="http://www.zeldman.com/"&gt;Jeffrey Zeldman&lt;/a&gt;, recently launched a redesign for &lt;a href="http://www.booksamillion.com/"&gt;Books-A-Million&lt;/a&gt;.  I was a lowly cashier / customer service agent at a Books-A-Million store for about a year following my marriage and move to Knoxville (now one of my least favorite places on Earth).  This was 2001-2002 and even by the standards of the day their site had some issues, particularly in usability.  At the time, it seemed the corporate culture was pretty clueless about technology.  Everything from the way inventory was managed to the point of sale system to the tech books we carried on the shelves seemed to showcase this.  Maybe that culture has shifted in the past 7 years.  Then again, somewhere between delivery (at which point design studios lose control of their creations) and launch on the BAM servers, &lt;a href="http://validator.w3.org/check?uri=http%3A%2F%2Fwww.booksamillion.com%2F&amp;charset=(detect+automatically)&amp;doctype=Inline&amp;group=0"&gt;over 800 markup errors&lt;/a&gt; have cropped up in the home page alone.  So maybe they're still just throwing money at their problems without taking the time to understand them.  However, &lt;a href="http://www.happycog.com/design/booksamillion/"&gt;Happy Cog's case study&lt;/a&gt; of the work makes it sound like BAM had a lot more of the legwork done than most client would on a project like this.  Obviously a few people in the organization &amp;#8220;get it&amp;#8221;.  Here's hoping they can lead the company in the proper direction.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-2649797035851043224?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/2649797035851043224/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=2649797035851043224' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/2649797035851043224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/2649797035851043224'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/09/lets-hear-it-for-girls.html' title='Let&apos;s hear it for the girls'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-6848973943394020051</id><published>2008-09-12T07:41:00.004-05:00</published><updated>2008-09-12T10:21:44.712-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><category scheme='http://www.blogger.com/atom/ns#' term='smartlist'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><title type='text'>The joys of debugging</title><content type='html'>&lt;p&gt;Looking at other people's code can be enlightening.  I've been looking for an excuse to try out &lt;a href="http://www.benjaminkeen.com/"&gt;Benjamin Keen&lt;/a&gt;'s &lt;a href="http://www.benjaminkeen.com/software/smartlists/jquery/"&gt;smartlist plugin&lt;/a&gt; for &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt; for a while now. (The jQuery website was recently redesigned and is even more awesome now.)  &lt;/p&gt;

&lt;p&gt;One of the most important questions a potential student may hope to answer on our website is “Can I get the degree I want?”  Actually, it's probably a bit more abstract than that.  I know when I evaluate schools, from my own time at a community college to my undergrad days to my current graduate program, I care less about the degree than I do about the topics covered and the skills developed.  I care about the topics because if I'm going to devote a couple years of my life to a program, I want to make sure it will hold my interest. The skills are important because ultimately that's what gives me an edge in my chosen job market. I doubt anyone surfs over to our website specifically looking for a degree in &lt;a href="http://catalog.volstate.acalog.com/preview_program.php?catoid=9&amp;amp;poid=305&amp;amp;bc=1"&gt;biotechnology&lt;/a&gt;, but s/he may have an interest in chemistry and biology already and may be considering a career path where such a degree offers a competitive edge.  &lt;/p&gt;

&lt;p&gt;In it's simplest form, this question could be written as “What do you have to offer me?” (The only question more important than this one is probably “How much will it cost me?”)  Each student evaluates that question through criteria specific to his or her needs, wants, and experiences.  The form of this evaluation follows traditional models of interpersonal communication (that is, a spoken conversation) more so than print materials.  We really need a new model for a new communications medium, but I'll leave that for this generation's &lt;a href="http://en.wikipedia.org/wiki/Charles_Peirce"&gt;Peirce&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Marshall_McLuhan"&gt;McLuhan&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Tim_Leary"&gt;Leary&lt;/a&gt;.  (No, really.  Leary wrote and lectured on cyberspace and virtual reality after the whole LSD thing blew over.)  In the mean time, the idea of a conversation fits better than the idea of a book or newspaper article.&lt;/p&gt;

&lt;p&gt;If you've taken a look at the &lt;a href="http://www.benjaminkeen.com/software/smartlists/jquery/jquery_example.html"&gt;smarlists demo&lt;/a&gt; you may see where I'm going with this.&lt;/p&gt;

&lt;p&gt;The ability to tag (or flag, as Ben calls it) the items in a smartlist can foster the sort of back and forth communication that the web thrives on.  This is something that will need a lot of testing, of course, because the initial set of tags may not fit the words in the minds of our students.  There's also a careful line to walk between providing enough tags to make the ability to sort through the data useful vs. introducing a new flavor of information overload. It's very experimental, but I think it can be done right and I think it can be a great help to our students, both current and potential.&lt;/p&gt;

&lt;p&gt;So yesterday I actually started building this new application for the redesigned site (still only available via IP from on campus, I'll link it here once we publicly release the beta).  The first thing I notice is the demo uses a table.  I furrow my brow, thinking a table isn't necessarily the best way to approach this as far as semantics go.  I look a bit closer and realize the plugin is written in such a way to allow me to use any html tags I want.  I just need to apply the right classes to those elements so the script knows what everything means.  Ideally, I'd like to use a &lt;a href="http://www.maxdesign.com.au/presentation/definition/"&gt;definition list&lt;/a&gt;.  But that would require me to wrap each &amp;lt;dt&amp;gt; / &amp;lt;dd&amp;gt; set in a &amp;lt;div&amp;gt; since the script expects the list of tags (or flags) to be a child element of (that is, contained completely inside) the element defined as an “item”.  I don't think a &amp;lt;dl&amp;gt; likes being filled with block level elements like &amp;lt;div&amp;gt;s between itself and its children.  I could do a definition list per item, but that seems like over kill.  Eventually, I settled on an unordered list with a few paragraph tags inside the list items and appropriate classes scattered throughout.&lt;/p&gt;

&lt;p&gt;I build enough of the list that I feel it's testable. In hindsight, I should have built the smallest possible test case, something like 3 items and 4 tags.  Everything worked fine as long as you clicked links.  Pagination worked.  Filtering by clicking on the tags worked.  Resetting the list by choosing the default option on the drop down list also worked.  Selecting a tag from the drop down resulted in all items being hidden.  Strangely, the pagination still worked.  In other words, if the list is showing 10 items per page, and you select a tag with 25 items, you get the links for 3 pages just like you should.  But all 3 pages are blank.  I run in to this particular error around lunch time yesterday.  I pour over the code for about 3 hours looking for differences between my local, broken code and the functioning code published with the demo.  It appears to be exactly the same, and it should be, I downloaded from the source, right?  &lt;/p&gt;

&lt;p&gt;Eventually, I check the jQuery code on the demo.  That's version 1.2.3.  I'm running 1.2.6 (actually just one revision removed, 1.2.4 and 1.2.5 were skipped for various reasons).  I ran into a similar problem with a plug in when 1.2.3 was new.  Back then I found a page in the documentation that explained exactly what functions were changed and how.  That made it very easy to discover a couple of functions were being called that were no longer available.  I replaced those 2 functions with the new single function that supersedes them in the new version and was back up and running in less than an hour.  This time around, I the documentation on the changes (&lt;a href="http://docs.jquery.com/Release:jQuery_1.2.6"&gt;short version&lt;/a&gt;, &lt;a href="http://dev.jquery.com/report/27"&gt;full version&lt;/a&gt;) between versions was less helpful.  :(&lt;/p&gt;

&lt;p&gt;But at least now I know it's a problem due to changes in the most recent version of jQuery.  Now I feel justified in contacting the author directly.  I use the form on Ben's site to contact him, explaining what I've found so far so at least he knows I tried to fix the problem myself, and ask if he has put any work into updating the plugin that just haven't been published to the site yet.  I go back to troubleshooting for about half an hour before I bother checking for a reply.  Turns out that was a mistake because he replied almost immediately.  He said I was the 3rd person to write him on the same issue and it seems to be a change to the inArray() function but he hasn't tracked down the exact nature yet.&lt;/p&gt;

&lt;p&gt;I start to reply talking about how that doesn't seem to make sense because I had just read over that bit of code in the half hour since I first wrote him and the inArray() function is called the same way no matter which event triggers the action.  Since it works fine when clicking a link but fails when selecting from the drop down menu, the problem has to be related to the triggering event.  But the only place I can find where that makes a difference is the way a specific variable is set.  I checked the state of that variable after it's set using either method and it contains the proper value.  These are the thoughts going through my head as I begin to type my reply, but I don't quite make it that far.  If you've got any experience debugging JavaScript or any other &lt;a href="http://en.wikipedia.org/wiki/Weak_typing"&gt;loosely typed&lt;/a&gt; language you may have figured this out already too.&lt;/p&gt;

&lt;p&gt;The problem was the variable was a number when set by the click event, and a string when set from the drop down menu.  The default value worked because it's a string rather than an index number.&lt;/p&gt;

&lt;p&gt;You know what? I just realized that the fix I made last night introduces a new bug.  I was just casting the value via the Number() function, but that screws up the default string value.  Crap.  So the full fix is an if statement checking for the default value and casting if it's not found.  I'm off to make that change and then hopefully I'll be done.&lt;/p&gt;

&lt;p&gt;Look for updated code to hit Ben's site in the not too distant future.  :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-6848973943394020051?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/6848973943394020051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=6848973943394020051' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6848973943394020051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6848973943394020051'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/09/joys-of-debugging.html' title='The joys of debugging'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-5639348646761671361</id><published>2008-07-17T11:44:00.002-05:00</published><updated>2008-07-17T11:50:11.874-05:00</updated><title type='text'>One Week Only!</title><content type='html'>&lt;p&gt;Do you like...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Neil Patrick Harris?&lt;/li&gt;
&lt;li&gt;Nathan Fillion?&lt;/li&gt;
&lt;li&gt;Joss Whedon?&lt;/li&gt;
&lt;li&gt;comic books?&lt;/li&gt;
&lt;li&gt;musicals?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Personally, I hate musicals, but I still love &lt;a href="http://www.drhorrible.com/"&gt;Dr. Horrible's Sing Along Blog&lt;/a&gt;. Maybe you will too.&lt;/p&gt;
&lt;p&gt;But you'd better hurry, &lt;a href="http://www.drhorrible.com/plan.html"&gt;it's only available online (for free) through Sunday&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-5639348646761671361?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/5639348646761671361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=5639348646761671361' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/5639348646761671361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/5639348646761671361'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/07/one-week-only.html' title='One Week Only!'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-9168544724761530557</id><published>2008-06-23T17:07:00.004-05:00</published><updated>2008-06-23T17:10:38.993-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='ajax'/><title type='text'>Google is so awesome</title><content type='html'>&lt;p&gt;Seriously.  I keep waiting for the other shoe to drop.  How can a company be this cool, constantly, at no immediate cost to me?  Have you seen the &lt;a href="http://code.google.com/apis/ajaxlibs/"&gt;Google AJAX Libraries API&lt;/a&gt;?  Nothing I can say here can do it justice.  Just follow the link.  I'm gonna try using this to load jQuery in the redesign.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-9168544724761530557?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/9168544724761530557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=9168544724761530557' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/9168544724761530557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/9168544724761530557'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/06/google-is-so-awesome.html' title='Google is so awesome'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-6788678934198750181</id><published>2008-06-05T14:46:00.003-05:00</published><updated>2008-06-05T16:18:48.358-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='clients'/><category scheme='http://www.blogger.com/atom/ns#' term='rants'/><category scheme='http://www.blogger.com/atom/ns#' term='pathways'/><title type='text'>ARGH!</title><content type='html'>&lt;p&gt;Ok, I make an honest effort to keep this blog as positive as possible since it's my professional / educational blog.  I have other haunts I frequent in order to discuss things like sex, politics, and religion.  Here, I try to stick to the sort of thing that I don't mind someone reading before they call me in for a job interview (or chose to &lt;em&gt;not&lt;/em&gt; call me).  But sometimes things happen that are related to the topics I try to cover here that I feel justified in sharing here.  Today, such a thing happened.  I got to see some of my previous work butchered.&lt;/p&gt;
&lt;p&gt;This has actually happened before, on the same project.  Of course, I should know once the product is delivered to the client all bets are off.  I should know better than to even go look.  It can't possibly end positively.  But like rubberneckers at a train wreck, I just keep going back to look again.&lt;/p&gt;
&lt;p&gt;Let me give you a little background.  When I went back to &lt;a href="http://tntech.edu/"&gt;TTU&lt;/a&gt; for my degree in &lt;a href="http://webdesign.tntech.edu/"&gt;web design&lt;/a&gt; (oh crap, that page has been ruined since I left too), I had a job at &lt;a href="http://www.tntech.edu/institute/"&gt;The Technology Institute&lt;/a&gt;.  I don't think they do it anymore, but back then they'd actually take on programming projects either for the TTU campus or for our sister schools or for the &lt;a href="http://www.tbr.edu/"&gt;Tennessee Board of Regents&lt;/a&gt;.  TBR governs both the 4 year state schools like TTU and the community colleges, like &lt;a href="http://www.volstate.edu/"&gt;Vol State&lt;/a&gt;, where I currently work.  They also just launched a redesign, and it's decent.  A vast improvement over their old site.  I don't care for nested drop down menus though...usability and accessibility nightmare.&lt;/p&gt;
&lt;p&gt;When I first started the job, we had one major project that had been in process for nearly a year.  It was for TBR.  The idea was sound.  They wanted a site where prospective students could research what degrees are available at TBR schools and what jobs are associated with those degrees.  So if you know which school you want to go to, you can browse their degrees and plan for your future career based on that.  Or, if you have a career in mind but don't know which schools you should apply to, you can navigate the system based on jobs and work in the other direction.  Or, if you just know what you want to major in, you can find schools and / or future careers.  It's a pretty simple relational database issue and it makes intuitive sense to the target audience.&lt;/p&gt;
&lt;p&gt;When I came on to the project:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;The database was built but sparesly populated&lt;/li&gt;&lt;li&gt;Accounts were funtional, but most were inactive.&lt;/li&gt;&lt;li&gt;Account management and data entry forms were built and functioning.&lt;/li&gt;&lt;li&gt;The front end interface was built.&lt;/li&gt;&lt;li&gt;The lead PHP developer had just dropped out of school to take a job in Nashville.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;We had a pretty good &lt;a href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)"&gt;LAMP&lt;/a&gt; project going.  It was built by students, and it showed.  But we fixed our mistakes.  We got to learn about the importance of normalizing a database the hard way.  That probably took the most time.  :)&lt;/p&gt;
&lt;p&gt;The role I took was largely adding performance enhancements.  I replaced the tables with a pure CSS layout.  I wrote my first &lt;a href="http://onlinetools.org/articles/unobtrusivejavascript/"&gt;unobtrusive javascript&lt;/a&gt;, replacing literally several hundred lines of Dreamweaver generated scripts with about a dozen lines of code.  I assisted with some MySQL and PHP clean up.  I added a couple of functions that required creating new admin forms.  I performed final testing (unfortunately, not with &amp;#8220;real&amp;#8221; users) and delivered the product to the client.  By the end I was pretty comfortable with the project aside from the icon based navigation.&lt;/p&gt;
&lt;p&gt;There are 16 job categories, each with a few sub categories.  I think there was something like 83 in total.  Rather than expressing these as text, each category and subcategory had an icon associated with it.  I knew that introduced a high probability of misinterpretation of the navigation, adding to the learning curve.  How do you communicate an idea like &amp;#8220;Construction Plumbing&amp;#8221; in an 80 x 80 pixel icon?  But I also knew how much work went into those icons and didn't want to deny the graphic artist her moment in the sun.&lt;/p&gt;
&lt;p&gt;About a year after we delivered, I surfed over to take a look.  I had just taken my current job and was reviewing the examples of my work cited on my resume.  The front end was completely different.  All my CSS and javascript work was gone.  The graphic designer's icons were gone.  But functionally it was all still there.  So I could at least tell myself I still contributed to a site whose purpose I believe in.  Even if it was all back end stuff that no employer could look at in any meaningful way, some of my work was still there.&lt;/p&gt;
&lt;p&gt;Today I'm looking for broken links in our &amp;#8220;helpful links&amp;#8221; page maintained by our career placement office.  One of the links goes to &lt;a href="http://tcids.tbr.edu/"&gt;The Tennessee Career Information Delivery System&lt;/a&gt;.  The project I worked on lives on a different sub-domain of that same server farm, so I replaced &amp;#8220;tcids&amp;#8221; with &amp;#8220;&lt;a href="http://pathways.tbr.edu/"&gt;pathways&lt;/a&gt;&amp;#8221; to check it out again.&lt;/p&gt;
&lt;p&gt;Apparently the table that stores the 16 job categories and the table that stores the sub-categories still exists.  The rest is gone.  The Admin link doesn't even go anywhere.  Once you get to the level of sub-categories, a whopping &lt;strong&gt;1&lt;/strong&gt; click into the system, rather than being able to drill down any further and get info on degrees and / or the schools offering those degrees in your browser, you are prompted to download a .xls file.  The meat of the database has been replaced with flat Microsoft Excel files.  This pains me greatly.&lt;/p&gt;
&lt;p&gt;The only surviving evidence of my involvement in this application is the HTML comment found on line #23, in reference to &lt;a href="http://www.hicksdesign.co.uk/journal/ie-whitespace-bug"&gt;the IE whitespace bug&lt;/a&gt;.&lt;/p&gt;
&lt;code&gt;&amp;lt;!-- The following just holds the entire "banner." It's all on one line because IE is stupid. --&amp;gt;&lt;/code&gt;
&lt;p&gt;I pretty obviously wrote that.  I'm not sure if the placement on line &lt;a href="http://en.wikipedia.org/wiki/23_(numerology)"&gt;#23&lt;/a&gt; was intentional.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-6788678934198750181?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/6788678934198750181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=6788678934198750181' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6788678934198750181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6788678934198750181'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/06/argh.html' title='ARGH!'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-8472417746916732252</id><published>2008-05-26T21:23:00.002-05:00</published><updated>2008-05-26T21:44:33.568-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social capital'/><title type='text'>Looking for Applications of Social Capital</title><content type='html'>&lt;p&gt;I could talk about how I hope to launch the redesign at work and then start making my rounds on the conference circuit.  But that seems a bit obvious, and also doesn't do much with the technology side of the equation of the course material.&lt;/p&gt;

&lt;p&gt;So instead I've been thinking about what I can do at work to help incorporate these ideas into our own website, either as part of the redesign or as an area of further growth after the redesign is over.  I'm not really sure if there's much point in trying to build a custom application.  There's no sense in trying to out-Facebook Facebook.  But maybe just getting some of our offices such as Career Placement, Cooperative Education, and the Small Business Development Center active on a site like &lt;a href="https://www.linkedin.com/"&gt;LinkedIn&lt;/a&gt; and offering training to their &amp;#8220;customers&amp;#8221; (that seems to be a dirty word in higher ed, but I think to deny that side of our relationship with the study body leads us to mentally separate the connection between us meeting their needs and us getting a pay check).&lt;/p&gt;

&lt;p&gt;I've worked this job long enough to know where the technophiles are, and in this situation they're not where I need them to be.  This line of reason my get derailed before it even has a chance to leave the station.  I guess I could try to subvert the system and take things straight to the students.  But how?  I mean, if there's any sort of training I want to offer to employees I've got professional development day at least once a semester.  There's nothing like that for the students.  There's no way to work this into the syllabus of a pre-existing class and without a PhD I won't be able to create a new class of my own.  What we really need is to incorporate some basic digital humanities ideas into courses like English 101 and 102.  That's something Dr. Clougherty tried to pitch back at TTU but it wasn't very well received.   He was extremely lucky to get the web design program passed all the bureaucracy, but ultimately I think it was the constant fight to get even that much innovation introduced on campus that lead to his seeking greener pastures.  Vol State might not be quite so resistant to change as TTU simply by virtue of being a 2 year school, but exactly how much is it worth to purposefully swim against the current in an educational institution?  Ultimately, I love my job and I'm quite happy here.  But couldn't picking the wrong battles do a lot of damage to my quality of life and job satisfaction without adding any real value to the students?&lt;/p&gt;

&lt;p&gt;So I think the first step is to look up data on the rate at which our graduates find jobs.  I may be dreaming up solutions for problems that don't even exist.  I'll try to get my hands on some figures for both graduate employment and retention rates.  Maybe I can find a couple of academic departments who would be willing to pilot a program using social media to keep their students connected on and off campus and on into their careers.  I think the secret to success in organizations traditionally resistant to change is to not just &lt;em&gt;tell&lt;/em&gt; them a better way to do thing, but to actually &lt;strong&gt;show&lt;/strong&gt; them a better way.  The down side is you end up often asking for forgiveness after the fact, rather than for permission before hand.   Then again, is that really such a bad thing?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-8472417746916732252?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/8472417746916732252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=8472417746916732252' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/8472417746916732252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/8472417746916732252'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/05/looking-for-applications-of-social.html' title='Looking for Applications of Social Capital'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-1630432874705455080</id><published>2008-05-20T18:26:00.004-05:00</published><updated>2008-05-26T21:45:15.721-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social capital'/><title type='text'>Social Capital and the Cohort Model in the MACT Program</title><content type='html'>&lt;p&gt;I've been thinking about social capital and how it applies to our cohort.  More than a few people have observed that for many of us out of towners, the end of this year's Spring Institute could very well be the last time we see each other face to face.  There's even been half-joking suggestions of doing our own Spring Institute in Las Vegas in 2009, although probably not the full 3 weeks.  :)&lt;/p&gt;

&lt;p&gt;We talk about these things and we &lt;em&gt;worry&lt;/em&gt; about these things because the cohort model allows us to make meaningful connections with each other.  I think that's an important element of education in general.  My undergrad program didn't exactly have a cohort model, but at the time I graduated there were only 60 or so of us in the major so I had shared classes with the few people who graduated before me and just about everyone with 2 or fewer years left to go.  Many of us stay connected via Facebook or what not, even pointing out job listings to each other.  We're in the same industry so that sort of things is easy.&lt;/p&gt;

&lt;p&gt;But, that's where the social capital of the MACT program starts to break down.  We're not all in the same industry or discipline.  I assume, and this may be naive of me, that in most masters programs, with or without the cohort model, students can expect a good chance of crossing paths after graduation simply because everyone will run in the same professional or academic circles.  Students getting a masters in Digital Humanities will probably frequent the same conferences for years to come.  I don't see that happening with MACT students (or at least not in my cohort).&lt;/p&gt;

&lt;p&gt;We've got people working in higher ed, civil service, banking, project management, IT, mass media, public relations, web development, law, graphic design...&lt;/p&gt;

&lt;p&gt;The nature of our research projects seems to reveal the same trends.  I won't know for sure until I see all the posters on Friday.  In fact, that may not be enough either since we're able to change what we're doing after the poster presentation session.  But based on what I've seen so far, we get a few similar groupings.  I can think of at least 3 people who are looking at millennials in the work place.  But they've got different approaches and varying research methods.  There's a couple people using content analysis, but they're looking at radically different research questions in largely unrelated contexts. Even those of us focusing on web technologies are employing different research and philosophical lenses.&lt;/p&gt;

&lt;p&gt;I think educationally this is one of the strengths of the MACT program.  Discussions tend to be rich with idea generation as we bring our various backgrounds and understanding to the table and bounce ideas around.  But this same multi-disciplinary approach robs us of a certain level of long term social capital.  I wonder if the stronger ties facilitated by the cohort model will stand the test of time without the occasional reenforcement of weak ties found in chance encounters &amp;#8220;in the field&amp;#8221;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-1630432874705455080?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/1630432874705455080/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=1630432874705455080' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/1630432874705455080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/1630432874705455080'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/05/social-capital-and-cohort-model-in-mact.html' title='Social Capital and the Cohort Model in the MACT Program'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-6449658087884298203</id><published>2008-05-12T19:02:00.003-05:00</published><updated>2008-05-26T21:45:41.597-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='social capital'/><title type='text'>Das Sozial Kapital</title><content type='html'>&lt;p&gt;First of all, on the off chance that anyone reading this isn't currently in the MACT program at the University of Alberta, you may need to &lt;a href="http://www.socialcapitalgateway.org/"&gt;spend a little time on this site&lt;/a&gt; or maybe &lt;a href="http://en.wikipedia.org/wiki/Social_capital"&gt;Wikipedia entry on social capital&lt;/a&gt; to follow this.  I'm using this blog to meet course requirements, because I am both innovative and lame, the two great tastes that taste great together.&lt;/p&gt;
&lt;p&gt;I'm still confused as to exactly what social capital &lt;em&gt;is&lt;/em&gt; and what it &lt;strong&gt;is not&lt;/strong&gt;, but looking at the literature it seems I'm not alone.  Just about everything we've read in class, and some of the stuff I've read outside of class on this topic, include some sort of definition for the term.  Often they go back and cite &lt;a href="http://en.wikipedia.org/wiki/Pierre_Bourdieu"&gt;Bourdieu&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/James_S._Coleman"&gt;Coleman&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Robert_Putnam"&gt;Putnam&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I understand the arguments against Putnam's definition as inviting circular reasoning.  His proof-is-in-the-pudding approach seems to equate social capital with success, then cites that success as evidence of social capital.  Being a southerner, I've seen such ideas used to justify &amp;#8220;New South&amp;#8221; racism.  This is particularly true when a few examples of &amp;#8220;successful&amp;#8221; minorities can be cited as &amp;#8220;proof&amp;#8221; that racial inequality no longer exists, therefore anyone &amp;#8220;playing the race card&amp;#8221; is just making up excuses.  Their lack of success is evidence of some sort of character flaw because framing it in those terms means it's not racist, even if those terms are being applied to the majority of the members of that race.  Not to imply that Putnam himself is racist, just that I've seen similar lines of thought abused for such purposes.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Alejandro_Portes"&gt;Portes&lt;/a&gt; seems to be the only one to call &lt;a href="http://en.wikipedia.org/wiki/Shenanigans"&gt;shenanigans&lt;/a&gt; on Coleman for his definition.  Maybe &lt;em&gt;I'm&lt;/em&gt; the dense one here, but this is so close to meaningless as to be functionally worthless to me:&lt;/p&gt;
&lt;blockquote&gt;[Social capital is] &amp;#8220;a variety of entities with two elements in common:
&lt;ol&gt;
&lt;li&gt;They all consist of some aspect of social structures, and&lt;/li&gt;
&lt;li&gt;They facilitate certain action of actors &amp;ndash; whether persons or corporate actors &amp;ndash; within the structure.&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;Aren't we dealing with &amp;#8220;social structures&amp;#8221; any time we're dealing with 2 or more people?  And since we're all people, doesn't that mean that we're dealing with social structures anytime we're dealing with even 1 other person?  Some would even make the argument that social structures exist among various elements of ourselves either because our sense of identity itself is a social construct and/or the social elements of language that permeates our inner dialog and idiolect.  And what the hell are &amp;#8220;some aspects&amp;#8221;?  Can we be more vague there?  And they &amp;#8220;facilitate certain action of actors&amp;#8221;?  Really?  Reminds me of &amp;#8220;certain substances&amp;#8221;:&lt;/p&gt;
&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/sGSN6INTqNc&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/sGSN6INTqNc&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;That leaves us with Bourdieu's definition, which I'm still not completely clear on.  I know he differentiates between the resources and the access granted to them, which helps steer clear of some of Putnam's circular reasoning.  For example, say I'm a white male from a prominent family in a small town and I know that if I attempt to start my own business and fail, my family won't let me starve.  This knowledge encourages me to take more risks than I otherwise would and luckily for me those risks pan out, making me quite successful.  I never had to tap into the social capital afforded me by my family's status, but there mere knowledge that I &lt;em&gt;could&lt;/em&gt; contributed to my success in significant ways.  I think that's an instance of social capital that Bourdieu's definition covers but Putnam's does not.  Coleman's definition seems to cover just about anything I can imagine.&lt;/p&gt;
&lt;p&gt;But I could be mistaken.  The biggest part of Bourdieu's definition that I'm left unclear about is do you &lt;strong&gt;have&lt;/strong&gt; to access some more traditional forms of capital via social ties for it to count?  Obviously, if the same guy in the hypothetical situation above got an interest free start up loan from a family member, &lt;em&gt;that&lt;/em&gt; would be social capital, even under Putnam's definition.  Also, when I was looking for my first job after I got my undergrad degree, I turned down some higher paying positions because I knew I would be less happy in those environments.  Is such at-work happiness social capital even if it doesn't necessarily lead to increased productivity?  It's a boost to my quality of life, but is that alone enough?  Things that are hard to put into monetary terms are equally as hard, in my mind, to judge as social capital (or not).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-6449658087884298203?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/6449658087884298203/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=6449658087884298203' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6449658087884298203'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6449658087884298203'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/05/das-sozial-kapital.html' title='Das Sozial Kapital'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-100868484426500186</id><published>2008-05-01T08:54:00.001-05:00</published><updated>2008-05-01T08:56:20.041-05:00</updated><title type='text'>Got 16 Minutes?</title><content type='html'>&lt;p&gt;Watch this:&lt;/p&gt;
&lt;embed src="http://blip.tv/play/AbTSFAA" type="application/x-shockwave-flash" width="320" height="242" allowscriptaccess="always" allowfullscreen="true"&gt;&lt;/embed&gt;
&lt;p&gt;Don't have the patience?  &lt;a href="http://www.shirky.com/herecomeseverybody/2008/04/looking-for-the-mouse.html"&gt;Read the gist of it here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Are we as a society slowly awakening from a TV induced stupor?&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-100868484426500186?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/100868484426500186/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=100868484426500186' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/100868484426500186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/100868484426500186'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/05/got-16-minutes.html' title='Got 16 Minutes?'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-6966452162880999933</id><published>2008-04-29T13:11:00.004-05:00</published><updated>2008-04-29T16:04:41.401-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='CMS'/><title type='text'>Why jQuery Rocks</title><content type='html'>&lt;p&gt;As a &lt;a href="http://www.ilovejackdaniels.com/blog/what-makes-a-great-developer/"&gt;lazy&lt;/a&gt; developer, I love &lt;a href="http://jquery.com/"&gt;jQuery&lt;/a&gt;.  I'll try to enumerate my top reasons:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;It's among the smallest of the full featured javascript libraries.  So I don't have to worry about adding a lot of overhead to my pages to use it.  For example, minified and gzipped, jQuery is about 15k.  &lt;a href="http://dojotoolkit.org/"&gt;Dojo&lt;/a&gt; is about 24k, which, I admit, it still pretty impressive.&lt;/li&gt;
&lt;li&gt;jQuery does tons of cool stuff out of the box and doesn't require me to understand complex extension packages (&lt;a href="http://mootools.net/download"&gt;moo tools&lt;/a&gt; and &lt;a href="http://developer.yahoo.com/yui/"&gt;the Yahoo! User Interface Library&lt;/a&gt; are the most extreme examples I can think of).&lt;/li&gt;
&lt;li&gt;I can call functions &lt;a href="http://docs.jquery.com/Events/ready#fn"&gt;as soon as the DOM is ready&lt;/a&gt;. (&lt;a href="http://en.wikipedia.org/wiki/Document_Object_Model"&gt;What's the DOM&lt;/a&gt;?)&lt;/li&gt;
&lt;li&gt;Simple, CSS style &lt;a href="http://docs.jquery.com/Selectors"&gt;syntax for selecting elements&lt;/a&gt; combined with &lt;a href="http://docs.jquery.com/Tutorials:How_jQuery_Works#Chainability_.28The_Magic_of_jQuery.29"&gt;chainable functions&lt;/a&gt; allow me to write in 1 to 5 lines what used to take 12 to 50.&lt;/li&gt;
&lt;li&gt;jQuery's also got some &lt;a href="http://plugins.jquery.com/"&gt;great plug ins&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Of course, not every plug in available is amazingly awesome or even a good fit for every project.  In fact, some of the best, in my opinion, have a very narrow, targeted application.  Today I was asked to create an image gallery from a collection of 50 shots taken at the graduate awards ceremony Friday night.  In the past, &lt;a href="http://volstate.edu/LearnIT/CampusLife-Gallery/"&gt;we've used Flash to make our image galleries&lt;/a&gt;.  I suck at Flash, so I'm sure it would take me all week to recreate something like that, even if I had a basic template to go by.  I have no idea how long it took Ken (former webmaster, current director of public relations and therefore my boss) to generate something like that.  But I figured I could whip up something similar in jQuery in an afternoon.&lt;/p&gt;
&lt;p&gt;There are lots of image gallery plug ins for jQuery.  I wanted one that looked impressive while being easy to navigate and not so flashy as to distract from the images themselves.  I also wanted something that required nothing but a list of images identified by an ID or class.  The idea there is, if someday move to a CMS, the end users could build a gallery by simply adding the class (or ID) to a list of images. That's the sort of thing we could easily cover in training.  It helps that as of right now my favorite CMS is &lt;a href="http://drupal.org/"&gt;Drupal&lt;/a&gt;, which &lt;a href="http://drupal.org/node/121997"&gt;comes pre-packaged with jQuery&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I looked at &lt;a href="http://www.gcmingati.net/wordpress/wp-content/lab/jquery/imagestrip/imageslide-plugin.html"&gt;slideViewer&lt;/a&gt;, but I like thumbnails.  I looked at &lt;a href="http://benjaminsterling.com/jquery-jqgalviewii-photo-gallery/"&gt;jqGalViewII&lt;/a&gt; but for this particular application I don't want to spend time generating my own thumbnails.  Then I looked at &lt;A href="http://monc.se/galleria/demo/demo_01.htm"&gt;Galleria&lt;/a&gt; and this seemed to be the best fit for my immediate needs.&lt;/p&gt;
&lt;p&gt;It took about 15 minutes of code work to repurpose the key elements from the demo page for our needs.  That includes time spent minifying the javascript and uploading the external files to the server.  I changed a few color values in the CSS, altered the fonts  slightly, linked in our images, and had a &lt;a href="http://www.volstate.edu/2008AwardsNight/"&gt;fully functional image gallery&lt;/a&gt; in less time than it took to crop the images.  The only snag I ran into was the preloading function wasn't working properly in IE (curse you IE!).  But updating the core jQuery library to the latest version fixed this bug pretty quickly.  I should have done that earlier, but I've been focusing on the development server, not the &amp;#8220;live&amp;#8221; server.&lt;/p&gt;
&lt;p&gt;I hope to incorporate some standard implementations of things like this into the redesign.  I'm keeping the possibility of a future move to a CMS in mind, but there's plenty of other benefits to having a few well documented solutions like this.  It saves &lt;strong&gt;me&lt;/strong&gt; time.  That's a good start.  I also occasionally take a vacation or occasionally get sick.  If something comes up and I'm unavailable, a quick HowTo on implementing a cookie cutter image gallery like this could be a real life saver.  I need to experiment with managing a mix of image sizes and maybe port the auto-thumbnail feature from Galleria into jqGalViewII and then offer up both options in a tidy package.  Since it's all open source, I can easily do that.&lt;/p&gt;
&lt;p&gt;Here's hopin' I don't automate myself out of a job some day.  :)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-6966452162880999933?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/6966452162880999933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=6966452162880999933' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6966452162880999933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/6966452162880999933'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/04/why-jquery-rocks.html' title='Why jQuery Rocks'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-968615388070493249</id><published>2008-04-25T11:45:00.003-05:00</published><updated>2008-04-25T12:27:42.488-05:00</updated><title type='text'>Random stuff collected on the net</title><content type='html'>&lt;p&gt;First, a couple of new heroes.&lt;/p&gt;

&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/lg8LfoyDFUM&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/lg8LfoyDFUM&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;

&lt;p&gt;This guy is so awesome.  He's the antithesis of what the media tells us a &amp;#8220;rock star&amp;#8221; should be.  But he doesn't care.  His joy and enthusiasm about, not just his music, but the whole concept of music, is downright infectious.&lt;/p&gt;

&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/F0wvQMqSzTM&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/F0wvQMqSzTM&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;

&lt;p&gt;Here in the south, religion tends to earn itself a reputation for discouraging critical thinking.  But I know it doesn't &lt;strong&gt;have&lt;/strong&gt; to be that way.  I've met a few true religious scholars for whom I have great respect, even when we (often) disagree.  I love seeing stuff like this, not because it's putting a Faux News reporter in his place, but because this guy's firm in his convictions, can back them up quite reasonably (with or without scripture), does &lt;em&gt;not&lt;/em&gt; push his beliefs, but &lt;strong&gt;does&lt;/strong&gt; call shenanigans on the reporter for trying to use the power of his position to distort reality.  &amp;#8220;Just because you say he &lt;strong&gt;is&lt;/strong&gt; a racist doesn't make it so.&amp;#8221; I'm paraphrasing there, but that's the gist of it.&lt;/p&gt;

&lt;p&gt;Speaking of the social construction of race, I found a very cool quote from Tay Zonday (the &lt;a href="http://www.youtube.com/watch?v=EwTZ2xpQwpA"&gt;Chocolate Rain&lt;/a&gt; guy):&lt;p&gt;
&lt;blockquote&gt;
&lt;p&gt;I live in Minneapolis. I'm 25 years old. I'm not sure what you mean by "background." Is that a code word for "race?" The straight-faced answer is that I'm Martian. They don't have a box for me on the census form. I'm the write-in candidate that the government leaves no space for when you have to choose your race.&lt;/p&gt;

&lt;p&gt;Seriously, is race something you choose? The whole point is that I don't choose it. It is somebody else's shortcut to my soul. So journalists ask "what's your background?" like I'm supposed to retell someone else's story about me as though it's a fact of who I am and where I come from. As long as I talk about myself in fiction that someone else wrote, I might as well write my own fiction: I'm from Mars. Most believe the story that I'm a black mulatto.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's from &lt;a href="http://www.hhnlive.com/features/more/322"&gt;this interview&lt;/a&gt; by way of &lt;a href="http://en.wikipedia.org/wiki/Tay_Zonday"&gt;Tay's Wikipedia entry&lt;/a&gt;.  From that, I also learned that he's a graduate of &lt;a href="http://www.evergreen.edu/"&gt;The Evergreen State College&lt;/a&gt;.  Evergreen is one of my favorite schools ever.  Their &lt;a href="http://www.evergreen.edu/about/curriculumoverview.htm"&gt;curriculum overview page&lt;/a&gt; explains why I feel that way better than I can myself.&lt;/p&gt;

&lt;p&gt;I discovered Evergreen in the book &amp;#8220;&lt;a href="http://www.ctcl.com/"&gt;Colleges That Change Lives&lt;/a&gt;&amp;#8221.  Out of the 40 or so schools in that book, Evergreen and &lt;a href="http://ncf.edu/"&gt;The New College of Florida&lt;/a&gt; were my favorites.  At various points in my academic path, I've considered attending both.  If I have any academic passions left after I'm done with &lt;a href="http://www.extension.ualberta.ca/mact/"&gt;MACT&lt;/a&gt; and move on to doctorate level work (my only current lead is the &lt;a href="http://dm.lcc.gatech.edu/phd/"&gt;PhD in Digital Media from Georgia Tech&lt;/a&gt;), I think I'd be pretty happy teaching at one of those schools since I never got a chance to attend.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-968615388070493249?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/968615388070493249/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=968615388070493249' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/968615388070493249'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/968615388070493249'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/04/random-stuff-collected-on-net.html' title='Random stuff collected on the net'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-2519671532119479664</id><published>2008-04-18T11:57:00.004-05:00</published><updated>2008-04-18T12:38:15.311-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><category scheme='http://www.blogger.com/atom/ns#' term='jquery'/><category scheme='http://www.blogger.com/atom/ns#' term='google maps'/><title type='text'>Curse my Lack of Focus</title><content type='html'>&lt;p&gt;Quite a while back, I took a couple of days to play with the &lt;a href="http://code.google.com/apis/maps/"&gt;Google Maps API&lt;/a&gt;.  I knew things were getting dangerous when I discovered the ability to add &lt;a href="http://code.google.com/apis/maps/documentation/overlays.html#Custom_Overlays"&gt;custom overlays&lt;/a&gt; to the map and immediately started imagining all the cool stuff that could be done with that.  With all the redesign work that still needs to be done, I just can't spare the time to essentially play with a new toy, no matter how work related that toy may be.  I experimented just enough to produce a sort of &lt;a href="http://volstate.edu/gmap.html"&gt;proof of concept&lt;/a&gt; and then moved on to other things.&lt;/p&gt;&lt;p&gt;But now I'm kicking myself 'cos at least 3 other schools have explored just how much awesome can be distilled from these tools:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.bu.edu/maps/"&gt;Boston University&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://maps.msu.edu/interactive/"&gt;Michigan State University&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://oregonstate.edu/campusmap/"&gt;Oregon State University&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Oregon State is using the &lt;a href="http://code.google.com/p/jmaps/"&gt;Jquery Google Maps plug-in&lt;/a&gt;, or at the very least they're using Jquery with Google Maps, with or without the plug-in. I'm interested in that 'cos I'm already using Jquery.  The coolest thing I've found so far digging around in the source code is from Boston U.  It doesn't seem to have anything to do with the map function specifically, but there's a function that sets all external links to open in a new window/tab and it's declared like this:&lt;/p&gt;&lt;pre&gt;
function l337() {
  if (document.getElementsByTagName) {
    var elements = document.getElementsByTagName('a');
    for (var i = 0; i &lt; elements.length; i++) {
      if (elements[i].getAttribute('rel') == 'external') {
        elements[i].target = '_blank';
      }
    }
  }
}&lt;/pre&gt;&lt;p&gt;How cool is a function called &lt;a href="http://en.wikipedia.org/wiki/Leet"&gt;l337&lt;/a&gt;()?  I don't even care what it does at that point.&lt;/p&gt;&lt;p&gt;And just so you know, FF3 has no problems rendering form elements within the baseline grid, so I can not worry about it and eventually that particular problem will take care of itself.  Pixel perfection through apathy.  Gotta love it.&lt;/p&gt;&lt;p&gt;Yesterday I got &amp;lt;sup&amp;gt; and &amp;lt;sub&amp;gt; tags working without screwing up the baseline grid too.  It even seems to work cross browser.  That's got just about everything I can think of except for images, and I know how that should work in pseudo code.  Javascript has a &lt;a href="http://en.wikipedia.org/wiki/Modulo_operation"&gt;MOD function&lt;/a&gt;, right?  &lt;a href="http://en.wikipedia.org/wiki/JavaScript_syntax#Arithmetic"&gt;Right&lt;/a&gt;.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-2519671532119479664?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/2519671532119479664/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=2519671532119479664' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/2519671532119479664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/2519671532119479664'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/04/curse-my-lack-of-focus.html' title='Curse my Lack of Focus'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-2728053153149708398</id><published>2008-04-17T13:31:00.003-05:00</published><updated>2008-04-17T13:37:14.890-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><category scheme='http://www.blogger.com/atom/ns#' term='browser support'/><title type='text'>Damn, It Feels Good to be a Gangsta</title><content type='html'>&lt;p&gt;But not so good to be a web developer working on a major rebuild.  At least not right this moment.&lt;/p&gt;&lt;p&gt;I want to launch this summer, so incoming freshman get a fresh start (HA!) on our website.  But that apparently worries the faculty and staff, who rely on the website to find answers to the various questions these same freshman bring with them.  In my mind, &lt;a href="http://www.imdb.com/title/tt0084726/quotes"&gt;the needs of the many outweigh the needs of the few&lt;/a&gt;.  Students outnumber employees by about 10 to 1. Realistically, this problem is as much political in nature as anything else.&lt;/p&gt;&lt;p&gt;Another problem I'm having is the unstable landscape of browser releases.  &lt;a href="http://www.apple.com/safari/"&gt;Safari 3&lt;/a&gt; just came out.  &lt;a href="http://www.opera.com/products/desktop/next/"&gt;Opera 9.5&lt;/a&gt; should be out soon, followed by Opera 10 &lt;a href="http://www.youtube.com/watch?v=DcUkKltAidM"&gt;in the not too distant future&lt;/a&gt;.  The Firefox team is making sure not to name specific dates, officially stating Firefox 3 will be out &amp;#8220;&lt;a href="http://blog.mozilla.com/ftr/2008/02/11/when-its-ready/"&gt;When it's ready&lt;/a&gt;&amp;#8221;.  I've been looking at &lt;a href="http://wiki.mozilla.org/Firefox3/Status"&gt;the minutes from the status meetings&lt;/a&gt; and it's obvious the &amp;#8220;blockers&amp;#8221; (bugs that need to be fixed before the beta can be considered a release candidate) are on a pronounced downward trend.  But is that trend linear, meaning the remaining &lt;a href="http://wiki.mozilla.org/Firefox3/StatusMeetings/2008-04-15"&gt;52 blockers&lt;/a&gt; (looks like &lt;a href="https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&amp;short_desc_type=allwordssubstr&amp;short_desc=&amp;product=addons.mozilla.org&amp;product=Firefox&amp;product=Toolkit&amp;component=Add-ons&amp;component=Admin%2FEditor+Tools&amp;component=Administration&amp;component=Autocomplete&amp;component=Bookmarks&amp;component=Build+Config&amp;component=Data+Collection%2FMetrics&amp;component=Developer+Pages&amp;component=Dictionaries&amp;component=Disability+Access&amp;component=Download+Manager&amp;component=Error+Console&amp;component=Extension+Compatibility&amp;component=Extension%2FTheme+Manager&amp;component=Facebook+Application&amp;component=File+Handling&amp;component=Find+Toolbar+%2F+FastFind&amp;component=Form+Manager&amp;component=General&amp;component=Help+Documentation&amp;component=Help+Viewer&amp;component=History&amp;component=Installer&amp;component=Keyboard+Navigation&amp;component=Localization&amp;component=Location+Bar+and+Autocomplete&amp;component=Maintenance+Scripts&amp;component=Menus&amp;component=Microformats&amp;component=Microsummaries&amp;component=Migration&amp;component=NSIS+Installer&amp;component=OS+Integration&amp;component=Page+Info&amp;component=Password+Manager&amp;component=Phishing+Protection&amp;component=Places&amp;component=Plugin+Finder+Service&amp;component=Plugins&amp;component=Policy&amp;component=Preferences&amp;component=Printing&amp;component=Public+Pages&amp;component=RSS+Discovery+and+Preview&amp;component=Satchel&amp;component=Search&amp;component=Search+Plugins&amp;component=Security&amp;component=Session+Restore&amp;component=Software+Update&amp;component=Startup+and+Profile+System&amp;component=Storage&amp;component=Tabbed+Browser&amp;component=Theme&amp;component=Toolbars&amp;component=Toolbars+and+Toolbar+Customization&amp;component=View+Source&amp;long_desc_type=allwordssubstr&amp;long_desc=&amp;bug_file_loc_type=allwordssubstr&amp;bug_file_loc=&amp;status_whiteboard_type=allwordssubstr&amp;status_whiteboard=&amp;keywords_type=allwords&amp;keywords=&amp;resolution=---&amp;priority=--&amp;priority=P1&amp;priority=P2&amp;emailtype1=substring&amp;email1=&amp;emailtype2=substring&amp;email2=&amp;bugidtype=include&amp;bug_id=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;cmdtype=doit&amp;order=Reuse+same+sort+as+last+time&amp;known_name=1.9a1%2B&amp;query_based_on=1.9a1%2B&amp;field0-0-0=flagtypes.name&amp;type0-0-0=equals&amp;value0-0-0=blocking1.9%2B&amp;field0-0-1=flagtypes.name&amp;type0-0-1=equals&amp;value0-0-1=blocking-firefox3%2B"&gt;62  is the current number of official bugs as of today at 11:28AM PDT&lt;/a&gt;) will be out of the way in 2 or 3 short weeks? Or are we in a &lt;a href="http://en.wikipedia.org/wiki/Zeno's_paradoxes#The_arrow_paradox"&gt;Zeno's arrow&lt;/a&gt; (as opposed to &lt;a href="http://en.wikipedia.org/wiki/Xenu"&gt;Xenu's arrow&lt;/a&gt;) sort of situation where the last few remaining blockers take up more and more time as we near the finish line?  There's even &lt;a href="http://vista.blorge.com/2007/05/03/microsoft-talks-internet-explorer-8-hints-at-release-date/"&gt;talk of seeing IE8 by the end of this year&lt;/a&gt;.  &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=d399733e-d4a9-44fd-821b-1c52d3c677e3&amp;displaylang=en"&gt;The IE8 Beta is Vista only&lt;/a&gt;, does that mean the final release will be Vista only?  And how quickly will people &amp;#8220;upgrade&amp;#8221;?&lt;/p&gt;
&lt;p&gt;I can't really do much but speculate on the future.  Maybe the code I write today will continue to work, maybe it won't.  Maybe a feature I spend hours implementing in my design will be rendered obsolete with a new browser feature (like &lt;a href="http://www.opera.com/products/desktop/zoom/"&gt;Opera's awesome zoom feature&lt;/a&gt;, a &lt;a href="http://www.boagworld.com/archives/2006/11/the_problem_with_ie7_zoom.html"&gt;less awesome version of which made its way into IE7&lt;/a&gt;)?&lt;/p&gt;&lt;p&gt;IE6 was an alright browser for its time (a definite improvement over IE5.5), but that was &lt;a href="http://en.wikipedia.org/wiki/Internet_Explorer_6"&gt;August of 2001&lt;/a&gt;.  I'm glad it's finally falling off the browser support radar, but it's still there.  And chances are it'll still be there when IE8 comes along.  I'm not looking forward to attempting to support 3 different versions of IE.  At least the users of other browsers can be relied on to update their browser on a fairly regular basis.  I got the Firefox 2.0.0.14 update last night at home and it was waiting for me this morning here at work.  In a week, it'll be interesting to check how our Firefox version numbers break down in Google Analytics.  Currently, all versions of Firefox prior to 2.x makes up less than 2% of total Firefox usage.  And Firefox is just 8.17% of all usage, so 2% of that is hardly noticeable in the grand scheme of things.&lt;/p&gt;&lt;p&gt;But ultimately I have to worry about these things.  Right now I've got a problem in FF2 where I can't get my input fields in a form to align along a &lt;a href="http://www.alistapart.com/articles/settingtypeontheweb"&gt;baseline grid&lt;/a&gt;.  There's an odd 2 pixel increase in height that doesn't seem to be coming from &lt;a href="http://redmelon.net/tstme/box_model/"&gt;borders or padding or margin&lt;/a&gt; and I'm even using &lt;a href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/"&gt;Eric Meyer's CSS Reset Reloaded&lt;/a&gt; which, in theory, greatly reduces the occurrences of such cross browser oddities.  I haven't downloaded the FF3 beta yet to know if the &amp;#8220;bug&amp;#8221; is still present there...&lt;/p&gt;&lt;p&gt;Ok, I just downloaded it and tried to set it up to allow the beta to run in parallel with this install, but it says only one instance can be running at a time.  So I'll have to quit this instance before I can check.&lt;/p&gt;&lt;p&gt;Anyway, my point is, I'm not sure that a 2 pixel difference from the baseline grid is worth taking the time to troubleshoot if, by the time we launch, Firefox 2 will make up a tiny percentage of our user base.  It's not mission critical in any way.  I doubt anyone but me will EVER take a pixel ruler to this layout and check for things like a baseline grid anyway.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-2728053153149708398?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/2728053153149708398/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=2728053153149708398' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/2728053153149708398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/2728053153149708398'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/04/damn-it-feels-good-to-be-gangsta.html' title='Damn, It Feels Good to be a Gangsta'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-3214787323725041782</id><published>2008-04-14T13:29:00.000-05:00</published><updated>2008-04-14T14:17:50.597-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='accessibility'/><category scheme='http://www.blogger.com/atom/ns#' term='user experience'/><category scheme='http://www.blogger.com/atom/ns#' term='usability'/><title type='text'>In which I explore the depths of my own geekiness</title><content type='html'>&lt;p&gt;So I've been thinking a lot lately about how video game control schemes relate to basic usability, and how that can be applied to website usability.&lt;/p&gt;&lt;p&gt;For example, I've been playing &lt;a href="http://www.zackandwiki.com/"&gt;Zack and Wiki&lt;/a&gt; lately.  In case you haven't played it, a major game mechanic is you can turn these various animals into various tools, then you use the tools to solve puzzles.  The controls for each tool is different and not spelled out for you.  You can examine the tools and look for clues as to how to use it.  For example, the umbrella has a button with a 2 on it, and if you push the 2 button on the wii-mote the umbrella will open.  Some of them are pretty simple, like you just make a forward / back sawing  motion with the wii-mote to use the saw.  I haven't made it very far in the game yet, maybe half way, but so far the controls are smooth and intuitive for just about everything.&lt;/p&gt;&lt;p&gt;They're so good, in fact, it makes the occasional problem very noticeable.  So far I've encountered two rhythm based mini-games that are terrible.  I can't do them at all.  My wife managed to get through one of them.  There's a skeleton with a music box and you use the wii-mote to ring a bell in time with the music he plays.  It should be dead simple, but apparently I swing my wii-mote too hard, or too soft, or something because he's never happy with my performance.&lt;/p&gt;&lt;p&gt;Seeing what I'm talking about may work much better.  Behold the power of the internets:&lt;/p&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Uql2bCSGRfE&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Uql2bCSGRfE&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;Do you want to know something sad?  Just hearing that music right now grates on my nerves.  That's how scared I am by my poor user experience.&lt;/p&gt;&lt;p&gt;There's another point where you have to try to catch this huge fish.  The controls for the fishing pole were easy enough, but I kept thinking I was screwing up 'cos I'd get the fish about half caught and the fish would spit out the bait.  It turns out this is just part of the game and you're supposed to go get another worm and try again.  It generally takes 2 or 3 attempts to catch the fish (maybe it's possible to do it on the first try, but I certainly couldn't do it).  The problem here was there was no feedback mechanism to let me know that my progress on my first attempt would be saved for subsequent attempts.  Considering the other times Wiki interjects an inane comment to point the player in the right direction, this would have been an excellent opportunity to offer some encouragement to try it again.  In the absence of any encouragement or feedback that I was at least on the right track, I found myself feeling cheated.  How could this &lt;em&gt;not&lt;/em&gt; be what I'm supposed to do?  Even the first time I got a 2nd worm and gave it another try, the fish's energy bar wasn't emphasized in a way that made it obvious to me that he was still tired from my 1st attempt.  I eventually figured it out, and I guess that's part of the point of the game, but for a while my experience was flipped from quite fun to very frustrating.&lt;/p&gt;&lt;p&gt;I can't find a video with just the fishing part, but here's the whole puzzle. The fishing bit starts around 2:30 and at around 3:45 this guy fails at his first attempt too.  The little grumble and black squiggles in a thought balloon is the same feedback you get when you do something wrong.&lt;/p&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/sq04WPbyUbA&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/sq04WPbyUbA&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;Apparenty you can also just blow him up, which is something I tried but I was attempting to lure the frog the wrong direction.&lt;/p&gt;&lt;object width="425" height="355"&gt;&lt;param name="movie" value="http://www.youtube.com/v/SPoe0yg8dzk&amp;hl=en"&gt;&lt;/param&gt;&lt;param name="wmode" value="transparent"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/SPoe0yg8dzk&amp;hl=en" type="application/x-shockwave-flash" wmode="transparent" width="425" height="355"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;p&gt;This all just serves to remind me how important user feedback is to a positive user experience.  Even the most intuitive of interfaces involves a certain level of uncertainty, particularly in complex, multi-step processes.  Providing a means of letting the user know s/he is on the right track can really help.  In the mini-game, the example in the top right corner of the screen could show &lt;em&gt;how&lt;/em&gt; to swing the wii-mote rather than just how to hold it (although some may argue this gives too much away) and that would save me a lot of grief on the mini-games.  Since the mini-games are option, I really don't have an interest in "discovering" the proper method through experimentation.  I'll quickly get frustrated and move on to more fun elements of the game (which includes virtually everything else).  When the fish spits out my first worm, Wiki could easily offer some sort of feedback along the lines of "Aww, he got away!  But he looks pretty tired."  Instead, we get Zack giving us the same reaction we get when we do something totally off track.&lt;/p&gt;
&lt;p&gt;Then I found this blog entry: &lt;a href="http://www.destructoid.com/ramblings-of-a-colorblind-gamer-72229.phtml"&gt;Ramblings of a Colorblind Gamer&lt;/a&gt;.  And now I'm thinking about how all these things tie back into web accessibility as well as usability.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-3214787323725041782?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/3214787323725041782/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=3214787323725041782' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/3214787323725041782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/3214787323725041782'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/04/in-which-i-explore-depths-of-my-own.html' title='In which I explore the depths of my own geekiness'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-29109313.post-2920830870844079003</id><published>2008-04-09T17:00:00.000-05:00</published><updated>2008-04-09T15:00:07.048-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redesign'/><category scheme='http://www.blogger.com/atom/ns#' term='ie7.js'/><title type='text'>Browser Upgrade Campaign</title><content type='html'>&lt;p&gt;As I move into the redesign of &lt;a href="http://www.volstate.edu/"&gt;VolState.edu&lt;/a&gt; redesign, I'm using Dean Edwards &lt;a href="http://code.google.com/p/ie7-js/"&gt;IE7.js&lt;/a&gt; to get older versions of IE to behave almost like IE7.  This means people using older versions of IE with scripting disabled will get a sub-par experience.  I'll do my best to allow for graceful degradation, but things will probably look noticeably "off".&lt;/p&gt;&lt;p&gt;I'd like to offer a quick paragraph explaining why things look odd and take the opportunity to gently encourage them to upgrade to a modern browser, displayed only for those users who need to see it, like the old &lt;a href="http://www.webstandards.org/action/previous-campaigns/buc/"&gt;WASP Browser Upgrade Campaign&lt;/a&gt;.  If that modern browser happens to be IE7, at least that's an improvement over previous versions of IE.  I figure not providing a plug for IE7 in &lt;em&gt;some&lt;/em&gt; way will result in an overall lower conversion rate.  We're also dealing with a population that already use Microsoft products and may be paranoid about security (if you'll allow me the luxury of stereotyping people based on their browser settings).  Sending them somewhere like &lt;a href="http://www.getfirefox.com/"&gt;GetFirefox.com&lt;/a&gt; may just get me dismissed as a “fanboy” or “cultist”.&lt;/p&gt;&lt;p&gt;I figure my options are:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Link to &lt;a href="http://www.microsoft.com/windows/products/winfamily/ie/default.mspx"&gt;the IE7 download page&lt;/a&gt; and be done with it.&lt;/li&gt;
&lt;li&gt;Link to both &lt;a href="http://www.microsoft.com/windows/products/winfamily/ie/default.mspx"&gt;the IE7 download page&lt;/a&gt; and &lt;a href="http://browsehappy.com/"&gt;Browse Happy&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Link to &lt;a href="http://www.savethedevelopers.org/"&gt;Save the Developers&lt;/a&gt; and let the various browsers fight it out there.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;It may be useful to look at some recent browser info for our site in &lt;a href="http://www.google.com/analytics/"&gt;Google Analytics&lt;/a&gt;.  IE users make up 89.57% of our visitors over the past month.  Of those, 57.59% are using IE7.  That leaves 42.41% using some other version of IE (including 17 visitors using &lt;a href="http://www.microsoft.com/windows/products/winfamily/ie/ie8/default.mspx"&gt;IE8&lt;/a&gt; somehow, but we can ignore numbers that small at the percentage level). That means that roughly 38% of our visitors are using older versions of IE.  Getting accurate figures on people with scripting disabled because by definition these folks don't show up for javascript based analysis tools (like Google Analytics).  &lt;a href="http://www.w3schools.com/browsers/browsers_stats.asp"&gt;Other sites&lt;/a&gt; report this info based on server log analysis but have skewed audiences and probably don't reflect a representative sample.&lt;/p&gt;&lt;p&gt;In the absence of any scientifically reliable data, let's make something up!&lt;/p&gt;&lt;p&gt;Ok, let's at least make something up in a range.  We'll use 2% as our lower bound and 35% (&lt;a href="http://bytes.com/forum/thread96435.html"&gt;the highest claim I've found so far&lt;/a&gt;) as our upper bound.  That would mean somewhere between 0.8% and 13.3% of our visitors fall into the category I'm dealing with. Anything below 1% might not be worth troubling myself over, but anything that exceeds 10% certain is.  I have now used fuzzy math to justify taking the time to write this post.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/29109313-2920830870844079003?l=dap6000.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://dap6000.blogspot.com/feeds/2920830870844079003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=29109313&amp;postID=2920830870844079003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/2920830870844079003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/29109313/posts/default/2920830870844079003'/><link rel='alternate' type='text/html' href='http://dap6000.blogspot.com/2008/04/browser-upgrade-campaign.html' title='Browser Upgrade Campaign'/><author><name>Derek</name><uri>http://www.blogger.com/profile/13885924586967798549</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
