<?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>The Imgur Blog</title>
	<atom:link href="http://imgur.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://imgur.com/blog</link>
	<description></description>
	<lastBuildDate>Tue, 28 May 2013 23:02:09 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Tech Tuesday Takeover: Self-Serve Ads</title>
		<link>http://imgur.com/blog/2013/05/28/tech-tuesday-takeover-self-serve-ads/</link>
		<comments>http://imgur.com/blog/2013/05/28/tech-tuesday-takeover-self-serve-ads/#comments</comments>
		<pubDate>Tue, 28 May 2013 22:26:44 +0000</pubDate>
		<dc:creator>Sarah</dc:creator>
				<category><![CDATA[Features]]></category>
		<category><![CDATA[News]]></category>
		<category><![CDATA[Tech Tuesday]]></category>

		<guid isPermaLink="false">http://imgur.com/blog/?p=2344</guid>
		<description><![CDATA[Oh no! The Imgur sales guys have hijacked Tech Tuesday! Today we are going to talk a little about how we handle our advertising business. Don’t panic, this post will cover some new ad technology that we are implementing today in the hope of improving the overall role that ads have on our site. As [...]]]></description>
				<content:encoded><![CDATA[<p>Oh no! The Imgur sales guys have hijacked Tech Tuesday! Today we are going to talk a little about how we handle our advertising business. Don’t panic, this post will cover some new ad technology that we are implementing today in the hope of improving the overall role that ads have on our site. </p>
<p>As many of you know, we are an independent bootstrapped company.  Since we offer a free service, understandably, people always want to know how we keep the lights on, pay our ginormous hosting bills and still manage to keep the Imguraffe well fed. </p>
<p>We are able to support the company with revenue generated from ad sales, <a href="https://imgur.com/register/upgrade">Pro accounts</a>, <a href="https://www.mashape.com/imgur/apiv3#!documentation">commercial hosting</a> and schwag from <a href="http://store.imgur.com/">the store</a>.  A sincere thanks to all of you that support us through these paid products or decide to not use Adblock while browsing Imgur! </p>
<p>On the ad sales side, we work with large branded advertisers as well as ad networks. Ad networks are third-party companies that work with thousands of websites and hundreds of advertisers. They act as the middleman, bringing Imgur ad campaigns from advertisers we don’t work with directly. Although we have very strict guidelines for the types of ads we accept (only two formats, no auto-sound ads, no auto-expanding ads, no pop-overs or unders), we can’t always identify every campaign that’s running. Even with a ton of screening mechanisms in place, sometimes bad ads sneak through. Please know we hate these ads, too! We use every report we get through support@imgur.com to track down the offending networks and campaigns and squash them as soon as we can.   </p>
<p>Ads play an important role in supporting the site, but we would prefer that they add value, or at least not detract from your experience.  As part of our ongoing effort to maintain better control of our ads and to improve our ad quality, we are looking to develop direct relationships with our advertisers. To forward that goal we are excited to announce a new self-serve ad platform. This new system will allow you (or your company) to easily setup an ad campaign that will be displayed to your fellow Imgurians. </p>
<p>How does it work? Easy.</p>
<p>1.	Visit our <a href="http://imgur.com/advertise/selfservicedisplay">self-service page</a><br />
2.	Choose to target US only or the entire world<br />
3.	Select your budget<br />
4.	Upload your ad (or you can create one on the platform)<br />
5.	Enter payment details and submit</p>
<p><img src="http://i.imgur.com/XmFHBsbl.png" alt="" /></p>
<p>After a quick review to ensure that the creative looks good and your landing page is working, we will set the campaign live, typically the same day. </p>
<p>Aside from knowing that our community is full of awesome, funny, good-natured folks that love cat GIFs, we have also provided a few quick stats about our audience. If you are interested in targeting a specific geography (city or country) or if have any other questions about display ads or sponsored image ads please email us at sales@imgur.com. </p>
<p>75M+ unique visitors (almost 50M from US)<br />
340M total visits per month<br />
4.1B page views per month<br />
70% Male<br />
Over 50% Ages 18-34</p>
<p>Matt<br />
Chief Operating Officer, Imgur<br />
<img src="http://i.imgur.com/QMht5M2l.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://imgur.com/blog/2013/05/28/tech-tuesday-takeover-self-serve-ads/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Tech Tuesday: jQuery DOM performance</title>
		<link>http://imgur.com/blog/2013/05/21/tech-tuesday-jquery-dom-performance/</link>
		<comments>http://imgur.com/blog/2013/05/21/tech-tuesday-jquery-dom-performance/#comments</comments>
		<pubDate>Tue, 21 May 2013 16:41:35 +0000</pubDate>
		<dc:creator>Sarah</dc:creator>
				<category><![CDATA[Tech Tuesday]]></category>

		<guid isPermaLink="false">http://imgur.com/blog/?p=2288</guid>
		<description><![CDATA[jQuery is called the “write less, do more” JavaScript framework. Invented by a fellow alumnus of RIT John Resig in 2006, it has changed the face of JavaScript development forever. Here at Imgur we use a lot of jQuery because it really does accomplish its aims and makes a lot of things pretty simple. The [...]]]></description>
				<content:encoded><![CDATA[<p>jQuery is called the “write less, do more” JavaScript framework. Invented by a fellow alumnus of RIT John Resig in 2006, it has changed the face of JavaScript development forever. Here at Imgur we use a lot of jQuery because it really does accomplish its aims and makes a lot of things pretty simple. The simplicity comes at a cost, however. jQuery is not <em>nearly</em> as fast as native DOM. Because it is a library sitting on top of the native DOM, it can never be as fast, and in certain contexts the performance penalty can become quite burdensome. We’ll examine one such context here.</p>
<p>If you’ve ever loaded a page on Imgur with a lot of comments, you’ll notice that it’s quite slow right now. We’re working to fix that, and part of that solution is sending comment data to the web browser to build the tree of comments rather than building it on our servers and sending out the result to you. By doing that, we off load a lot of the processing power to the web browser and also can utilize caching to make it even faster. Some pages can have a lot of comments to lay out &#8211; thousands <a href="http://imgur.com/gallery/bdBoa">in some cases</a>, and each comment contains at least 19 elements, so we could be laying out around ~19,000 elements. Whether we do that in jQuery or native DOM is a choice: is the benefit of jQuery (“write less”) worth the performance penalty? Let’s examine the performance penalty to decide.</p>
<p>I wrote a small library called <a href="https://github.com/jacobgreenleaf/ThinDOM">ThinDOM</a> that sits on top of the native DOM methods and lets you do fancy chaining like jQuery. I’ve written a <a href="http://jsfiddle.net/rRFgz/12/">test suite</a> to examine the performance characteristics of jQuery vs. using innerHTML vs. ThinDOM, and through the wonder of technology you too can replicate my results! Science!<br />
<center><br />
<img src="http://i.imgur.com/Jl3kpm.jpg" alt="" /><br />
</center><br />
The test page simulates very closely the actual process involved in building each caption. The results, though not expected, are a bit shocking in the differential.<br />
<center><br />
<img src="http://i.imgur.com/nFw39JPl.png" alt="" /><br />
</center><br />
Happily jQuery is getting better over time, but its performance is still lacking. The InnerHTML method, though fast, is not quite as fast as using the native DOM methods, and the difference is statistically significant (p < 2.2 E-16). ThinDOM is about twelve times faster than jQuery 2.0 edge. </p>
<p>jQuery, like all abstractions, <a href="http://www.joelonsoftware.com/articles/LeakyAbstractions.html">leaks</a>. The promise of jQuery is that you don’t need to know about DOM, you just need to know about HTML and JavaScript, but it leaks because, if I know a bit about DOM, I can write a library that is an order of magnitude faster, and, if I don’t know about DOM, then my code is going to be awfully slow. Knowing when to use jQuery is knowing when you aren’t going to be blindsided by these performance issues, or when the performance penalty is less than the cost in developer time &#8211; time spent writing the code. </p>
<p>On a site like Imgur with sometimes hundreds of thousands of people hitting images with hundreds of comments, even a small performance gain can be “worth it” since developer time is averaged out over every user. As we implement this feature over the next few weeks we hope this should make captions feel much more responsive, especially on more popular images. </p>
<p>I ran all tests on a machine with a Core i5 760, 16 GB of RAM, on Windows 7 SP1 on Google Chrome 26.0.1410.64 m. </p>
<p>Jake<br />
Front End Engineer, Imgur<br />
<img src="http://i.imgur.com/iA5SsHCl.jpg?1" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://imgur.com/blog/2013/05/21/tech-tuesday-jquery-dom-performance/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Alan takes over the Imgur Twitter!</title>
		<link>http://imgur.com/blog/2013/05/20/alan-takes-over-the-imgur-twitter/</link>
		<comments>http://imgur.com/blog/2013/05/20/alan-takes-over-the-imgur-twitter/#comments</comments>
		<pubDate>Mon, 20 May 2013 22:14:12 +0000</pubDate>
		<dc:creator>Sarah</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://imgur.com/blog/?p=2273</guid>
		<description><![CDATA[Join Alan Schaaf, Founder of Imgur, this Wednesday (5/22) at 4PM PST for an ask me anything&#8211;Twitter style! Alan will be taking over the official Imgur twitter (@Imgur) to answer your questions about Imgur, bombard you with cat GIFs, give you relationship advice, or tell you about his favorite images. The choice is yours. Follow [...]]]></description>
				<content:encoded><![CDATA[<p>Join Alan Schaaf, Founder of Imgur, this Wednesday (5/22) at 4PM PST for an ask me anything&#8211;Twitter style! Alan will be taking over the official Imgur twitter (<a href="http://twitter.com/imgur">@Imgur</a>) to answer your questions about Imgur, bombard you with cat GIFs, give you relationship advice, or tell you about his favorite images. The choice is yours. </p>
<p>Follow the conversation by using #AskImgur.</p>
<p><a href="https://twitter.com/imgur" class="twitter-follow-button" data-show-count="false" data-size="large">Follow @imgur</a><br />
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script></p>
<p>Now, here&#8217;s a cute sloth:<br />
<img src="http://i.imgur.com/Es9Bmgyl.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://imgur.com/blog/2013/05/20/alan-takes-over-the-imgur-twitter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tech Tuesday: Conception of an Icon</title>
		<link>http://imgur.com/blog/2013/05/14/tech-tuesday-conception-of-an-icon/</link>
		<comments>http://imgur.com/blog/2013/05/14/tech-tuesday-conception-of-an-icon/#comments</comments>
		<pubDate>Tue, 14 May 2013 17:51:20 +0000</pubDate>
		<dc:creator>Sarah</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[Tech Tuesday]]></category>

		<guid isPermaLink="false">http://imgur.com/blog/?p=2249</guid>
		<description><![CDATA[In the official Imgur logo, the &#8216;i&#8217; is the most recognizable feature. When stripped down even further, the &#8216;i&#8217; is memorable not for the font or its positioning in the word, but for the green dot. You may have noticed that with the launch of our official app (currently in Beta), we have also introduced [...]]]></description>
				<content:encoded><![CDATA[<p>In the official Imgur logo, the &#8216;i&#8217; is the most recognizable feature. When stripped down even further, the &#8216;i&#8217; is memorable not for the font or its positioning in the word, but for the green dot. You may have noticed that with the launch of our official app (currently in Beta), we have also introduced a new addition to our brand. I am lovingly referring to it as “The Dot”.</p>
<p><img src="http://i.imgur.com/IAc5Wp5.png" alt="" /></p>
<p>In creating the app icon, we took to the gallery for inspiration. Aside from the favicon (browser icon) and <a href="http://store.imgur.com">various merchandise</a> that uses the &#8216;i&#8217;, the community has embraced the &#8216;i&#8217; in their own Imgur-themed original content: </p>
<p><a href="http://imgur.com/gallery/ctjpyJc"><img src="http://i.imgur.com/ctjpyJcl.png" alt="" /></a><br />
<a href="http://imgur.com/gallery/vIgmbrn"><img src="http://i.imgur.com/vIgmbrnl.gif" alt="" /></a><br />
<a href="http://imgur.com/gallery/IKl7LIv"><img src="http://i.imgur.com/IKl7LIvl.jpg" alt="" /></a></p>
<p>These posts don’t all use the same font or style, but they all make the dot on the ‘i’ green! This exciting revelation also opened our eyes to how much the green dot is used for design elements on the site:<br />
<center><br />
<img src="http://i.imgur.com/eithrQf.png" alt="" /><br />
<img src="http://i.imgur.com/YYuRaSt.png" alt="" /><br />
<img src="http://i.imgur.com/LK0cRrl.png" alt="" /><br />
<img src="http://i.imgur.com/3lyjwiV.png" alt="" /><br />
</center></p>
<p>Thus, we designed another brand icon that stands out from the crowd. In comparing the Dot to other app icons, it really pops!</p>
<p><img src="http://i.imgur.com/s9X64Fu.png" alt="" /></p>
<p>In short, the dot has always been there, but now has been introduced to the ranks of the Imguraffe and the trademarked ‘i’.</p>
<h2>The making of the Dot</h2>
<p>In the best interest of Tech Tuesday, I’ll take you through how I created the icon! To start, I found a really simplistic tutorial online for making a sphere type shape utilizing photoshop (<a href="http://www.youtube.com/watch?v=CeSjmxNfqxg">http://www.youtube.com/watch?v=CeSjmxNfqxg</a>). This album will quickly highlight the steps for this as well: </p>
<p><iframe class="imgur-album" width="100%" height="550" frameborder="0" src="http://imgur.com/a/bKpW0/embed"></iframe></p>
<p>Imgurians, what do you think of the Dot?</p>
<p>**The official Android app (BETA) is <a href="https://play.google.com/store/apps/details?id=com.imgur.mobile">now available in Google Play</a> in Australia, Canada, and the UK.<br />
**Apple continues to reject our iPhone app because of images of <a href="http://imgur.com/m8xL30J">PedoBear</a>, but we&#8217;re hoping to be approved soon.</p>
<p>Tony<br />
Head of User Experience, Imgur<br />
<img src="http://i.imgur.com/PJ61gyD.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://imgur.com/blog/2013/05/14/tech-tuesday-conception-of-an-icon/feed/</wfw:commentRss>
		<slash:comments>110</slash:comments>
		</item>
		<item>
		<title>Tech Tuesday: Backbone and I</title>
		<link>http://imgur.com/blog/2013/05/07/tech-tuesday-backbone-and-i/</link>
		<comments>http://imgur.com/blog/2013/05/07/tech-tuesday-backbone-and-i/#comments</comments>
		<pubDate>Tue, 07 May 2013 19:16:16 +0000</pubDate>
		<dc:creator>Sarah</dc:creator>
				<category><![CDATA[Tech Tuesday]]></category>

		<guid isPermaLink="false">http://imgur.com/blog/?p=2201</guid>
		<description><![CDATA[In the development of our mobile application, we decided to use PhoneGap so we could easily distribute the application to as many platforms as possible. When we were first designing the application, we knew we would need a robust JavaScript framework to give us a solid code structure, but we needed something very light weight [...]]]></description>
				<content:encoded><![CDATA[<p>In the development of our mobile application, we decided to use PhoneGap so we could easily distribute the application to as many platforms as possible. When we were first designing the application, we knew we would need a robust JavaScript framework to give us a solid code structure, but we needed something very light weight inside of a mobile space. With all of that in mind, we decided on <a href="http://backbonejs.org">BackboneJS</a>. It gives you a solid start on building a JavaScript site with a great code structure. The structure comes from its four major classes: Models, Views, Collections, and a Router. Each of them help keep data where it should be, allowing you to focus on interactions and building the best experience. </p>
<p>So, what do each of these classes do?  Let&#8217;s talk.</p>
<h2>Models</h2>
<p>A model is where you store data about a specific item, one of our most commonly used Models is a Comment. This model will contain data about a comment, id, the id of the gallery item it&#8217;s attached to, and the comment text itself. What is so great about Backbone Models are that we just have to point them to the API endpoint, and it will automatically sync the data for us. Since both Backbone and the Imgur API follow REST standards, they can easily communicate with each other, and you don&#8217;t have to spend time tweaking things to make them work together. Here&#8217;s an example of how you can create a comment with the Imgur API and a BackboneJS model:</p>
<pre>
var Comment = Backbone.Model.extend({
  'urlRoot' : 'https://api.imgur.com/3/comment'
});

var myComment = new Comment();
myComment.save({
  'image_id' : 'j17loBb',
  'comment'  : 'Ace Ventura rules!'
});
</pre>
<p>By calling .save() we not only create an object with the given data to manipulate in JavaScript, but also send a POST request to the Imgur API to create it in the Database.  That allows us to worry about other things, rather than when to save the data to the API.  In a similar vein, you can call myComment.destroy() and it not only deletes the JavaScript object, but also deletes it from the server and triggers a destroy event. There are a number of methods and events that allow models to communicate with an API behind the scenes so you can worry about other things.</p>
<h2>Views</h2>
<p>Backbone views is probably where we save the most code, simply because we are reusing the data every chance we can. When you hit a gallery view in the app then click an image, we don&#8217;t actually fetch any data for that image. We already have the data from our first request, so we simply show you a different view of the image. By doing this we can keep everything, sync across the app and greatly reduce the number of requests we need to make to the server. Here&#8217;s a quick example of how you might render an Image:</p>
<pre>
//First create the View Class
var ImageView = Backbone.View.extend({
  class    : 'image',
  initialize : function() {
    this.listenTo(this.model, 'destroy', this.remove);
  },
  template : _.template(
      '&lt;h1 class="title"&gt;' +
        '&lt;%= _.escape(title) %&gt;
      '&lt;/h1&gt;' +
      '&lt;img src="http://i.imgur.com/&lt;%= id %&gt;.jpg /&gt;'),
  render : function() {
    var attributes = this.model.toJSON();
    this.$el.html(this.template(attributes));
    return this;
  }
});
</pre>
<p>Now we can use the view with a Backbone Model. For the sake of simplicity, let&#8217;s say we have an Image Model, myImage, with all the data we need.</p>
<pre>
var imageView = new ImageView({
  'model' : myImage
});

//this is simply taking the html rendered in 
//the image view, and using jQuery to insert into the DOM for us
$("#comments").html(imageView.render().el);  
</pre>
<p>The output for imageView.render().el is going to look something like this:</p>
<pre>
&lt;div class="image"&gt;
  &lt;h1 class="title"&gt;
    Went running yesterday for the first time in a long time. 
  &lt;/h1&gt;
  &lt;img src="http://i.imgur.com/j17loBb.jpg" /&gt;
&lt;/div&gt;
</pre>
<p>We are also using the _.template method in the example since it comes with Backbone, but you can use any JavaScript templating system that you want. By using a template, we can say that we want all of the objects rendered with this view to look the same. We also have some protection against people trying to inject html into our website by calling _.escape to the title, which is user input.</p>
<p>Now a user wants to delete that image, normally you&#8217;d have to setup code to make a delete request to the server, delete the object, and remove it from the HTML as well.  However with BackboneJS, we can simplify that to :
<pre>myImage.destroy();</pre>
<p>In the initialize function in the ImageView, we have a call to this.listenTo. This adds an event listener for the model on the &#8216;destroy&#8217; event, and will call the remove function associated with the view. There is a default remove function in all BackboneJS views that removes them from the DOM, and all of the handlers associated with them.  As we mentioned earlier, the destroy function also makes a DELETE request to the URL in the model. By simply destroying the model, we have removed it from the screen, memory, and the database. Pretty sweet, right?</p>
<h2>Collections</h2>
<p>A collection is, at its simplest, an array of models. The great thing about collections is we can simply hook it up to a URL like we did with models before, so you can just say &#8220;fetch&#8221; this data, and you&#8217;ll get all of the data your heart desires. Let&#8217;s take a look at how the Imgur Gallery works:</p>
<pre>
var gallery = new Backbone.Collection([], {
  'url' : 'https://api.imgur.com/3/gallery'
});

gallery.fetch();
</pre>
<p>Now we have a Collection of models, with all the image data for the front page of Imgur. What can we do with all of this new found data? Well, we have already defined a view for images, ImageView. Now, let&#8217;s use that to render all of the images in the gallery.</p>
<p>First of all, we need to create a collection view. This is the same as a normal view, but you&#8217;ll be passing a collection to it. The render function will know how to deal with an array rather than single model.</p>
<pre>
var GalleryView = Backbone.View.extend({
  class  : 'images',
  render : function () {
    //we don't want any old stuff there if we render this multiple times.
    this.$el.empty();

    //loop through each model, and render them separately
    this.collection.forEach(this.renderOne, this);
    return this;
  },
  renderOne : function(image) {
    var view = new ImageView({
      'model' : image
    });

    this.$el.append(view.render().el);
  }
});
</pre>
<p>Now that we have the collection view defined, and we have the collection data, we can render it to the screen.</p>
<pre>
var galleryView = new GalleryView({
  'collection' : gallery
});

$('body').html(galleryView.render().el);
</pre>
<p>So the output of the HTML body will be:</p>
<pre>
&lt;body&gt;
  &lt;div class="images"&gt;
    &lt;div class="image"&gt;
      &lt;h1 class="title"&gt;
        Nobody reads anything on twitter, and Ricky Gervais proved it
      &lt;/h1&gt;
      &lt;img src="http://i.imgur.com/mouHhUz.jpg" /&gt;
    &lt;/div&gt;
    &lt;div class="image"&gt;
      &lt;h1 class="title"&gt;
        Went running yesterday for the first time in a long time.
      &lt;/h1&gt;
      &lt;img src="http://i.imgur.com/j17loBb.jpg" /&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/body&gt;
</pre>
<h2>Router</h2>
<p>The last of the major Classes of Backbone is the Router class. This class is where we define when we want to use the views and collection data. It&#8217;s basically the glue that brings everything together. The routes are url paths that you intercept and want to display. Basically, they use regular expressions to make everything in your life easier. Let&#8217;s take a look at how we might render a gallery then move on to a single image with the classes we used before.</p>
<pre>
var ImgurRouter = Backbone.Router.extend({
  routes : {
    '/:id' : 'showImage',
    ''   : 'showGallery'
  },
  initialize : function() {
    this.gallery = new Backbone.Collection([], {
      'url' : 'https://api.imgur.com/3/gallery'
    });

    this.gallery.fetch();
  },
  showImage : function(id) {
    //find the image in the gallery, saves ajax requests!
    var image = this.gallery.get(id);    

    if(image) {
      var imageView = new ImageView({
        'model' : image
      });

      $('body').html(imageView.render().el);
    } else {
      //show a fancy 404 page with a giraffe.
    }
  },
  showGallery : function() {
    var galleryView = new GalleryView({
      'collection' : this.galleryCollection
    });

    $('body').html(galleryView.render().el);
  }
});

var router = new ImgurRouter();
Backbone.history.start();
</pre>
<p>Let&#8217;s say your website is http://imgur.com. When you visit that link it will go to the showGallery function, render the gallery collection, and insert it into the body tag on the page. If you go to http://imgur.com/j17loBb it will call showImage, and take you to a page where it shows that image. We also did a really quick improvement to reduce the number of ajax requests in the router. We are simply selecting all of the images in the gallery on load, then using that data to navigate through the application. It&#8217;s important to note that if the ajax request isn&#8217;t finished by the time you try to load the pages, you&#8217;ll see nothing. To fix that, we can add some wait times and do all sorts of checks in the router, or we can simply modify the view. If we add the &#8216;add&#8217; event handler to the gallery view, we can render them as data comes back from the server.</p>
<p>The biggest advantages to using backbone are code clarity, organization, simplicity, and reduction of AJAX requests. The way Backbone breaks down code into chunks allows us to easily organize the codebase. Also, by maintaining data in collections and models we can keep track of them to re-render later and in different ways depending on the view.</p>
<p>While these are some watered down examples of how you might use BackboneJS to build your own application with the Imgur API, I hope it helps you start off with some awesome apps. There is a lot more information on BackboneJS at <a href="http://backbonejs.org">http://backbonejs.org</a>, <a href="http://backbonetutorials.com">http://backbonetutorials.com</a>, and <a href="http://codeschool.com">http://codeschool.com</a>. Hope to see some awesome apps built with the Imgur API and BackboneJS! Brace yourself; the Imgur Mobile Application is coming.</p>
<p>Josh<br />
Front End Engineer<br />
<img src="http://i.imgur.com/8Y1FPl.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://imgur.com/blog/2013/05/07/tech-tuesday-backbone-and-i/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Our Favorites Images from April 2013</title>
		<link>http://imgur.com/blog/2013/05/01/our-favorites-images-from-april-2013/</link>
		<comments>http://imgur.com/blog/2013/05/01/our-favorites-images-from-april-2013/#comments</comments>
		<pubDate>Wed, 01 May 2013 23:15:21 +0000</pubDate>
		<dc:creator>Sarah</dc:creator>
				<category><![CDATA[Featured Images]]></category>

		<guid isPermaLink="false">http://imgur.com/blog/?p=2173</guid>
		<description><![CDATA[It&#8217;s been a crazy month. Once again, the Internet delivered a variety of clever and entertaining April Fool&#8217;s pranks (thanks for sending us your Snail Mail uploads). Online image sharing played an important part in speedy suspect identification at the Boston Marathon tragedy, images from which shocked, saddened and inspired people all over the world. [...]]]></description>
				<content:encoded><![CDATA[<p class=green>It&#8217;s been a crazy month. Once again, the Internet delivered a variety of clever and entertaining April Fool&#8217;s pranks (thanks for sending us your <a href="http://imgur.com/a/I3Vp0">Snail Mail uploads</a>). Online image sharing played an important part in speedy suspect identification at the Boston Marathon tragedy, images from which shocked, saddened and inspired people all over the world. Meanwhile on Imgur, user identities were revealed in a flood of lovely selfies, and, if you missed the Moon Moon joke, two days worth of front page material went over your head. Despite it all, we&#8217;ve seen another batch of phenomenal images. Below you&#8217;ll find our favorite ten. Enjoy!</p>
<p><strong>Nailed it.</strong></p>
<p>Favorite comment by <a href="http://imgur.com/user/TheFeralCat">TheFeralCat</a>: Thrift Thor.</p>
<p><a href="http://imgur.com/gallery/hOJatDH"><img src="http://i.imgur.com/hOJatDHl.jpg" alt="" /></a></p>
<p>&nbsp;</p>
<p><strong>The trouble with perspective.</strong></p>
<p>Favorite comment by <a href="http://imgur.com/user/McTrick">McTrick</a>: Butterflies in the sky, I can stand twice as high. Take a look on top of books.</p>
<p><a href="http://imgur.com/gallery/LreCOuB"><img src="http://i.imgur.com/LreCOuBl.jpg" alt="" /></a></p>
<p>&nbsp;</p>
<p><strong>My doctor said: &#8220;You kinda look like that guy on the wall over there!&#8221;&#8230;</strong></p>
<p>Favorite comment by <a href="http://imgur.com/user/chemistrydoc">chemistrydoc</a>: Oh my G.E.R.D.</p>
<p><a href="http://imgur.com/gallery/343Emjc"><img src="http://i.imgur.com/343Emjcl.jpg" alt="" /></a></p>
<p>&nbsp;</p>
<p><strong>My wife and I are expecting our first child&#8230;and apparently a cat too.</strong></p>
<p>Favorite comment by <a href="http://imgur.com/user/FreckleCharms">FreckleCharms</a>: If I fits&#8230;</p>
<p><a href="http://imgur.com/gallery/QGJRpKb"><img src="http://i.imgur.com/QGJRpKbl.jpg" alt="" /></a></p>
<p>&nbsp;</p>
<p><strong>Whoever did this just won at life</strong></p>
<p>Favorite comment by <a href="http://imgur.com/user/napsmear">napsmear</a>: <a href="http://imgur.com/yRUsk8C">http://imgur.com/yRUsk8C</a></p>
<p><a href="http://imgur.com/gallery/pEk96db"><img src="http://i.imgur.com/pEk96dbl.jpg" alt="" /></a></p>
<p>&nbsp;</p>
<p><strong>Nothing in this picture is not Snoop Dogg</strong></p>
<p>Favorite comment by <a href="http://imgur.com/user/anniexkimchi">anniexkimchi</a>: Awyeah. It&#8217;s a sunizzle, and treeizzle, with leavizzles on its trunkizzle, and I love the grassizzle, and the beautiful skyizzle.</p>
<p><a href="http://imgur.com/gallery/uZbp211"><img src="http://i.imgur.com/uZbp211l.jpg" alt="" /></a></p>
<p>&nbsp;</p>
<p><strong>Boston looks like a ghost town right now.</strong> (Click image for full album)</p>
<p>Favorite comment by <a href="http://imgur.com/user/Killingjezus">Killingjezus</a>: So when everyone should stay inside, redditors go outside?</p>
<p><a href="http://imgur.com/gallery/cA7Y1"><img src="http://i.imgur.com/lsAvkLLl.jpg" alt="" /></a></p>
<p>&nbsp;</p>
<p><strong>If you faceswap Justin Bieber and Taylor Swift, they look like a cute lesbian couple</strong></p>
<p>Favorite comment by <a href="http://imgur.com/user/Zalophus">Zalophus</a>: Turns out not face swapping still has the same effect.</p>
<p><a href="http://imgur.com/gallery/XISUGWl"><img src="http://i.imgur.com/XISUGWll.jpg" alt="" /></a></p>
<p>&nbsp;</p>
<p><strong>oh&#8230;..OH I look so FABULOUS.</strong></p>
<p>Favorite comment by <a href="http://imgur.com/user/merpderps">merpderps</a>: waaaahhhhhhhhhhhhhow you doin?</p>
<p><a href="http://imgur.com/gallery/eM1Mf7T"><img src="http://i.imgur.com/eM1Mf7T.jpg" alt="" /></a></p>
<p>&nbsp;</p>
<p><strong>Perfect Timing!</strong></p>
<p>Favorite comment by <a href="http://imgur.com/user/stevengracie">stevengracie</a>: I&#8217;m not even joking this time somebody put 5 onions in my lemonaid</p>
<p><a href="http://imgur.com/gallery/px9yZLJ"><img src="http://i.imgur.com/px9yZLJ.jpg" alt="" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://imgur.com/blog/2013/05/01/our-favorites-images-from-april-2013/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Tech Tuesday: Avoiding a memory leak situation in JS</title>
		<link>http://imgur.com/blog/2013/04/30/tech-tuesday-avoiding-a-memory-leak-situation-in-js/</link>
		<comments>http://imgur.com/blog/2013/04/30/tech-tuesday-avoiding-a-memory-leak-situation-in-js/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 17:53:11 +0000</pubDate>
		<dc:creator>Sarah</dc:creator>
				<category><![CDATA[Tech Tuesday]]></category>

		<guid isPermaLink="false">http://imgur.com/blog/?p=2121</guid>
		<description><![CDATA[Javascript stands at the forefront of Imgur&#8217;s core technologies, whether running on the main site itself or as part of the mobile app. For the latter, we decided to use it heavily with PhoneGap as the platform on which to build the Imgur mobile experience. As performance on mobile devices is much more restrictive, we [...]]]></description>
				<content:encoded><![CDATA[<p>Javascript stands at the forefront of Imgur&#8217;s core technologies, whether running on the main site itself or as part of the mobile app. For the latter, we decided to use it heavily with PhoneGap as the platform on which to build the Imgur mobile experience. As performance on mobile devices is much more restrictive, we have to be confident that memory usage is kept minimal.</p>
<p>If you build it, will they come? Probably. But they won&#8217;t come back if there are blatant memory issues within the app. The task of cleaning up memory seems daunting with so much happening behind modern JS engines. Where do you start looking?</p>
<h2>Dangling References</h2>
<p>In lower level programming languages, you explicitly allocate memory whenever you use variables during runtime. Then you use the space you&#8217;ve allocated for whatever you want and, when you&#8217;re done, you de-allocate that memory so it can be reused later to hold other things.</p>
<p>Luckily in JS, we have a very <a href='http://www.reddit.com/r/programming/comments/1dc1cc/how_i_coded_in_1985_john_grahamcumming/c9oz4ot'>&#8220;magic&#8221;</a> simple way of doing that, which is to declare that a variable and let the garbage collector (GC) worry about which variables we are &#8216;done with&#8217;. Once the logic gets complicated and there are more things going on (e.g. loading images, fetching comments, rendering views) the amount of memory space there is to work with for each task shrinks dramatically. If the GC cannot resolve whether something is no longer needed, it does not free the memory, causing a memory leak.</p>
<h2>An example</h2>
<pre>
<code>
  &lt;html&gt;
      &lt;script&gt;
      function leak() {
        // 1. Ref to the &lt;button/&gt; in current scope.
        var el = document.getElementsByTagName('button')[0];

        // 2. Make an 'onclick' property in the element that "subtly" refs el.
        el.onclick = function() { 
          // el is defined in here due to the closure created in leak()
          alert('hello world!');
        };

        // 3. Take up a fair chunk of memory within this closure by 
        el.leaky = 'awfulness'.split('').join('awfulness')
                              .split('').join('awfulness')
                              .split('').join('awfulness');
      }
    &lt;/script&gt;
    &lt;body onload="leak()"&gt;
      &lt;button&gt;foo&lt;/button&gt;
    &lt;/body&gt;
  &lt;/html&gt;
</code>
</pre>
<p>The GC works to free memory if the proper references to an object are broken. In this instance, when we call leak(), it creates a closure that contains the variable <code>el</code>, which is a reference to the <code>&lt;button/&gt;</code>. If all we want to do is alert &#8216;hello world!&#8217;, then we probably don&#8217;t notice the closure within the scope of the <code>onclick</code> function. But that doesn&#8217;t mean it&#8217;s not there. So it&#8217;s actually possible to use <code>el</code> within the onclick function due to this.</p>
<p>Logically, we would never use <code>el</code> again in that context, though the GC can&#8217;t be absolutely certain of that. Hence it never cleans up <code>el</code> after leak() has been run.</p>
<p><img src="http://i.imgur.com/PaxNrfSl.png"></p>
<p>To fix this, we have to explicitly break the reference that <code>el</code> holds by setting it to something like undefined or null. An alternate solution could be avoiding the closure altogether.</p>
<p><img src="http://i.imgur.com/4d0PjrCl.png" alt="" /></p>
<p><code>
<pre>
    ...

        // 3. Take up a fair chunk of memory within this closure by 
        el.leaky = 'awfulness'.split('').join('awfulness')
                              .split('').join('awfulness')
                              .split('').join('awfulness');
        el = undefined;
      }
    ...
</code></pre>
<p>This one case of memory management merely scratches the surface of the optimizations we are constantly on the look out for as we try to improve your journey across the GIF filled expanses on this side of the Internet.</p>
<p>Jim<br />
JS Engineer</p>
<p><img src="http://i.imgur.com/DL1QPt0l.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://imgur.com/blog/2013/04/30/tech-tuesday-avoiding-a-memory-leak-situation-in-js/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Tech Tuesday: Managing Big Data</title>
		<link>http://imgur.com/blog/2013/04/23/tech-tuesday-managing-big-data/</link>
		<comments>http://imgur.com/blog/2013/04/23/tech-tuesday-managing-big-data/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 17:28:50 +0000</pubDate>
		<dc:creator>Sarah</dc:creator>
				<category><![CDATA[Tech Tuesday]]></category>

		<guid isPermaLink="false">http://imgur.com/blog/?p=2092</guid>
		<description><![CDATA[Imgur handles large amounts of traffic. Just last week we peaked at 156,000 active visitors within a single minute. For every image view, we get a bit of data that we store. Which, with our amount of traffic, quickly adds up. We have more data than we know what to do with, so we are [...]]]></description>
				<content:encoded><![CDATA[<p>Imgur handles large amounts of traffic. Just last week we peaked at 156,000 active visitors within a single minute. For every image view, we get a bit of data that we store. Which, with our amount of traffic, quickly adds up. We have more data than we know what to do with, so we are making efforts to use that data in responsible ways that are beneficial to us and our users. Being new to the team, I&#8217;m still learning a lot about how our backend is stitched together, but I will try my best to provide real statistics and describe our backend decisions.</p>
<p>I&#8217;m currently working on migrating some of our data to HBase. Unlike MySQL, which we heavily use, HBase is a non-relational database. It is an open-source solution modeled after Google&#8217;s BigTable. Its distributed and fault-tolerant design allow it to scale to large sets of data. If you interested in learning more about how it works, check out <a href="http://research.google.com/archive/bigtable.html">Google&#8217;s publishing</a>.</p>
<p>There are two types of data to focus on: image views and image referrals. Both sets of data come from logs that our content delivery network provide to us approximately every 20 minutes. Each log file is, on average, 1.3GB in size. In one day that&#8217;s about 94GB. If we uncompress those logs, we then have around 650GB of data in single day. Sure, Google handles a lot more data than this, but we are a small team!</p>
<p>We then parse those logs using MapReduce, extract the image hash, and keep a count of how many times that image has been viewed. Lastly, we store this information into Redis, an in-memory, key-value data store. This approach has worked well and, for the moment, continues to work just fine. We can write to Redis at a very high rate without any hiccups. We estimate, however, that this data will continue to grow such that our Redis instance will run out of memory. We could continue to upgrade the hardware, but we are looking into a different approach.</p>
<p>We are experimenting with storing views into HBase, and here are some of the benefits we like:</p>
<ul>
<li>HBase is a distributed data store. If we run low on memory, we can easily scale by adding more machines. Also, this means that the cache can be split among multiple machines. We cache a lot here.</li>
<li>Since HBase works on top of Hadoop, we get the benefit of data replication.</li>
<li>Columns are sparse, so we can store thousands to millions of columns in one row without needing to define an explicit schema.</li>
<li>It&#8217;s better at persisting data than Redis.</li>
<li> We can replicate to a separate cluster as another safety measure.</li>
<li>If we design our system correctly (fingers crossed), we can take advantage of the high write-throughput that Hadoop can offer when updating our image views. This would be highly beneficial since it is the reason we started using Redis in the beginning.</li>
</ul>
<p>Another added benefit of pursuing HBase is that we can also think about other datasets to store. One such dataset is the image referrals, which estimates to a few terabytes. We can then use this data as another way of calculating the ranking of gallery images.</p>
<p>Many of these details are still being worked out, but these are the basic ideas. As we get smarter and figure out other ways to use all the data we have, you may hear more about Imgur and big data.  </p>
<p>Carlos<br />
Software Engineer, Imgur</p>
<p><img src="http://i.imgur.com/9DsgeAAl.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://imgur.com/blog/2013/04/23/tech-tuesday-managing-big-data/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Tech Tuesday: Measuring Virality</title>
		<link>http://imgur.com/blog/2013/04/16/tech-tuesday-measuring-virality/</link>
		<comments>http://imgur.com/blog/2013/04/16/tech-tuesday-measuring-virality/#comments</comments>
		<pubDate>Tue, 16 Apr 2013 21:48:15 +0000</pubDate>
		<dc:creator>Brian</dc:creator>
				<category><![CDATA[Tech Tuesday]]></category>

		<guid isPermaLink="false">http://imgur.com/blog/?p=1983</guid>
		<description><![CDATA[With our most viral gallery, we aim to display the fastest rising, most popular Imgur images on the web. We define &#8220;viral images&#8221; as those with worldwide appeal, quick to achieve popularity. Images can become viral from two main sources, the Imgur user submitted gallery and various social networks on the rest of the internet. [...]]]></description>
				<content:encoded><![CDATA[<p>With our most viral gallery, we aim to display the fastest rising, most popular Imgur images on the web. We define &#8220;viral images&#8221; as those with worldwide appeal, quick to achieve popularity. Images can become viral from two main sources, the Imgur user submitted gallery and various social networks on the rest of the internet. </p>
<p>We calculate a different popularity score for images posted in these two groups. Let&#8217;s begin with the latter. When an image URL is first shared to a social network, we begin collecting data in order to compute an overall popularity score which takes into account number of places the image was posted and number of social media interactions (tweets, Facebook shares, Reddit likes, etc.). Once an image has been linked to enough sources and has gained adequate popularity on social networks, it becomes a candidate to be entered into the most viral gallery. This ensures that only extremely popular images will be selected as candidates. </p>
<p>User submitted images are treated a bit differently. We trust Imgurians to upvote good content and downvote bad, which makes the aforementioned data irrelevant. For these images we use a very simple equation to calculate the score:</p>
<p style="padding-left: 30px">score = (ups &#8211; downs) + (views / CONSTANT)</p>
<p>Now that we have a way to make sure each image is popular enough, we want to add time to the equation. This will give us an overall virality score. This virality score is what we use to sort the images when you view the gallery like this:</p>
<p><img alt="null" src="http://i.imgur.com/zE1UTnw.png" /></p>
<p style="padding-left: 30px">or like this:</p>
<p><img alt="null" src="http://i.imgur.com/F5nlqKc.png" /></p>
<p>We use a modified version of the <a href="http://amix.dk/blog/post/19588">reddit hot algorithm (check out these awesome graphs)</a> to accomplish this.</p>
<p style="padding-left: 30px">First we find the sign of the score s = {1, 0, -1}</p>
<p style="margin-left: 30px;border: 3px solid #444442;background-color: white;padding: 10px;width: 195px"><img alt="null" style="border:none" src="http://i.imgur.com/Eg1akXk.gif" /></p>
<p style="padding-left: 30px">x is equal to the absolute value of the score:</p>
<p style="margin-left: 30px;border: 3px solid #444442;background-color: white;padding: 10px;width: 233px"><img alt="null" style="border:none" src="http://i.imgur.com/5nK6LFs.gif" width="231" height="44" /></p>
<p style="padding-left: 30px">t is equal to the time difference (in seconds) between the submission time of the image and midnight on the day the imgur gallery launched.</p>
<p style="margin-left: 30px;border: 3px solid #444442;background-color: white;padding: 10px;width: 195px"><img alt="null" style="border:none" src="http://i.imgur.com/wPghpY9.gif" /></p>
<p>There are quite a few equations that do similar things, but this one was our favorite for a few reasons:</p>
<ol>
<li>It uses a logarithmic scale, so the first 10 votes count the same as the next 100. This helps to bump up good content and weed out bad immediately after being posted.</li>
<li>The virality score doesn’t go down as posts get older. Instead, newer posts will have a higher score. This means the v.s. will only change when a vote is made on the image. Which makes it easy for us to store the v.s. in the database and to offload our sorting to an indexed column.</li>
<li>Submission time is a huge factor on the algorithm, so newer posts will be weighted higher than older.</li>
</ol>
<p>We have <a href="http://imgur.com/blog/2013/04/10/virality-scores-user-submitted-images/">recently started to use the virality score</a> as our primary method of deciding what gets put into the most viral section. Previously, we used strict limits, meaning that once an image would become more popular than the limit, it would be added. This caused us a lot of problems with vote inflation.</p>
<p>In the past day (at time of posting) there were 1,200,000 image votes.<br />
Two months ago there were only about 900,000 image votes in a day.</p>
<p>Breaking this down to votes per image, images are receiving more and more votes, which required that we come up with a scalable solution. We now compare the virality score for an image against a sliding percent of all images on the most viral gallery. If a candidate has a higher score than the majority of the subset of images, it will be added. When there are fewer images in the most viral gallery, we choose a different subset to make it slightly easier for images to make it. The benefits of doing it this way are:</p>
<ol>
<li> Only the best of the best will make it onto the front page.</li>
<li> If the content on the front page is fantastic, the content coming in will have to be super fantastic as well, which continuously improves the content on the front page.</li>
<li> No hard limits, which solves the problem of vote inflation. A newer image that has fewer points, but gains points rapidly will be added before an older image with a lot of points, but slow growth.</li>
</ol>
<p>This method has been running on the site for almost a week now, and we have noticed the quality of content on the most viral page staying consistently high. We strive for the best Imgur experience for our users, and we believe that with this new addition to the site we will be able to deliver the best content quickly. Keeping up with our goal to satisfy that need for instant gratification while seeking out, funny, interesting or heartwarming pictures. Or cats. Lots and lots of cats.</p>
<p>Brian<br />
Front End Engineer</p>
<p><img src="http://i.imgur.com/DtmLpux.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://imgur.com/blog/2013/04/16/tech-tuesday-measuring-virality/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Welcome to our new team members!</title>
		<link>http://imgur.com/blog/2013/04/11/welcome-to-our-new-team-members/</link>
		<comments>http://imgur.com/blog/2013/04/11/welcome-to-our-new-team-members/#comments</comments>
		<pubDate>Thu, 11 Apr 2013 18:18:33 +0000</pubDate>
		<dc:creator>Sarah</dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://imgur.com/blog/?p=1950</guid>
		<description><![CDATA[We scoured the globe for the best people to bring to the Imgur team, and, after much ado, we&#8217;ve finally found Jacob, Brad and Carlos! They are the missing pieces to our puzzle, the ying to our yang, and the delicious chocolate drizzle to our ice cream sundae. With the addition of these lovely fellows, [...]]]></description>
				<content:encoded><![CDATA[<p>We scoured the globe for the best people to bring to the Imgur team, and, after much ado, we&#8217;ve finally found Jacob, Brad and Carlos! They are the missing pieces to our puzzle, the ying to our yang, and the delicious chocolate drizzle to our ice cream sundae. With the addition of these lovely fellows, our team is now made whole (and at a whopping 10 members!). </p>
<p><img src="http://i.imgur.com/Ny2MlEH.jpg?1" alt="" /></p>
<p>Jacob (left), our newest Front End Engineer, hails from New Hampshire. His primary hobby is writing <a href="http://xkcd.com/386/">strongly worded arguments</a> on the Internet. If you have a dumb opinion, prepare to receive downvotes! His other talents include the impressive ability to tap <a href="http://www.youtube.com/watch?v=VZXQmEkF03I">the intro</a> to <em>Through the Fire and Flames</em> in Guitar Hero 3, and being 1800 MMR on two accounts in <a href="http://reddit.com/r/heroesofnewerth">Heroes of Newerth</a>. Jacob&#8217;s favorite book is <em>Ender&#8217;s Shadow</em>, and he&#8217;s fully ready to to tell you why it&#8217;s better than <em>Ender&#8217;s Game</em>. Jacob is currently chuckling about this image in the gallery:</p>
<p><a href="http://imgur.com/gallery/vBxiUrrm"><center><img src="http://i.imgur.com/vBxiUrrm.jpg" alt="" /></center></a></p>
<p>Brad (middle) joins us from the great state of Ohio, where he worked with the <a href="http://thecrew.com">Columbus Crew</a>. When he&#8217;s not serving Imgur as the best Inside Sales Manager the world has ever seen, he enjoys running, mountain biking and live music. He would like the ladies to know that he is a great cook and makes a mean &#8220;mystery stir fry.&#8221; He will knock your socks off with his knowledge of good beer and red wine. He is a self proclaimed &#8220;complete soccer nerd,&#8221; which we&#8217;re pretty sure is true since he owns a 2008 MLS Cup Champions ring with his name on it. Check him out looking pretty badass carrying some weird weapons:</p>
<p><center><img src="http://i.imgur.com/DQ2Gzb9m.jpg?1" alt="" /></center></p>
<p>Carlos (right) joins the team as a Front End Engineer. When not laying down his sweet coding skills at Imgur, he&#8217;s either a servant to his two cats, programming side projects, hanging with friends, or traveling. He is obsessed with soccer and can do some really cool tricks. One of them is to land the ball on the back of his neck and take his t-shirt off without dropping the ball. Yes, it is <em>that</em> sexy, but contain yourselves; he has a beautiful wife and daughter. He also thinks that, day by day, he&#8217;s getting better at the office&#8217;s favorite game, Super Smash Brothers, but it will be a fiery day on Hoth when he actually beats the rest of us. Carlos would like to thank the user who posted the below image to the gallery because he laughed.</p>
<p><center><a href="http://imgur.com/gallery/GcVvRCu"><img src="http://i.imgur.com/GcVvRCum.jpg" alt="" /></a></center></p>
<p>Welcome to the Imgur team, guys! We&#8217;re so excited to have you!</p>
]]></content:encoded>
			<wfw:commentRss>http://imgur.com/blog/2013/04/11/welcome-to-our-new-team-members/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
	</channel>
</rss>
