<?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>Fanzter Blog &#187; Technology</title>
	<atom:link href="http://fanzter.com/blog/category/technology/feed/" rel="self" type="application/rss+xml" />
	<link>http://fanzter.com/blog</link>
	<description>Fanzter is a software development company with a simple mission: to create the world&#039;s best consumer Internet products. This is where the Fanzter team posts company updates, talks about new products, and keeps you up-to-date about our company.</description>
	<lastBuildDate>Fri, 27 Aug 2010 03:34:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>We&#8217;re Fans Too</title>
		<link>http://fanzter.com/blog/2010/06/02/were-fans-too/</link>
		<comments>http://fanzter.com/blog/2010/06/02/were-fans-too/#comments</comments>
		<pubDate>Wed, 02 Jun 2010 19:05:39 +0000</pubDate>
		<dc:creator>Jon Maddox</dc:creator>
				<category><![CDATA[Company News]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://fanzter.com/blog/?p=736</guid>
		<description><![CDATA[At this year&#8217;s D8 Conference the reputable Steve Jobs had this to say during his interview. &#8220;We&#8217;re just people, running this company. We&#8217;re trying to make great products for people. And so, we have at least the courage of our convictions to say, &#8216;we don&#8217;t think this is part of what makes a great product, [...]]]></description>
			<content:encoded><![CDATA[<p>At this year&#8217;s <a href="http://d8.allthingsd.com">D8 Conference</a> the reputable Steve Jobs had this to say during <a href="http://d8.allthingsd.com/speakers/steve-jobs/">his interview.</a></p>
<blockquote><p>&#8220;We&#8217;re just people, running this company. We&#8217;re trying to make great products for people. And so, we have at least the courage of our convictions to say, &#8216;we don&#8217;t think this is part of what makes a great product, so we&#8217;re gonna leave it out.&#8217; That&#8217;s what a lot of customers pay us to do, is to try to make the best products we can. And if we succeed, they&#8217;ll buy them. And if we don&#8217;t, they won&#8217;t.&#8221;</p></blockquote>
<p>I can&#8217;t think of a better way to describe what we&#8217;re doing here at Fanzter. Our number one goal is to make awesome things around contexts that people love.</p>
<p>All of us here at Fanzter are huge fans of <a href="http://coolspotters.com/entertainment/movies">movies</a>, <a href="http://coolspotters.com/celebrities/bands">music</a>, <a href="http://coolspotters.com/entertainment/tv-shows">TV series<a>, <a href="http://coolspotters.com/organizations/leagues">sports</a>, <a href="http://coolspotters.com/products/video-games">video games</a>, <a href="http://coolspotters.com/products/electronics">technology</a>, and other things in pop culture. We want to make products around things we love. I had an iPod when it was a huge brick. I&#8217;ve owned every video game console in history, sometimes more than once. I spent a fortune on the iTunes store the day it came out. I&#8217;ve used every media center platform that exists. I maintain an Xbox Live subscription, not for playing games online, but for access to the media and online content they provide. And I rarely actually use any of it day to day. But I&#8217;ve spent <strong><span class="caps">HOURS</span></strong> playing with them all.</p>
<p>For me, its about the experience. I like to just play with these things. I like to study them. To see what is great, and what sucks. More times than not, things suck.</p>
<p>Here at Fanzter we like to think we know what is great, but more importantly, what sucks. Only in knowing what sucks, can you make something great.</p>
<p>There are a lot of contexts out there that people are passionate about. This is where we will be. We know all too well that fans of movies, tv, sports, etc, are not being served, because we <span class="caps">ARE</span> these people! So we&#8217;re extra motivated to make kick ass things for these fans.</p>
<p>Stick with us, because we have a lot of awesome things planned. We&#8217;ve been dabbling in the <a href="http://fanzter.com/products">iPhone world</a> for the last couple of months but will be shifting to some much bigger things soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://fanzter.com/blog/2010/06/02/were-fans-too/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Push effect: Improving visual feedback for social voting tools with jQuery</title>
		<link>http://fanzter.com/blog/2010/02/04/push-effect-improving-visual-feedback-for-social-voting-tools-with-jquery/</link>
		<comments>http://fanzter.com/blog/2010/02/04/push-effect-improving-visual-feedback-for-social-voting-tools-with-jquery/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 20:21:47 +0000</pubDate>
		<dc:creator>Aaron Weyenberg</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://fanzter.com/blog/?p=580</guid>
		<description><![CDATA[Digging, voting, buzzing, retweeting, liking, bumping, shouting. These ubiquitous social tools have become the de facto mechanism to determine collective popularity. There&#8217;s little variation in terms of visual feedback when you engage these tools to increase an item&#8217;s popularity by one unit. Most just update the value instantly while others (Digg) perform a little fade [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-456" style="padding: 5px 5px 5px 12px; border: 0; float: right;" title="digg.tools" src="http://aaronweyenberg.com/wp-content/uploads/2010/02/digg.tools1.png" alt="digg.tools" width="312" height="204" /></p>
<p>Digging, voting, buzzing, retweeting, liking, bumping, shouting. These ubiquitous social tools have become the de facto mechanism to determine collective popularity. There&#8217;s little variation in terms of visual feedback when you engage these tools to increase an item&#8217;s popularity by one unit. Most just update the value instantly while others (Digg) perform a little fade effect.</p>
<p>Years ago I had done some push effects with live scoring applications for ESPN. I like this form of feedback when a numeric value increments. More recently I had created a UI for the <a href="http://coolspotters.com/movies/iron-man-2/wallpapers/54294">CoolPapers &#8220;like&#8221; tool</a> that uses a similar push effect:</p>
<p><img style="border: 0; float: none;" src="http://img.skitch.com/20100204-ntn16s8f75qhb3g9cxjesufgtb.png" alt="" /></p>
<p>In this tutorial I&#8217;ll create a new social voting tool called <a href="http://aaronweyenberg.com/demos/voteflipper/demo.html">Flippit</a> to demonstrate this:</p>
<p><img class="alignnone size-full wp-image-462" style="border: 0; float: none;" title="preview" src="http://aaronweyenberg.com/wp-content/uploads/2010/02/preview1.png" alt="preview" width="327" height="107" /></p>
<p>See a demo <a href="http://aaronweyenberg.com/demos/voteflipper/demo.html">here</a>.</p>
<h3>Markup</h3>
<p>Like anything, this can be done a number of ways. There&#8217;s not much semantic relevance here, so any sensible structure will do. The only real requirement is to have enough elements for styling and animation.</p>
<pre class="brush: xhtml">
<div class="votecard">
<div><em><strong>293</strong><span>Flips</span></em></div>
</div>

<a class="voteaction">Flippit</a></pre>
<h3>Background &amp; CSS</h3>
<p>I&#8217;ll just use one sprite for this tool. The top will serve as the background for the numeric value, the bottom area gives us backgrounds for the unclicked, hover and clicked states of the action button.</p>
<p><img style="border: 0; float: none;" title="spritepreview" src="http://aaronweyenberg.com/wp-content/uploads/2010/02/spritepreview.png" alt="spritepreview" width="243" height="403" /></p>
<p>There&#8217;s nothing too tricky or innovative in the CSS below. However, the key technique here is the overflow:hidden rule on the &#8220;votecard&#8221; class&#8217;s child div (line 10). This will effectively serve as a mask which the animating objects will move across. More on that later.</p>
<pre class="brush: css">.votecard {
	background: url(images/sprite.png) no-repeat 0 0;
	padding: 4px;
	width: 63px;
	height: 43px;
	text-align: center;
}
.votecard div {
	position: relative;
	overflow: hidden;
	width: 63px;
	height: 43px;
}
.votecard em {
	display: block;
	position: relative;
	width: 63px;
	height: 33px;
	padding: 6px 0 6px 0;
	font: normal 24px/24px "Helvetica Neue","Helvetica","Arial",Sans-serif;
	color: #45453f;
}
.votecard strong {
	font-weight: bold;
}
.votecard span {
	font-size: 10px;
	line-height: 10px;
	display: block;
	color: #9a9a94;
}
a.voteaction {
	margin: 0 0 0 3px;
	display: block;
	text-indent: -9999px;
	width: 71px;
	height: 21px;
	background: url(images/sprite.png) no-repeat -3px -75px;
}
a.voteaction:hover {
	outline: none;
	background-position: -3px -54px;
}
a.voted,
a.voted:hover {
	outline: none;
	background-position: -3px -96px;
	cursor: default;
}</pre>
<h3>jQuery</h3>
<p>Now we&#8217;ll have some real fun and wire this up.</p>
<pre class="brush: javascript">$(document).ready(function() {
	/* create a node for the flip-to number */
	$(".votecard em").clone().appendTo(".votecard div");
	/* increment that by 1 */
	var node = $(".votecard em:last strong")
	node.text(parseInt(node.text())+1);

	function flip(obj) {
		obj.prev().find("em").animate({
			top: '-=45'
		}, 200);
		obj.toggleClass("voted",true);
	}

	$('.voteaction').bind({
	  click: function(event) {
	    event.preventDefault()
	  },
	  mouseup: function() {
	    flip($(this));
		$(this).unbind('mouseup');
	  }
	});

});</pre>
<h4>Content duplication</h4>
<p>You might have wondered why the next number (294) was not included in the original markup shown earlier. The answer is found in line 3 through 6. This code duplicates the &lt;em&gt; node containing the current vote value (293) then increments that value by one. This new &lt;em&gt; node is forced to flow beneath the original one, but is hidden from view as specified in the CSS above. Here&#8217;s what your browser sees after this code runs:</p>
<p><img class="alignnone size-full wp-image-481" style="border: 0; float: none;" title="duplication" src="http://aaronweyenberg.com/wp-content/uploads/2010/02/duplication.png" alt="duplication" width="342" height="211" /></p>
<h4>Button events</h4>
<p>Two events will be bound to the &#8220;Flippit&#8221; button, and you&#8217;ll see why these events are kept separate shortly. The default browser response is disabled in the <em>click</em> event. The <em>mouseup</em> event handler will call the <em>flip()</em> function which will perform the animation. It is important to allow this function to be called once only. After the user has initiated a &#8220;flip&#8221;, this action should be immediately disabled.</p>
<p>Had we grouped the <em>event.preventDefault()</em> together with the <em>flip() </em>call in a single button event (on <em>click</em> for example), we&#8217;d reinstate the default browser response when we unbound that event from the button. This would likely result in a page refresh if the user clicked the button twice. Keeping these events separate lets us unbind just the flipping action while preserving <em>event.preventDefault()</em>.</p>
<h4>Flip tha script <a href="http://www.wikihow.com/Survive-a-Freestyle-Rap-Battle">*</a></h4>
<p>The <em>flip()</em> function&#8217;s task is to select both &lt;em&gt;s and then move them up a distance of 45 pixels. Note also that this function takes as an argument a jQuery object reference to the button which called it. From this, we can traverse to select the &lt;em&gt;s we want to animate. The top &lt;em&gt; will slide out of view, while the jQuery generated one slides into view. The process is completed by toggling the button&#8217;s class name to &#8220;voted&#8221;.</p>
<h3>What&#8217;s this good for?</h3>
<p>This adds a little tactility to these contraptions. It reinforces the notion that you just impacted a piece of content on the web, if only by one solitary unit. If it&#8217;s good enough for sports apps, it&#8217;s good enough for anything else.</p>
<p>This technique could be used for anything where a numeric value increases or decreases whether it results from user interaction or not (as in live scoreboards).</p>
<p><strong><a href="http://aaronweyenberg.com/demos/voteflipper/demo.html">View the demo</a> </strong>(Works in IE6, IE7, IE8, Safari 4, Chrome, Firefox 3.6)</p>
<p>Reposted from <a href="http://aaronweyenberg.com/452/push-effect-improving-visual-feedback-for-social-voting-tools-with-jquery">aaronweyenberg.com</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://fanzter.com/blog/2010/02/04/push-effect-improving-visual-feedback-for-social-voting-tools-with-jquery/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Creative Version Control</title>
		<link>http://fanzter.com/blog/2010/01/25/creative-version-control/</link>
		<comments>http://fanzter.com/blog/2010/01/25/creative-version-control/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 21:59:35 +0000</pubDate>
		<dc:creator>Aaron Weyenberg</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://fanzter.com/blog/?p=477</guid>
		<description><![CDATA[The 17th Century English historian Thomas Fuller once said that “all things are difficult before they are easy.” Things like the reflecting telescope (Newton) the steam turbine (Branca), and the adding machine (Pascal) were all inventions to make life easier back in Fuller’s time. In this millennium, one device I use daily (generously gifted to [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-502 alignright" style="float: right; margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 15px;" title="Thomas Fuller and my Krups egg cooker" src="http://www.images.fanzter.com/blog/fuller_eggcooker.jpg" alt="Thomas Fuller and my Krups egg cooker" width="260" height="150" /></p>
<p>The 17th Century English historian <a href="http://en.wikipedia.org/wiki/Thomas_Fuller">Thomas Fuller</a> once said that “all things are difficult before they are easy.” Things like the reflecting telescope (Newton) the steam turbine (Branca), and the adding machine (Pascal) were all inventions to make life easier back in Fuller’s time. In this millennium, one device I use daily (generously gifted to me by a colleague here at Fanzter) is an <a href="http://www.amazon.com/Krups-230-70-Egg-Express-Cooker/dp/B00005KIRS">amazing Krups egg cooker</a>. Now I enjoy perfectly hard boiled eggs in 15 effortless minutes using only 3 ounces of water. I put the eggs and water in the device, turn it on and forget about it until the buzzer sounds. The traditional way of hard boiling eggs offers nothing but inconvenience to me now. The new way is expedient. It’s easy. I can’t imagine making a hard boiled egg the old way.</p>
<p>Such is the sentiment for version control among developers. Sure, a developer could sit down and write unversioned code day to day, but few developers worth their salt would ever recommend that approach. And multiple developers working collaboratively? Out of the question. Here at Fanzter, we have migrated from SVN to Git for all our products. While its learning curve is a little steeper than SVN, the benefits are worth the climb. But is versioning your work just for developers and engineers?</p>
<h3>Designers as team members</h3>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 142px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">My creative career spans the gamut (pun fully intended) from tiny design agencies to art direction in creative teams designing for over 20 million unique users per month. One observation has remained relatively constant throughout these environments: Creatives tend to operate as individuals, developers usually operate in small squads. Of course there are some exceptions to this precept, but they’re sporadic in my view.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 142px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">This isn’t to say that creatives don’t often draw upon each other for inspiration, influence and feedback. I’m focusing on the actual modus operandi of how the work is generated, stored and revised.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 142px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Creatives: individualism, supposition, subjective leaning, binary files</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 142px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Developers: collaboration, efficiency, objective leaning, plain-text files</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 142px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">It may be unsurprising that designers are generally unreceptive to version control systems, even with a GUI to take the geekery out of using the command line.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 142px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Developers have unsurprisingly capitalized on their own strengths by creating robust version control systems for themselves. Awesome. But how can creatives be more integrated?</div>
<p>My creative career has taken turns through tiny design agencies to art direction in creative groups designing for over 20 million unique users per month. One observation has remained relatively constant throughout these environments: Creatives tend to operate as individuals, developers usually operate in small squads. Of course there are some exceptions to this precept, but they’re sporadic in my view. This isn’t to say that creatives don’t often draw upon each other for inspiration, influence and feedback. I’m focusing on the actual modus operandi of how the work is generated, stored and revised.</p>
<p>Here&#8217;s a rough, unscientific representation of these dynamics at Fanzter:</p>
<p><img class="alignnone size-full wp-image-492" style="border: 0; padding: 0; margin-bottom: 9px;" title="blog-post-chart" src="http://www.images.fanzter.com/blog/blog-post-chart.png" alt="blog-post-chart" width="549" height="444" /></p>
<p>Developers have unsurprisingly capitalized on their own strengths by creating robust version control systems for themselves. Designers are generally unreceptive to this way of storing and revising their work, even with a GUI to take the geekery out of using a command line. But how can they be more integrated?</p>
<h3>Creative crossover</h3>
<p>While many teams include those whose prime skill is to convert mockups into something a developer can wire together, many creative types can (and often prefer) to translate their own artistic efforts into well-formed, semantic XHTML architecture and CSS. Some go as far as to mock the intended UI behaviors using popular Javascript libraries like jQuery, or even write custom scripts themselves. All well and good. But even if these files are created and managed individually, they can and should be versioned.</p>
<p><strong>The moment a designer starts working with plain-text files, they have become a development squad member.</strong></p>
<p><strong></strong>This is the moment to embrace version control. It’s a transient state, but it’s reality.</p>
<p>At Fanzter, every static XHTML mock is stored in the dev repository. This includes those mocks that are just exploratory and never see real development time. They also reference the same versioned CSS and other dependencies as files in the main dev repo do. This ensures that styling revisions to a mock never veer out of sync. It’s clean, it’s decentralized, it’s protected, and developers aren’t thrown any surprises.</p>
<h3>Binary art files</h3>
<p>Version control products like Git can store these files. Fanzter maintains a repo for key art source (.psd, .ai, and other binary formats) for all our products. It’s a bit of a tough sell for creatives to use these source control repos for art files, so there are some promising VC products available that may work well for those primarily working with these kinds of files. <a href="http://pixelnovel.com/timeline/">Timeline</a> offers version control specifically for Photoshop using SVN, and <a href="http://www.gridironsoftware.com/products/flow.html">Gridiron Flow</a> lets you visually see how your art files are related and how they’ve changed.</p>
<p>But the essential distinction remains: design work is generally not socially collaborative, so the appeal for designers to faithfully use VC products may still be some distance away.</p>
<p>How does your creative team handle their own group&#8217;s versioning? If there is critical source that is shared among other groups, how is it organized to maintain a sensible work flow? I look forward to the day when filenames like mockup05_revised_final_reallyfinal.psd are left in the dustbin of antiquity&#8230; but things are often hard before they are easy.</p>
]]></content:encoded>
			<wfw:commentRss>http://fanzter.com/blog/2010/01/25/creative-version-control/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Fanzter Tech 2009</title>
		<link>http://fanzter.com/blog/2009/12/31/fanzter-tech-2009/</link>
		<comments>http://fanzter.com/blog/2009/12/31/fanzter-tech-2009/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 18:50:27 +0000</pubDate>
		<dc:creator>Joshua Warchol</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://fanzter.com/blog/?p=470</guid>
		<description><![CDATA[This being my first post to the Fanzter blog, allow me to introduce myself. My name is Joshua Warchol and I am a Senior Software Engineer at our Collinsville, CT office. I joined Fanzter in December 2008, making 2009 my first full year with the team. I&#8217;d like to look back on 2009 from a [...]]]></description>
			<content:encoded><![CDATA[<p>This being my first post to the Fanzter blog, allow me to introduce myself. My name is Joshua Warchol and I am a Senior Software Engineer at our Collinsville, CT office. I joined Fanzter in December 2008, making 2009 my first full year with the team. I&#8217;d like to look back on 2009 from a technology perspective and see what Fanzter has been up to &#8220;under the covers.&#8221; The past year has been terrific for <a title="Coolspotters" href="http://coolspotters.com" target="_blank">Coolspotters</a> with raw growth that I&#8217;m very proud of and a ton of very active new users spotting away. We&#8217;ve been doing a few things on the tech side to keep that going smoothly.</p>
<p>All of our sites are hosted &#8220;in the cloud&#8221; on <a title="Amazon Elastic Compute Cloud" href="http://aws.amazon.com/ec2/" target="_blank">Amazon&#8217;s EC2 service</a>. Because of that we&#8217;ve been able to grow our network organically as needed. Early in the year we decided a dedicated caching server (<a title="Memcached" href="http://memcached.org/" target="_blank">memcache</a>) was needed, and within hours it was up and running. Coolspotters depends heavily on our search server running the <a title="Apache Solr" href="http://lucene.apache.org/solr/" target="_blank">Apache Solr search engine</a>. Mid-year we found it needed a little more juice, so without much more than a reboot we more than doubled that server&#8217;s available resources. These flexibility and agile tools have allowed us to grow and improve the servers without needing to dedicate full-time resources to it. More time to develop cool new features!</p>
<p>We&#8217;re working on a number of new projects, some of which you may have heard about in earlier blog posts, others you really should check back to hear about soon. An interesting part of that has been the opportunity to explore technologies more deeply. Coolspotters has always used software libraries to resize photos our members post so they fit in all the different places photos are shown on the site. Up until the summer of 2009 that work was largely done with just a few configuration settings on some stock open source software (<a title="Attachment_fu" href="http://github.com/technoweenie/attachment_fu" target="_blank">attachment_fu</a>, <a title="RMagick" href="http://rmagick.rubyforge.org/" target="_blank">rmagick</a>). But more discrete requirements made it worthwhile for us to go deeper into the tools and make our use of them more flexible. We developed custom recipes for manipulating images to optimize them for the platforms they&#8217;ll be seen on, and to make beautiful composites for use in our publishing tools. It took a team effort to hunt down tricky little problems along the way and teamwork like that is what I love about our crew.</p>
<p>One other big push in 2009 was to start making the awesome spots by our community available on other social media sites. As they say, &#8220;Go big or go home&#8221;, so we started with publishing to <a title="Coolspotters Facebook page" href="http://www.facebook.com/coolspotters" target="_blank">Facebook</a> and <a title="Coolspotters Twitter Account" href="http://twitter.com/coolspotters" target="_blank">Twitter</a>. We&#8217;ve added associations within our data to link profiles of celebrities and brands to their social media identities (Twitter accounts, Facebook pages, etc) and are able to intelligently mention who a post refers to in context, with a link back to the spot for more details. It was a trying process to learn the ins and outs of several very different publishing interfaces simultaneously, but the results are proving it worthwhile. Most of our posts to these social networking sites are part of our automated publishing tools, with editorial involvement to ensure we&#8217;re posting what many followers are interested in. Our work so far has only scratched the surface of what&#8217;s possible, so definitely become a fan of <a title="Coolspotters Facebook page" href="http://www.facebook.com/coolspotters" target="_blank">Coolspotters on Facebook</a> and follow us on Twitter (<a title="Coolspotters Twitter Account" href="http://twitter.com/coolspotters" target="_blank">@coolspotters</a>) to see what comes next.</p>
<p>2009 brought new faces to the team, while some shook hands and bid farewell, and all the while Coolspotters grew and grew. Some of the days were very long, but the year flew by. It&#8217;s hard to believe 2010 is tomorrow, but I know the best is yet to come.</p>
]]></content:encoded>
			<wfw:commentRss>http://fanzter.com/blog/2009/12/31/fanzter-tech-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello Again</title>
		<link>http://fanzter.com/blog/2009/12/14/hello-again/</link>
		<comments>http://fanzter.com/blog/2009/12/14/hello-again/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 00:18:52 +0000</pubDate>
		<dc:creator>Jon Maddox</dc:creator>
				<category><![CDATA[Coolspotters]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://fanzter.com/blog/?p=276</guid>
		<description><![CDATA[It’s been a busy 6 months since I joined Fanzter. Things aren&#8217;t slowing down, so I thought I’d finally take a second to introduce myself. Who Am I? My name is Jon Maddox, I live in Richmond, Va. I&#8217;m a software developer that loves building great products. You can find a little more about me [...]]]></description>
			<content:encoded><![CDATA[<p>It’s been a busy 6 months since I joined Fanzter. Things aren&#8217;t slowing down, so I thought I’d finally take a second to introduce myself.</p>
<h4>Who Am I?</h4>
<p>My name is Jon Maddox, I live in Richmond, Va. I&#8217;m a software developer that loves building great products. You can find a little more about me <a href="http://jonmaddox.com">here</a>, you can <a href="http://www.google.com/search?client=safari&amp;rls=en&amp;q=jon+maddox&amp;ie=UTF-8&amp;oe=UTF-8">Google</a> me, or follow me at <a href="http://twitter.com/maddox">Twitter</a> and <a href="http://github.com/maddox">GitHub</a>. For now, lets talk about something that&#8217;s actually interesting&#8230;.like why I&#8217;m at Fanzter and what I&#8217;ll be doing.</p>
<h4>Why Am I Here?</h4>
<p>I am currently the <a href="http://fanzter.com/about/jon-maddox">VP of Technology and Product Development</a> for Fanzter. I joined Fanzter through the acquisition of my previous company, Mustache, Inc. So why am I here? Well, in all my years of using/playing with/developing technology, I’ve come to have pretty high standards and taste. I know what&#8217;s good and I know what&#8217;s not-so-good. In a nutshell, I know what sucks. And the inverse of that, I know what’s awesome &#8212; the work Fanzter is doing is AWESOME. So my role here is to help them finish their current product roadmaps and help invent future products. So while I’ll still be developing, I’ll also be making some pretty crucial decisions on our product roadmaps.</p>
<p><a href="http://coolspotters.com">Coolspotters.com</a> was already a really amazing product before I joined the team. I wouldn’t be here if it wasn’t. But, the beauty of Coolspotters is, that it’s a rooted product that has the ability to scale out in a million different directions. The hardest part is to control those directions. So one thing I’ll be doing is helping to determine which of those directions we actually act on, and in what order. All of those decisions will be based on 3 things:</p>
<ul style="list-style: disc; margin: 0 0 0 15px;">
<li style="margin: 0 0 1em 0;line-height: 1.5em"><strong>Time to Develop / Value</strong> &#8211; The old ‘low hanging fruit’ plan. Being a small team, we have to pick and choose our next gen features wisely. The last thing we want to do is spend months on a feature that lends nothing to the entire site. It’s important that we we balance how awesome a feature will be for users with the length of time it will take to develop.</li>
<li style="margin: 0 0 1em 0;line-height: 1.5em"><strong>Does it make Coolspotters easier to use?</strong> &#8211; Coolspotters is a pretty massive site. If time isn’t taken to examine a feature closely, it’d be super easy to junk it up. It’s important to make sure each new feature fits into the flow of Coolspotters easily. Anyone can add feature after feature. But without a clear understanding and fit for that feature, you end up with super bloat. We want to make Coolspotters as user friendly to browse as we can.</li>
<li style="margin: 0 0 1em 0;line-height: 1.5em"><strong>Does it make Coolspotters’ data more expressive?</strong> &#8211; Coolspotters hosts an enormous amount of data. Awesome data. This has the potential to get you lost pretty easily. It’s important for us that Coolspotters data is understandable and obvious. Any new feature has to improve this usability, not make it more hectic. </li>
</ul>
<h4>Etc.</h4>
<p>During all of this, I’m also working on some pretty awesome internal tools, and a iPhone app here and there, that help the Fanzter family of products become even better. But more on that later…</p>
]]></content:encoded>
			<wfw:commentRss>http://fanzter.com/blog/2009/12/14/hello-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Behind the Scenes: The Coolspotters Stack</title>
		<link>http://fanzter.com/blog/2009/08/19/behind-the-scenes-the-coolspotters-stack/</link>
		<comments>http://fanzter.com/blog/2009/08/19/behind-the-scenes-the-coolspotters-stack/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 21:46:02 +0000</pubDate>
		<dc:creator>Jon Ferry</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://fanzter.com/blog/?p=254</guid>
		<description><![CDATA[I always find it interesting to see how start-ups handle growth and scaling. That&#8217;s part of the reason why I joined the Fanzter team, so I could see first-hand the analysis, planning, and execution behind scaling technology. I thought I&#8217;d take some time to give back to the community and share the current technology stack [...]]]></description>
			<content:encoded><![CDATA[<p>I always find it interesting to see how start-ups handle growth and scaling. That&#8217;s part of the reason why I joined the <a href="http://fanzter.com">Fanzter</a> team, so I could see first-hand the analysis, planning, and execution behind scaling technology. I thought I&#8217;d take some time to give back to the community and share the current technology stack behind <a href="http://coolspotters.com">Coolspotters</a>. Moving forward, we&#8217;ll be using this space to discuss the pros/cons of new technologies we&#8217;re researching and the decisions we make along the way.</p>
<p><strong>Where We Are</strong></p>
<p><a href="http://coolspotters.com">Coolspotters</a>, our flagship product, was built using <a href="http://rubyonrails.org">Ruby on Rails</a> and runs on <a href="http://www.modrails.com">Phusion Passenger</a> application servers. Traffic is balanced using <a href="http://haproxy.1wt.eu">HAProxy</a>. We use <a href="http://www.mysql.com">MySQL</a> for storing all spot, profile, comment, and user data; everything except images. To increase performance and reduce load on our databases, we aggressively cache our data using <a href="http://www.danga.com/memcached">Memcached</a>. About 50% of Coolspotters activity hits cache. All searches, including site search and form auto-completes, are run against a <a href="http://lucene.apache.org/solr">Solr</a> search server.</p>
<p>All Coolspotters servers are hosted on <a href="http://aws.amazon.com/ec2">Amazon&#8217;s EC2</a> service. This allows us to scale quickly and perform reliably while keeping our costs down. All MySQL data is stored using <a href="http://aws.amazon.com/ebs">Amazon&#8217;s EBS</a> which provides snapshots several times a day. So should anything bad happen, we can restore our database quickly. I mentioned above that all data except images was stored in MySQL. For images, we use <a href="http://aws.amazon.com/s3">S3</a> for storage and <a href="http://aws.amazon.com/cloudfront">Amazon&#8217;s CloudFront</a> for delivery from several locations around the globe. All of our Amazon services are configured, deployed, and managed using <a href="http://www.rightscale.com">RightScale</a>.</p>
<p><strong>Future Plans</strong></p>
<p>We&#8217;re always trying to create a better experience for our users. This involves careful analysis of our infrastructure, identifying areas that need improvement, creating solutions, and then executing. One area we&#8217;ve identified as needing improvement is search. The indexing time of our current solution, Solr, isn&#8217;t optimal. Since search is tied into so many aspects of <a href="http://coolspotters.com">Coolspotters</a>, we know we need to improve this to get the user experience we want. We&#8217;ve been experimenting with <a href="http://www.sphinxsearch.com">Sphinx</a> as a replacement and have been pleased with the results so far.</p>
<p>Another area we are looking to optimize is image encoding, storage and delivery. Currently, most of the media uploaded to <a href="http://coolspotters.com">Coolspotters</a> are images, so any improvement we make to speed up encoding and rendering time has a great impact on the entire site.</p>
<p>We&#8217;re looking forward to sharing more about the technical aspects of our products and what goes on behind the scenes here at <a href="http://fanzter.com">Fanzter</a>.</p>
<p>-Jon</p>
]]></content:encoded>
			<wfw:commentRss>http://fanzter.com/blog/2009/08/19/behind-the-scenes-the-coolspotters-stack/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
