<?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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Build Internet</title>
	
	<link>http://buildinternet.com</link>
	<description>Web Design, Development, and Business</description>
	<lastBuildDate>Thu, 02 Feb 2012 14:49:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/buildinternet" /><feedburner:info uri="buildinternet" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>buildinternet</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>YRDropdownView – A Polite UIAlertView Alternative for iOS</title>
		<link>http://feedproxy.google.com/~r/buildinternet/~3/eT6dg193duo/</link>
		<comments>http://buildinternet.com/2012/02/yrdropdownview-a-polite-uialertview-alternative-for-ios/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 23:07:20 +0000</pubDate>
		<dc:creator>Eli Perkins</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[alert]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[ui]]></category>

		<guid isPermaLink="false">http://buildinternet.com/?p=10193</guid>
		<description><![CDATA[YRDropdownView is an iOS library for displaying stylish alerts, warnings, and errors]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/pC9k4wwOYL3UPZE6VEps12MsECk/0/da"><img src="http://feedads.g.doubleclick.net/~a/pC9k4wwOYL3UPZE6VEps12MsECk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/pC9k4wwOYL3UPZE6VEps12MsECk/1/da"><img src="http://feedads.g.doubleclick.net/~a/pC9k4wwOYL3UPZE6VEps12MsECk/1/di" border="0" ismap="true"></img></a></p><h3>UIKit&#8217;s Shortcomings</h3>
<p>From day one, iOS developers have been struggling to alert users about simple warnings and errors that may not interrupt the flow of the app. Popping up UIAlertViews requires the user to click a button to move along, which wasn&#8217;t quite necessary for warnings that merely limit useability. Adding a UILabel somewhere on the screen isn&#8217;t consistent and doesn&#8217;t always look great. </p>
<p>Maybe you just have some more information you want to inform your user about. Simply adding it to the screen is sufficient, but what if your information is added off screen? How does your user know it has appeared? TweetBot found a great solution to that. By overlaying a simple panel, with an icon, title, and message, the flow of the app is uninterrupted, yet informs the user in a concise manner.</p>
<p><img class="aligncenter" title="Tweetbot Alert Example" src="http://buildinternet.s3.amazonaws.com/images/yrdropdownview-ios/tweetbot.png" alt="Tweetbot Alert Example" width="500" height="381" /></p>
<hr/>
<h3>Imitation Is The Greatest Form Of Flattery</h3>
<p><img class="aligncenter" title="YRDropdownView" src="http://buildinternet.s3.amazonaws.com/images/yrdropdownview-ios/screenshot.png" alt="YRDropdownView" width="400" height="570" /></p>
<p>YRDropdownView is a simple and versitile class that will increase the visibility of information relating to your app in a stylish way. YRDropdownView draws inspiration from such libraries like <a href="https://github.com/MugunthKumar/MKInfoPanelDemo">MKInfoPanel</a>, <a href="https://github.com/jdg/MBProgressHUD">MBProgressHUD</a>, and <a href="https://github.com/joycodes/DSActivityView">DSActivityView</a> and fills the gaps where these classes left off.</p>
<h3>Usage</h3>
<p>herever you want to use YRDropdownView, import the header file as follows:</p>
<pre class="objc">
#import "YRDropdownView.h"
</pre>
<h4>Basic</h4>
<p>You can create your dropdown by calling the singleton method:</p>
<pre class="objc">
[YRDropdownView showDropdownInView:self.view
                             title:@"Warning"
                            detail:@"Danger Will Robinson. You cannot do that."];
</pre>
<p>By default, calling the above method will only dismiss when clicked on. To dismiss manually in your code, call:</p>
<pre class="objc">
[YRDropdownView hideDropdownInView:self.view];
</pre>
<h4>Customizing</h4>
<p>There are many different ways to customize the alert by calling different singleton methods:</p>
<pre class="objc">
+ (YRDropdownView *)showDropdownInView:(UIView *)view
                                 title:(NSString *)title;

+ (YRDropdownView *)showDropdownInView:(UIView *)view
                                 title:(NSString *)title
                                detail:(NSString *)detail;

+ (YRDropdownView *)showDropdownInView:(UIView *)view
                                 title:(NSString *)title
                                detail:(NSString *)detail
                              animated:(BOOL)animated;

+ (YRDropdownView *)showDropdownInView:(UIView *)view
                                 title:(NSString *)title
                                detail:(NSString *)detail
                                 image:(UIImage *)image
                              animated:(BOOL)animated;

+ (YRDropdownView *)showDropdownInView:(UIView *)view
                                 title:(NSString *)title
                                detail:(NSString *)detail
                                 image:(UIImage *)image
                              animated:(BOOL)animated
                             hideAfter:(float)delay;

+ (BOOL)hideDropdownInView:(UIView *)view;
+ (BOOL)hideDropdownInView:(UIView *)view animated:(BOOL)animated;

+ (YRDropdownView *)showDropdownInWindow:(UIWindow *)window
                                   title:(NSString *)title;

+ (YRDropdownView *)showDropdownInWindow:(UIWindow *)window
                                   title:(NSString *)title
                                  detail:(NSString *)detail;

+ (YRDropdownView *)showDropdownInWindow:(UIWindow *)window
                                   title:(NSString *)title
                                  detail:(NSString *)detail
                                animated:(BOOL)animated;

+ (YRDropdownView *)showDropdownInWindow:(UIWindow *)window
                                   title:(NSString *)title
                                  detail:(NSString *)detail
                                   image:(UIImage *)image
                                animated:(BOOL)animated;

+ (YRDropdownView *)showDropdownInWindow:(UIWindow *)window
                                   title:(NSString *)title
                                  detail:(NSString *)detail
                                   image:(UIImage *)image
                                animated:(BOOL)animated
                               hideAfter:(float)delay;

+ (BOOL)hideDropdownInWindow:(UIWindow *)window;
+ (BOOL)hideDropdownInWindow:(UIWindow *)window animated:(BOOL)animated;
</pre>
<h3>Notes</h3>
<h4>Label and Background Customization</h4>
<p>Currently, the title and detail labels, as well as the yellow background, are static for all dropdowns. Customizing these features are a TODO for this project.</p>
<h4>Automatic Reference Counting (ARC) support</h4>
<p>ARC support has been neglected in part for now. Your contributions are more than welcome, however. If you want to use YRDropdownView in an ARC project, <a href="http://stackoverflow.com/questions/6646052/how-can-i-disable-arc-for-a-single-file-in-a-project">just add the add the compiler flag:</a></p>
<pre class="objc">
-fno-objc-arc
</pre>
<p>to all YRDropdownView files in your project.</p>
<h3>Project on GitHub</h3>
<p>For the cutting edge releases and outstanding issues, we&#8217;ve set up a <a title="YRDropdownView" href="https://github.com/onemightyroar/YRDropdownView">GitHub repository to keep everything in order</a>. Feel free to post any code related issues or contributions there in addition to in the comments below. We&#8217;ll also be doing minor releases there from time to time without making full blog posts. Enjoy!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/buildinternet?a=eT6dg193duo:EEHVIaAAHs4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=eT6dg193duo:EEHVIaAAHs4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=eT6dg193duo:EEHVIaAAHs4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=eT6dg193duo:EEHVIaAAHs4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=eT6dg193duo:EEHVIaAAHs4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=eT6dg193duo:EEHVIaAAHs4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=eT6dg193duo:EEHVIaAAHs4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=eT6dg193duo:EEHVIaAAHs4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=eT6dg193duo:EEHVIaAAHs4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=eT6dg193duo:EEHVIaAAHs4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/buildinternet/~4/eT6dg193duo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://buildinternet.com/2012/02/yrdropdownview-a-polite-uialertview-alternative-for-ios/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://buildinternet.com/2012/02/yrdropdownview-a-polite-uialertview-alternative-for-ios/</feedburner:origLink></item>
		<item>
		<title>Tweet Sheet – Creating a Popup Tweet in iOS 5</title>
		<link>http://feedproxy.google.com/~r/buildinternet/~3/KJjN59c8Bpw/</link>
		<comments>http://buildinternet.com/2011/10/tweet-sheet-creating-a-popup-tweet-in-ios-5/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 15:08:37 +0000</pubDate>
		<dc:creator>Eli Perkins</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[iOS5]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://buildinternet.com/?p=10080</guid>
		<description><![CDATA[Implement the new Twitter capabilities in iOS5 to create a quick tweet in your own app.]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/KcqAFCgWp_IQViso1Ai7sLGXq8c/0/da"><img src="http://feedads.g.doubleclick.net/~a/KcqAFCgWp_IQViso1Ai7sLGXq8c/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/KcqAFCgWp_IQViso1Ai7sLGXq8c/1/da"><img src="http://feedads.g.doubleclick.net/~a/KcqAFCgWp_IQViso1Ai7sLGXq8c/1/di" border="0" ismap="true"></img></a></p><h3>Twitter Integration Made Easy</h3>
<p>With the release of iOS 5 on Wednesday, a flurry of new features became available to developers. From hot <a href="http://developer.apple.com/technologies/ios5/" target="_blank">new features</a> like iCloud and iMessage to Android-like notifications, one standout new feature for developers is the addition of an entire Twitter framework, allowing developers to access the Twitter-verse in a much easier way. In prior iterations of iOS, developers needed to add in third-party libraries to authenticate Twitter accounts, post tweets, search for hashtags, and so on. With the new Twitter.framework, iOS takes the wheel from the developers&#8217; apps for the heavy lifting.</p>
<p>This tutorial will let you learn the basics to implementing the new Twitter framework into your iOS app to create and post tweets. By the end, you&#8217;ll have a simple app that will let you tweet any given message, link, or image!</p>
<h3>Overview</h3>
<p>The Twitter.framework has a pre-built modal view controller for presenting the user with a quick tweet, named TWTweetComposeViewController. This &#8220;tweet sheet&#8221; is a quick way for developers to post text, images or links from within their app, without bouncing out to Safari or the Twitter app.</p>
<p>iOS 5 has a new Accounts framework as well, which allows for a neat and tidy way to store usernames, passwords, etc. Apple has taken the initiative to package the Accounts framework into the new Twitter framework. This means that if an iOS 5 user logs into Twitter in any Twitter-using applications, his credentials can be stored into the iOS Settings and are able to be used by other apps as well.</p>
<p>What if our user is not logged in to Twitter when they get our extravagant tweeting app? Well, that is up to us as the developer to handle. For this example, I&#8217;ll show you two different ways to handle this situation. The first is to just let iOS notify the user that they need to be logged in to tweet. The second is to just not let them tweet at all. The decision is up to you! So let&#8217;s get started.</p>
<hr />
<h3>Getting Started</h3>
<p>Since this tutorial involves new iOS features in iOS 5, it is assumed you&#8217;re already running Xcode 4+</p>
<p>To begin, let&#8217;s work with a simple, single-view based app. Create a new single-view project in Xcode. Let&#8217;s call it TweetThis. For the sake of being cutting edge, let&#8217;s make sure the project uses <a href="http://clang.llvm.org/docs/AutomaticReferenceCounting.html">Automatic Reference Counting (ARC)</a>.</p>
<h4>Add Twitter.framework</h4>
<p>To take advantage of the new Twitter framework, we need to link our binary with the Twitter library. This is accomplished by clicking on your project in the Navigator sidebar, selecting your project&#8217;s target, and going to Build Phases. This should pull up a table with a few items. Click the arrow next to Link Binary With Libraries to expand the options and click the + button to add a new library. Find the library named Twitter.framework in the popup menu and select add button. Your end product should look a bit like this:<br />
<a href="http://buildinternet.s3.amazonaws.com/images/create-tweet-sheet/tweetthis-linkbinary.png"><img class="size-medium wp-image-10102 aligncenter" title="Binaries linked!" src="http://buildinternet.s3.amazonaws.com/images/create-tweet-sheet/tweetthis-linkbinary.png" alt="" width="360" height="194" /></a></p>
<h4>Setup your interface</h4>
<p>For this example app, we only need a couple UI elements. In your ViewController.xib, add in a button and a label.</p>
<p style="text-align: center;"><img class="size-medium wp-image-10103 aligncenter" title="You can make yours look a little more snazzy" src="http://buildinternet.s3.amazonaws.com/images/create-tweet-sheet/tweetthis-interface.png" alt="" width="299" height="373" /></p>
<p>The button will say something like &#8220;Tweet this!&#8221; and will be linked to the action that brings up our tweet sheet.</p>
<p>The label we add is for displaying an error message should the user not be logged in to Twitter. Let&#8217;s give this some text like &#8220;Not logged in to Twitter&#8221; for now. We&#8217;ll simply just hide and unhide this depending of if the user can tweet or not.Last but not least, create an IBOutlet for the button (I named mine tweetButton) and label (mine was errorLabel) and an IBAction for the tweeting named tweetButtonPressed for the event touch up inside. Now let&#8217;s hit the code.</p>
<h3>ViewController.h</h3>
<h4>Check for availability</h4>
<p>At this point, your ViewController.h should look something like this:</p>
<pre class="objc">#import &lt;UIKit/UIKit.h&gt;
@interface ViewController : UIViewController {
     IBOutlet UIButton *tweetButton;
     IBOutlet UILabel *errorLabel;
}
- (IBAction)tweetButtonPressed:(id)sender;
@end</pre>
<p>We should add in one more variable here before moving on. Add in the interface a BOOL named _canTweet. This boolean will keep track of whether or not the ability to tweet is available. What do you mean by &#8220;the ability to tweet is available&#8221;? It&#8217;s two-fold. The TWTweetComposeViewController has a method named canSendTweet. The method returns true should the user be logged in <em>and if the device is able to reach the Twitter service</em>. While this doesn&#8217;t mean it&#8217;ll return false if Twitter is down (which is rare anyway), it will be very helpful should the user be in Airplane Mode, or not have service, or some similar situation.</p>
<p>With that boolean, our ViewController header should be complete for now. Let&#8217;s head over to ViewController.m and get some work done.</p>
<h3>ViewController.m</h3>
<p>First things first, let&#8217;s import the Twitter framework by importing the header for it. Add the following import line at the top of your file:</p>
<pre class="objc">#import &lt;Twitter/Twitter.h&gt;</pre>
<p>Remember earlier when I mentioned that we have a couple of options to handle if our user isn&#8217;t logged in to Twitter yet? Let&#8217;s use a define to set this. Add the following line right under your import:</p>
<pre class="objc">#define letOSHandleLogin FALSE</pre>
<p>Since we&#8217;re going to modify interface items based on tweeting ability, let&#8217;s check our ability to tweet by overriding the loadView method as such:</p>
<pre class="objc">- (void)loadView
{
     [super loadView];
     //Check to see if the user is able to tweet
     /**
     * This part is somewhat optional. iOS will prompt the user to log in to Twitter if they aren't already
     * However, it's best practice to do something similar to this, like show custom alerts, etc.
     **/
     if ([TWTweetComposeViewController canSendTweet]){
          _canTweet = YES;
     }
     if (letOSHandleLogin) {
          errorLabel.hidden = YES;
     } else{
          tweetButton.hidden = !(_canTweet);      //If able to tweet, show button
          errorLabel.hidden = _canTweet;          //If able to tweet, hide error
     }
}</pre>
<p style="text-align: center;">Great! Now at this point you should be able to run your application and depending on whether or not your simulator has a Twitter account setup already, you should see the button or the error message! But that&#8217;s just step one. Step two is the fun part: composing the actual tweet!<br />
<a href="http://buildinternet.s3.amazonaws.com/images/create-tweet-sheet/tweetthis-nolabel.png"><img class="size-medium wp-image-10104 aligncenter" title="No label? Connected." src="http://buildinternet.s3.amazonaws.com/images/create-tweet-sheet/tweetthis-nolabel.png" alt="" width="159" height="300" /></a></p>
<h4>Composing and Displaying the Tweet Sheet</h4>
<p>The last step to creating this awesome tweet is actual composition of the tweet sheet itself. This step is actually quite simple and takes only a few lines of code. Define your IBAction for tweetButtonClicked as such:</p>
<pre class="objc">- (IBAction)tweetButtonPressed:(id)sender {
     //Create the tweet sheet
     TWTweetComposeViewController *tweetSheet = [[TWTweetComposeViewController alloc] init];

     //Customize the tweet sheet here
     //Add a tweet message
     [tweetSheet setInitialText:@"Just learned how to use the #iOS5 Twitter Framework on @buildinternet"];

     //Add an image
     [tweetSheet addImage:[UIImage imageNamed:@"tweetThumb.png"]];

     //Add a link
     //Don't worry, Twitter will handle turning this into a t.co link
     [tweetSheet addURL:[NSURL URLWithString:@"http://buildinternet.com/2011/10/ios-creating-your-own-tweet-sheet"]];

     //Set a blocking handler for the tweet sheet
     tweetSheet.completionHandler = ^(TWTweetComposeViewControllerResult result){
          [self dismissModalViewControllerAnimated:YES];
     };

     //Show the tweet sheet!
     [self presentModalViewController:tweetSheet animated:YES];
}</pre>
<p style="text-align: center;">Let&#8217;s go through this line by line real quick to see what&#8217;s going on. First, we alloc-init a new tweet sheet; Objective-C basics. After that, we can customize what the actual tweet is. We can set text with the setInitialText method, add an image with addImage, and add a link with addLink (which will be converted to a t.co link for you by Twitter). Next, we have to set a blocking handler for the result. This is to ensure that we don&#8217;t mess up the rest of the app while tweeting until we dismiss the modal view (that is our tweet sheet). The last line displays our tweet sheet! Build and run your app to see the tweet in all its glory.<br />
<img class="size-full wp-image-10105 aligncenter" title="tweetthis-tweetsheet" src="http://buildinternet.s3.amazonaws.com/images/create-tweet-sheet/tweetthis-tweetsheet.png" alt="" width="396" height="744" /></p>
<hr />
<h3>Wrap Up</h3>
<p>I&#8217;ve included a sample project for you to learn from <a href="https://github.com/eliperkins/TweetThis">here</a> on GitHub. This project is only one example of how to use the Twitter framework. Implement it to your pleasing! Add your own images, craft your own tweets, and bring your app to the next level of the Twitter-verse.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/buildinternet?a=KJjN59c8Bpw:_iT-w6zDR1U:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=KJjN59c8Bpw:_iT-w6zDR1U:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=KJjN59c8Bpw:_iT-w6zDR1U:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=KJjN59c8Bpw:_iT-w6zDR1U:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=KJjN59c8Bpw:_iT-w6zDR1U:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=KJjN59c8Bpw:_iT-w6zDR1U:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=KJjN59c8Bpw:_iT-w6zDR1U:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=KJjN59c8Bpw:_iT-w6zDR1U:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=KJjN59c8Bpw:_iT-w6zDR1U:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=KJjN59c8Bpw:_iT-w6zDR1U:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/buildinternet/~4/KJjN59c8Bpw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://buildinternet.com/2011/10/tweet-sheet-creating-a-popup-tweet-in-ios-5/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://buildinternet.com/2011/10/tweet-sheet-creating-a-popup-tweet-in-ios-5/</feedburner:origLink></item>
		<item>
		<title>Cycle Through Images on Hover with jQuery</title>
		<link>http://feedproxy.google.com/~r/buildinternet/~3/3HdnnzKwUTs/</link>
		<comments>http://buildinternet.com/2011/09/cycle-through-images-on-hover-with-jquery/#comments</comments>
		<pubDate>Tue, 27 Sep 2011 17:04:18 +0000</pubDate>
		<dc:creator>Sam Dunn</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[slideshow]]></category>

		<guid isPermaLink="false">http://buildinternet.com/?p=10042</guid>
		<description><![CDATA[A quick way to add a hover responsive, fast cycling, jQuery powered slideshow to your site.]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/RlFoBB33rq8DH8_9FiJD-OwDg_k/0/da"><img src="http://feedads.g.doubleclick.net/~a/RlFoBB33rq8DH8_9FiJD-OwDg_k/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/RlFoBB33rq8DH8_9FiJD-OwDg_k/1/da"><img src="http://feedads.g.doubleclick.net/~a/RlFoBB33rq8DH8_9FiJD-OwDg_k/1/di" border="0" ismap="true"></img></a></p><h3>The Basics</h3>
<p>I first saw this style slideshow as a Flash solution on <a href="http://cargocollective.com/" target="_blank">Cargo Collective</a>, which has since been updated to Javascript. As it turns out, it&#8217;s actually quite easy, making it a quick addition to any site you wish to implement it on.</p>
<p>Here&#8217;s what we&#8217;ll be doing:</p>
<ul>
<li>Super fast slideshow that only runs when hovered over.</li>
<li>Overlay logo that toggles between two different states depending on hover state</li>
<li>Inspiration piece for this tutorial: <a href="http://cargocollective.com/" target="_blank">Cargo Collective</a></li>
<li>See our end goal by visiting our <a href="http://buildinternet.com/live/cycle-images/" target="_blank">demo page</a>.</li>
</ul>
<h3>The HTML</h3>
<p>This is the structure for each slideshow, with the images are pulled from the unordered list and turned into a slideshow by <a href="http://jquery.malsup.com/cycle/" target="_blank">jQuery Cycle Plugin</a>.</p>
<p>The .link element is where a URL can be provided for when the slideshow is clicked. It is also how we will swap the logo on hovers.</p>
<pre>&lt;!-- Slideshow
=========================--&gt;
&lt;div class="slideshow-block"&gt;
	&lt;a href="http://website.com" class="link"&gt;&lt;/a&gt;
	&lt;ul class="slides"&gt;
		&lt;li&gt;&lt;img src="image.jpg"/&gt;&lt;/li&gt;
		&lt;!-- Any other slides --&gt;
	&lt;/ul&gt;
&lt;/div&gt;</pre>
<h3>The CSS</h3>
<p>The dimensions for my slideshow are 200px by 150px. Depending on the sizes of your logo and slides, the below background position coordinates and overall dimensions may need to get adjusted.</p>
<ul>
<li>The logo is toggled between the two color variations using the <a href="http://www.noobcube.com/tutorials/html-css/create-an-advanced-css-menu-using-the-hover-and-position-properties-/">background position hover technique</a>.</li>
<li>The unordered  slides list is given a class of &#8220;active&#8221; when hovered over, making it visible on the page.</li>
</ul>
<pre>*{
	margin: 0;
	padding: 0;
	outline: none;
	border: none;
}
.slideshow-block{
	position: relative;
	width: 200px;
	height: 150px;
	overflow: hidden;
	background: #111 url('img/bg.jpg');
}
a.link{
	position:absolute;
	height: 150px;
	width: 200px;
	display: block;
	z-index: 10;
	background: url('img/logo.png') no-repeat center top;
}
a.link:hover{
	background-position: center -150px;
}
.slides{
	z-index:0;
	visibility:hidden;
}
.slides.active{
	visibility:visible;
}</pre>
<h3>The jQuery</h3>
<p>On the jQuery side, we want to accomplish two tasks:</p>
<ol>
<li>Tie the jQuery Cycle Plugin to our list of images, turning them into a slideshow.</li>
<li>Swap between pause and play states when the slideshow is hovered over. This means the slideshow is hidden and paused when the mouse is not over it.</li>
</ol>
<pre>&lt;script type="text/javascript"&gt;
jQuery(function($){

	// Cycle plugin
	$('.slides').cycle({
	    fx:     'none',
	    speed:   1,
	    timeout: 70
	}).cycle("pause");

	// Pause &amp; play on hover
	$('.slideshow-block').hover(function(){
		$(this).find('.slides').addClass('active').cycle('resume');
	}, function(){
		$(this).find('.slides').removeClass('active').cycle('pause');
	});

});
&lt;/script&gt;</pre>
<h3>Closing</h3>
<p>I&#8217;ve included two versions of the script, one with the TV and one without (for easier copy and paste implementation). As always, when in doubt, try using the downloadable demos as a foundation to build from.</p>
<p>I look forward to seeing what folks are able to make happen &#8211; enjoy!</p>
<p><em>Note: You are able to place multiple slideshows on the same page, meaning it&#8217;s feasible for you to make a gallery out of a series of thumbnail slideshows.</em></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/buildinternet?a=3HdnnzKwUTs:RlM3CzLAJqU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=3HdnnzKwUTs:RlM3CzLAJqU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=3HdnnzKwUTs:RlM3CzLAJqU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=3HdnnzKwUTs:RlM3CzLAJqU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=3HdnnzKwUTs:RlM3CzLAJqU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=3HdnnzKwUTs:RlM3CzLAJqU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=3HdnnzKwUTs:RlM3CzLAJqU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=3HdnnzKwUTs:RlM3CzLAJqU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=3HdnnzKwUTs:RlM3CzLAJqU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=3HdnnzKwUTs:RlM3CzLAJqU:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/buildinternet/~4/3HdnnzKwUTs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://buildinternet.com/2011/09/cycle-through-images-on-hover-with-jquery/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		<feedburner:origLink>http://buildinternet.com/2011/09/cycle-through-images-on-hover-with-jquery/</feedburner:origLink></item>
		<item>
		<title>Guidelines for Small Project Pricing</title>
		<link>http://feedproxy.google.com/~r/buildinternet/~3/MKIq7kce7cE/</link>
		<comments>http://buildinternet.com/2011/08/guidelines-for-small-project-pricing/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 20:04:48 +0000</pubDate>
		<dc:creator>Sam Dunn</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Hourly Rate]]></category>
		<category><![CDATA[Pricing]]></category>
		<category><![CDATA[small projects]]></category>

		<guid isPermaLink="false">http://buildinternet.com/?p=9961</guid>
		<description><![CDATA[Our collection of rules and red flags which help us navigate through every small project.]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/OPwfAaagmqW130GMtpmtewwQ2nY/0/da"><img src="http://feedads.g.doubleclick.net/~a/OPwfAaagmqW130GMtpmtewwQ2nY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/OPwfAaagmqW130GMtpmtewwQ2nY/1/da"><img src="http://feedads.g.doubleclick.net/~a/OPwfAaagmqW130GMtpmtewwQ2nY/1/di" border="0" ismap="true"></img></a></p><h3>Intro</h3>
<p>Over the past few years, I&#8217;ve had the pleasure of working on a lot of small gigs as a result of my plugin, <a title="Supersized jQuery Plugin" href="http://buildinternet.com/2011/07/supersized-3-2-fullscreen-jquery-slideshow/">Supersized</a>, and our company, <a title="One Mighty Roar" href="http://onemightyroar.com">One Mighty Roar</a>. I currently average about 3-4 small projects a week, most of them with new clients. Through these experiences, I&#8217;ve learned quite a bit about how to run through this process as smoothly as possible.</p>
<h3>Our Rules</h3>
<ol>
<li>Projects under $1,000 are paid in full before work begins</li>
<li>Hourly rates are preferred to project pricing</li>
<li>If the project was misrepresented, refund and reapproach</li>
<li>Negotiate scope, not price</li>
<li>Save time by including a next step in every email</li>
</ol>
<hr />
<h4>Projects under $1,000 are paid in full before work begins</h4>
<p>This is a great way to avoid being held hostage by scope creep.</p>
<p>While it may be different for you, this number represents a little over a days work, which means it should be a relatively quick and painless project. I used to do a 50% deposit and 50% on delivery, but I found myself running into a lot of &#8220;Oh, I forgot to mention&#8230;&#8221; scenarios where additional features are requested and the final payment was withheld as a result. By taking the full deposit initially, you can re-approach any additional requests at a fairly valued rate, rather than have to cram them into an existing budget.</p>
<p><em>Projects over $1,000 would require a contract, and are a different story entirely.</em></p>
<hr />
<h4>Hourly rates are preferred to project pricing</h4>
<p>There is some debate in terms of hourly rates vs project pricing, but for small projects, there are very few situations where I would feel comfortable with a fixed project price.</p>
<p>All quotes are hourly, this avoids being stuck with hours of unexpected QA beyond what was intended. If you are on a project price and their site code is a mess, you risk facing the &#8220;you touched it last, I hired you to make this work on my site, so you need to handle it&#8221; moment.</p>
<p>When integrating with their existing site, there is a risk being presented with unusable code which could add to time needed &#8211; or worse, be viewed as a problem you caused. For this reason, I always keep original copies of the pages I edit in case they need to be referenced later in the project, regardless of whether or not the client has their own backups.</p>
<hr />
<h4>If the project was misrepresented, refund and reapproach</h4>
<p>This should happen the moment you realize you are not looking at what you expected, before you do any work. I have had scenarios where I was expecting to integrate with a static website, only to find it is WordPress and the expectation is that I create a custom plugin to work with an existing format. In most cases, thorough questioning and a clear scope could avoid this scenario, but you can never account for what clients view as&#8221;standard&#8221; and therefore fail to mention in your email exchanges.</p>
<p>When this happens, I alert the client and offer a refund, unless they wish to allocate additional hours. I typically get a &#8220;thank you for being up front with me&#8221; or a &#8220;there&#8217;s no way I&#8217;m paying for that, it&#8217;s not what we talked about&#8221;.</p>
<p>You win some, you lose some, but the important part is that it&#8217;s not your job to make the original hour estimate if it requires more work than anticipated.</p>
<hr />
<h4>Negotiate scope, not price</h4>
<blockquote><p>&#8220;I&#8217;m a startup with limited funding and am not looking for anything fancy &#8211; I just need this one simple thing&#8230;&#8221;</p></blockquote>
<p>This line really only serves one purpose, it communicates that they are budget-minded, which means if the costs exceed what they were hoping for, it&#8217;s time to negotiate scope. It&#8217;s your job to inform them of the costs for the project, and if you&#8217;re so inclined, potential options within their budget.</p>
<p><span class="important">Your hourly rate and time spent do not get discounted as a result &#8211; wanting more than you can afford is not a problem that falls onto the vendor.</span> Outside the world of service based companies, it would be laughable if a BMW salesman was faced with a person would really &#8220;needed&#8221; a BMW, but could only afford a Mitsubishi. These debates should not happen and are a waste of time, if you have a simpler alternative, offer it, otherwise give yourself the luxury of declining the project.</p>
<hr />
<h4>Save time by including next steps in every email</h4>
<p>Whenever possible I try to include as many questions and actionable items in the initial exchange with a new contact. Often I&#8217;ll receive a vague scope, which requires some clarification, but I still make an attempt to quote if possible. If I have a simpler or alternate way of approaching a project, I am sure to include that as an option as well &#8211; <strong>part of your job is to educate.</strong></p>
<blockquote><p>&#8220;If you meant the following&#8230; then it would be X hours. If this is not what you are aiming to do, then could you clarify&#8230;&#8221;</p></blockquote>
<p>Giving the potential client a sample of your rates early on helps you avoid a series of project scope emails, only to find out they aren&#8217;t on the same page cost-wise.</p>
<hr />
<h3>Red Flags</h3>
<p>We have a few red flags that that cause us to disengage with a contact and cut off future work. Every item on this list is backed with multiple personal experiences that could have been avoided &#8211; simply put, they are not worth the headache.</p>
<ol>
<li>In-depth questions regarding refund policy.</li>
<li>Insisting on a project price with ambiguous scope</li>
<li>The promise of a donation if you add functionality specific to their project.</li>
<li>Hostility and feeling of entitlement</li>
</ol>
<hr />
<h4>In-depth questions regarding refund policy</h4>
<p>If you&#8217;re working at an hourly rate in a service based business, there is no refund policy. Extensive questioning regarding refunding should make you more uncomfortable than a person being a little too curious about your local bank&#8217;s security system. If someone has an odd number of questions concerning refunds, don&#8217;t engage with that person.</p>
<p><span class="important">Clients need to respect that they are buying your time, and the results within that timeframe are a byproduct.</span> If they run out of funding or become too ambitious for their budget, they can&#8217;t be allowed to view their project as incomplete and therefore demand to refund.</p>
<hr />
<h4>Insisting on a project price with ambiguous scope</h4>
<p>Accurate project scope is a must. <span class="important">You wouldn&#8217;t expect an accurate quote from a contractor if you said &#8220;I want a house with a kitchen, bathroom, and living room &#8211; how much will that cost me?&#8221;</span> (thank you to our Director of Business Development, <a href="http://twitter.com/chandlershotgun">Chandler Quintin</a> for this one). The same is true when it comes to websites &#8211; I always clarify incoming projects with a simple bullet point list, to ensure nothing is overlooked.</p>
<p>Secondly, I am wary anytime a person requires a fixed price for a small project. While I can appreciate the need to allocate a budget, there is a certain amount of realization that comes with any project. I&#8217;ve walked into scenarios where the site code was unusable and would require hours of reworking to get where it needed to be. Even though the scope was clear, I couldn&#8217;t have factored in the state of disrepair of the site &#8211; something that is easily solved by explicitly stating projects are on an hourly basis.</p>
<hr />
<h4>Hostility and feeling of entitlement</h4>
<p>When a potential client becomes abrasive upon hearing your hourly rate or estimate, even if they accept, it will not be a fruitful relationship. If they are greeting your initial estimates with hostility, imagine the reaction if additional QA or hours resulting from scope creep are needed. <span class="important"><strong>This is not a parking ticket</strong>, they can choose whether or not they want to agree to your rates &#8211; and if they do, it should not be a continued point of contention.</span> Almost every time this has happened, the client escalates their expectations beyond what you arranged, based on the fact they are paying more than they anticipated.</p>
<blockquote><p>&#8220;Well fine, if I&#8217;m paying that price I expect this to be done within the next 24 hours and you will provide a warranty if there are any problems with my site.&#8221;</p></blockquote>
<p>We have something called the &#8220;headache tax&#8221;, which is reserved for folks that complicate the process by adjusting timelines, changing project scope, or being high maintenance in general. If you&#8217;re spending a good chunk of time fielding emails and phone calls regarding the project, be sure to factor that into your estimate &#8211; project management time is not free.</p>
<hr />
<h4>Promise of a donation in exchange for work</h4>
<p>I will speak to this only in the context of custom work for an open source project, as it has been covered more than adequately for web design as a whole.</p>
<p>I frequently receive emails that go something to the tune of this:</p>
<blockquote><p>&#8220;Hello,</p>
<p>If you add in this [insert project specific feature here] to Supersized, I would be happy to donate&#8221;.</p>
<p>Thanks.</p></blockquote>
<p>As a general rule for Supersized, when time allows, I add in features that would benefit everyone, based on number of requests I receive for certain functionality. This is free for two reasons: <strong>1) I dictate when I am able to work on it</strong> and <strong>2) the features benefit everyone</strong>. <span class="important">As soon as either of those criteria are removed, it becomes a paid project.</span></p>
<p>If you do a few hours of work in exchange for the promise of an unspecified amount of money, you&#8217;re setting yourself up for disappointment. Donations are fantastic, but are not leverage to have discounted labor done. You wouldn&#8217;t do a job for free in exchange for the promise of future work, and prospective donations are no different.</p>
<h3>What Are Your Rules?</h3>
<p>While this list is entirely based on my own experiences, I&#8217;m curious what sorts of rules you have established for small projects. I&#8217;ll look forward to hearing what you folks have as guiding principles in the wonderful world of client work.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/buildinternet?a=MKIq7kce7cE:qfGMmWcevDo:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=MKIq7kce7cE:qfGMmWcevDo:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=MKIq7kce7cE:qfGMmWcevDo:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=MKIq7kce7cE:qfGMmWcevDo:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=MKIq7kce7cE:qfGMmWcevDo:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=MKIq7kce7cE:qfGMmWcevDo:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=MKIq7kce7cE:qfGMmWcevDo:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=MKIq7kce7cE:qfGMmWcevDo:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=MKIq7kce7cE:qfGMmWcevDo:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=MKIq7kce7cE:qfGMmWcevDo:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/buildinternet/~4/MKIq7kce7cE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://buildinternet.com/2011/08/guidelines-for-small-project-pricing/feed/</wfw:commentRss>
		<slash:comments>51</slash:comments>
		<feedburner:origLink>http://buildinternet.com/2011/08/guidelines-for-small-project-pricing/</feedburner:origLink></item>
		<item>
		<title>Supersized 3.2 – Fullscreen Slideshow jQuery Plugin</title>
		<link>http://feedproxy.google.com/~r/buildinternet/~3/RUBLgHsZvtM/</link>
		<comments>http://buildinternet.com/2011/07/supersized-3-2-fullscreen-jquery-slideshow/#comments</comments>
		<pubDate>Mon, 11 Jul 2011 22:40:39 +0000</pubDate>
		<dc:creator>Sam Dunn</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[fullscreen]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Project]]></category>
		<category><![CDATA[slideshow]]></category>
		<category><![CDATA[Supersized]]></category>

		<guid isPermaLink="false">http://buildinternet.com/?p=9914</guid>
		<description><![CDATA[This version of Supersized has themes, direct slide links, dynamic preloading, and an API.]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/WSc4NAkfZxM-BNLSEb3wLXG9HHU/0/da"><img src="http://feedads.g.doubleclick.net/~a/WSc4NAkfZxM-BNLSEb3wLXG9HHU/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/WSc4NAkfZxM-BNLSEb3wLXG9HHU/1/da"><img src="http://feedads.g.doubleclick.net/~a/WSc4NAkfZxM-BNLSEb3wLXG9HHU/1/di" border="0" ismap="true"></img></a></p>
<h3>Introducing Supersized 3.2</h3>
<p><a href="http://buildinternet.com/project/supersized/"><img class="alignnone" title="Supersized Project Page" src="http://buildinternet.s3.amazonaws.com/images/supersized-3-2/supersized-screen.jpg" alt="" width="600" height="345" /></a></p>
<h4>Features</h4>
<ul>
<li>Resizes images to fill browser while maintaining image dimension ratio</li>
<li>Cycles backgrounds via slideshow with transitions and dynamic preloading</li>
<li>Core version is available for those that just want background resizing.</li>
<li>Navigation controls with keyboard support</li>
<li>Integration with Flickr – pull photos by user, set, or group</li>
<li>Head over to the <a title="Project Page" href="http://buildinternet.com/project/supersized/">project page</a> for all the details.</li>
</ul>
<h4>New in Supersized 3.2</h4>
<ul>
<li>Complete rewrite of the Supersized script.</li>
<li>More options, including ability to prevent slides from being cut off.</li>
<li>Link directly to slides</li>
<li>API lets you call functions directly (eg. play/pause, next, previous, and jump directly to a slide)</li>
<li>Theme files are now separate from base files, which will make upgrades much easier. The <a href="http://buildinternet.com/project/supersized/themes.html">Shutter theme</a> is included in each download.</li>
<li>Flickr is not yet updated to 3.2 (it&#8217;s on it&#8217;s way)</li>
</ul>
<h3>Inspiration / Sites Using Supersized</h3>
<p>I&#8217;ve put together a small sample of Supersized sites that I&#8217;ve come across recently. <span class="important">Keep in mind, these sites are not necessarily running the latest version, and some are heavily customized</span>. I will be putting together a more extensive list for the project page, so feel free to shoot your site to <a href="mailto:sam@onemightyroar.com">sam@onemightyroar.com</a>!</p>
<p><a href="https://www.sector9.com/" target="_blank"><img class="alignnone" title="Sector 9" src="http://buildinternet.s3.amazonaws.com/images/supersized-3-2/sector9.jpg" alt="" width="600" height="300" /></a><a href="http://www.mychemicalromance.com/" target="_blank"><img class="alignnone" title="My Chemical Romance" src="http://buildinternet.s3.amazonaws.com/images/supersized-3-2/chemical-romance.jpg" alt="" width="600" height="300" /></a><a href="http://www.risd.edu/"><img class="alignnone" title="Rhode Island School of Design" src="http://buildinternet.s3.amazonaws.com/images/supersized-3-2/risd.jpg" alt="" width="600" height="300" /></a><a href="http://www.hotelcala.com/en/" target="_blank"><img class="alignnone" title="Hotel Cala" src="http://buildinternet.s3.amazonaws.com/images/supersized-3-2/hotelcala.jpg" alt="" width="600" height="300" /></a><a href="http://www.sagmeister.com/"><img class="alignnone" title="Sagmeister" src="http://buildinternet.s3.amazonaws.com/images/supersized-3-2/sagmeister.jpg" alt="" width="600" height="300" /></a><a href="http://www.februe.de/"><img class="alignnone" title="Febru" src="http://buildinternet.s3.amazonaws.com/images/supersized-3-2/febru.jpg" alt="" width="600" height="300" /></a><a href="http://korenman.com/index.html"><img class="alignnone" title="Eric Korenman" src="http://buildinternet.s3.amazonaws.com/images/supersized-3-2/koreman.jpg" alt="" width="600" height="300" /></a><a href="http://www.marchdesignstudio.co.uk/#"><img class="alignnone" title="March Design Studio" src="http://buildinternet.s3.amazonaws.com/images/supersized-3-2/march.jpg" alt="" width="600" height="300" /></a></p>
<h3>Plans for WordPress</h3>
<p>I&#8217;ve noticed quite a few WordPress themes based on Supersized floating around &#8211; I plan on entering into the ring with an official Supersized WordPress theme. While I&#8217;m still at the early stages at this point, in the meantime, you should check out <a href="http://wordpress.org/extend/plugins/wp-supersized/" target="_blank">WP Supersized</a> developed by the talented Ben De Boeck from <a href="http://www.worldinmyeyes.be/2265/" target="_blank">World In My Eyes</a>. <span class="important">Note: This plugin is currently using version 3.1.3</span></p>
<h3>Comments and Feedback</h3>
<p>Just a reminder, you can follow <a href="https://github.com/buildinternet/supersized">Supersized on Github</a>, which is were I will publish minor point releases and field any bug reports.</p>
<p><span class="important">If you have an urgent problem and/or would like to contact me directly to hire for custom work, please email me at <a title="Compose a new mail to sam@onemightyroar.com" href="mailto:sam@onemightyroar.com" rel="noreferrer">sam@onemightyroar.com</a>. For troubleshooting, make sure you have first checked the <a href="http://buildinternet.com/project/supersized/docs.html" target="_blank">documentation</a> and <a href="http://buildinternet.com/project/supersized/faq.html" target="_blank">FAQ</a> sections on the project page.</span></p>
<p>Enjoyed this project? Have a look at our <a href="http://buildinternet.com/project/">Build Internet Projects</a> page for some other stuff you make fancy as well.</p>
<p><em>Banner image provided by <a href="http://colindub.com/">Colin Wojno</a>.<br />
Other photography by <a href="http://brookeshaden.com/">Brooke Shaden</a> and <a href="http://cargocollective.com/mariakazvan">Maria Kazvan</a>.</em></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/buildinternet?a=RUBLgHsZvtM:V_eOUsZDYQ0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=RUBLgHsZvtM:V_eOUsZDYQ0:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=RUBLgHsZvtM:V_eOUsZDYQ0:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=RUBLgHsZvtM:V_eOUsZDYQ0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=RUBLgHsZvtM:V_eOUsZDYQ0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=RUBLgHsZvtM:V_eOUsZDYQ0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=RUBLgHsZvtM:V_eOUsZDYQ0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=RUBLgHsZvtM:V_eOUsZDYQ0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=RUBLgHsZvtM:V_eOUsZDYQ0:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=RUBLgHsZvtM:V_eOUsZDYQ0:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/buildinternet/~4/RUBLgHsZvtM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://buildinternet.com/2011/07/supersized-3-2-fullscreen-jquery-slideshow/feed/</wfw:commentRss>
		<slash:comments>778</slash:comments>
		<feedburner:origLink>http://buildinternet.com/2011/07/supersized-3-2-fullscreen-jquery-slideshow/</feedburner:origLink></item>
		<item>
		<title>Make a Fluid Thumbnail Bar with jQuery</title>
		<link>http://feedproxy.google.com/~r/buildinternet/~3/rNO_cStSnFc/</link>
		<comments>http://buildinternet.com/2011/06/make-a-fluid-thumbnail-bar-with-jquery/#comments</comments>
		<pubDate>Wed, 22 Jun 2011 22:06:01 +0000</pubDate>
		<dc:creator>Sam Dunn</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Fluid]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Thumbnails]]></category>

		<guid isPermaLink="false">http://buildinternet.com/?p=9898</guid>
		<description><![CDATA[Learn how to make a fluid thumbnail bar that pages through the images it contains.]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/UGCi50N0CjOUzl7rtldvgthcqfg/0/da"><img src="http://feedads.g.doubleclick.net/~a/UGCi50N0CjOUzl7rtldvgthcqfg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/UGCi50N0CjOUzl7rtldvgthcqfg/1/da"><img src="http://feedads.g.doubleclick.net/~a/UGCi50N0CjOUzl7rtldvgthcqfg/1/di" border="0" ismap="true"></img></a></p><h3>Overview</h3>
<p>The idea of a fluid thumbnail bar is simple: Create a list of thumbnails within a space where the overflow can be flipped through page by page. Speaking of pages, make sure we&#8217;re on the same one by checking out the <a href="http://buildinternet.com/live/fluid-bar/demo.html">demo page</a>.</p>
<p>To be clear, this tutorial is intended to show you how to add this functionality to an existing list of images, in hopes you can use it to compliment whatever your current setup might be. <em>This tutorial assumes you have some level of experience with jQuery</em>.</p>
<p><strong>Features</strong></p>
<ul>
<li>Cycle through thumbnails in different intervals depending on container width</li>
<li>Page arrows only displayed when needed (thumbnails overflow container)</li>
</ul>
<hr/>
<h3>Getting Started</h3>
<p>First off, let&#8217;s make sure we have a base structure to work with, outlined below.</p>
<h4>Scripts</h4>
<p>jQuery (surprise!), Easing, and the separate file which will contain our script.</p>
<pre name="code" class="javascript">&lt;script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="js/jquery.easing.min.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="js/fluid.thumbs.js"&gt;&lt;/script&gt;</pre>
<p>&nbsp;</p>
<h4>CSS</h4>
<p>Just one stylesheet needed, nothing crazy. For the sake of brevity, I will let you review the stylesheet on your own, which is available in <a href="http://buildinternet.s3.amazonaws.com/live-tutorials/fluid-thumbnails/buildinternet-fluidbar.zip">the download</a>.</p>
<pre name="code" class="css">&lt;link rel="stylesheet" href="css/fluid.thumbs.css" type="text/css" media="screen" /&gt;</pre>
<h4>HTML</h4>
<p>Below is the structure of the list which will contain the thumbnails, wrapped in a container.</p>
<pre name="code" class="html">&lt;div id="thumb-tray"&gt;
     &lt;ul id="thumb-list"&gt;
          &lt;li&gt;&lt;img src="thumb-1.jpg"/&gt;&lt;/li&gt;
          &lt;li&gt;&lt;img src="thumb-2.jpg"/&gt;&lt;/li&gt;
          &lt;li&gt;&lt;img src="thumb-x.jpg"/&gt;&lt;/li&gt;
     &lt;/ul&gt;
     &lt;div id="thumb-prev"&gt;&lt;/div&gt;
     &lt;div id="thumb-next"&gt;&lt;/div&gt;
&lt;/div&gt;</pre>
<hr/>
<h3>The jQuery</h3>
<p>This is where the bulk of the functionality will be made possible, to get a good sense of what we&#8217;re aiming to do, here are the goals:</p>
<ul>
<li>Automatically resize the width of thumbnail list to fit number of images it contains (when the window is loaded or resized).</li>
<li>Calculate how many thumbs are visible within the visible area.</li>
<li>Cycle through the pages of thumbs when the forward or back arrows are clicked.</li>
</ul>
<h4>The Variables</h4>
<p>To make editing easier, we are going to plug the elements into variables. Additionally, we are defining the thumbInterval and thumbPage variables, which store the pixel width of each page and the pixel distance from zero, respectively.</p>
<pre name="code" class="javascript">var thumbTray = '#thumb-tray',
thumbList = '#thumb-list',
thumbNext = '#thumb-next',
thumbPrev = '#thumb-prev',
thumbInterval,
thumbPage = 0;</pre>
<h4>Setup</h4>
<p>When the document is first ready, the width of the thumbnail list must be calculated, and then depending whether or not it exceeds to visible area, the thumb arrows are displayed and the pixel width of each thumb page is calculated.</p>
<pre name="code" class="javascript">// Adjust to true width of thumb markers
$(thumbList).width($('&gt; li', thumbList).length * $('&gt; li', thumbList).outerWidth(true));</pre>
<p>The width is calculated by multiplying the width of one <em>li</em> by the total number of items within the list. The <a href="http://api.jquery.com/outerWidth/" target="_blank">outerWidth</a> function allows us to include padding and margins in our calculation.</p>
<pre name="code" class="javascript">// Hide thumb arrows if not needed
if ($(thumbList).width() &lt;= $(thumbTray).width()) $(thumbPrev+","+thumbNext).fadeOut(0);</pre>
<p>If the width of the thumbnail list is larger than the thumb tray, then the arrows are needed and faded in.</p>
<pre name="code" class="javascript">// Thumb Intervals
thumbInterval = Math.floor($(thumbTray).width() / $('&gt; li', thumbList).outerWidth(true)) * $('&gt; li', thumbList).outerWidth(true);</pre>
<p>Similar to how the true width of the thumb list was calculated, we are now figuring out the width of each page of thumbnails, establishing how far to shift the list (left or right) when it is cycled through.</p>
<h4>Thumb Navigation</h4>
<p>Pages are navigated by adjusting the left property in a positive(backward) or negative(forward) direction. The thumbInterval variable stores what distance is considered a page, while the thumbPage variable stores the total distance from the left. </p>
<p>If the beginning or end of the list is reached, it will automatically spill over to the opposite end of the list. Each page is calculated based on how many <em>complete</em> list items can be visible in the current visible space. We make use of easing for these animations to add extra smooth transitions.</p>
<pre name="code" class="javascript">
// Thumb Next Button
$(thumbNext).click(function(){
	if (thumbPage - thumbInterval <= -$(thumbList).width()){
		thumbPage = 0;
		$(thumbList).stop().animate({'left': thumbPage}, {duration:500, easing:'easeOutExpo'});
	}else{
		thumbPage = thumbPage - thumbInterval;
		$(thumbList).stop().animate({'left': thumbPage}, {duration:500, easing:'easeOutExpo'});
	}
});

// Thumb Previous Button
$(thumbPrev).click(function(){
	if (thumbPage + thumbInterval > 0){
		thumbPage = Math.floor($(thumbList).width() / thumbInterval) * -thumbInterval;
		if ($(thumbList).width() <= -thumbPage) thumbPage = thumbPage + thumbInterval;
		$(thumbList).stop().animate({'left': thumbPage}, {duration:500, easing:'easeOutExpo'});
	}else{
		thumbPage = thumbPage + thumbInterval;
		$(thumbList).stop().animate({'left': thumbPage}, {duration:500, easing:'easeOutExpo'});
	}
});
</pre>
<h4>Handling Resizes</h4>
<p>Since the thumbInterval and thumbPage are calculated when the page first loads, we need to adjust for the fact that when the browser window size changes, those numbers are no longer relevant. In order to keep this simple, when the window is resized, the variables are recalculated and the page is set back to zero.</p>
<pre name="code" class="javascript">
$(window).resize(function(){

	// Update Thumb Interval &#038; Page
	thumbPage = 0;
	thumbInterval = Math.floor($(thumbTray).width() / $('> li', thumbList).outerWidth(true)) * $('> li', thumbList).outerWidth(true);

	// Adjust thumbnail markers
	if ($(thumbList).width() > $(thumbTray).width()){
		$(thumbPrev+","+thumbNext).fadeIn('fast');
		$(thumbList).stop().animate({'left':0}, 200);
	}else{
		$(thumbPrev+","+thumbNext).fadeOut('fast');
	}

});
</pre>
<h3>Wrap-up &amp; Expanded Script</h3>
<p><span class="important">I've taken the basics of this tutorial and expanded upon them in <a href="https://github.com/buildinternet/thumbreel">Thumb Reel</a></span>, a free script I released that has added functionality such as clicking and keyboard navigation. You can also see this script used in the <a href="http://buildinternet.com/project/supersized/slideshow/3.2/demo.html">newest Supersized release</a>, which is what it was originally made for, although it has since been modified.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/buildinternet?a=rNO_cStSnFc:_OSctVF4-mk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=rNO_cStSnFc:_OSctVF4-mk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=rNO_cStSnFc:_OSctVF4-mk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=rNO_cStSnFc:_OSctVF4-mk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=rNO_cStSnFc:_OSctVF4-mk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=rNO_cStSnFc:_OSctVF4-mk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=rNO_cStSnFc:_OSctVF4-mk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=rNO_cStSnFc:_OSctVF4-mk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=rNO_cStSnFc:_OSctVF4-mk:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=rNO_cStSnFc:_OSctVF4-mk:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/buildinternet/~4/rNO_cStSnFc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://buildinternet.com/2011/06/make-a-fluid-thumbnail-bar-with-jquery/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		<feedburner:origLink>http://buildinternet.com/2011/06/make-a-fluid-thumbnail-bar-with-jquery/</feedburner:origLink></item>
		<item>
		<title>Stop Raising Billboards</title>
		<link>http://feedproxy.google.com/~r/buildinternet/~3/ZdZ25Smbvjg/</link>
		<comments>http://buildinternet.com/2011/06/stop-raising-billboards/#comments</comments>
		<pubDate>Tue, 14 Jun 2011 00:56:25 +0000</pubDate>
		<dc:creator>Zach Dunn</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Interaction]]></category>
		<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[Social Media]]></category>

		<guid isPermaLink="false">http://buildinternet.com/?p=9805</guid>
		<description><![CDATA[People are more than blank billboards, so why do some sites focus more on getting a retweet than response?]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/yW0HiQ64zu4uPWCKBYPnS2cYeXc/0/da"><img src="http://feedads.g.doubleclick.net/~a/yW0HiQ64zu4uPWCKBYPnS2cYeXc/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/yW0HiQ64zu4uPWCKBYPnS2cYeXc/1/da"><img src="http://feedads.g.doubleclick.net/~a/yW0HiQ64zu4uPWCKBYPnS2cYeXc/1/di" border="0" ismap="true"></img></a></p><p>The way most sites go about sharing via social media is cheap. They treat visitors like blank billboards. Billboards <em>just waiting</em> to republish a title and link to their content. These billboards &#8220;drive traffic&#8221; to the content, and raise more billboards to repeat the process. At least that&#8217;s what the marketing plan says will ideally happen. Just one question. At what stage does the <em>actual</em> person come in?</p>
<h3>You Rarely Just &#8220;Do&#8221;</h3>
<p>The genius of people is that they often react to what they experience. It takes a boring person to simply &#8220;Go to the beach&#8221;. <strong>The average person &#8220;Goes to the beach, and has a great time&#8221;</strong> or something similar. Notice the difference?</p>
<blockquote><p>When you make something no one hates, no one loves it. &#8211; Tibor Kalman</p></blockquote>
<p>Complacency should scare you. Reactions are part of how we communicate. Embrace this when adding a share option for your site. Facebook dabbles a bit in this idea by the binary option of &#8220;Liking&#8221; Facebook content. The problem with this on most person sites is that it leaves out a whole range of middle ground. The act of liking (or abstaining from) is not definitive. Does someone chose not to like a post because they had issue with it? Or just because they didn&#8217;t understand it? The absence of feedback in this case is ambiguous.</p>
<p><a href="http://www.hpnotiq.com"><img class="alignnone" title="Advanced Twitter Bar" src="http://buildinternet.s3.amazonaws.com/images/raising-billboards/advanced-twitter-bar.jpg" alt="Advanced Twitter Bar" width="600" height="200" /></a></p>
<p>One of the features that our team was particularly proud of integrating a ways back was the <a title="Share Feedback with Twitter Easily" href="http://buildinternet.com/2010/02/share-feedback-with-twitter-and-the-bit-ly-api/">Twitter feedback bar</a>. You can see an example in use at the bottom of this post. Since including it on our theme, we almost instantly noticed a significant boost in tweets for posts. In contrast, options like &#8220;ShareThis&#8221; have reached a point on par with banner ads. At this rate, will we develop blindness to plug-n-play social media links too?</p>
<p><img class="aligncenter" title="Reactionary Social Media Links" src="http://buildinternet.s3.amazonaws.com/images/raising-billboards/buzzfeed-askmen-examples.png" alt="Reactionary Social Media Links" width="600" height="200" /></p>
<p>In the time since launching the original tutorial, a number of other sites have started to integrate options for meaningful reaction. This means that instead of just reading an article, you can now vote for tone and reaction. You can also see what other people think. Buzzfeed does more of the same.</p>
<h3>But is it any <em>good</em>?</h3>
<p>Don&#8217;t force people to become your billboards. Give them a platform to construct their own way of sharing your content, complete with a full range of reactions. We include negative options in the Twitter feedback bar available on post pages. Saving face is stupid if the result is publishing crap. Negative feedback is just as useful as the positive. Better to have someone tell you via tweet than by wondering where all the traffic went.</p>
<h4>Traffic is a Byproduct</h4>
<p>Don&#8217;t let your site fall into the trap of limited billboard response. It betrays the type of interaction dedicated fans will use. <strong>I don&#8217;t stop reading a blog if one of the articles sucks. Readership is rarely that fragile.</strong> Use the reactions to your advantage. These are the types of share actions that benefit in more than one way. First, the link is shown to more audience. Second, you receive meaningful feedback as to the quality of what was shared. Winning all around.</p>
<p>For your next project, give it a thought. You&#8217;ll see realistic responses, and get one step closer to substantial engagement rather than just unfeeling evangelism.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/buildinternet?a=ZdZ25Smbvjg:p1wkqDmpU30:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=ZdZ25Smbvjg:p1wkqDmpU30:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=ZdZ25Smbvjg:p1wkqDmpU30:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=ZdZ25Smbvjg:p1wkqDmpU30:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=ZdZ25Smbvjg:p1wkqDmpU30:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=ZdZ25Smbvjg:p1wkqDmpU30:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=ZdZ25Smbvjg:p1wkqDmpU30:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=ZdZ25Smbvjg:p1wkqDmpU30:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=ZdZ25Smbvjg:p1wkqDmpU30:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=ZdZ25Smbvjg:p1wkqDmpU30:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/buildinternet/~4/ZdZ25Smbvjg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://buildinternet.com/2011/06/stop-raising-billboards/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		<feedburner:origLink>http://buildinternet.com/2011/06/stop-raising-billboards/</feedburner:origLink></item>
		<item>
		<title>Reading List: The Smashing Book #2</title>
		<link>http://feedproxy.google.com/~r/buildinternet/~3/_7pnl7qe1sQ/</link>
		<comments>http://buildinternet.com/2011/04/reading-list-the-smashing-book-2/#comments</comments>
		<pubDate>Mon, 18 Apr 2011 00:50:28 +0000</pubDate>
		<dc:creator>Zach Dunn</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[Book]]></category>
		<category><![CDATA[Review]]></category>

		<guid isPermaLink="false">http://buildinternet.com/?p=9765</guid>
		<description><![CDATA[Smashing Magazine's latest book release is packed with topics frontend developers and designers will love. Here's our review.]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/631bOnAkJ1DgX5KI9iuUL1wJ6Sg/0/da"><img src="http://feedads.g.doubleclick.net/~a/631bOnAkJ1DgX5KI9iuUL1wJ6Sg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/631bOnAkJ1DgX5KI9iuUL1wJ6Sg/1/da"><img src="http://feedads.g.doubleclick.net/~a/631bOnAkJ1DgX5KI9iuUL1wJ6Sg/1/di" border="0" ismap="true"></img></a></p><h3>Blogs that Publish</h3>
<p>I&#8217;m a little late to the party on this one. When Vitaly contacted us a month ago for feedback on their latest release, I started to read through the book casually between client jobs. A few (well-spent) weeks later, here we are. Ready to give the good word.</p>
<p>It&#8217;s not every day that a blog grows large enough to start its own line of books. When they do, the result is magic. Similar examples can be found with the recent A Book Apart line put out by the same people behind A List Apart. Publishing is a great progression from standard niche blogs.</p>
<p>There are books that teach concrete skills, and there are those that expose you to abstract stuff that sounds impressive. For those looking to build their skill set, this is a common situation when sifting through resources. Substantial content is hard to distinguish from wordy content at times, and even more so when you&#8217;ve just started to learn. Fortunately, certain publishers make this easier for you by developing solid reputations. With this release, Smashing Magazine is slowly becoming one of them.</p>
<p>A good web design book will leave you with some concrete plans, as well as introduce you to more abstract concepts that you can build on in the future. The second Smashing Book is segmented nicely, which means you can jump into any section you want without any issue. All of the chapters are written by folks who pride themselves in being masters of craft for the subject.</p>
<h3>A Look at Content</h3>
<p>This book is definitely more for the UI/UX folks out there. Hardcore development is not a topic that would fit well within the books flow, so you end up with chapters catering more towards the typical frontend developer. As such, certain chapters are more exploratory than applicable; presumably this is to increase general awareness of the platforms without expecting those same people to be responsible for developing.</p>
<p>The graphic design chapters are some of the best introductions to fundamentals to be published in recent memory. I think everyone has accidentally gotten caught up in trend-based design before. You know the situation: using gradients to decorate an otherwise fine layout, or turning buttons into identical matches of those found on Apple&#8217;s website. The graphic design chapter helps distinguish between sensibly made design decisions, and those that just make it &#8220;look good&#8221; at the moment.</p>
<p><img class="aligncenter" title="Chapter 2 in Smashing Book #2" src="http://buildinternet.s3.amazonaws.com/images/reading-list-sm2/smbook-ch2.png" alt="Chapter 2 in Smashing Book #2" width="420" height="595" /></p>
<p>My background is mostly in front-end design, so I may be biased when I say how much enjoyable the usability chapter was. It covered the right bases, especially for those just trying to introduce themselves. Those in digital agencies or web companies will appreciate how candidly the reality of client/project limitations is addressed. Best practice is easy to talk about, but harder to implement successfully when there are other factors in play.</p>
<p><img class="aligncenter" title="Chapter 5 in Smashing Book #2" src="http://buildinternet.s3.amazonaws.com/images/reading-list-sm2/smbook-ch5.png" alt="Chapter 5 in Smashing Book #2" width="420" height="596" /></p>
<p>Christopher Kolb&#8217;s chapter on the application of game design into UI is a fascinating read. This is a design trend you&#8217;ve experienced before without directly noticing. It was a pleasant surprise in topic. Also in this category was Christian Heilmann&#8217;s chapter on warning signs in web development. The introduction is a brilliantly candid summary of what it is like to work on real world projects that haven&#8217;t (and often can&#8217;t) been implemented in 100% proper form.</p>
<p>The chapter on mobile is also a welcome addition. Mobile design and development is one of the largest interactive sections to hit the industry in the past few years. Makes sense to include a new section in this book too. It&#8217;s hard to just be a pure &#8220;website designer&#8221; in today&#8217;s market. If it has a screen and people can interact, it&#8217;s fair game.</p>
<h3>Final Words</h3>
<p>This book isn&#8217;t timeless, but neither is the average website. Like most things associated with the Internet, it will need updating in a few years. In the meantime, use this book to your heart&#8217;s content. <a title="Order the Smashing Book 2" href="https://shop.smashingmagazine.com/smashing-book-2-intl.html" target="_blank">You can get a copy on the official web store</a>. If you already have the book, I would love to hear what you&#8217;re experience was like. Leave a comment if you can!</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/buildinternet?a=_7pnl7qe1sQ:9Ehu9vkLCr4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=_7pnl7qe1sQ:9Ehu9vkLCr4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=_7pnl7qe1sQ:9Ehu9vkLCr4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=_7pnl7qe1sQ:9Ehu9vkLCr4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=_7pnl7qe1sQ:9Ehu9vkLCr4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=_7pnl7qe1sQ:9Ehu9vkLCr4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=_7pnl7qe1sQ:9Ehu9vkLCr4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=_7pnl7qe1sQ:9Ehu9vkLCr4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=_7pnl7qe1sQ:9Ehu9vkLCr4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=_7pnl7qe1sQ:9Ehu9vkLCr4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/buildinternet/~4/_7pnl7qe1sQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://buildinternet.com/2011/04/reading-list-the-smashing-book-2/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		<feedburner:origLink>http://buildinternet.com/2011/04/reading-list-the-smashing-book-2/</feedburner:origLink></item>
		<item>
		<title>Mosaic – Sliding Boxes and Captions jQuery Plugin</title>
		<link>http://feedproxy.google.com/~r/buildinternet/~3/BCSGG98_qsg/</link>
		<comments>http://buildinternet.com/2011/03/mosaic-sliding-boxes-and-captions-jquery-plugin/#comments</comments>
		<pubDate>Wed, 16 Mar 2011 21:36:20 +0000</pubDate>
		<dc:creator>Sam Dunn</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Mosaic]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://buildinternet.com/?p=9718</guid>
		<description><![CDATA[The most popular tutorial on Build Internet is now a jQuery plugin. Welcome aboard, Mosaic.]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/VJBKi9Kq1a42E6E-77bgpPPQQB4/0/da"><img src="http://feedads.g.doubleclick.net/~a/VJBKi9Kq1a42E6E-77bgpPPQQB4/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/VJBKi9Kq1a42E6E-77bgpPPQQB4/1/da"><img src="http://feedads.g.doubleclick.net/~a/VJBKi9Kq1a42E6E-77bgpPPQQB4/1/di" border="0" ismap="true"></img></a></p>
<h3>Sliding Boxes Revisited</h3>
<p>The original <a href="http://buildinternet.com/2009/03/sliding-boxes-and-captions-with-jquery/">sliding boxes tutorial</a> is undoubtedly our <strong>most popular tutorial</strong>, with about 660,000 views as of this post. Given our recent surge in <a title="Totem" href="http://buildinternet.com/project/totem/" target="_blank">releasing</a> <a title="Supersized" href="http://buildinternet.com/project/supersized/" target="_blank">plugins</a>, we decided to add sliding boxes to the roster &#8211; say hello to the Mosaic jQuery plugin.<br />
<a href="http://buildinternet.com/project/mosaic/"><img alt="" src="http://buildinternet.s3.amazonaws.com/images/mosaic-launch/mosaic-postscreen.jpg" title="Mosaic jQuery Plugin" class="alignnone" width="600" height="344" /></a></p>
<h4>Features</h4>
<ul>
<li>Automatically generates sliding boxes &amp; captions</li>
<li>Allows slide &amp; fade animations with custom directions</li>
<li>Preloads images within boxes</li>
<li>Lightweight at ~2kb (minified)</li>
</ul>
<h4>Notes &amp; Comments</h4>
<p>Implementation is fairly easy, I&#8217;ve provided a number of sample configurations in the downloadable file on the <a href="http://buildinternet.com/project/mosaic/">project page</a>. It operates with two panels &#8211; an <em>overlay</em> and a <em>backdrop</em>. The content in the overlay gets repositioned according to the options that you provide. <span class="important">I would suggest starting from the base.html file</span>, as it it a stripped down version which can act as a good foundation for customizations.</p>
<p>If you have any questions or feedback, please leave them below &#8211; it helps the plugin grow.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/buildinternet?a=BCSGG98_qsg:QQW2DkH-SxA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=BCSGG98_qsg:QQW2DkH-SxA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=BCSGG98_qsg:QQW2DkH-SxA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=BCSGG98_qsg:QQW2DkH-SxA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=BCSGG98_qsg:QQW2DkH-SxA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=BCSGG98_qsg:QQW2DkH-SxA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=BCSGG98_qsg:QQW2DkH-SxA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=BCSGG98_qsg:QQW2DkH-SxA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=BCSGG98_qsg:QQW2DkH-SxA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=BCSGG98_qsg:QQW2DkH-SxA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/buildinternet/~4/BCSGG98_qsg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://buildinternet.com/2011/03/mosaic-sliding-boxes-and-captions-jquery-plugin/feed/</wfw:commentRss>
		<slash:comments>162</slash:comments>
		<feedburner:origLink>http://buildinternet.com/2011/03/mosaic-sliding-boxes-and-captions-jquery-plugin/</feedburner:origLink></item>
		<item>
		<title>Supersized 3.1 jQuery Plugin – Fullscreen Background Slideshow with Flickr Support</title>
		<link>http://feedproxy.google.com/~r/buildinternet/~3/I_OBpwX6OYw/</link>
		<comments>http://buildinternet.com/2011/02/supersized-3-1-jquery-plugin-fullscreen-background-slideshow-with-flickr-support/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 03:42:52 +0000</pubDate>
		<dc:creator>Sam Dunn</dc:creator>
				<category><![CDATA[Resources]]></category>
		<category><![CDATA[Flickr]]></category>
		<category><![CDATA[Fullscreen Background]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[Supersized]]></category>

		<guid isPermaLink="false">http://buildinternet.com/?p=9678</guid>
		<description><![CDATA[Supersized just got rewritten from the ground up. It's faster, with more options, animations, and added Flickr support.]]></description>
			<content:encoded><![CDATA[
<p><a href="http://feedads.g.doubleclick.net/~a/GdzNoeEXIDSKf-WnAdwOUEuOWlI/0/da"><img src="http://feedads.g.doubleclick.net/~a/GdzNoeEXIDSKf-WnAdwOUEuOWlI/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/GdzNoeEXIDSKf-WnAdwOUEuOWlI/1/da"><img src="http://feedads.g.doubleclick.net/~a/GdzNoeEXIDSKf-WnAdwOUEuOWlI/1/di" border="0" ismap="true"></img></a></p>
<h3>Hello, Supersized 3.1</h3>
<p><a href="http://buildinternet.com/project/supersized/"><img class="alignnone" title="Visit Supersized Project Page" src="http://buildinternet.s3.amazonaws.com/images/supersized-3-1/supersized-screencap.jpg" alt="" width="600" height="344" /></a></p>
<h4>Features</h4>
<ul>
<li>Resizes images to fill browser while maintaining image dimension ratio</li>
<li>Cycles backgrounds via slideshow with transitions and preloading</li>
<li>Core version is available for those that just want background resizing.</li>
<li>Navigation controls with keyboard support</li>
<li>Integration with Flickr &#8211; pull photos by user, set, or group</li>
<li>Head over to the <a title="Project Page" href="http://buildinternet.com/project/supersized/">project page</a> for all the details.</li>
</ul>
<h4>New in Supersized 3.1</h4>
<ul>
<li>Complete rewrite of the Supersized script.</li>
<li>Automatically adds in required elements.</li>
<li>Added image rendering for faster transition speeds on FF and IE.</li>
<li>Dynamic image handling (no longer relies on predefined ratios).</li>
<li>Unobtrusive backgrounds &#8211; you no longer need to wrap your content in a special div.</li>
<li>Many options added, including fit to screen, keyboard navigation, transition speed, and more.</li>
<li>Created separate script specifically for Flickr &#8211; can pull by user, set, or group.</li>
</ul>
<h3>Upgrading from Version 3.0</h3>
<p>3.1 cleans up a lot of extra code, which means the majority of the upgrade process entails cutting out extra lines. Here&#8217;s the process to upgrade from a clean version 3.0 install:</p>
<ol>
<li>Update the paths to the new JS and CSS files.</li>
<li>Remove the #supersized element and #loading (now called #supersized-loader)</li>
<li>The default image path is &#8220;img/&#8221; &#8211; make sure this matches your setup or change line 56 in supersized.3.1.js</li>
<li>Replace the jQuery which calls Supersized from your page with the new format (&#8220;jQuery(function($){ $.supersized &#8230;&#8221; found in any of the downloadable demos).</li>
</ol>
<p>If you are experiencing trouble upgrading a clean installation feel free to post below in the comments. If you have done a substantial amount of customization and need help, I am available for hire &#8211; details are at the bottom of the <a href="http://buildinternet.com/project/supersized/">project page</a>.</p>
<h3>Comments and Further Development</h3>
<p>If you are going to use the Flickr version of Supersized, you will need to get an API key, <a href="http://www.flickr.com/services/apps/create/">available here</a>. Keep in mind Flickr limits you to 3,600 calls per hour &#8211; so I apologize if the <a href="http://buildinternet.com/project/supersized/flickr/1.0/flickr.html">Flickr demo</a> on the project page goes down.</p>
<p>In order to keep things loading as quickly as possible, if you make any edits to the Supersized javascript file you will want to minify it when you&#8217;re done. There&#8217;s a number of ways to go about this, but I&#8217;ve recently become quite fond of this GUI solution which uses YUI Compressor &#8211; <a href="http://smallerapp.com/" target="_blank">Smaller</a>.</p>
<p>I&#8217;ve added <a href="https://github.com/buildinternet/supersized">Supersized to Github</a>, which is were I will publish minor point releases and field any bug reports.</p>
<p><strong>Thank you for continuing to make Supersized one of the most popular posts on Build Internet.</strong></p>
<p><span class="important">If you have an urgent problem and would like to contact me directly to hire for custom work, please email me at <a href="mailto:sam@onemightyroar.com">sam@onemightyroar.com</a>.</span></p>
<p><em>Banner image provided by <a href="http://www.nonsensesociety.com/2010/12/kitty-gallannaugh/">Kitty Gallannhaugh</a>.<br />
Other photography by <a href="http://www.nonsensesociety.com/2010/12/emily-tebbetts-2/">Emily Tebbetts</a> and <a href="http://www.nonsensesociety.com/2011/02/larissa/">Larissa Felsen</a>.</em></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/buildinternet?a=I_OBpwX6OYw:zc0hV-IgCdA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=I_OBpwX6OYw:zc0hV-IgCdA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=I_OBpwX6OYw:zc0hV-IgCdA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=I_OBpwX6OYw:zc0hV-IgCdA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=I_OBpwX6OYw:zc0hV-IgCdA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=I_OBpwX6OYw:zc0hV-IgCdA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=I_OBpwX6OYw:zc0hV-IgCdA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=I_OBpwX6OYw:zc0hV-IgCdA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/buildinternet?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/buildinternet?a=I_OBpwX6OYw:zc0hV-IgCdA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/buildinternet?i=I_OBpwX6OYw:zc0hV-IgCdA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/buildinternet/~4/I_OBpwX6OYw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://buildinternet.com/2011/02/supersized-3-1-jquery-plugin-fullscreen-background-slideshow-with-flickr-support/feed/</wfw:commentRss>
		<slash:comments>895</slash:comments>
		<feedburner:origLink>http://buildinternet.com/2011/02/supersized-3-1-jquery-plugin-fullscreen-background-slideshow-with-flickr-support/</feedburner:origLink></item>
	</channel>
</rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: enhanced
Database Caching using memcached
Object Caching 704/757 objects using disk: basic

Served from: buildinternet.com @ 2012-02-06 02:01:22 -->

