<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" version="2.0">

<channel>
	<title>larryaronson.com</title>
	
	<link>http://larryaronson.com</link>
	<description>Systems Psychoanalyst</description>
	<lastBuildDate>Tue, 14 Aug 2012 15:23:52 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/LarryAronson" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="larryaronson" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">LarryAronson</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Sidebar Pages In WordPress</title>
		<link>http://larryaronson.com/2011/sidebar-pages-in-wordpress/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://larryaronson.com/2011/sidebar-pages-in-wordpress/#comments</comments>
		<pubDate>Wed, 16 Feb 2011 11:30:44 +0000</pubDate>
		<dc:creator>Larry Aronson</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[menu manager]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[Popular Posts]]></category>
		<category><![CDATA[sidebar widget]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[WordPress functions]]></category>
		<category><![CDATA[wordpress shortcodes]]></category>

		<guid isPermaLink="false">http://larryaronson.com/?p=1857</guid>
		<description><![CDATA[There are a lot of WordPress plugins that will put a <strong>Popular Posts</strong> widget in your blog's sidebar. But, they all return different results. Here's how to create a sidebar widget that will feature the posts you want to highlight.]]></description>
				<content:encoded><![CDATA[<h3>Creating a custom &#8220;Popular Posts&#8221; widget</h3>
<p>I have a blogging client who has a love-hate relationship with computing. This client publishes daily and has become quite adept at the mechanics of doing so, successfully building traffic and a solid following. But when it comes to handling the blog&#8217;s administrative tasks, my client balks, refusing to look at any of the admin level menus. &#8220;I don&#8217;t like being a person who knows just enough to be dangerous,&#8221; my client has said.</p>
<p>The latest request from this client was to list the blog&#8217;s <strong>most popular posts</strong> in the sidedbar. It&#8217;s a WordPress site and there are many plugins available that will provide a widget for this task. Most are based on comment count as this is the metric that WordPress stores with each post record in its database. Some of the more sophisticated plugins make API calls to other services, such as Twitter and Google, to gather ranking data.</p>
<p>But nothing worked quite right for this client who had become a proficient <strong>Google Analytics</strong> user as well as a ardent <strong>Twitter</strong> user. I couldn&#8217;t find a popular posts plugin that would reliably match my client&#8217;s own subjective sense of popularity. I finally sent an email saying: &#8220;You want your readers to see your best stuff, in that respect, the numbers can provide guidance but your own judgement is the best metric.&#8221; I promised to figure something out that would allow the selection and ranking of posts although I didn&#8217;t have a clue how.</p>
<p>One of the joys of computer programming comes from those moments when you recognize that the particular little problem you&#8217;re working on is just a special case of a larger, more interesting and easier to solve problem. In this case, the larger problem was how to enable a WordPress author to publish formatted content to a sidebar widget. If I could solve that problem then my client could simply edit a page containing an ordered list of titles linked to the most popular posts. These could easily be copied from other pages in the <strong>WordPress dashboard</strong>. The client wouldn&#8217;t  need any admin level privileges. All I had to do was setup a <strong>text widget</strong> with code that pulled in the content of a designated page — A sidebar page.</p>
<h3>How to build a WordPress sidebar page widget</h3>
<p>Rather than write a dedicated sidebar widget, which is kind of complicated even though the <a href="http://codex.wordpress.org/" target="_blank">WordPress codex</a> has several examples to copy and paste from, I decided to write a <strong>WordPress shortcode</strong> which could be used in a sidebar text widget. This shortcode could also be used in other posts or pages on the site — going again for the more general and easier solution.</p>
<p>To start with, I created a new static page with the title, &#8220;Popular Posts&#8221;. Before you do this and publish the new page, check to see if it will automattically appear in your navigation menus. If you&#8217;re using the <strong>Menu Manager</strong> (included in WordPress 3.0+,) you&#8217;re probably okay since there&#8217;s a setting for this that&#8217;s off by default. If your theme does not use the Menu Manager, you might want to make the new page a child of some other page to exclude it from your navigation.</p>
<p>Next, we have to write a function that will output the contents of a page. This is easy. WordPress provides a built-in function just for that purpose called, <em>get_page( )</em>. We are going to use a variant of that function, <em>get_page_by_title( )</em>, and pass the title of the page (instead of the ID) as a shortcode parameter. Here&#8217;s the code for the function:</p>
<pre><span style="color: #008000;">function my_show_page( $atts, $content = null ) {
    extract(shortcode_atts(array( 'title'=&gt;'' ), $atts));

    if ($title != '') {
        $page_data = get_page_by_title( $title );
        return $page_data-&gt;post_content;
    }
    else {
        return '';
    }
}</span>
</pre>
<p>The first two lines are the standard setup for a shortcode. The parameter, <em>$atts</em>, will contain the shortcode&#8217;s parameters. In our case this is the page&#8217;s title which is then extracted by the second line of the code. If no title is passed, it&#8217;s given an empty string value. Setting the variable <em>$content</em> to null allows us to place the simple shortcode:</p>
<p><span style="color: #008000;"><tt>[showpage title="Popular Posts"]</tt></span></p>
<p>wherever we want to display the content of the page &#8220;Popular Posts&#8221; .</p>
<p>The body of the function is a simple <em>if</em> statement that makes sure a title is provided, then goes and gets the content of that page and returns it. Note that the content is returned unfiltered. That is, it&#8217;s unaffected by any plugins (e.g: ShareThis) or other code that modifies content.</p>
<p>The function code goes into your theme&#8217;s <strong>function file</strong>,  <em>functions.php</em>. Make sure you backup this file before you make any changes!! The function code can go anywhere in the file (except, of course, inside of another function) provided that it&#8217;s inside a set of php tags.</p>
<p>The next step is to register the shortcode so that it&#8217;s available for use. This is just a short command that also goes in the theme&#8217;s function file:</p>
<p><span style="color: #008000;"><tt>add_shortcode('showpage', 'my_show_page');</tt></span></p>
<p>It can go either before or after the function. I usually place it after the function along with comments to guide any future programmers who may work on my clients&#8217; sites.</p>
<p>Next, we have to enable shortcodes in text widgets. This is not enabled by default in WordPress because of security concerns. Sidebar text widgets are places where people often embed code from outside sources. The concern is that such embeded code might contain a shortcode that could conflict with something else on your blog or otherwise do nasty stuff. This is usually not a problem for smaller, personal blogs, however, I&#8217;ll emphasize again the importance of backing up your theme&#8217;s functions file before making any changes. Here&#8217;s the command to enable shortcodes in text widgets:</p>
<p><span style="color: #008000;"><tt>add_filter('widget_text', 'do_shortcode');</tt></span></p>
<p>Add the above to your functions file, save it and test the blog in a separate browser window to be sure it&#8217;s still working. Errors in a theme&#8217;s functions file will usually crash the public portion of a WordPress blog, but will leave the admin dashboard in working order.</p>
<p>Lastly, add a text widget with the shortcode to your sidebar. Here&#8217;s a screenshot from my client&#8217;s site illustrating this.</p>
<p><img class="aligncenter size-full wp-image-1860" title="sidebar_page_widget" src="http://larryaronson.com/wp-content/uploads/sidebar_page_widget.png" alt="Text Widget with a shortcode" width="480" height="477" /></p>
<p>For your convenience, here&#8217;s the entire block of commented code that I added to my client&#8217;s function file:</p>
<pre><span style="color: #808080;">/**
* Create a shortcode to display a page's content
*/
//
// [showpage title="page_title"]
//</span>
<span style="color: #008000;">function my_show_page( $atts, $content = null ) {
    extract(shortcode_atts(array( 'title'=&gt;'' ), $atts));
    if ($title != '') {
        $page_data = get_page_by_title( $title );
        return $page_data-&gt;post_content;
    }
    else {
        return '';
    }
}</span>
<span style="color: #808080;">// register the shortcode</span>
<span style="color: #008000;">add_shortcode('showpage', 'my_show_page');</span>
<span style="color: #808080;">//
// Enable the use of shortcodes in text widgets.</span>
<span style="color: #008000;">add_filter('widget_text', 'do_shortcode');</span>
</pre>
<p>Now that we see how easy it is to get formatted content into a sidebar widget, perhaps you have some ideas on what can be done with custom shortcodes in sidebar widgets. If so, please share them by leaving a comment below. Thanks.</p>
]]></content:encoded>
			<wfw:commentRss>http://larryaronson.com/2011/sidebar-pages-in-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>15 HTML5 FAQs</title>
		<link>http://larryaronson.com/2011/15-html5-faqs/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://larryaronson.com/2011/15-html5-faqs/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 14:34:41 +0000</pubDate>
		<dc:creator>Larry Aronson</dc:creator>
				<category><![CDATA[FAQ]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Adobe]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[HMTL5 shim]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Modernizer]]></category>
		<category><![CDATA[Mozilla]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[W3C]]></category>

		<guid isPermaLink="false">http://larryaronson.com/?p=1818</guid>
		<description><![CDATA[<img class="alignleft size-thumbnail wp-image-1851" title="fifteen" src="http://larryaronson.com/wp-content/uploads/fifteen.jpeg" alt="" width="80" height="56" />A lot of people are curious about HTML5 but few really understand what it's about and many have misconceptions about it. Here are 15 frequently asked questions about HTML5 with my short answers. ]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-1851" title="fifteen" src="http://larryaronson.com/wp-content/uploads/fifteen.jpeg" alt="" width="240" height="169" />Since the publication of <a href="http://larryaronson.com/2010/html-manual-of-style/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><cite>HTML Manual of Style</cite></a>, I&#8217;ve attended a number of meetups and participated in a few forums to promote the book. While a lot of people are curious about HTML5, few really understand what it&#8217;s about and many have misconceptions.  So, I&#8217;ve collected 15 frequently asked questions about HTML5 along with my short answers in an effort to clear up some of the confusion. Click on a question to toggle open/close its answer.</p>
<div style="font-size: 95%; background-color: #f7f7f7; margin: .5em; padding: .5em;">
<ol>
<li>
<h3><a onclick="$('#a01').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Is HTML5 is the new standard for creating Web pages?</a></h3>
<p id="a01">Not Quite. HTML5 is a <a href="http://www.w3.org/TR/html5/" target="_blank">draft proposal</a> for a standard that will eventually be submitted to international standards organizations which may adopt HTML5 as a standard or may choose to adopt a competing proposal. Right now there&#8217;s no serious contender to HTML5 and all of the big players: Apple, Google, Mozilla, Microsoft and Adobe are behind it, so it is becoming the de-facto standard. However, it is still early in the process. The <a href="http://www.w3.org/" target="_blank">World Wide Web Consortium</a> (W3C) expects to finalize the draft and start the process of final review and requests for comments in 2012. Final acceptance as a standard will happen several years after that.</p>
</li>
<li>
<h3><a onclick="$('#a02').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Is HTML5 a new technology?</a></h3>
<p id="a02">No. It&#8217;s an extension of existing HTML, adding new elements to the set recognized by HTML4 level browsers and removing some of the restrictions of xhtml.</p>
</li>
<li>
<h3><a onclick="$('#a03').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">How does HTML5 affect my existing HTML4 website?</a></h3>
<p id="a03">It doesn&#8217;t. The HTML5 specifications require browser makers to support valid HTML4 web pages. You should update your HTML editing tools when new versions are available. If your web pages require a diet of strict xhtml, you should validate any third-party HTML5 code to one of the xhtml standards before embedding that code into your own pages.</p>
</li>
<li>
<h3><a onclick="$('#a04').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">What is new about HTML5?</a></h3>
<p id="a04">Several things. The biggest change is that HTML5 documents are explicitly recognized as interactive applications. Every document element in HTML5 has a corresponding JavaScript API that describes how that element should behave in response to user actions and other events.</p>
</li>
<li>
<h3><a onclick="$('#a05').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Are there new HTML5 tags?</a></h3>
<p id="a05">Yes, there are new HTML5 elements that provide richer semantic descriptions of documents: <span style="font-family: courier new,courier;">section</span>, <span style="font-family: courier new,courier;">article</span>, <span style="font-family: courier new,courier;">header</span>, <span style="font-family: courier new,courier;">hgroup</span>, <span style="font-family: courier new,courier;">footer</span>, <span style="font-family: courier new,courier;">aside</span> and <span style="font-family: courier new,courier;">nav</span>; new media elements: <span style="font-family: courier new,courier;">audio</span>, <span style="font-family: courier new,courier;">video</span> and <span style="font-family: courier new,courier;">canvas</span>; new form input types: <em>email</em>, <em>url</em>, <em>number</em> <em>range</em> and <em>search</em>; and a bunch of new element attributes.</p>
</li>
<li>
<h3><a onclick="$('#a06').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Have any HTML elements changed their meaning or how they are used?</a></h3>
<p id="a06">Yes, but not many. The <span style="font-family: courier new,courier;">small</span> element, which in HTML4 has no semantic value—it just means make the text smaller—is used in HTML5 to markup disclaimers, legal notices and the like—the small print. The <span style="font-family: courier new,courier;">anchor</span> element, which creates hyperlinks, can now enclose any other elements excluding other links and buttons. In HTML4, the anchor was strictly an inline element.</p>
</li>
<li>
<h3><a onclick="$('#a07').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Are there things in HTML4 that are not in HTML5?</a></h3>
<p id="a07">Yes, but only a handful of elements and these are not really gone; they are just marked as <em>obsolete</em>. Browser makers can continue to support these elements in their new versions and most will. Among the elements marked as obsolete in HTML5 are: <span style="font-family: courier new,courier;">frame</span>, <span style="font-family: courier new,courier;">frameset</span>, <span style="font-family: courier new,courier;">big</span>, <span style="font-family: courier new,courier;">center</span>, <span style="font-family: courier new,courier;">font</span>, <span style="font-family: courier new,courier;">strike</span>, <span style="font-family: courier new,courier;">acronym</span>, <span style="font-family: courier new,courier;">applet</span>, <span style="font-family: courier new,courier;">isindex</span> and <span style="font-family: courier new,courier;">dir</span>.</p>
</li>
<li>
<h3><a onclick="$('#a08').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">What exactly is HTML5 Video?</a></h3>
<p id="a08">Nothing, really. The term <em>HTML5 video</em> is used to differentiate the playing of a video directly by a browser encountering a web page&#8217;s <span style="font-family: courier new,courier;">video</span> element, as opposed to being played by a third-party browser plugin via an <span style="font-family: courier new,courier;">object</span> or <span style="font-family: courier new,courier;">embed</span> element. There is nothing intrinsic about any video that makes it HTML5-ish as opposed to Flash-ish. The distinction is entirely a matter of how the a web page is coded to present the video.</p>
</li>
<li>
<h3><a onclick="$('#a09').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Is HTML5 video better than Flash video?</a></h3>
<p id="a09">Yes, but not in terms of video quality which is a function of how the video data is encoded. HTML5 video is better because the <span style="font-family: courier new,courier;">video<em> </em></span>element can interact with other elements on the page and can be styled using CSS. Also, HTML5 video should use less resources because it is built into the browser.</p>
</li>
<li>
<h3><a onclick="$('#a10').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Will HTML5 kill Adobe&#8217;s Flash?</a></h3>
<p id="a10">Nope, Flash will be around for a long time. As a media player, Flash accommodates digital rights management (DRM) which hasn&#8217;t been addressed in the HTML5 specs. As an applications platform, Flash has a large, installed base in corporate environments where there&#8217;s no compelling rationale for rewriting working applications in HTML5. For new applications, HTML5 has advantages over Flash: content is better exposed to search engines, there&#8217;s complete integration with other document elements, no plugins are required and HTML5 tools are free.</p>
</li>
<li>
<h3><a onclick="$('#a11').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Is HTML5 is a threat to Microsoft?</a></h3>
<p id="a11">No. Microsoft embraces HTML5. The IE9 beta has received high marks for its HTML5 support. Silverlight is not the only path to interactivity in Redmond.</p>
</li>
<li>
<h3><a onclick="$('#a12').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Is HTML5 ready for prime time?</a></h3>
<p id="a12">Some of it is and some of it isn&#8217;t. New HTML5 semantic elements have good support in all modern browsers, including IE if an <a href="http://code.google.com/p/html5shim/" target="_blank">HTML5 shim</a> or the <a href="http://www.modernizr.com/" target="_blank">Modernizer JavaScript library</a> is loaded into a web page. The <span style="font-family: courier new,courier;">audio</span>, <span style="font-family: courier new,courier;">video</span> and <span style="font-family: courier new,courier;">canvas</span> elements are not supported in Internet Explorer yet, but these elements are designed to gracefully fail and fallback to other technologies, like Flash and Silverlight, in legacy browsers. Other technologies that are associated with HTML5 such as Mathematical Markup Language (MathML), Scalable Vector Graphics (SVG), Web Sockets, Web Storage and Geo-location have only limited support in the current crop of browsers.</p>
</li>
<li>
<h3><a onclick="$('#a13').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Where can I get an HTML5 browser?</a></h3>
<p id="a13"><a href="http://www.opera.com/" target="_blank">Opera</a>, <a href="http://www.google.com/chrome/" target="_blank">Chrome</a> and <a href="http://www.apple.com/safari/" target="_blank">Safari</a> provide pretty solid support for HTML5 in their current versions including their browsers for iPhones, iPads and Droids. Firefox&#8217;s support for HTML5 is weak in its current version (3.6) but quite robust in the Firefox4 public beta.</p>
</li>
<li>
<h3><a onclick="$('#a14').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">What about Internet Explorer?</a></h3>
<p id="a14">Internet Explorer is late to the HTML5 party. There&#8217;s no HTML5 support in IE8 or previous versions. However, adding a JavaScript library such as <a href="http://code.google.com/p/html5shim/" target="_blank">Google&#8217;s HTML5 shim</a> or <a href="http://www.modernizr.com/" target="_blank">Modernizer</a> enables IE 6, 7 &amp; 8 to recognize the new semantic level elements so they can be styled with CSS. HTML5 support is good in the beta version of IE9 which is available for Windows Vista and Seven users. Unfortunately, the Windows 7 mobile browser is built largely on the IE7 code base.</p>
</li>
<li>
<h3><a onclick="$('#a15').toggle('slow')" href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">What is an HTML5 application?</a></h3>
<p id="a15">There are several new capabilities in HTML5 which directly address the need for creating interactive applications. Of course, HTML has had interactive capabilities since its early days with text-based input forms and HMTL5 expands these with new input types. New capabilities include page and session-based data storage in the user&#8217;s browser, Web sockets for inter-application communications, and a drawing environment,  the <span style="font-family: courier new,courier;">canvas</span> element, for creating and manipulating image data.</p>
</li>
</ol>
</div>
<p>
<script type="text/javascript">// <![CDATA[
$(document).ready(function () {$('#a01,#a02,#a03,#a04,#a05,#a06,#a07,#a08,#a09,#a10,#a11,#a12,#a13,#a14,#a15').hide('slow');} )
// ]]&gt;</script></p>
]]></content:encoded>
			<wfw:commentRss>http://larryaronson.com/2011/15-html5-faqs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sekonic Blog Launched</title>
		<link>http://larryaronson.com/2010/sekonic-blog-launched/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://larryaronson.com/2010/sekonic-blog-launched/#comments</comments>
		<pubDate>Tue, 07 Dec 2010 18:28:25 +0000</pubDate>
		<dc:creator>Larry Aronson</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[featured image]]></category>
		<category><![CDATA[MacGroup]]></category>
		<category><![CDATA[photography]]></category>
		<category><![CDATA[twentyten]]></category>

		<guid isPermaLink="false">http://larryaronson.com/?p=1805</guid>
		<description><![CDATA[<p><a href="http://larryaronson.com/2010/sekonic-blog-launched/"><img class="alignleft size-thumbnail wp-image-1806" title="Sekonic_snapshot" src="http://larryaronson.com/wp-content/uploads/Sekonic_snapshot.jpg" alt="Sekonic Blog - front page" width="75" height="60" /></a>I had the pleasure once again of working with Matt Hill of <a href="http://www.macgroupus.com/" target="_blank">MacGroup USA</a> to create a WordPress blog for one of their clients, the <a href="http://www.sekonic.com/" target="_blank">Sekonic Company</a>, a premier manufacturer of photographic light meters. The <a href="http://blog.sekonic.com/">Sekonic Blog</a> uses a custom child theme derived from the Twentyten WordPress theme and incorporates <em>Featured Images</em> and customized excerpts to give post authors more control of what appears on the blog's front page. The site also uses advanced CSS3 properties to create rounded corners, drop shadows and transition effects</p> 
]]></description>
				<content:encoded><![CDATA[<p>I had the pleasure once again of working with Matt Hill of <a href="http://www.macgroupus.com/" target="_blank">MacGroup</a>. I had previously rebuilt the <a href="http://larryaronson.com/2010/profoto-usa-rebuilt/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed" target="_blank">Profoto-USA blog</a> for them and this new project was a blog for another of their clients in the world of photography: the <a href="http://www.sekonic.com/" target="_blank">Sekonic Company</a>, a premier manufacturer of photographic light meters.</p>
<p><a href="http://blog.sekonic.com/"><img class="alignleft size-full wp-image-1806" title="Sekonic_snapshot" src="http://larryaronson.com/wp-content/uploads/Sekonic_snapshot.jpg" alt="Sekonic Blog - front page" width="300" height="236" /></a>It was a rather quick project thanks to the detailed Photoshop document provided as a spec for the front and single post pages. I started by creating a child theme from WordPress&#8217;s default <strong>Twentyten </strong>theme. The advantage of using a child theme is that all of your theme modifications are isolated in the child theme directory and are preserved when the theme is updated. Knowing that the way WordPress handles images in due for a revision in an upcoming version, I wanted to position Sekonic&#8217;s blog to take advantage of any new image handling features WordPress introduces via the default theme.</p>
<p>This was the first blog on which I implemented a <em>Featured Post</em> capability and I combined that with one of my favorite theme mods: the <em>excerpt switch</em>, to provide the post author with finer control of what appears on the blog&#8217;s front page. If a post has a featured image, then the medium-sized version of that image appears on the front page above the post&#8217;s body or excerpt. A featured image can be one of the images appearing in the post, an image from the site&#8217;s Media Library or an external image referenced by a URL.</p>
<p>Matt also gave me the freedom to use CSS3 on the blog to create the rounded corners and drop shadows in the design spec. To achieve these kinds of effects without using the CSS3 border-radius and box-shadow properties, a designer must create three overlapping division elements with different background images for the top, bottom and sides of a box. With CSS3, only a single element is needed and no background images have to be loaded. The disadvantage is that border-radius and box-shadow are recognized by the current versions of Firefox, Safari, Opera and Chrome but not by Internet Explorer. IE9, now in beta release, does support these properties so it&#8217;s only a matter of a few months time before IE users get the full design treatment.</p>
<p>Then, just for fun, I added <strong>CSS3 transitions</strong> to the navigation tabs. The idea behind CSS3 transitions is that when an element&#8217;s property changes (e.g: the background and text color of an navigation tab when the mouse hovers over it, ) the duration and other aspects of the transition can be controlled.  For the Sekonic Blog&#8217;s navigation tabs, I specified a 1.5 second duration from the base state (dark background, light-blue text) to the hover state (gray background, white text with drop-shadows) to visually reflect the blog&#8217;s tagline: &#8220;Control Light&#8221;.</p>
<p>I hope you enjoy the Sekonic blog. Building a website with such good writing and compelling images was a real pleasure for me.</p>
]]></content:encoded>
			<wfw:commentRss>http://larryaronson.com/2010/sekonic-blog-launched/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Understanding HTML5 Audio</title>
		<link>http://larryaronson.com/2010/understanding-html5-audio/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://larryaronson.com/2010/understanding-html5-audio/#comments</comments>
		<pubDate>Sun, 14 Nov 2010 00:14:04 +0000</pubDate>
		<dc:creator>Larry Aronson</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Chrome]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[iTunes]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[Napster]]></category>
		<category><![CDATA[ogg]]></category>
		<category><![CDATA[Opera]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[sound effects]]></category>
		<category><![CDATA[wav]]></category>
		<category><![CDATA[Web development]]></category>
		<category><![CDATA[YouTube]]></category>

		<guid isPermaLink="false">http://larryaronson.com/?p=1640</guid>
		<description><![CDATA[<a href="http://larryaronson.com/2010/understanding-html5-audio/"><img src="http://larryaronson.com/wp-content/uploads/hismastersvoice.jpg" alt="His Master&#039;s Voice" title="hismastersvoice" width="75" height="54" class="alignleft size-thumbnail wp-image-1741" /></a>A quickie tutorial on the HTML5 audio element and its JavaScript API. Examples illustrate applications such as: background music, sound effects, alert noises and audio content. ]]></description>
				<content:encoded><![CDATA[<p><audio id="ella" preload><br />
  <source src="http://larryaronson.com/wp-content/uploads/swonderful.ogg" type="audio/ogg" /><br />
  <source src="http://larryaronson.com/wp-content/uploads/swonderful.mp3" type="audio/mpeg" /><br />
</audio><br />
<audio id="thanks" preload><br />
  <source src="http://larryaronson.com/wp-content/uploads/thanks.ogg" type="audio/ogg" /><br />
  <source src="http://larryaronson.com/wp-content/uploads/thanks.mp3" type="audio/mpeg" /><br />
</audio></p>
<h2>Now Hear This!</h2>
<p><img src="http://larryaronson.com/wp-content/uploads/hismastersvoice.jpg" alt="His Master&#039;s Voice" title="hismastersvoice" width="240" height="172" class="alignleft size-full wp-image-1741" />With all the talk about Flash versus HTML5 you might be forgiven for thinking that HTML5 is just about video. It&#8217;s not, of course. HTML5 is a major extension of HTML in many areas including media.</p>
<p> Today, I&#8217;d like to explore <strong>HTML5 audio</strong>, which is similar to HTML5 video in many respects, but fundamentally different in others. For starters, a video element is essentially just a TV set embedded in a webpage whereas audio can serve multiple purposes &ndash; four examples:</p>
<ul style="margin: 1em auto;">
<li><strong>Sound effects</strong>. A button can make a sound when it&#8217;s clicked. How about a swoosh sound when a division is toggled open or closed?</li>
<li><strong>Alerts and notifications</strong>. A little bell can sound when an AJAX request completes and updates a page section. Or, an audio &#8220;Uh Oh!&#8221; can play when you enter a malformed email address into a input field.</li>
<li><strong>Background sounds</strong>. Some web pages can benefit from background music. But say you have a photo gallery of birds. Wouldn&#8217;t it be nice to be able to click one and hear it tweet?</li>
<li><strong>Spoken content</strong>. Yes, we have podcasts, but we also need something simpler such as  pronunciations of foreign words and phrases, or a click-to-have-this-post-read-to-you feature so you can go off and browse other webpages while I continue to read this one to you.</li>
</ul>
<p>S i l e n c e.</p>
<h3>Yo Dawg, I can&#8217;t hear your website!</h3>
<p>This isn&#8217;t as dumb a statement as it first, um, sounds. Web developers have shied away from including sound in webpages because of several  difficulties:</p>
<ul>
<li><strong>Confusion</strong> &ndash; There are codecs and there are file formats. A codec is a method of encoding audio data. A file format is a container for the codec and optional metadata, such as a song title. Some file formats can accommodate multiple codecs; other formats are codec specific. For simplicity, we can narrow this discussion to the most popular file formats/codecs for the Web. These are:
<ul style="margin: 1em auto">
<li><strong>wav</strong> &ndash; An uncompressed format. A wav file with 30 seconds of silence is the same size (megabytes) as a file with 30 seconds of symphonic music.</li>
<li><strong>mp3</strong> &ndash; A popular format for music that uses a lossy compression format resulting in file sizes typically 1/10 the size of a wav file with the same audio content.</li>
<li><strong>ogg</strong>  &ndash; An open-source alternative to mp3 that also uses a lossy compression format.</li>
</ul>
</li>
<li><strong>Cross-browser incompatibility</strong> &ndash; Unlike images, where all major browsers support the three major file types&mdash;gif, jpg and png&mdash;all browsers do not support all audio formats. For instance: mp3 is a proprietary format and its decoding software cannot be included in  GPL-licensed, open-source applications such as the Mozilla Foundation&#8217;s Firefox browser. Here&#8217;s a table showing which formats are supported by the current versions of the major web browsers:<br />
<table width="90%"  border="1" cellspacing="0" cellpadding="6" style="margin: 1em auto;">
<tr>
<th></th>
<th>IE</th>
<th>Firefox</th>
<th>Safari</th>
<th>Chrome</th>
<th>Opera</th>
</tr>
<tr>
<th>wav</th>
<td>NO</td>
<td>YES</td>
<td>YES</td>
<td>NO</td>
<td>NO</td>
</tr>
<tr>
<th>mp3</th>
<td>NO*</td>
<td>NO</td>
<td>YES</td>
<td>YES</td>
<td>YES</td>
</tr>
<tr>
<th>ogg</th>
<td>NO</td>
<td>YES</td>
<td>NO</td>
<td>YES</td>
<td>NO</td>
</tr>
</table>
<p><span style="font-size: x-small">(* IE8 does not recognize the audio element at all. The IE9 beta works only with mp3 files. )</span></li>
<li><strong>Plugin required </strong>&ndash; HTML4 Browsers do not support audio natively. A plugin is required and JavaScript must be enabled. While most browsers support audio with a distributed default plugin, web developers must still use the ugly and opaque <i>object</i>, <i>embed</i> and <i>param</i> elements to bring sounds to a webpage.</li>
<li><strong>Insufficient processing power</strong> &ndash; For the first time visitor to a page, it can take several seconds for an older or overloaded browser to load the player code, download, decode and play a audio file. This pretty much nixes using sound for mouseover effects, even simple click sounds for navigation buttons.</li>
</ul>
<p><strong>YouTube</strong> made Web video workable. No such service existed to popularize the use of audio in webpages. On the contrary, Napster.com and iTunes focused attention on downloadable music applications. Wouldn&#8217;t it be great if there was an easy way to incorporate sounds on a webpage for other purposes. Good News! There is. All major browsers now support basic HTML5 audio with the notable exception of Internet Explorer.</p>
<h3>The HTML5 Audio Solution</h3>
<p>HTML5 audio consists of the <i>audio</i> element and a JavaScript API for playing the sound it represents. The element is a container (it has both opening and closing tags) and what&#8217;s inside is fallback content for legacy browsers and search-bots. It can be written simply as: </p>
<pre style="color: #090; font-size: small;">
&lt;audio src="<i>url</i>" autoplay loop&gt;
        Aw, snap. Your browser doesn't support HTML5 audio!
&lt;/audio&gt; 
</pre>
<p>The above would be perfect for playing background music on a webpage. it could be placed anywhere in the body of the document&mdash;heard but not seen. For creating a controllable audio player, the <i>controls</i> attribute can be added to the opening tag.</p>
<pre style="color: #090; font-size: small;">
&lt;audio src="<i>url</i>" controls&gt;
        &lt;a href="<i>url</i>"&gt;Download the audio file&lt;/a&gt;
&lt;/audio&gt; 
</pre>
<p>Which, depending on your browser will create a player like one of these:*</p>
<table cellspacing="0" style="margin: 1em auto;">
<tr>
<td style="text-align:right">IE</td>
<td>&nbsp;&nbsp;&nbsp;<a href="javascript:void(0)#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">Download the audio file</a></td>
</tr>
<tr>
<td style="text-align:right">Firefox</td>
<td><img src="http://larryaronson.com/wp-content/uploads/firefox_audio.gif" alt="Firefox audio controls" title="firefox_audio" width="321" height="56" class="alignnone size-full wp-image-1700" /></td>
</tr>
<tr>
<td style="text-align:right">Safari</td>
<td><img src="http://larryaronson.com/wp-content/uploads/safari_audio.gif" alt="Safari audio controls" title="safari_audio" width="217" height="41" class="alignnone size-full wp-image-1701" /></td>
</tr>
<tr>
<td style="text-align:right">Chrome</td>
<td><img src="http://larryaronson.com/wp-content/uploads/chrome_audio.gif" alt="Chrome audio controls" title="chrome_audio" width="314" height="47" class="alignnone size-full wp-image-1699" /></td>
</tr>
<tr>
<td style="text-align:right">Opera</td>
<td><img src="http://larryaronson.com/wp-content/uploads/opera_audio.gif" alt="Opera Audio controls" title="opera_audio" width="312" height="36" class="alignnone size-full wp-image-1727" /></td>
</tr>
</table>
<p><span style="font-size: x-small">(* Just pictures of the controls in different browsers. They don&#8217;t work here; neither does the link.)</span></p>
<p>Unfortunately, because of the differing support among browsers for the three file types, this approach won&#8217;t work in all browsers. That means having at least mp3 and ogg audio file versions and using browser detection to figure out which to load. </p>
<p>But wait. There&#8217;s an alternate form of the audio element that takes a different approach: try one format and, if it doesn&#8217;t work, try another. You still need at least two files but the syntax is much simpler.</p>
<pre style="color: #090; font-size: small;">
&lt;audio id="bgSound" loop&gt;
        &lt;source src="audio/bgSound.mp3" type="audio/mp3" /&gt;
        &lt;source src="audio/bgSound.ogg" type="audio/ogg" /&gt;        
        &lt;-- <i>lnsert fallback Flash Player code here</i> --"&gt;
&lt;/audio&gt; 
</pre>
<p>The audio element must be in the body of the html document. I&#8217;ve given an <i>id</i> attribute to the above so it can be referred to by JavaScript statements. Place a script element right after the audio element to get its DOM object:</p>
<pre style="color: #090; font-size: small;">
&lt;script type="text/javascript"&gt;
  var bgSound = document.getElementById('bgSound');
&lt;/script&gt;
</pre>
<p>Don&#8217;t put the JavaScript in the head of the document, the audio element must be defined before its DOM object can be referenced. The DOM object for the audio allows you to change its properties, start and stop the music. To play the audio as page background, add an <i>onload</i> attribute to the body tag:</dt>
<pre style="color: #090; font-size: small;">
&lt;body onload="bgSound.play();"&gt;
</pre>
<p>As an alternative, use jQuery in the document head to call the play method at document ready time (when all the HTML is parsed but images may still be loading.)</p>
<pre style="color: #090; font-size: small;">
&lt;script type="text/javascript"&gt;
  $(document).ready( function () {$('#bgSound').play();} );
&lt;/script&gt;
</pre>
<p>The jQuery <i>$</i> function is similar to JavaScript&#8217;s <i>getElementById( )</i> method. You&#8217;ll need the jQuery library for this to work. If it isn&#8217;t already loaded, placing the following script element in the document head will get it from Google.</p>
<pre style="color: #090; font-size: small;">
&lt;script type="text/javascript"
 src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"&gt;
&lt;/script&gt;
</pre>
<p>To play a sound effect when the user&#8217;s mouse is over a link, remove the <i>loop</i> attribute from the audio tag and add <i>preload</i>, then use the <i>onmouseover</i> attribute in the link. You can get the DOM object and play it in one move:</p>
<pre style="color: #090; font-size: small;">
&lt;audio id="thanks" preload&gt;
        &lt;source src="audio/thanks.mp3" type="audio/mpeg" /&gt;
        &lt;source src="audio/thanks.ogg" type="audio/ogg" /&gt;
&lt;/audio&gt; 

&lt;a href="javascript:void(0);" 
   onmouseover="document.getElementById('thanks').play();"&gt;A shout out&lt;/a&gt;
</pre>
<p>Or, to assign a sound to a button like the one at the bottom of this post</p>
<pre style="color: #090; font-size: small;">
&lt;audio id="ella" preload&gt;
        &lt;source src="audio/swonderful.mp3" type="audio/mpeg" /&gt;
        &lt;source src="audio/swonderful.ogg" type="audio/ogg" /&gt;  
&lt;/audio&gt;

&lt;button onclick="document.getElementById('ella').play()"&gt;
        I like it!
&lt;/button&gt;
</pre>
<p>The JavaScript API for HTML5 Media elements contains many more properties and features including a <i>track</i> property which can be used to segment a file into separate sounds of different durations. One audio element could be used to (pre)load dozens of different sound effects for a website. Not all advanced API features will be supported by all browsers in the near future, but eventually, using sound on a website will become as natural and as easy to do as using images.</p>
<p><a href="javascript:void(0);#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed" onmouseover="document.getElementById('thanks').play();">A shout out</a> to my friends at <a href="http://www.facebook.com/home.php?sk=group_171764366167976&#038;ap=1" target="_blank">WWWAC</a> who helped test HTML5 Audio on the IE9 beta release.</p>
<p>What do you think of HTML Audio? &nbsp;&nbsp; <button onclick="document.getElementById('ella').play()">I like it!</button></p>
<hr size="1" />
]]></content:encoded>
			<wfw:commentRss>http://larryaronson.com/2010/understanding-html5-audio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://larryaronson.com/wp-content/uploads/swonderful.ogg" length="68391" type="audio/ogg" />
<enclosure url="http://larryaronson.com/wp-content/uploads/swonderful.mp3" length="61930" type="audio/mpeg" />
<enclosure url="http://larryaronson.com/wp-content/uploads/thanks.ogg" length="16357" type="audio/ogg" />
<enclosure url="http://larryaronson.com/wp-content/uploads/thanks.mp3" length="17635" type="audio/mpeg" />
		</item>
		<item>
		<title>HTML Manual of Style</title>
		<link>http://larryaronson.com/2010/html-manual-of-style/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://larryaronson.com/2010/html-manual-of-style/#comments</comments>
		<pubDate>Mon, 01 Nov 2010 15:49:11 +0000</pubDate>
		<dc:creator>Larry Aronson</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Addison-Wesley]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[InformIT]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Pearson Higher Education]]></category>

		<guid isPermaLink="false">http://larryaronson.com/?p=1607</guid>
		<description><![CDATA[The HTML Manual of Style is a clear, concise reference for Hypertext Markup Language, including the exciting new features of HTML5, CSS3 and JavaScript. It is intended as a guide for content creators and Web developers who wish to  create webpages pleasing to people and search robots. The book contains dozens of examples of HTML [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://larryaronson.com/wp-content/uploads/HTML-Manual-of-Style_504×648.jpg#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignleft size-medium wp-image-1657" title="HTML Manual of Style" src="http://larryaronson.com/wp-content/uploads/HTML-Manual-of-Style_504×648-248x320.jpg" alt="HTML Manual of Style front cover" width="248" height="320" /></a><cite>The HTML Manual of Style</cite> is a clear, concise reference for Hypertext Markup Language, including the exciting new features of HTML5, CSS3 and JavaScript.</p>
<p>It is intended as a guide for content creators and Web developers who wish to  create webpages pleasing to people and search robots.</p>
<p>The book contains dozens of examples of HTML techniques to add style to any website. Plus, an entire chapter is devoted to using HTML on blog posts, eBay selling pages, Google Docs, Wikipedia articles and in email marketing.</p>
<p>This edition, published by Addison-Wesley, is the fourth edition of <cite>HTML Manual of Style</cite> originally published by Ziff-Davis Press in 1994.</p>
<h3>Links to <cite>HTML Manual of Style</cite> pages on the Web.</h3>
<ul>
<li>
<p><a href="http://www.pearsonhighered.com/educator/product/HTML-Manual-of-Style-A-Clear-Concise-Reference-for-Hypertext-Markup-Language-including-HTML5-Fourth-Edition/9780321712080.page">Pearson Higher Education / Addison-Wesley</a> – My publisher</p>
</li>
<li>
<p><a href="http://www.informit.com/store/product.aspx?isbn=0321712080">InformIT</a> – Look for my articles on HTML5</p>
</li>
<li>
<p><a href="http://www.amazon.com/gp/product/0321712080?ie=UTF8&amp;tag=larryaronson&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321712080">Amazon.com</a> – get the <a href="http://www.amazon.com/HTML-Manual-Style-Reference-ebook/dp/B0043GVZE2/ref=tmm_kin_title_0?ie=UTF8&amp;m=AG56TWVU5XWC2">Kindle Edition:</a> $9.99!</p>
</li>
<li>
<p><a href="http://my.safaribooksonline.com/9780321712301">Safari Books Online</a> – Download selected chapters</p>
</li>
<li>
<p><a href="http://www.softpro.com/0-321-71208-0.html">SoftPro Books</a> – Yet another bookseller.</p>
</li>
<li>
<h4><a href="http://www.facebook.com/pages/HTML-Manual-of-Style/172910806057330"><cite></cite>Facebook page</a> – a work in progress.<span style="font-size: small;"></span></h4>
</li>
<li>
<p><a href="http://twitter.com/HTML5pro/">Follow @HTML5pro on Twitter</a> – My alter ego.</p>
</li>
</ul>
<hr />
]]></content:encoded>
			<wfw:commentRss>http://larryaronson.com/2010/html-manual-of-style/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>New Oradell Website Launched</title>
		<link>http://larryaronson.com/2010/new-oradell-website-launched/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://larryaronson.com/2010/new-oradell-website-launched/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 21:16:14 +0000</pubDate>
		<dc:creator>Larry Aronson</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[events manager]]></category>
		<category><![CDATA[Social Media]]></category>
		<category><![CDATA[veterinary website]]></category>
		<category><![CDATA[wordpress shortcodes]]></category>

		<guid isPermaLink="false">http://larryaronson.com/?p=1327</guid>
		<description><![CDATA[<p><a href="http://larryaronson.com/2010/new-oradell-website-launched/"><img class="alignleft size-thumbnail wp-image-1331" title="Oradell-Animal-Hospital" src="http://larryaronson.com/wp-content/uploads/Oradell-Animal-Hospital-188x320.png" alt="Oradell Animal Hospital website screenshot" width="75" height="128" /></a>Oradell Animal Hospital of Paramus New Jersey is one of the largest and best animal and pet care centers in the world. But its website was old and they were losing the graphics designer who did their updates. Their marketing director was looking for new ways to connect with their current clients and customer base. I recreated their current site's structure and design in Wordpress with custom page templates, adding social sharing and other functionality with plugins, shortcodes and widgets.</p>]]></description>
				<content:encoded><![CDATA[<p><a href="http://larryaronson.com/wp-content/uploads/Oradell-Animal-Hospital.png#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><img class="alignleft size-medium wp-image-1331" title="Oradell-Animal-Hospital" src="http://larryaronson.com/wp-content/uploads/Oradell-Animal-Hospital-188x320.png" alt="Oradell Animal Hospital website screenshot" width="188" height="320" /></a>Oradell Animal Hospital of Paramus, New Jersey is one of the largest and best animal and pet care centers in the world. But its website was old and the graphics designer who did their updates was closing her shop and leaving the country.</p>
<p>Their marketing director was looking for new ways to connect with their current clients and customer base but didn&#8217;t have to budget to do a full redesign of their web site. Recreating the current site&#8217;s structure and design in WordPress, adding social sharing and other functionality with plugins and widgets  looked like the solution but there would be challenges in the project.</p>
<ul>
<li style="clear: left;">There were over 300 html files on the existing site without much organization. A major overhaul of the web site had apparently been done 6 or 7 years ago but the earlier generation of files had not been deleted. Internal links and navigation menus were a mess.</li>
<li>A two column front page that pulled post lists from different categories needed to be built and it had to be editable by the client. Templates for other special page types would need to be created. </li>
<li>Oradell needed a way to manage their busy calendar of events which included everything from special lectures to pet bereavement group session at multiple locations.</li>
<li>A large amount of content had been collected over the years that needed curating and conversion including profiles and pictures of 100 doctors and staff. I would need to duplicate their doctor-popup windows.</li>
</ul>
<p>Lisa Davis, Oradell&#8217;s director of marketing and I worked our way through the content sorting the pages into a navigable hierarchy. We played with the front page&#8217;s features and layout over the course of the project until it finally looked and felt right. I built a special template for the <em>Services &amp; Staff</em> pages that included a dynamically generated menu of all of the hospital&#8217;s departments. Each department&#8217;s page is a child page of the <em>Services &amp; Staff</em> page.</p>
<p>I installed the <a href="http://wordpress.org/extend/plugins/events-manager/" target="_blank">WordPress events manager</a>. This is a powerful piece of programming. It&#8217;s highly configurable and easy to use but, otoh, required a lot of configuration for Oradell&#8217;s requirements.</p>
<p>The most fun was writing shortcodes – one to show posts from a specific category in the content of a page and another to insert a doctor or staff profile in a post or page. The first  shortcode:</p>
<pre>[showposts category="featured" display="title"]</pre>
<p>in the content of a page produces a listing of permalinked post titles in the &#8220;featured&#8221; category. The other choices for the display option are &#8220;excerpt&#8221; and &#8220;post&#8221;. These are used throughout the site.</p>
<p>The doctor shortcode was more complicated because doctor information needed to be displayed in different contexts with different requirements: in the body of a post, on the various departments pages and in the complete directory of personnel. For each doctor or staff member, the profile consisted of the person&#8217;s name, academic credentials, job title, image and bio. Since several of their doctors were interested in blogging, I decided to register all the doctors and staff as blog contributors and use the extra IM user fields to store the titles and credentials. For example, using this shortcode in a post:</p>
<pre style="font-size: small;">[doctor name="John Dolittle" role="true" creds="true" hide="false"]</pre>
<p>will cause Dr. Dolittle&#8217;s (not an real Oradell employee) complete profile to be inserted, including his credentials and job title following his name plus the bio with a left-aligned photograph. Setting the <em>hide</em> parameter to &#8220;true&#8221; will hide the bio and photo but with a jQuery toggle, Somewhat like this:</p>
<div style="font-size: small; padding: .5em 1em; border: thin solid pink;">
<h4><a onclick="$('#dolittle-bio').toggle('slow');return false;">John Dolittle</a>, DVM, MD – Chief of Staff</h4>
<div id="dolittle-bio" style="display: none; padding-top: 1em;"><img class="alignleft size-thumbnail wp-image-1347" title="Photos from Doctor Dolittle" src="http://larryaronson.com/wp-content/uploads/Photos-from-Doctor-Dolittle-150x143.png" alt="" width="150" height="143" />Dr. John Dolittle lives in a little town called, Puddleby-on-the-Marsh in a little house on the edge of the town. The house was quite small; but his garden was very large and had a wide lawn and stone seats and weeping-willows hanging over. He is very fond of animals and keeps many kinds of pets. Besides the gold-fish in the pond at the bottom of his garden, he has rabbits in the pantry, white mice in his piano, a squirrel in the linen closet and a hedgehog in the cellar.</div>
</div>
<p>All in all, I liked working on the new Oradell website. It presented interesting challenges and the people I worked with were wonderful.</p>
]]></content:encoded>
			<wfw:commentRss>http://larryaronson.com/2010/new-oradell-website-launched/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reimagine America</title>
		<link>http://larryaronson.com/2010/reimagine-america/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://larryaronson.com/2010/reimagine-america/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 19:42:24 +0000</pubDate>
		<dc:creator>Larry Aronson</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[Joyce Cordi]]></category>
		<category><![CDATA[MENG]]></category>
		<category><![CDATA[MistyLook Theme]]></category>
		<category><![CDATA[podcasting]]></category>
		<category><![CDATA[PodPress]]></category>
		<category><![CDATA[Skype]]></category>

		<guid isPermaLink="false">http://larryaronson.com/?p=1575</guid>
		<description><![CDATA[<p><a href="http://larryaronson.com/2010/reimagine-america/"><img class="alignleft size-thumbnail wp-image-1583" title="Reimagine_America.org" src="http://larryaronson.com/wp-content/uploads/Reimagine_America.org_-191x320.jpg" alt="Reimagine America - front page" width="75" height="126" /></a>I just finished this site for <a href="http://cordiconsulting.com/" target="_blank">Joyce Cordi</a>, a management and business consultant based in San Jose, California. Joyce is passionate about politics and publishes podcasts speaking out about government waste and absurdities. She wanted a customized front page that pulled in content from her about and bio pages along with selected posts on various topics. I used a combination of custom page templates and shortcodes for her new WordPress website.]]></description>
				<content:encoded><![CDATA[<p><a href="http://reimagineamerica.org/"><img class="alignleft size-medium wp-image-1583" title="Reimagine_America.org" src="http://larryaronson.com/wp-content/uploads/Reimagine_America.org_-191x320.jpg" alt="Reimagine America - front page" width="191" height="320" /></a>A good friend recommended me for a &#8220;need a website developer&#8221; post on the The <a href="http://mengonline.com" target="_blank">Marketing Executives Networking Group</a> (MENG) list. The poster was <a href="http://cordiconsulting.com/" target="_blank">Joyce Cordi</a>, a management and business consultant based in San Jose, California. Joyce is passionate about politics and ran for Congress in 2008. An outspoken advocate for sense in government, she had started her <a href="http://reimagineamerica.org/" target="_blank">Reimagine America</a> blog on WordPress.com but wanted to move past the limitations of the free hosting service. She also wanted a customized front page that pulled in content from her <em>about</em> and <em>bio</em> pages along with selected posts on various topics.</p>
<p>Even though I gave her my standard disclaimer that I am an information architect, not a graphics designer, she gave me full reign on changing any design elements. &#8220;Just don&#8217;t make me look at a bunch of themes!&#8221; was her only requirement.</p>
<p>&#8220;That&#8217;s fine.&#8221; I replied. &#8220;you&#8217;re already using the MistyLook theme which I like so much that I&#8217;ve used it on my own site.&#8221; All that was needed design-wise was a change from MistyLook&#8217;s muted grays and greens to patriotic reds, whites and blues.</p>
<p>The big unknown in estimating the time and cost of this project was podcasting. The vast majority of Joyce&#8217;s posts consist of transcripts following an audio player control. Joyce complained about the difficulty she and her producer, Wayne, had in getting each podcast attached to a WordPress.com post. I hadn&#8217;t done much work with podcasts so I couldn&#8217;t tell if the problems stemmed from her methodology or from a problem with WordPress.com itself. The only way to find out was to copy one of her audio files and try to setup podcasting on my development site.  I started with <a href="http://wordpress.org/extend/plugins/podpress/" target="_blank">PodPress</a>, one of the more popular podcasting plugins. It worked like a charm.</p>
<p>Building a replacement WordPress site is not as straight forward as it might seem. A WordPress installation internalizes its URL. By that I mean the site&#8217;s full URL is stored in the database in several places and this complicates creating a new WordPress instance on any address other than the final production URL. There are two ways around this problem, both of which present difficulties.</p>
<ol>
<li>Build the site on a temporary URL and convert to the production URL at launch time.</li>
<li>Modify the local DNS on a development machine in order to install the site on the production URL.</li>
</ol>
<p>The first approach is easier up to the conversion point. The conversion requires dumping the database, running it through a filter to change the internal URLs and reloading. It&#8217;s kind of scary since it essentially means killing and resurrecting the site, then waiting a few nail-biting hours for the DNS change to propagate across the Internet before you know if the conversion was successful or not.</p>
<p>The second approach is safer but  has the downside that the new site cannot be seen by the client unless she also has a spare machine on which she can modify her local DNS. Even if that&#8217;s the case, modifying your local DNS is not trivial, especially on a Windows PC where, if you don&#8217;t do it right, you can screw up your entire Internet access.</p>
<p>Still, whenever possible, I use the second approach and send emails with screenshots when I need the client&#8217;s input. I did this with Reimagine America but, instead of email, Joyce and I communicated using Skype, taking advantage of its screen sharing  and file transfers capabilities to work together on the design and layout.</p>
<p>For Reimagine America&#8217;s front page, I imported the showposts shortcode function I used on <a href="http://Oradell.com/" target="_blank">Oradell.com</a>. This allowed Joyce to choose which topics (WordPress categories) to feature, how many posts to show in each topic and whether to show just the title or the title and excerpt.</p>
<p><a href="http://reimagineamerica.org/articles/"><img class="alignright size-thumbnail wp-image-1584" title="Reimagine_America_articles" src="http://larryaronson.com/wp-content/uploads/Reimagine_America_articles-150x125.jpg" alt="Reimagine America Articles Page" width="150" height="125" /></a>As a bonus, I also copied the &#8220;Show All Articles&#8221; page that I developed for <a href="http://blog.Profoto-USA.com/" target="_blank">Profoto-USA</a> extending it with the ability to sort by category as well as by date and title. I find having a page with the full index of all post titles an important addition to any blog. Click on the screen shot to the right to see the page in action.  <br class="spacer_" /></p>
<p><br class="spacer_" /></p>
<p><br class="spacer_" /></p>
]]></content:encoded>
			<wfw:commentRss>http://larryaronson.com/2010/reimagine-america/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Editable Content and Local Storage in HTML5</title>
		<link>http://larryaronson.com/2010/editable-content-and-local-storage-in-html5/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://larryaronson.com/2010/editable-content-and-local-storage-in-html5/#comments</comments>
		<pubDate>Sat, 14 Aug 2010 19:32:45 +0000</pubDate>
		<dc:creator>Larry Aronson</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[contenteditable]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[notepad]]></category>
		<category><![CDATA[webstorage]]></category>

		<guid isPermaLink="false">http://larryaronson.com/?p=1247</guid>
		<description><![CDATA[A demo showing how to build a <em>Notepad</em> widget using new HTML5 features: content editable, and webstorage. The Notepad provides the ability to keep a list of private notes associated with a webpage.  ]]></description>
				<content:encoded><![CDATA[<p>A lot of the noise around HTML5 has been about whether or not it will replace Flash as the primary means of delivering video content over the Web. While I believe that HTML5&#8242;s simple, native <em>video</em> element is superior to Flash&#8217;s plugin-based mess of <em>object, embed </em>and<em> param</em> elements, Flash isn&#8217;t going away anytime soon. The noise, however, drowns out information about other interesting HTML5 features, two of which, content editable-ness and local storage, I&#8217;ll explore in this article with a simple example. Google&#8217;s Chrome browser supports both of these features; other browsers support one or the other, or neither.</p>
<p><img src="http://larryaronson.com/wp-content/uploads/imgres.jpeg" alt="Local Storage" title="Open Container" width="259" height="194" class="alignleft size-full wp-image-1287" />Let&#8217;s say you have a page on your website and you would like to offer your readers the ability to jot down notes related to the content of that page in some kind of input field. Furthermore, since you expect visitors to revisit the page from time to time, you&#8217;d like to store their notes somewhere so that the input field can be loaded when they next load the page. Before HTML5, you would either use a server-side process, cookies or some combination of the two to make this happen. With HTML5, there&#8217;s a third choice: the <em>localStorage</em> window object.</p>
<p>First, let&#8217;s start with the input field. We could use a <em>textarea</em> element but in HTML5, any element can be turned into an input element by adding the <em>contenteditable</em> attribute:</p>
<pre style="color:#007f00">
&lt;ul id="notepad" contenteditable="true">
  &lt;li>&lt;/li>
&lt;/ul>
</pre>
<p>In the  CSS for this list element, we want to set its size and position:</p>
<pre style="color:#007f00">#notepad {
 height: 20%;
 width: 20%;
 display: none;
 position: fixed;
 top: 0.5in; right: 0.5in;
 overflow: auto;
 padding: 1em;
 border: thin solid;
 list-style-type: none;
 background-color: #fffff0; /* light yellow */
}</pre>
<p>This will place the list element 1/2 inch down and in from the top-right corner of the browser&#8217;s window. The bordered box will take up 1/5 of the window&#8217;s width and height and scrolling will be enabled if there is more content then fits. The <em>display</em> property is set to &#8220;none&#8221; initially. The user will be able to make the notepad list visible by clicking a button with an <em>onclick</em> handler.</p>
<pre style="color:#007f00">&lt;button id="notepad_toggle"
        onclick="$('#notepad').toggle()">Notepad&lt;/button></pre>
<p>I&#8217;m using jQuery for the <em>onclick </em>handler because it makes it easy to target elements<em> </em>. If you copy this code, make sure you load jQuery somewhere in the document&#8217;s head.</p>
<p>HTML5 extends the <em>window</em> object with the <em>localStorage</em> property and two primary methods: <em>setItem(name, value)</em> and <em>getItem(name)</em> to set and retrieve name/value pairs of data items. Any number of such items can be stored with a webpage and each page&#8217;s storage object is independent of any other page&#8217;s. Unlike cookies, local storage items are never sent by the browser to the server and thus provides a efficient means of saving page state information even for megabyte data items.</p>
<p>For our example, we can store the contents of the notepad element each time it is changed. We will do this with the blur method, detecting when the user leaves the notepad to do something else. Here&#8217;s some jQuery that does that nicely:</p>
<pre style="color:#007f00">$('#notepad').blur(function () {
  localStorage.setItem('notepad', this.innerHTML);
});</pre>
<p>How nice is that? The storage doesn&#8217;t have to be initialized; it&#8217;s just there waiting for you to throw something into it.  </p>
<p>When the page is first loaded we need to check if the notepad contents has been saved from some previous visit by this browser and if so, use the stored value to replace the inner contents of the list. This can be done with the following JavaScript statement:</p>
<pre style="color:#007f00">  if ( localStorage.getItem('notepad') ) {
    var notepad = document.getElementById('notepad');
    notepad.innerHTML = localStorage.getItem('notepad');
  }</pre>
<p>Note that there&#8217;s no conflict in the three uses of &#8216;notepad&#8217; in the code above. The name for the local variable can be anything as can the name of the stored data item. Neither has to be the same as the UL element&#8217;s ID. Hopefully, I&#8217;m avoiding confusion by naming everything &#8216;notepad&#8217; and not adding any.</p>
<p>Since this is only going to work on some browsers, let&#8217;s test to see if local storage is available. If it isn&#8217;t,  we can just hide the the button that makes the notepad visible.</p>
<pre style="color:#007f00">if (!window.localStorage) $('#notepad_toggle').hide();</pre>
<p>or, for debugging, we can call an <em>alert</em> message.</p>
<p>All of the code can go into a script element embedded in the content body, like this blog post, for example:</p>
<p><button id="notepad_toggle" onclick="$('#notepad').toggle('slow')" style="padding: 0.5em;">Notepad</button><br />
<script type="text/javascript">$(document).ready(function () { if ( window.localStorage ) { if ( localStorage.getItem('notepad') ) { var notepad = document.getElementById('notepad'); notepad.innerHTML = localStorage.getItem('notepad'); } $('#notepad').blur(function () { setItem('notepad', this.innerHTML); }); } else { $('#notepad_toggle').hide(); } });</script></p>
<p>Click the button above and enter anything in the light yellow notepad that opens in the top right corner of your HTML5 capable browser.  Enter anything you want – I&#8217;ll never see it, nor will anyone else. What&#8217;s entered in your local storage stays in your local storage. Try dragging and dropping images, tables, links and other thingys. Notice something interesting? You can&#8217;t use HTML to markup your own typing but anything you drag or paste in retains all of its HTML formatting. Now Go Away! Come back to this page sometime later (with the same browser) and click the notepad button again. There&#8217;s your stuff!  </p>
<p><a href="javascript:void(0);#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed" onclick="$('#localStorage_code').slideDown('slow')">Click here to see the code</a> for a stand-alone demo to get you started.</p>
<div id="localStorage_code" style="display:none;">
<pre style="font-size: 11px; color:#007f00">
&lt;!DOCTYPE html&gt;
&lt;html lang="en"&gt;
&lt;head&gt;
&lt;title&gt;Notepad Demo&lt;/title&gt;
&lt;!-- (c) 2010 by Larry Aronson --&gt; 
&lt;style&gt;
    body  { padding: 36px; }
    #notepad {
     height: 20%;
     width: 20%;
     display: none;
     position: fixed;
     top: 0.5in; right: 0.5in;
     overflow: auto;
     padding: 1em;
     border: thin solid;
     list-style-type: none;
     background-color: #fffff0; /* light yellow */
    }
