<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>JFRewald.com &#124; Blog</title>
	<atom:link href="http://www.jfrewald.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.jfrewald.com/blog</link>
	<description>Design and Usability</description>
	<lastBuildDate>Mon, 30 Jan 2012 15:37:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Keep Your Site Fresh</title>
		<link>http://www.jfrewald.com/blog/?p=298</link>
		<comments>http://www.jfrewald.com/blog/?p=298#comments</comments>
		<pubDate>Mon, 30 Jan 2012 15:37:53 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[User Interface]]></category>
		<category><![CDATA[UI Design]]></category>
		<category><![CDATA[User Interface Design]]></category>

		<guid isPermaLink="false">http://www.jfrewald.com/blog/?p=298</guid>
		<description><![CDATA[There is plenty of reason to update the design of your website. With the internet changing all the time, it takes a certain kind of flare to keep ahead of the times and take a site into the future. If you are not a technical expert, it is often a good idea to get someone [...]]]></description>
			<content:encoded><![CDATA[<p>There is plenty of reason to update the design of your website. With the internet changing all the time, it takes a certain kind of flare to keep ahead of the times and take a site into the future.</p>
<p>If you are not a technical expert, it is often a good idea to get someone like myself to re-design your site on your behalf. We understand the latest aspects to consider that keep a site relevant. The things that keep sites like <a href="http://www.partypoker.fr/" target="_blank">Partypoker</a>, Facebook and Twitter relevant to the times, and reduce others to redundancy.</p>
<p>What are the reasons to re-design though?</p>
<p><strong>Keep it fresh </strong></p>
<p>When people create a website, they don&#8217;t always update it like they could and should. After a while it will become outdated and the site will appear obsolete to potential customers. A re-design will show your visitors that you are pro-actively working to improve your site and benefit them. They will appreciate it. The more active a site appears, the more likely someone is to access it again.</p>
<p><strong>Keep ahead of the competition </strong></p>
<p>In whatever venture you travel down, there will be competition keeping you on your toes. It is the same with websites. There will be plenty of others offering similar information, and you want to stay ahead of them. By keeping new markets in mind and the new developments in social advertising and networking, you can incorporate this knowledge into keeping your site superior to all others.</p>
<p><strong>New Platforms</strong></p>
<p>New technologies come and go as fast as the seasons, and you will need to update the design on your site to keep up with changes in software. Meanwhile the incorporation of this new technology will also enhance the usability of the site in the long run. Things will never progress if you don&#8217;t upgrade.</p>
<p><strong>Tools </strong></p>
<p>A website is not just about the images and the text any more. A well designed website will incorporate a wide number of tools that include: blogs, social media and forums. Thanks to these developments, there is so much you can achieve with your site.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jfrewald.com/blog/?feed=rss2&#038;p=298</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross Processing Photography</title>
		<link>http://www.jfrewald.com/blog/?p=294</link>
		<comments>http://www.jfrewald.com/blog/?p=294#comments</comments>
		<pubDate>Tue, 22 Mar 2011 18:06:21 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Photoshop Actions]]></category>

		<guid isPermaLink="false">http://www.jfrewald.com/blog/?p=294</guid>
		<description><![CDATA[Cross processing (sometimes abbreviated to Xpro) is the procedure of deliberately processing photographic film in a chemical solution intended for a different type of film. The effect was discovered independently by many different photographers often by mistake in the days of C-22 and E-4. The process is seen most often in fashion advertising and band [...]]]></description>
			<content:encoded><![CDATA[<p>Cross processing (sometimes abbreviated to Xpro) is the procedure of deliberately processing photographic film in a chemical solution intended for a different type of film. The effect was discovered independently by many different photographers often by mistake in the days of C-22 and E-4. The process is seen most often in fashion advertising and band photography, and in more recent years has become associated with the Lo-fi photography movement.  Cross processing usually involves one of the two following methods:<br />
▪	Processing positive color reversal film in C-41 chemicals, resulting in a negative image on a colorless base<br />
▪	Processing negative color print film in E-6 chemicals, resulting in a positive image but with the orange base of a normally processed color negative.</p>
<p>Let&#8217;s take a look at doing it in Photoshop.</p>
<p><span id="more-294"></span>For starters, I should point out you can download Photoshop actions to do this for you.  If that is your bag of tea, <a href="http://www.smashingmagazine.com/2008/10/20/the-ultimate-collection-of-useful-photoshop-actions/" target="_blank">check this out</a>, where you can get that action and tons of others.</p>
<p>However, you can also do it manually.  Here is what I do to achieve the effect.</p>
<p>First, start off with a nice photo.  Here&#8217;s one I took on a recent blues Mecca to Clarksdale MS.</p>
<div class="wp-caption alignnone" style="width: 460px"><img title="Raw Image" src="http://www.jfrewald.com/blog/tut/raw.jpg" alt="" width="450" height="299" /><p class="wp-caption-text">Raw Image</p></div>
<p>Once your image is open, I always duplicate the layer first so I can save a copy of the original in the file.  Go ahead and duplicate your layer.</p>
<p>On the new layer, which I renamed to Base, selected, create a new adjustment layer for curves.  From the channel drop down box, choose red, and drag the top right of the curve to the left a little bit.  Basically, you want a gentle S.  Don&#8217;t click ok yet though!</p>
<p><img class="alignnone" title="Red" src="http://www.jfrewald.com/blog/tut/1-red.jpg" alt="" width="361" height="363" /></p>
<p>Now select the blue channel from the dropdown.  Drag the top right point down just a bit&#8230;  then drag the bottom left point up a little.  This will add some blue to the shadows.  Don&#8217;t click ok yet!</p>
<p><img class="alignnone" title="Blue" src="http://www.jfrewald.com/blog/tut/2-blue.jpg" alt="" width="361" height="363" /></p>
<p>Now select the green channel &#8211; and go for another simple S curve.  This will help with the contrast as well.  Once you have all of these fine-tuned to suite your liking, go ahead and click ok.  Just don&#8217;t touch the combines RGB channel.</p>
<p><img class="alignnone" title="Green" src="http://www.jfrewald.com/blog/tut/3-green.jpg" alt="" width="361" height="363" /></p>
<p>Now for added effect, go ahead and change your new layer (the one I named Base) to the Color blending mode.  This will help it blend in nicely with the original image.</p>
<p>So here is what I have so far&#8230;.</p>
<p><img class="alignnone" title="So Far" src="http://www.jfrewald.com/blog/tut/so_far.jpg" alt="" width="450" height="299" /></p>
<p>If you want to, you can always go to Image-&gt; adjustments -&gt; brightness and contrast to fine tune the image&#8217;s contrast, which may help.  I adjusted mine a little &#8211; here is my new look.</p>
<p><img class="alignnone" title="Contrast" src="http://www.jfrewald.com/blog/tut/contrast.jpg" alt="" width="450" height="299" /></p>
<p>Just to re-create the image the right way, you need to add the final touch.  Create a new layer on top of all your other layers, and fill it with #e1ff00.  This should be a nice yellow color.  Reduce the opacity of the layer to around 10%, and you are done!</p>
<p>In the image below, I decided to add a nice black border, which I like to do to images.  Hope you enjoy!</p>
<p><img class="alignnone" title="Final" src="http://www.jfrewald.com/blog/tut/final.jpg" alt="" width="450" height="299" /></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jfrewald.com/blog/?feed=rss2&#038;p=294</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stock Images:  What and Why</title>
		<link>http://www.jfrewald.com/blog/?p=292</link>
		<comments>http://www.jfrewald.com/blog/?p=292#comments</comments>
		<pubDate>Tue, 22 Mar 2011 17:20:36 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[graphics]]></category>
		<category><![CDATA[photographs]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[photos]]></category>
		<category><![CDATA[stock images]]></category>
		<category><![CDATA[User Interface]]></category>
		<category><![CDATA[User Interface Design]]></category>

		<guid isPermaLink="false">http://www.jfrewald.com/blog/?p=292</guid>
		<description><![CDATA[Sometimes as designers, we need ot use stock photography in our projects.  but there is a little lesson you must keep in mind.  The thing is, everyone has access to stock photography, and run the risk of using the same image in their project you just used in yours. There are several steps you can [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes as designers, we need ot use stock photography in our projects.  but there is a little lesson you must keep in mind.  The thing is, everyone has access to stock photography, and run the risk of using the same image in their project you just used in yours.</p>
<p><span id="more-292"></span>There are several steps you can take to help prevent this from happening while still using stock photography.  For one, I prefer to try and use stock images &#8211; and stock companies &#8211; that I don&#8217;t see used all over the place.  This is especially important of web design.  In a usability conference I attended last year, I was shown a series of web sites that all contained the same person doing the same thing &#8211; essentially the same image &#8211; on all the different sites.  This really threw me for a loop.  I mean, our designs have to remain unique, right?</p>
<p>For starters, choose a good stock company.  Personally, I tend to use <a href="http://www.fotolia.com" target="_blank">fotolia.com.</a> The reason for this is two fold.  For one they have a large array of images and assets that are unique.   For two, they have fair prices, and are easy to deal with.</p>
<p>The other thing I tend to do as a designer &#8211; and I love Fotolia for this &#8211; is I never use a stock photo as it comes.  Usually, I tend to collect assets that I combine together in order to achieve a finished result.  If I am going to use a photo, and it is stock, I tend to adjust the image several times and in several ways in order to get the best results, as well as a unique print.</p>
<p>As a designer, i cannot stress enough the importance of &#8220;never using the default.&#8221;  This kind of ties into everything.  i never use a default image or asset &#8211; I modify it.  Similarly, I never use the default drop shadow in Photoshop &#8211; I always adjust it.  i never use the default anything.  It just makes the designs more unique, and relevant.</p>
<p>Anyway, if you are looking for stock photography or assets, I suggest using Fotolia.   Go aead, take a look around their site, and tell me what you think.  Personally, I like it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jfrewald.com/blog/?feed=rss2&#038;p=292</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Fluid Layout Formula</title>
		<link>http://www.jfrewald.com/blog/?p=289</link>
		<comments>http://www.jfrewald.com/blog/?p=289#comments</comments>
		<pubDate>Wed, 02 Mar 2011 13:32:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://www.jfrewald.com/blog/?p=289</guid>
		<description><![CDATA[As many designers know, the days of designing to a specific resolution are coming to a dramatic close. So just how easy is it to create fluid layouts? Well, believe it or not, you&#8217;ve kinda been doing it a while. So its true &#8211; fluid layouts are coming on strong in 2011.  It&#8217;s a pretty [...]]]></description>
			<content:encoded><![CDATA[<p>As many designers know, the days of designing to a specific resolution are coming to a dramatic close.  So just how easy is it to create fluid layouts?  Well, believe it or not, you&#8217;ve kinda been doing it a while.</p>
<p><span id="more-289"></span></p>
<p>So its true &#8211; fluid layouts are coming on strong in 2011.  It&#8217;s a pretty simple process &#8211; you just want your content to fit every resolution in every browser imaginable.   Well, it turns out, there is a little formula that will help you out.  Mad props go out to <a href="http://www.unstoppablerobotninja.com">Ethan Marcotte</a> for the formula.</p>
<p>So in a previous post, I covered some things relative to the fluid layout including setting images to be responsive.  Yeah, yeah, I get it &#8211; that part was easy.  Well creating the rest of it is easy too.  The difference is instead of using tables, and old school divs set to pixel widths, revert back to &#8211; uh oh &#8211; the old &#8220;em&#8221;.</p>
<p>What most developers (and some designers) don&#8217;t understand is what exactly the em is.  What unit of measure is it for crying out loud?  Well, that is a fairly simple answer.  Basically, the actual size of an element’s <code>em</code> is computed relative to the <code>font-size</code> of its parent element.  So think of it this way &#8211; if you set a font-size to 100%, all the elements in the page will be sized relative to the browser&#8217;s default type size.  In most cases, this is 16px.  So now we know exactly what the em can do for us&#8230;  But how can we use it?  By using the magical formula, we can set everything to ems!  Yeay!</p>
<p>So for fonts, what you want to do is fairly easy.  You take the target  value for each element’s <code>font-size</code> in pixels and divide it by the <code>font-size</code> of its container (that is, its context). We’re left with the desired<code>font-size</code>, expressed in relative, <code>em</code>-friendly terms. Here she is:</p>
<p>target ÷ context = result</p>
<p>So let&#8217;s say &#8211; for argument sake, you need to make a title of a page roughly 24px.  At least, that&#8217;s what it is in your mock up.  So use the formula.  You get:</p>
<p>24 (target) ÷ 16 (context)=1.5em (result)</p>
<p>BAM!  POW!  Basically, we are saying we want that page title to be 1.5 times bigger than the default font size.  We&#8217;re in!  We&#8217;ve got ems!</p>
<p>This formula will work across the board as well!  Want to make a fluid grid?  Use the same formula for an outer div tag.  Let&#8217;s say we designed our mock up at 844 px.  We want to use 988 as our little default layout width&#8230;  So apply the formula.</p>
<p>844÷988=0.7085</p>
<p>Just move that decimal over a few spaces, and you get 70.85%.  This is the width you set you outer div tag to.  DONE!</p>
<p>Now your end users have the ability to use browser controls to change the font sizes, and your mock up fits any and all resolutions.  You are well on your way to making perfect fluid layouts!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jfrewald.com/blog/?feed=rss2&#038;p=289</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flexible Designs &#8211; 2011 Design Trend</title>
		<link>http://www.jfrewald.com/blog/?p=284</link>
		<comments>http://www.jfrewald.com/blog/?p=284#comments</comments>
		<pubDate>Fri, 28 Jan 2011 01:30:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[User Interface]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[UI Design]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[User Interface Design]]></category>

		<guid isPermaLink="false">http://www.jfrewald.com/blog/?p=284</guid>
		<description><![CDATA[As design trends are continuously changing, as designers and usability experts, we must learn to change with the times.  Conventions change, user expectations change, and for various reasons.  One of the more popular reasons these trends are changing for 2011 is due the extremely vast amount of devices out there with various resolutions.  Good by [...]]]></description>
			<content:encoded><![CDATA[<p>As design trends are continuously changing, as designers and usability experts, we must learn to change with the times.  Conventions change, user expectations change, and for various reasons.  One of the more popular reasons these trends are changing for 2011 is due the extremely vast amount of devices out there with various resolutions.  Good by designing to 1024 by 768.  Good by to designing &#8220;above the fold&#8221;.  Now a days, we must design for all of it.  One ring to rule them all.</p>
<p><span id="more-284"></span>Safari, Internet Explorer, Chrome, Opera, Firefox.  Ipads, iPhones, Androids, Windows Mobile, Blackberry, Net books, and Galaxy Tabs.  The options these days for a user to view your site are endless.  The thing is, there must be a simple way to design to all of them.  Yes, I know, some people insist of having two sites &#8211; a standard one, and one intentionally done for mobile devices.  But why have to maintain two sites?</p>
<p>There are numerous articles out there on flexible grids and flexible layouts.  I have been tinkering with a specific solution as presented by <a href="http://unstoppablerobotninja.com/">Ethan Marcotte</a>.  I think he is close to a complete solution.  I have looked at other solutions for this, including expanding div layouts, having multiple images that load upon device detection, etc.  This one though, is a comfortable fit.  I tweaked his code, and I have something.</p>
<p>Basically, his idea is to work with a simple CSS principle: max-width=100%.  Adding this to your CSS for the image tag gets you half way home:</p>
<blockquote><p>img {<br />max-width: 100%<br />}</p>
</blockquote>
<p>Now the issue here is, the image will degrade in IE when it is resized.  It doesn&#8217;t like the whole max-width thing anyway.  to combat that, that, Ethan has a Javascript solution.  Use an IF statement to call this script if the browser is IE, or simply refer to it in the head tag and call it regardless:</p>
<p> </p>
<blockquote><div id="_mcePaste">var imgSizer = {</div>
<div id="_mcePaste">Config : {</div>
<div id="_mcePaste">imgCache : []</div>
<div id="_mcePaste">,spacer : &#8220;images/spacer.gif&#8221;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">,collate : function(aScope) {</div>
<div id="_mcePaste">var isOldIE = (document.all &amp;&amp; !window.opera &amp;&amp; !window.XDomainRequest) ? 1 : 0;</div>
<div id="_mcePaste">if (isOldIE &amp;&amp; document.getElementsByTagName) {</div>
<div id="_mcePaste">var c = imgSizer;</div>
<div id="_mcePaste">var imgCache = c.Config.imgCache;</div>
<div id="_mcePaste">var images = (aScope &amp;&amp; aScope.length) ? aScope : document.getElementsByTagName(&#8220;img&#8221;);</div>
<div id="_mcePaste">for (var i = 0; i &lt; images.length; i++) {</div>
<div id="_mcePaste">images[i].origWidth = images[i].offsetWidth;</div>
<div id="_mcePaste">images[i].origHeight = images[i].offsetHeight;</div>
<div id="_mcePaste">imgCache.push(images[i]);</div>
<div id="_mcePaste">c.ieAlpha(images[i]);</div>
<div id="_mcePaste">images[i].style.width = &#8220;100%&#8221;;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">if (imgCache.length) {</div>
<div id="_mcePaste">c.resize(function() {</div>
<div id="_mcePaste">for (var i = 0; i &lt; imgCache.length; i++) {</div>
<div id="_mcePaste">var ratio = (imgCache[i].offsetWidth / imgCache[i].origWidth);</div>
<div id="_mcePaste">imgCache[i].style.height = (imgCache[i].origHeight * ratio) + &#8220;px&#8221;;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">});</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">,ieAlpha : function(img) {</div>
<div id="_mcePaste">var c = imgSizer;</div>
<div id="_mcePaste">if (img.oldSrc) {</div>
<div id="_mcePaste">img.src = img.oldSrc;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">var src = img.src;</div>
<div id="_mcePaste">img.style.width = img.offsetWidth + &#8220;px&#8221;;</div>
<div id="_mcePaste">img.style.height = img.offsetHeight + &#8220;px&#8221;;</div>
<div id="_mcePaste">img.style.filter = &#8220;progid:DXImageTransform.Microsoft.AlphaImageLoader(src=&#8217;&#8221; + src + &#8220;&#8216;, sizingMethod=&#8217;scale&#8217;)&#8221;</div>
<div id="_mcePaste">img.oldSrc = src;</div>
<div id="_mcePaste">img.src = c.Config.spacer;</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">,resize : function(func) {</div>
<div id="_mcePaste">var oldonresize = window.onresize;</div>
<div id="_mcePaste">if (typeof window.onresize != &#8216;function&#8217;) {</div>
<div id="_mcePaste">window.onresize = func;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">window.onresize = function() {</div>
<div id="_mcePaste">if (oldonresize) {</div>
<div id="_mcePaste">oldonresize();</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">func();</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">addLoadEvent(function() {</div>
<div id="_mcePaste">imgSizer.collate();</div>
<div id="_mcePaste">});</div>
<div id="_mcePaste">function addLoadEvent(func) {</div>
<div id="_mcePaste">var oldonload = window.onload;</div>
<div id="_mcePaste">if (typeof window.onload != &#8216;function&#8217;) {</div>
<div id="_mcePaste">window.onload = func;</div>
<div id="_mcePaste">} else {</div>
<div id="_mcePaste">window.onload = function() {</div>
<div id="_mcePaste">if (oldonload) {</div>
<div id="_mcePaste">oldonload();</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">func();</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
<div id="_mcePaste">}</div>
</blockquote>
<div>Now we have set our images to fit our pages at 100% or the width, regardless of the resolution.  Man, we are getting close.  All we have left to do is add a few things.  The CSS below is basically the same as Ethan&#8217;s, with a few changes.  For one, I have added in a CSS3 Media Query.  These things are pretty cool &#8211; they allow us to call specific styles based on sizes and such.  So below is Ethan&#8217;s code, with a few enhancements.  At the bottom is a media query that makes the site fit a Blackberry screen:</div>
<div>
<blockquote>
<div>@media screen, projection {</div>
<div>.section:after,</div>
<div>ul.nav:after {</div>
<div><span style="white-space: pre;"> </span>content: &#8220;.&#8221;;</div>
<div><span style="white-space: pre;"> </span>display: block;</div>
<div><span style="white-space: pre;"> </span>height: 0;</div>
<div><span style="white-space: pre;"> </span>clear: both;</div>
<div><span style="white-space: pre;"> </span>visibility: hidden;</div>
<div>}</div>
<div>/* http://meyerweb.com/eric/tools/css/reset/ */</div>
<div>/* v1.0 | 20080212 */</div>
<div>html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,</div>
<div>abbr,acronym,address,big,cite,code,del,dfn,em,font,img,ins,kbd,q,s,samp,small,</div>
<div>strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,</div>
<div>table,caption,tbody,tfoot,thead,tr,th,td { margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent; }</div>
<div>body { line-height:1; }</div>
<div>ol,ul { list-style:none; }</div>
<div>blockquote,q { quotes:none; }</div>
<div>blockquote:before,blockquote:after,q:before,q:after { content:&#8221;;content:none; }</div>
<div>ins { text-decoration:none; }</div>
<div>del { text-decoration:line-through; }</div>
<div>table { border-collapse:collapse;border-spacing:0; }</div>
<div>body {</div>
<div><span style="white-space: pre;"> </span>background: #E4E4E4 url(&#8220;../images/bg.png&#8221;);</div>
<div><span style="white-space: pre;"> </span>color: #292929;</div>
<div><span style="white-space: pre;"> </span>color: rgba(0, 0, 0, 0.82);</div>
<div><span style="white-space: pre;"> </span>font: normal 100% Cambria, Georgia, serif;</div>
<div><span style="white-space: pre;"> </span>-moz-text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);</div>
<div><span style="white-space: pre;"> </span>-webkit-text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);</div>
<div><span style="white-space: pre;"> </span>text-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);</div>
<div><span style="white-space: pre;"> </span>-webkit-text-size-adjust: none;</div>
<div>}</div>
<div>a {</div>
<div><span style="white-space: pre;"> </span>color: #890101;</div>
<div><span style="white-space: pre;"> </span>text-decoration: none;</div>
<div><span style="white-space: pre;"> </span>-moz-transition: 0.2s color linear;</div>
<div><span style="white-space: pre;"> </span>-webkit-transition: 0.2s color linear;</div>
<div><span style="white-space: pre;"> </span>transition: 0.2s color linear;</div>
<div>}</div>
<div>a:hover {</div>
<div><span style="white-space: pre;"> </span>color: #DF3030;</div>
<div>}</div>
<div>#page {</div>
<div><span style="white-space: pre;"> </span>background: url(&#8220;../images/rag.png&#8221;) repeat-x;</div>
<div><span style="white-space: pre;"> </span>padding: 2em 0;</div>
<div>}</div>
<div>.inner {</div>
<div><span style="white-space: pre;"> </span>margin: 0 auto;</div>
<div><span style="white-space: pre;"> </span>width: 93.75%;<span style="white-space: pre;"> </span>/* 960px / 1024px */</div>
<div>}</div>
<div>img {</div>
<div><span style="white-space: pre;"> </span>max-width: 100%;</div>
<div>}</div>
<div>.amp {</div>
<div><span style="white-space: pre;"> </span>font-family: Baskerville, Garamond, Palatino, &#8220;Palatino Linotype&#8221;, &#8220;Hoefler Text&#8221;, &#8220;Times New Roman&#8221;, serif;</div>
<div><span style="white-space: pre;"> </span>font-style: italic;</div>
<div><span style="white-space: pre;"> </span>font-weight: normal;</div>
<div>}</div>
<div>.mast {</div>
<div><span style="white-space: pre;"> </span>float: left;</div>
<div><span style="white-space: pre;"> </span>width: 31.875%;<span style="white-space: pre;"> </span>/* 306px / 960px */</div>
<div>}</div>
<div>h1 {</div>
<div><span style="white-space: pre;"> </span>background: url(&#8220;../images/logo-bg.png&#8221;) no-repeat 50% 0;</div>
<div>}</div>
<div>h1 a {</div>
<div><span style="white-space: pre;"> </span>padding-top: 117px;</div>
<div><span style="white-space: pre;"> </span>height: 162px;</div>
<div><span style="white-space: pre;"> </span>display: block;</div>
<div><span style="white-space: pre;"> </span>text-align: center;</div>
<div>}</div>
<div>.intro,</div>
<div>.main,</div>
<div>.footer {</div>
<div><span style="white-space: pre;"> </span>float: right;</div>
<div><span style="white-space: pre;"> </span>width: 65.9375%;<span style="white-space: pre;"> </span>/* 633px / 960px */</div>
<div>}</div>
<div>.intro {</div>
<div><span style="white-space: pre;"> </span>margin-top: 117px;</div>
<div>}</div>
<div>.intro div {</div>
<div><span style="white-space: pre;"> </span>line-height: 1.4;</div>
<div>}</div>
<div>ul.nav {</div>
<div><span style="white-space: pre;"> </span>border-top: 1px solid #888583;</div>
<div><span style="white-space: pre;"> </span>margin: 2em auto 0;</div>
<div><span style="white-space: pre;"> </span>width: 64.379%;</div>
<div>}</div>
<div>ul.nav a {</div>
<div><span style="white-space: pre;"> </span>background: url(&#8220;../images/ornament.png&#8221;) no-repeat 0 100%;</div>
<div><span style="white-space: pre;"> </span>font: bold 14px/1.2 &#8220;Book Antiqua&#8221;, &#8220;Palatino Linotype&#8221;, Georgia, serif;</div>
<div><span style="white-space: pre;"> </span>display: block;</div>
<div><span style="white-space: pre;"> </span>text-align: center;</div>
<div><span style="white-space: pre;"> </span>letter-spacing: 0.1em;</div>
<div><span style="white-space: pre;"> </span>padding: 1em 0.5em 3em;</div>
<div><span style="white-space: pre;"> </span>margin-bottom: -1em;</div>
<div><span style="white-space: pre;"> </span>text-transform: uppercase;</div>
<div>}</div>
<div>ul.nav a:hover {</div>
<div><span style="white-space: pre;"> </span>background-position: 50% 100%;</div>
<div>}</div>
<div>li.first a {</div>
<div><span style="white-space: pre;"> </span>border-top: 1px solid #FFF9EF;</div>
<div><span style="white-space: pre;"> </span>padding-top: 1.25em;</div>
<div>}</div>
<div>ul.nav i {</div>
<div><span style="white-space: pre;"> </span>font: normal 10px Baskerville, Garamond, Palatino, &#8220;Palatino Linotype&#8221;, &#8220;Hoefler Text&#8221;, &#8220;Times New Roman&#8221;, serif;</div>
<div><span style="white-space: pre;"> </span>display: block;</div>
<div><span style="white-space: pre;"> </span>letter-spacing: 0.05em;</div>
<div>}</div>
<div>.intro h2 {</div>
<div><span style="white-space: pre;"> </span>font: normal 2em &#8220;Hoefler Text&#8221;, &#8220;Baskerville old face&#8221;, Garamond, &#8220;Times New Roman&#8221;, serif;</div>
<div><span style="white-space: pre;"> </span>text-align: center;</div>
<div><span style="white-space: pre;"> </span>margin-bottom: 0.25em;</div>
<div>}</div>
<div>.main h2 {</div>
<div><span style="white-space: pre;"> </span>background: url(&#8220;../images/ornament.png&#8221;) no-repeat 0 50%;</div>
<div><span style="white-space: pre;"> </span>font-size: 1.4em;</div>
<div><span style="white-space: pre;"> </span>text-transform: lowercase;</div>
<div><span style="white-space: pre;"> </span>text-align: center;</div>
<div><span style="white-space: pre;"> </span>margin: 0.75em 0 1em;</div>
<div>}</div>
<div>.main h2 b {</div>
<div><span style="white-space: pre;"> </span>background: url(&#8220;../images//bg.png&#8221;);</div>
<div><span style="white-space: pre;"> </span>font-weight: normal;</div>
<div><span style="white-space: pre;"> </span>padding: 0 1em;</div>
<div>}</div>
<div>.figure {</div>
<div><span style="white-space: pre;"> </span>float: left;</div>
<div><span style="white-space: pre;"> </span>font-size: 10px;</div>
<div><span style="white-space: pre;"> </span>letter-spacing: 0.05em;</div>
<div><span style="white-space: pre;"> </span>line-height: 1.1;</div>
<div><span style="white-space: pre;"> </span>margin: 0 3.317535545023696682% 1.5em 0;<span style="white-space: pre;"> </span>/* 21px / 633px */</div>
<div><span style="white-space: pre;"> </span>text-align: center;</div>
<div><span style="white-space: pre;"> </span>text-transform: uppercase;</div>
<div><span style="white-space: pre;"> </span>width: 31.121642969984202211%;<span style="white-space: pre;"> </span>/* 197px / 633px */</div>
<div>}</div>
<div>.figure b {</div>
<div><span style="white-space: pre;"> </span>display: block;</div>
<div><span style="white-space: pre;"> </span>font-size: 14px;</div>
<div><span style="white-space: pre;"> </span>font-family: &#8220;Book Antiqua&#8221;, &#8220;Palatino Linotype&#8221;, Georgia, serif;</div>
<div><span style="white-space: pre;"> </span>letter-spacing: 0.1em;</div>
<div>}</div>
<div>.figure img {</div>
<div><span style="white-space: pre;"> </span>-webkit-border-radius: 4px;</div>
<div><span style="white-space: pre;"> </span>-moz-border-radius: 4px;</div>
<div><span style="white-space: pre;"> </span>border-radius: 4px;</div>
<div><span style="white-space: pre;"> </span>-webkit-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);</div>
<div><span style="white-space: pre;"> </span>-moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);;</div>
<div><span style="white-space: pre;"> </span>box-shadow: 0 2px 4px rgba(0, 0, 0, 0.5);;</div>
<div><span style="white-space: pre;"> </span>display: block;</div>
<div><span style="white-space: pre;"> </span>margin: 0 auto 1em;</div>
<div>}</div>
<div>li#f-mycroft,</div>
<div>li#f-winter {</div>
<div><span style="white-space: pre;"> </span>margin-right: 0;</div>
<div>}</div>
<div>.footer {</div>
<div><span style="white-space: pre;"> </span>background: url(&#8220;../images/ornament.png&#8221;) 50% 0 repeat-x;</div>
<div><span style="white-space: pre;"> </span>font-size: 12px;</div>
<div><span style="white-space: pre;"> </span>text-align: center;</div>
<div><span style="white-space: pre;"> </span>padding: 40px 0 20px;</div>
<div>}</div>
<div>.footer p {</div>
<div><span style="white-space: pre;"> </span>margin-bottom: 0.5em;</div>
<div>}</div>
<div>}</div>
<div>@media only screen and (max-width : 321px) {</div>
<div><span style="white-space: pre;"> </span></div>
<div><span style="white-space: pre;"> </span></div>
<div><span style="white-space: pre;"> </span>img {</div>
<div><span style="white-space: pre;"> </span>max-width: 100%;</div>
<div><span style="white-space: pre;"> </span>max-height:60px;</div>
<div>}</div>
<div>}</div>
</blockquote>
<div>Now we are getting really close!  One more thing to add in&#8230;  You ever seen a web site on a Smartphone, or iPad?  It tends to load this zoomed out version and gives you a little magnified glass to zoom into the site to read it, and can scroll everywhere.    Yeah, I hate that.  So we add in a very simple Meta tag into our HTML head area:</div>
<blockquote><div>&lt;meta name=&#8221;viewport&#8221; content=&#8221;width=device-width, initial-scale=1.0&#8243; /&gt;</div>
</blockquote>
<div>And there you have it!  The CSS with the IE JS fix and the meta tag do it all for you.  You can see it in action <a href="http://www.jfrewald.com/resize">here</a>.  Just in case that page goes way eventually and someone reads this, <a href="http://www.jfrewald.com/blog/resize.ziip">here it is in a zip</a> file for download.</div>
</div>
<div>Rock on!</div>
<blockquote><p> </p>
</blockquote>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.jfrewald.com/blog/?feed=rss2&#038;p=284</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Shooting HDR with Nikon D3000 &#8211; Tutorial</title>
		<link>http://www.jfrewald.com/blog/?p=277</link>
		<comments>http://www.jfrewald.com/blog/?p=277#comments</comments>
		<pubDate>Mon, 25 Jan 2010 21:50:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[D3000]]></category>
		<category><![CDATA[HDR]]></category>
		<category><![CDATA[Nikon]]></category>
		<category><![CDATA[Tutorials]]></category>

		<guid isPermaLink="false">http://www.jfrewald.com/blog/?p=277</guid>
		<description><![CDATA[Like many other designers and developers, I also have an itch for photography.  After scouring the internet for a tutorial on how to &#8211; specifically &#8211; shoot HDR photos with my new Nikon D3000, I was a bit disappointed.  I found some interesting posts and discussions, but no real step by step guide specific to [...]]]></description>
			<content:encoded><![CDATA[<p>Like many other designers and developers, I also have an itch for photography.  After scouring the internet for a tutorial on how to &#8211; specifically &#8211; shoot HDR photos with my new Nikon D3000, I was a bit disappointed.  I found some interesting posts and discussions, but no real step by step guide specific to the D3000.  So, after it&#8217;s all said and done, I decided to post one myself.</p>
<p><span id="more-277"></span>So, there are a lot of tutorials out there discussing the &#8220;how-to&#8221; of HDR.  They talk about Photomatrix, Photoshop, tonal mapping, etc, etc etc.  But here&#8217;s the thing &#8211; I want to know how to capture those three images on my D3000 with the different exposures.  The rest I can do &#8211; I can compile, and edit, and tone map &#8211; but how do I get those shots in the first place?  Well, there are two methods that I have found that work for me.</p>
<p>First of all, the D3000 does not have auto-bracketing.  So, you will need to do this manually.  Here are my two methods.</p>
<p><strong>Method 1</strong></p>
<p>1. Set your Nikon D3000 on your tripod, obviously pointing at the direction of the subject.  make sure you put the camera exactly where you intend to shoot before you actually take the photos. (Please note at this point my camera is set to capture fine Jpegs)</p>
<p>2. Set the dial on your D3000 to the &#8220;A&#8221; setting.  This is Aperture Priority.  It will allow you to set the aperture, and let the camera take care of everything else.  For more on <a href="http://www.idigitalphoto.com/aperture-explained/" target="_blank">aperture, click here</a>.  After you set the aperture using the thumb dial, take a few test photos to make sure you got the setting right, and the lighting looks good.</p>
<p>3. Next, locate the exposure compensation button.  It is towards the front of the camera, and has a &#8220;+/-&#8221; on it.  Alright!  Now you are ready to shoot.</p>
<p>4. Make sure the exposure compensation is registered at 0.0, and snap your first shot.  Then, hold down the exposure compensation button, and increase the comp using the thumb dial.  Increase it to 2.0, and snap your second shot.  Then hold down that exposure compensation button and use the thumb dial to set the exposure to -2.0 and snap your third shot.  If you are only using 3 photos to combine to HDR, you&#8217;re good to go!  Otherwise, you can continue snapping away using different exposures for later creation of HDR.  Me myself, I like to start off with three.</p>
<p>5. Take your three images, and use either Photoshop of Photomatrix to combine your images into an HDR masterpiece.  There are many tutorials out there on his process.</p>
<p><strong>Method 2</strong></p>
<p>1. With this method, set your Nikon D3000 on the tripod.  This time, set your D3000 to capture in RAW format.  This will allow you to later use the in-camera editing feature.</p>
<p>2. Point and shoot at your intended subject.  With this method, you can shoot in any mode you want &#8211; manual, auto&#8230; it makes no difference.  Just point and shoot away!  You will still need to capture three images though.  So, shoot three pics!</p>
<p>3. Once three pictures have been taken, hit the &#8220;play&#8221; button on the back of the camera.  Leave the first picture you took alone.  Advance to the second picture, and hit the &#8220;ok&#8221; button.  This will bring up a menu, and you need to select the NEF raw editing feature.</p>
<p>4.  From there, change the exposure on the second photo to 2.0.   Save it by choosing the &#8216;EXE&#8221; option.  Change the exposure on the third picture to -2.0.  Save it.   Now when you transfer these to your computer, you will have three images &#8211; one with 0.0 exposure, one with 2.0, and one with -2.0.</p>
<p>5. Again, you can use those three photos in the application of your choice to be combines into an HDR image.   I have played with both Photomatrix and Photoshop, and both are pretty useful. You can check other blogs out there for ongoing flame wars on the subject.</p>
<p><a href="http://www.smashingmagazine.com/2008/03/10/35-fantastic-hdr-pictures/" target="_blank">Check out some beautiful HDR pictures here.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jfrewald.com/blog/?feed=rss2&#038;p=277</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Preload External FLV in Flash</title>
		<link>http://www.jfrewald.com/blog/?p=273</link>
		<comments>http://www.jfrewald.com/blog/?p=273#comments</comments>
		<pubDate>Wed, 06 May 2009 20:44:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[ActionScript]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[FLV buffering]]></category>
		<category><![CDATA[Preload FLV]]></category>

		<guid isPermaLink="false">http://www.jfrewald.com/?p=273</guid>
		<description><![CDATA[So I was tasked with solving a unique issue &#8211; I need to create a video player that preloads a FLV in FULL before beginning playback.  This is to ensure that regardless of where the actual FLV is hosted, all users worldwide will experience seamless playback, with high quality video.  Here is how I did it. So i [...]]]></description>
			<content:encoded><![CDATA[<p>So I was tasked with solving a unique issue &#8211; I need to create a video player that preloads a FLV in FULL before beginning playback.  This is to ensure that regardless of where the actual FLV is hosted, all users worldwide will experience seamless playback, with high quality video.  Here is how I did it.</p>
<p><span id="more-273"></span>So i cannot include the actual source file due to legality issues.  But  can provide the actual WORKING code.  Yes it is working, and tested.  The code will assume you set up your flash file the right way, so let me go over a few checkpoints here.</p>
<p>- The File is set up for ActionScript 2.0<br />
- It includes a progress bar (progressBar) as well as a percentage loaded text field (percentageTxt)<br />
- It auto plays after load<br />
- It does not loop the video<br />
- The &#8220;external Video&#8221; on the stage is named &#8220;myVideo&#8221;<br />
- video2.flv is my flv.  Replace it with the correct name and path to your own.<br />
- I have a movie clip named &#8220;btn_playpause&#8221;  I have the pause graphic in frame one, and the play graphic in frame 2.  I have a &#8220;stop&#8221; action-script on both frames 1 and 2.  Doing this will allow the code below to work.<br />
- The mute button is rigged.  I have the mute button named &#8220;sound_btn&#8221; (a movieclip) with an empty second frame.  So when you click the button, it plays that movie clip into an empty frame.  This shows the second sound button below it (named sound_btn2).  Tough to follow, so email me if you have questions.<br />
- my fast forw3ard rewind are named &#8220;seek_ahead&#8221; and &#8220;seek_bhnd&#8221;.  They are movie clips on the main timeline as well. <br />
- I have two dynamic text fields on the stage as well, &#8220;timet&#8221; which is the total time of the FLV, and &#8220;time_txt&#8221; which is the amount of time that has played, and counts as the flv plays. </p>
<p> </p>
<p>As always, let me know if you have questions.  The code does work if you set it up right&#8230;.</p>
<blockquote><p>/**</p>
<p>* Preloading FLVs with progressbar</p>
<p>*/</p>
<p> </p>
<p>// open a net connection</p>
<p>var nc:NetConnection = new NetConnection();</p>
<p> </p>
<p>// null connection for progressive download</p>
<p>nc.connect(null);</p>
<p> </p>
<p>// create a stream</p>
<p>myNetStream = new NetStream(nc);</p>
<p>myVideo.attachVideo(myNetStream);</p>
<p> </p>
<p>// load video</p>
<p>myNetStream.play(&#8220;video2.flv&#8221;);</p>
<p> </p>
<p>// pause video to hide it from the stage</p>
<p>myNetStream.pause();</p>
<p> </p>
<p>// resize video onload, based on meta data</p>
<p>myNetStream.onMetaData = function(obj)</p>
<p>{</p>
<p><span> </span>myVideo._height = obj.height;</p>
<p><span> </span>myVideo._width = obj.width;</p>
<p><span> </span></p>
<p><span> </span>// show load progress</p>
<p><span> </span>percentageTxt._visible = true;</p>
<p><span> </span>percentageTxt._visible = true;</p>
<p><span> </span></p>
<p>};</p>
<p> </p>
<p>// listen for the &#8216;Stop&#8217; status event, and stop video from looping</p>
<p>myNetStream.onStatus = function(info)</p>
<p>{</p>
<p><span> </span>if (info.code == &#8220;NetStream.Play.Stop&#8221;)</p>
<p><span> </span>{</p>
<p><span> </span>this.seek(0);</p>
<p><span> </span>btn_playpause.gotoAndStop(2);</p>
<p><span> </span>this.pause();</p>
<p>}</p>
<p>};</p>
<p> </p>
<p>// create a preload interval to check load progress every 1 millisecond</p>
<p>myInterval = setInterval(checkBytesLoaded, 1, myNetStream);</p>
<p> </p>
<p>// preload loop progress</p>
<p>function checkBytesLoaded(mns)</p>
<p>{</p>
<p><span> </span>// calculate percentage of video that has downloaded</p>
<p><span> </span>var pctLoaded = Math.round(mns.bytesLoaded / mns.bytesTotal * 100);</p>
<p> </p>
<p><span> </span>// update textfield on the stage</p>
<p><span> </span>percentageTxt.text = pctLoaded + &#8220;%&#8221;;</p>
<p> </p>
<p><span> </span>// update progress bar on the stage</p>
<p><span> </span>progressBar._xscale = pctLoaded;</p>
<p><span> </span></p>
<p> </p>
<p><span> </span>if (pctLoaded &gt;= 100)<span> </span>{</p>
<p><span> </span>// the video has fully downloaded</p>
<p><span> </span>_root.percentageTxt.text = &#8220;loaded&#8221;;</p>
<p><span> </span>// play video from the beginning</p>
<p><span> </span>mns.seek(0);</p>
<p><span> </span>mns.play(&#8220;video2.flv&#8221;);</p>
<p><span> </span></p>
<p> </p>
<p> </p>
<p><span> </span></p>
<p><span> </span>//play/pause button</p>
<p><span> </span>btn_playpause.onRelease = function() {</p>
<p>  mns.pause();</p>
<p>  btn_playpause.play();</p>
<p>}</p>
<p> </p>
<p>//mute button</p>
<p>var globalVolume:Sound = new Sound();</p>
<p> </p>
<p>sound_btn.onRelease = function():Void {</p>
<p> globalVolume.setVolume(0);</p>
<p> sound_btn.play();</p>
<p>}</p>
<p>sound_btn2.onRelease = function():Void {</p>
<p> globalVolume.setVolume(100);</p>
<p> sound_btn.play();</p>
<p>}</p>
<p> </p>
<p> </p>
<p>//fastforward/rewind</p>
<p>var id:Number;</p>
<p> </p>
<p>seek_ahead.onPress = function():Void {</p>
<p> id = setInterval(function():Void {</p>
<p>    mns.seek(mns.time + 0.5);</p>
<p>  }, 100);</p>
<p>}</p>
<p>seek_ahead.onRelease = function():Void {</p>
<p>  clearInterval(id);</p>
<p>}</p>
<p> </p>
<p>seek_bhnd.onPress = function():Void {</p>
<p>  var dest:Number = mns.time;</p>
<p>  id = setInterval(function():Void {</p>
<p>    mns.seek(dest -= 2);</p>
<p>  }, 100);</p>
<p>}</p>
<p>seek_bhnd.onRelease = function():Void {</p>
<p>  clearInterval(id);</p>
<p>}</p>
<p> </p>
<p> </p>
<p> </p>
<p><span> </span>// clear interval</p>
<p><span> </span>clearInterval(myInterval);</p>
<p>}</p>
<p><span> </span></p>
<p><span> </span>//show time</p>
<p>//this gets my duration</p>
<p>mns.onMetaData = function(metadata) {</p>
<p>duration = metadata.duration;</p>
<p>var dur_seconds:Number = duration;</p>
<p>var minutes_dspl = Math.floor(dur_seconds/60);</p>
<p>var seconds_dspl = Math.floor(dur_seconds%60);</p>
<p>if (minutes_dspl&lt;10) {</p>
<p>minutes_dspl = (&#8220;0&#8243;+minutes_dspl);</p>
<p>}</p>
<p>if (seconds_dspl&lt;10) {</p>
<p>seconds_dspl = (&#8220;0&#8243;+seconds_dspl);</p>
<p>}</p>
<p>//timet is the variable name for the text field</p>
<p>timet.text = minutes_dspl+&#8221;:&#8221;+seconds_dspl;</p>
<p>};</p>
<p> </p>
<p>var time_interval:Number = setInterval(checkTime, 500, mns);</p>
<p>function checkTime(mns:NetStream) {</p>
<p>   var ns_seconds:Number = mns.time;</p>
<p>   var minutes:Number = Math.floor(ns_seconds/60);</p>
<p>   var seconds = Math.floor(ns_seconds%60);</p>
<p>   if (seconds&lt;10) {</p>
<p>      seconds = &#8220;0&#8243;+seconds;</p>
<p>   }</p>
<p>   time_txt.text = minutes+&#8221;:&#8221;+seconds;</p>
<p>}</p>
<p><span> </span></p>
<p>}</p></blockquote>
<div></div>
]]></content:encoded>
			<wfw:commentRss>http://www.jfrewald.com/blog/?feed=rss2&#038;p=273</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Userfly Review</title>
		<link>http://www.jfrewald.com/blog/?p=271</link>
		<comments>http://www.jfrewald.com/blog/?p=271#comments</comments>
		<pubDate>Thu, 09 Apr 2009 16:52:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Usability]]></category>
		<category><![CDATA[User Testing]]></category>
		<category><![CDATA[userfly]]></category>
		<category><![CDATA[Users]]></category>

		<guid isPermaLink="false">http://www.jfrewald.com/?p=271</guid>
		<description><![CDATA[As a usability expert, I decided to quickly review Userfly (http://www.userfly.com) and share my findings with the community.   Userfly is indeed a great service.  Eseentailly, here is what Userfly does: By installing a simple script on your site, Userfly can record your users actions for usability and testing purposes.  Upon playback, you get a number [...]]]></description>
			<content:encoded><![CDATA[<p>As a usability expert, I decided to quickly review Userfly (http://www.userfly.com) and share my findings with the community.  </p>
<p><span id="more-271"></span><a href="http://www.userfly.com" target="_blank">Userfly</a> is indeed a great service.  Eseentailly, here is what Userfly does:</p>
<p>By installing a simple script on your site, Userfly can record your users actions for usability and testing purposes.  Upon playback, you get a number of cool features including exact click locations of the user, their exact paths, and even mouse movements.  The system records all of the movements of the user and plays them back to the usability expert (or whomever) for review.</p>
<p>So why do I feel that applications like this are not only ahead of their time, but a needed tool in the old toolbox (besides the obvious)?</p>
<p><strong>Overseas testing within companies.</strong><br />
Simple.  In today&#8217;s day and age, with companies doing more and more business overseas, it becomes increasingly difficult to test sites and applications with users in different countries.  You basically have three options to run a userability test overseas.  You can:</p>
<p>- Travel there.<br />
- Ask someone at that location to run the test.<br />
- You attempt to run the test remotely.</p>
<p>Some of these may sound doable, but keeping in mind language constraints as well as cultural differences, it is far easier &#8211; and might I add reliable &#8211; to run these tests using something like Userfly.  This way, not only are you the one implementing the test, but also the one reviewing it.  Instructions to the user become clearer.   Analyzing the results becomes a snap.  Reliance on other people (except users) becomes nil.  </p>
<p><strong>Testing sites with overseas customers.<br />
<span style="font-weight: normal;">Obviously, there is money to be made on the internet.  Quite frankly, the sites with more of an international customer base tend to fare the best.  So how does your site stack up to international customers?  With Userfly, you can find out.  You can poll users overseas and record their actions as they navigate your site.  It makes it easy to pinpoint cultural design differences, as well as international design flaws.  It shows you exactly how easy it is for international customers to use your site.</span>   </strong>Honestly, the list goes on and on.</p>
<p><strong>Optimizing usability tests.<br />
<span style="font-weight: normal;">When running usability tests, asking users to think aloud, trying to track mouse movements by eye, etc, all are a large part of the test.  Even asking them to perform tasks can often illicit questions in return.  </span> </strong>Most usability experts even recommend you video tape your user tests to capture the test, as well as to show the customer.  Userfly puts all that in the past.  Userfly records the testing without a video camera, which some believe, can hinder the test.  There are no questions by the user.  Also, as I like to point out, you can actually test users in a normal user environment.  They don&#8217;t have to go to a lab, or have you peering over their shoulder.  This is what I refer to as &#8220;naturalizing&#8221; user testing.   This is a great reason to use Userfly.</p>
<p>So are there negatives?</p>
<p>Yes, there are some, but not many.  One negative is attempting to use Userfly on a large scale.  Though I am sure the software can handle it, larger companies are very wary of this type of tool.  It can record keystrokes, passwords, etc.  Now of course, for security reasons, Userfly doesn&#8217;t exactly do this &#8211; in fact, they make it a point NOT to record passwords.  But try telling the CEO of a multi-billion dollar company that&#8230;</p>
<p>Secondly, I don&#8217;t feel Userfly should replace standard testing, but instead accompany it.  (For the record, Userfly does not claim it should replace anything either.)  Standard user tests will still have their place in the world.  But this is one fine tool to use in the arsenal.</p>
<p>All in all, Userfly is a great product, and one I highly recommend.  They have great pricing points, and even offer a free subscription.  For those of you interested, I suggest   you visit their site for more at <a href="http://www.userfly.com" target="_blank">www.Userfly.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jfrewald.com/blog/?feed=rss2&#038;p=271</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Sliding Doors &#8211; In SAP EP!</title>
		<link>http://www.jfrewald.com/blog/?p=254</link>
		<comments>http://www.jfrewald.com/blog/?p=254#comments</comments>
		<pubDate>Fri, 03 Apr 2009 14:46:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[SAP EP]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Navigation]]></category>
		<category><![CDATA[Rounded Corners]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[User Interface]]></category>

		<guid isPermaLink="false">http://www.jfrewald.com/?p=254</guid>
		<description><![CDATA[In this article, I want to share the CSS &#8220;Sliding Doors&#8221; technique by providing the code.  Also, I want to share a way in which this was implemented successfully into SAP EP in order to control the look and feel of the first level top navigation (tabs).   Basic Idea First of all, the sliding [...]]]></description>
			<content:encoded><![CDATA[<p>In this article, I want to share the CSS &#8220;Sliding Doors&#8221; technique by providing the code.  Also, I want to share a way in which this was implemented successfully into SAP EP in order to control the look and feel of the first level top navigation (tabs).</p>
<p> <br />
<span id="more-254"></span></p>
<p><strong>Basic Idea</strong></p>
<p>First of all, the sliding door technique using CSS is quite simple, really.   It allows for layering of background images, allowing them to slide over each other to obtain certain effects.  A great example of this is the tab navigation in SAP EP.  Using CSS sliding doors, we can not only give the tabs a new look and feel, but we can also give them rounded corners.  Lets look at the basic concept first:</p>
<p>Basically, to achieve this effect, you create two images &#8211; a &#8220;left&#8221; image, or end cap, and a &#8220;right&#8221; image, which is longer in length, and will &#8220;slide&#8221; in the background to allow for expanding text and tabs.  Here are my two images:</p>
<p>         <img class="alignnone size-full wp-image-255" title="selected_tab_left_cap3" src="http://www.jfrewald.com/wp-content/uploads/2009/04/selected_tab_left_cap3.gif" alt="selected_tab_left_cap3" width="11" height="18" />                  <img class="alignnone size-full wp-image-256" title="selected_tab_right_cap4" src="http://www.jfrewald.com/wp-content/uploads/2009/04/selected_tab_right_cap4.gif" alt="selected_tab_right_cap4" width="300" height="18" /><br />
Left image                                             Right Image</p>
<p>Basically, we will need to use CSS to allow for this look and feel.  I have named my two images above as follows:</p>
<p>- Left image = left.gif<br />
- Right image = right.gif (for those of you curious, it is 300 pixels in length to accommodate SAP EP tabs)</p>
<p>Both images are GIFs with corner transparency, allowing for the tabs to look good on top of any background.  For my SAP EP project, this was a must, as we need to support IE 6 and 7 (so no PNGs), and we have a graphical banner behind the tabs.</p>
<p>Next, we implement the CSS as follows:</p>
<blockquote><p><em>div.cssbutton { overflow: hidden; width: 100%; }</em></p>
<p><em>div.cssbutton a { background: transparent url(&#8216;/images/left.gif&#8217;) no-repeat top left; display: block; float: left; font: bold 12px Arial; line-height: 13px; height: 17px; padding-left: 8px; text-decoration: none; }</em></p>
<p><em>div.cssbutton a:link, div.cssbutton a:visited, div.cssbutton a:active { color: #FFF; }</em></p>
<p><em>div.cssbutton a span { background: transparent url(&#8216;/images/right.gif&#8217;) no-repeat top right; display: block; padding: 2px 8px 2px 0; }</em></p>
<p><em>div.cssbutton a:hover { background-position: bottom left; text-decoration: none; }</em></p>
<p><em>div.cssbutton a:hover span { background-position: bottom right; color: black; text-decoration: none; }</em></p>
<p> </p></blockquote>
<p>Then, with some simple mark-up below, we can have the CSS take effect and create our sliding door.</p>
<p><em></em></p>
<p><em></em></p>
<p><em></em></p>
<p><em></em></p>
<p><em></p>
<blockquote><p><em>&lt;div class=&#8221;cssbutton&#8221;&gt;&lt;a href=&#8221;#&#8221;&gt;&lt;span&gt;Button Text&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;</em></p></blockquote>
<p></em></p>
<p> </p>
<p> </p>
<p> </p>
<p><span style="font-style: normal;">And there you have it!  A result like this:</span></p>
<p><span style="font-style: normal;"><img class="alignnone size-full wp-image-258" title="tab" src="http://www.jfrewald.com/wp-content/uploads/2009/04/tab.gif" alt="tab" width="112" height="18" /></span></p>
<p><span style="font-style: normal;">For more, you can follow <a href="http://www.jankoatwarpspeed.com/post/2008/04/30/make-fancy-buttons-using-css-sliding-doors-technique.aspx" target="_blank">this link</a>.</span></p>
<p><span style="font-style: normal;"><strong>Implementation into SAP EP</strong></span></p>
<p><span style="font-style: normal;">To implement into SAP EP, a couple of things need to change.  Since SAP EP has a &#8220;selected&#8221; state of a tab, as well as an &#8220;unselected&#8221; state of a tab, we need to change the CSS a little bit to allow for both states.  Please keep in mind that would mean creating four images:  A left and right image for the selected tab, and a left and right image for the unselected tab.  So we have to create separate CSS classes for these. The CSS would look like this: (notice we defined the images earlier in the SAP EP code, so we do not directly reference them in the CSS)</span></p>
<p><span style="font-style: normal;"></p>
<blockquote><p><em>div.cssbutton-sel { overflow: hidden; width: 100</em><span><em>%;</em></span><em> }</em></p>
<p><em>div.cssbutton-sel a { background: transparent url(&#8216;</em><span><em>&lt;%</em></span><em>=selLeftCap</em><span><em>%&gt;</em></span><em>&#8216;) no-repeat top left; display: block; float: left; font: bold 11px Arial; line-height: 14px; height: 18px; padding-left: 11px; text-decoration: none; }</em></p>
<p><em>div.cssbutton-sel a:link, div.cssbutton a:visited, div.cssbutton a:active, a:visited { color: #FFF; }</em></p>
<p><em>div.cssbutton-sel a span { background: transparent url(&#8216;</em><span><em>&lt;%</em></span><em>=selRightCap</em><span><em>%&gt;</em></span><em>&#8216;) no-repeat top right; display: block; padding: 2px 8px 2px 0; }</em></p>
<p><em>div.cssbutton-sel a:hover { background-position: bottom left; text-decoration: none; color:#FFF; }</em></p>
<p><em>div.cssbutton-sel a:hover span { background-position: bottom right; text-decoration: none; color:#FFF; }</em></p>
<p><em><br />
</em></p>
<p><em><br />
</em></p>
<p><em>div.cssbutton { overflow: hidden; width: 100</em><span><em>%;</em></span><em> }</em></p>
<p><em>div.cssbutton a { background: transparent url(&#8216;</em><span><em>&lt;%</em></span><em>=unselLeftCap</em><span><em>%&gt;</em></span><em>&#8216;) no-repeat top left; display: block; float: left; font: bold 11px Arial; line-height: 14px; height: 18px; padding-left: 11px; text-decoration: none; }</em></p>
<p><em>div.cssbutton a:link, div.cssbutton a:visited, div.cssbutton a:active, a:visited { color: #FFF; }</em></p>
<p><em>div.cssbutton a span { background: transparent url(&#8216;</em><span><em>&lt;%</em></span><em>=unselRightCap</em><span><em>%&gt;</em></span><em>&#8216;) no-repeat top right; display: block; padding: 2px 8px 2px 0; }</em></p>
<p><em>div.cssbutton a:hover { background-position: bottom left; text-decoration: none; color: #C6EBFF; }</em></p>
<p><em>div.cssbutton a:hover span { background-position: bottom right; text-decoration: none;  color: #C6EBFF; }</em></p>
<p> </p></blockquote>
<p>Next, we need to alter the SAP EP code a little bit to allow for these CSS styles to take effect.  That code looks something like this: </p>
<blockquote><p><span><em>&lt;div class=</em></span><em>&#8220;cssbutton-sel&#8221;</em><span><em>&gt;</em></span></p>
<p><span><em>                                    </em></span><em>&lt;nav:navNodeAnchor navigationMethod=</em><span><em>&#8220;byURL&#8221;</em></span><em> urlParameters=</em><span><em>&#8220;InitialNodeFirstLevel=true&#8221;</em></span><em> title=</em><span><em>&#8220;&#8221;</em></span><em>&gt;</em></p>
<p><em>                                          </em><span><em>&lt;span&gt;&lt;nav:navNodeTitle/&gt;&lt;/span&gt;</em></span></p>
<p><em>                                    </em><span><em>&lt;/nav:navNodeAnchor&gt;</em></span></p>
<p><em>                              </em><span><em>&lt;/div&gt;</em></span></p>
<p><em>                        </em><span><em>&lt;/TD&gt;</em></span><em>          </em></p>
<p><em>                        </em><span><em>&lt;nav:storeNavNode/&gt;</em></span><em>            </em></p>
<p><span><em>                  </em></span><em>&lt;/nav:ifNavNodeInSelectedPath&gt;</em></p>
<p><span><em>                  </em></span><em>&lt;nav:ifNotNavNodeInSelectedPath&gt;</em></p>
<p><em>                        </em><span><em>&lt;TD&gt;</em></span></p>
<p><em>                              </em><span><em>&lt;div class=</em></span><span><em>&#8220;cssbutton&#8221;</em></span><span><em>&gt;</em></span></p>
<p><span><em>                                    </em></span><em>&lt;nav:navNodeAnchor navigationMethod=</em><span><em>&#8220;byURL&#8221;</em></span><em> urlParameters=</em><span><em>&#8220;InitialNodeFirstLevel=true&#8221;</em></span><em> title=</em><span><em>&#8220;&#8221;</em></span><em>&gt;</em></p>
<p><em>                                          </em><span><em>&lt;span&gt;&lt;nav:navNodeTitle/&gt;&lt;/span&gt;</em></span></p>
<p><em>                                    </em><span><em>&lt;/nav:navNodeAnchor&gt;</em></span></p>
<p><em>                              </em><span><em>&lt;/div&gt;</em></span></p>
<p> </p></blockquote>
<p><span>Make sure you take note of the use of both a span tag as well as a div tag to achieve the desired effect.</span></p>
<p> </p>
<p><span>And there you have it!</span></p>
<div></div>
<p></span></p>
<p><span style="font-style: normal;"><strong>Final Result:</strong></span></p>
<p><span style="font-style: normal;">You can click on the image for a full size shot.</span></p>
<p><span style="font-style: normal;"><strong><a href="http://www.jfrewald.com/wp-content/uploads/2009/04/banner.jpg" rel="shadowbox[sbpost-254];player=img;"><img class="alignnone size-medium wp-image-259" title="banner" src="http://www.jfrewald.com/wp-content/uploads/2009/04/banner-300x34.jpg" alt="banner" width="300" height="34" /></a></strong></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.jfrewald.com/blog/?feed=rss2&#038;p=254</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Company Portal Best Practices</title>
		<link>http://www.jfrewald.com/blog/?p=177</link>
		<comments>http://www.jfrewald.com/blog/?p=177#comments</comments>
		<pubDate>Wed, 01 Apr 2009 16:22:11 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[SAP EP]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[User Interface]]></category>
		<category><![CDATA[Intranet]]></category>
		<category><![CDATA[Portal]]></category>

		<guid isPermaLink="false">http://www.jfrewald.com/?p=177</guid>
		<description><![CDATA[Efficiency, memorability, and error reduction are the three most important usability attributes considered in the design of an intranet or portal.  Read the rest of this article to learn more about these three principles. When designing a company intranet or portal, it is easy to become tangled up in a web of decisions being made [...]]]></description>
			<content:encoded><![CDATA[<p>Efficiency, memorability, and error reduction are the three most important usability attributes considered in the design of an intranet or portal.  Read the rest of this article to learn more about these three principles.</p>
<p><span id="more-177"></span>When designing a company intranet or portal, it is easy to become tangled up in a web of decisions being made by managers, executives, department leads, and more.  Often times, the downfall of a portal or intranet is the fact that too many people have their hands in the proverbial cookie jar.  The answer, is to keep it as simple as possible.  One way to do that is to simply try to achieve three easy goals.</p>
<p> </p>
<p><strong>Efficiency.</strong></p>
<p>This one is easy enough right?  Simply put, any well designed or thought out portal or intranet is going to increase user efficiency.  In a way, that is kind of the whole point of a portal, right?  A well designed and planned portal/intranet will allow a user to increase efficiency, and therefore, productivity.  As we all know, an increase in productivity will directly positively effect the bottom line of any company, large or small.  So how do you achieve efficiency?  Easy &#8211; give the users the tools they need to do their job, in only a few clicks, while avoiding confusion.  make use of web 2.0 features.  Allow for customization.  Allow for expansion both of the portal itself, and of user-centric tools.  Use social networking tools to your advantage.  Make communication easier.  Allow for integration for your portal into office-based software.  Use dashboards and metrics.  Basically, make it easy for a user to use.  </p>
<p> </p>
<p><strong>Memorability.</strong></p>
<p>Often considered more of a challenge than efficiency, I feel this one is actually a little easier &#8211; and it all comes down to design and structure.  Quite simply, a company portal/intranet differs from the world wide web in one major way:  Users cannot &#8220;leave&#8221; the portal to do their work on another.  In other words, you can &#8220;train&#8221; your user base a lot more efficiently because the users will continue to use your portal.  Once a user locates the search box, for example, they will know where it on subsequent visits.   However, most designers attempt to take advantage of this in the wrong way.  This is not an excuse to avoid using web trends and begin placing elements on a page wherever a designer/developer sees fit.   Usually, that is the excuse i get.  &#8221;well, I know it isn&#8217;t normal to put the search in the bottom left of the page, but I am training the users&#8221;.    This is completely wrong.  Instead, using web trends and common-sense structure will make it easier for users to memorize where information lives on the portal.  This means avoiding portal restructures, deleting pages or moving information, and so on.  The point is, the more web trends and conventions you use, the less the user needs to learn.  The less they need to learn, the more room they have in their brain for memorizing where information lives, or how certain portal functions work.</p>
<p> </p>
<p><strong>Error Reduction.</strong></p>
<p>It kind of says it all, doesn&#8217;t it?  Reducing the number of errors a user comes across is a big one.  And it is kind of easy, too.  Simply make sure your portal tests well.  Remember - errors don&#8217;t necessarily mean that their is a bug in the code, or that a part of the portal doesn&#8217;t work.  It also means &#8220;user errors&#8221;.  Designing a portal to reduce or eliminate user errors will greatly improve the portal as a productivity tool.   Another tip is to make custom error screens that actually help the user try to solve their problem.  If the page is no longer there (it should be!) the error page that comes up in its place should allow for searching and other links to point the user to the right direction.  Here is an example that I work by:  If a user thinks the menu should have drop down menus, then it should &#8211; if it doesn&#8217;t, then it is an error.  Sounds a bit harsh, I know, but hey &#8211; you want a portal the people will user, right?</p>
<p> </p>
<p>In conclusion, achieving these three goals may be a bit of a challenge, but remembering them as you wage internal wars over the portal is key.  Everyone will want the same thing &#8211; a functional, productive portal that employees will respect, and more importantly, use.  Coming up with the what is the easy part.  The how is more of a challenge.  Use these three goals to simplify the situation, and go from there!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jfrewald.com/blog/?feed=rss2&#038;p=177</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