&lt;/style&gt;

&lt;!-- let's get our jQuery from Google --&gt;
&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"&gt;
&lt;/script&gt;
&lt;script&gt;
    $(document).ready(function () { 
      if ( window.localStorage ) { 	// see if webstorage is working
        if ( localStorage.getItem('notepad') ) {
          var notepad = document.getElementById('notepad');
          notepad.innerHTML = localStorage.getItem('notepad');
        }
        $('#notepad').blur(function () {	// save when exiting the notepad
          localStorage.setItem('notepad', this.innerHTML);	
        });
      } 
      else { 				
        $('#notepad_toggle').hide(); 	// hide button if no webstorage			
      }
    });  
&lt;/script&gt;
&lt;/head&gt;  

&lt;body&gt;
  &lt;button id="notepad_toggle"
  	  onclick="$('#notepad').toggle('slow')"&gt;Notepad&lt;/button&gt;  
&lt;ul id="notepad" contenteditable="true"&gt;
&lt;li&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;/body&gt;
&lt;/html&gt;  
</pre>
</div>
<ul id="notepad" contenteditable="true" style="height: 20%; width: 20%; display: none; position: fixed; top: 0.5in; right: 0.5in; overflow: auto; padding: 1em; border: thin solid; list-style-type: none; background-color: #fffff0;">
<li> </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://larryaronson.com/2010/editable-content-and-local-storage-in-html5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Profoto-USA rebuilt</title>
		<link>http://larryaronson.com/2010/profoto-usa-rebuilt/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://larryaronson.com/2010/profoto-usa-rebuilt/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 13:33:14 +0000</pubDate>
		<dc:creator>Larry Aronson</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[MAC Group]]></category>
		<category><![CDATA[Matt Hill]]></category>
		<category><![CDATA[Ron Egatz]]></category>
		<category><![CDATA[slideshow]]></category>

		<guid isPermaLink="false">http://larryaronson.com/?p=1202</guid>
		<description><![CDATA[<a href="/2010/profoto-usa-rebuilt"><img class="alignleft size-thumbnail wp-image-1209" title="profoto-usa screenshot" src="http://larryaronson.com/wp-content/uploads/blog.profoto-usa_screenshot.png" alt="Screen shot of Profoto-USA home page " width="75" height="63" /></a>Repairing and rebuilding Profoto-USA's blog on photographic lighting techniques and equipment. This was a fun job as I got to learn how to replace Wordpress 2 theme technology with WP 3.0 functions and features. ]]></description>
				<content:encoded><![CDATA[<p>Ron Egatz and I go back to the time before the Web. He is one of those all-around creatives who does writing, editing, photography, graphic design and some Web programming. He occasionally calls on me to solve some of the more technical problems he encounters. So I was pleased when he asked me to help one of his associates, Matt Hill of <a href="http://MacGroupus.com/" target="_blank">MAC Group</a>, who needed a blog repaired ASAP.</p>
<p>Someone had started a blog for <a href="http://blog.profoto-usa.com/" target="_blank">Profoto-USA</a> using a customized theme but left it an unfinished mess. The sidebar was all screwed up, the <em>more</em> tag wasn&#8217;t working, there were no social-sharing functions and no control over the main menu – to name just a few of the problems. Profoto-USA is about the importance of good <strong>photographic lighting</strong> with dozens of interesting articles (some of the best authored by Ron) illustrated with beautiful photographs. Please click the screenshot below to check it out.</p>
<p><a href="http://blog.ProFoto-USA.com/"><img class="alignright size-full wp-image-1209" title="profoto-usa screenshot" src="http://larryaronson.com/wp-content/uploads/blog.profoto-usa_screenshot.png" alt="Screen shot of Profoto-USA home page " width="250" height="210" /></a>Fixing the sidebar, installing social sharing widgets and enabling the WP 3.0 menu manager was straight forward. The real challenge was finding a way to give authors more control over the content. The <em>more</em> tag, mentioned above, provides the ability to place a marker in a post so that on the blog&#8217;s front page, the post is displayed up to the marker, followed by a link to the rest of the article. I got that working but it wasn&#8217;t enough to manage the huge amount of content. The beginning paragraphs of a post often do not make the best summary, especially with long magazine-style articles. WordPress provides the ability to hand-craft a article summary, called an <em>excerpt</em>, but this feature has to be coded into the theme. Some themes show post excerpts on their front page; some show full posts (up to the first more tag.) I decided to give Profoto-USA the choice of which to use on a per-post basis using a custom field.</p>
<p>The previous developer had hard-coded a modified <em>Recent Posts</em> sidebar widget that showed, for each post, the post title and a linked thumbnail image. The thumbnails are large: 304 x 190 pixels, and only the first two or three appeared &#8220;above the fold.&#8221; The obvious solution was to use a sideshow plugin that cycled through the thumbnail photographs. Now, I&#8217;ve used a number of such plugins before and the general problem with them is that they only do what the plugin author designed them to do plus whatever user configurable options that author cares to code in. Imho – most of them fall short. Since most of the code for fetching the post data was already working, I decided to use some jQuery to add the animation effects and navigation controls to make it into a sideshow  (<a onclick="$('#slide-show-example').toggle('slow');" href="javascript:void(0);#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed">click for nerdy technical details.</a>)</p>
<div id="slide-show-example" style="display: none; padding: 1em; border: thin solid; background-color: #f0fff7; font-size: .9em; line-height: 1.1em;">
<p style="text-align: right;">[<a onclick="$('#slide-show-example').toggle('slow');" href="javascript:void(0);#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed"><em style="color: red;">close</em></a>]</p>
<p>The code in the sidebar generated a structure which looked like this:</p>
<pre>
&lt;div id="post-slides"&gt;
    &lt;div class="post-slide"&gt;  &lt;!-- first slide --&gt;
        &lt;a href=..." title="..."&gt;&lt;img ... /&gt;&lt;/a&gt;
        &lt;h3&gt;&lt;a href=".." title="..."&gt;...&lt;/a&gt;&lt;/h3&gt;
    &lt;/div&gt;

    &lt;div class="post-slide"&gt;  &lt;!-- second slide --&gt;
        ...
    &lt;/div&gt;

    ...
&lt;/div&gt;</pre>
<p>The <a href="http://jquery.malsup.com/cycle/" target="_blank">jQuery cycle plugin</a> will apply an effect successively to each first-level child element of a selected parent. The type of effect, the timing and other options are passed as parameters. So, all that had to be done to make the above into a slideshow was to place the following script element just after the above code in the sidebar template.</p>
<pre>&lt;script type="text/javascript"&gt;
    $(document).ready(function() {
        $('#post-slides').show().cycle({
            fx: 'fade',
            speed: 1000,
            timeout: 10000,
            next: '#next_slide',
            prev: '#prev_slide'
        });
    });
&lt;/script&gt;</pre>
<p>Besides <em>fade</em>, other effects include: <em>slideUp</em>, <em>slideDown</em>, <em>slideLeft</em> <em>slideRight</em> and many more. The <em>speed</em> and <em>timeout</em> options are given in miliseconds. The <em>next</em> and <em>prev</em> options are given the ids of elements that will serve as the slideshow controls. I positioned double angle brackets in the widget title with this code placed above the post-slides division:</p>
<pre>&lt;h4&gt;Recent Articles&lt;/h4&gt;
 &lt;div id="slideshow-nav"&gt;
   &lt;div id="prev_slide"&gt;
     &lt;a href="#" title="previous article"&gt;&amp;lt;&amp;lt;&lt;/a&gt;
   &lt;/div&gt;
   &lt;div id="next_slide"&gt;
     &lt;a href="#" title="next article"&gt;&amp;gt;&amp;gt;&lt;/a&gt;
   &lt;/div&gt;
 &lt;/div&gt;</pre>
<p>Here&#8217;s a closeup image of the slideshow.</p>
<p><img class="alignnone size-full wp-image-1213" title="Profoto slideshow" src="http://larryaronson.com/wp-content/uploads/Profoto_slideshow.png" alt="" width="346" height="284" /></p>
</div>
<p>This took much less time than I anticipated – less time than it would have taken to find and configure a plugin to the client&#8217;s specifications. With the extra time on my hands, I decided to give Profoto-USA a feature they didn&#8217;t ask for but felt the site definitely needed: <a href="http://blog.profoto-usa.com/?page_id=1972" target="_blank">an index to <em>all</em> articles</a> showing only the permalinked titles and the meta-info line with author and publication date. I added it to the footer menu without telling them about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://larryaronson.com/2010/profoto-usa-rebuilt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>onPhilanthropy.com Has A New Website</title>
		<link>http://larryaronson.com/2010/onphilanthropy-com-has-a-new-website/#utm_source=feed&amp;utm_medium=feed&amp;utm_campaign=feed</link>
		<comments>http://larryaronson.com/2010/onphilanthropy-com-has-a-new-website/#comments</comments>
		<pubDate>Mon, 17 May 2010 14:36:47 +0000</pubDate>
		<dc:creator>Larry Aronson</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[wordpress]]></category>
		<category><![CDATA[Arthemia]]></category>
		<category><![CDATA[CauseWired]]></category>
		<category><![CDATA[DotOrgJobs]]></category>
		<category><![CDATA[Philanthropy]]></category>
		<category><![CDATA[Tom Watson]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[widgets]]></category>

		<guid isPermaLink="false">http://larryaronson.com/?p=1179</guid>
		<description><![CDATA[<a href="http://onPhilanthropy.com/"><img class="alignleft wp-image-1180" title="onPhilanthropy.com front page" src="http://larryaronson.com/wp-content/uploads/onphilanthropy-150x125.png" alt="onPhilanthropy.com" width="150" height="125" /></a>I just finished a major project for Tom Watson, author of <a href="http://causewired.com/" target="_blank"><cite>CauseWired</cite></a>, converting his website, onPhilanthropy.com, from a custom CMS to Wordpress. The new site, built on the Arthemia Premium theme, features modifications enabling it to carry ads from multiple sources, RSS feeds from companion sites and customized widget titles.]]></description>
				<content:encoded><![CDATA[<p><a href="http://onPhilanthropy.com"><img class="alignleft size-thumbnail wp-image-1191" title="onphilanthropy" src="http://larryaronson.com/wp-content/uploads/onphilanthropy-150x125.png" alt="onPhilanthropy.com" width="150" height="125" /></a>I just finished a major project for Tom Watson, author of <a href="http://causewired.com/" target="_blank"><cite>CauseWired</cite></a>, converting his website, onPhilanthropy.com, from a custom CMS to WordPress. <a href="http://onphilanthropy.com" target="_blank">The new site</a> is built on the Arthemia Premium theme with modifications enabling it to carry ads from multiple sources.</p>
<p>This site was a blast to work on. I had done a couple of other small repair and rescue jobs for Tom. He is wonderful client; tech-savvy and patient, he pushed for solutions that stretched my skill set and forced me to learn new techniques. Some of the interesting features of onPhilanthropy.com include: customized widget headings, a revamped advertising manager, a Twitter slurp and feeds from companion sites such as, <a href="http://DotOrgJobs.com" target="_blank">DotOrgJobs.com</a>.</p>
<p>If you are in the dot-org space, please visit <a href="http://onphilanthropy.com" target="_blank">onPhilanthropy</a> and check out how good technology can advance good causes. And, of course, feedback is always welcomed.</p>
]]></content:encoded>
			<wfw:commentRss>http://larryaronson.com/2010/onphilanthropy-com-has-a-new-website/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
