<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>We’re LayerVault, a simple version control system for designers. This is our tumblr blog.</description><title>LayerVault Blog</title><generator>Tumblr (3.0; @layervault)</generator><link>http://layervault.tumblr.com/</link><item><title>LayerVault 2 In-depth: The Tools</title><description>&lt;p&gt;The idea for LayerVault 2 really centered around the idea of the Wormhole. Allan deliriously sent me an email late one night describing it. Things clicked immediately and we began sketching it out.&lt;/p&gt;

&lt;p&gt;After playing with the idea a bit, it became obvious that it might be worth adding a few more things to the designer&amp;#8217;s tool belt. LayerVault stays open on our users&amp;#8217; desktops the whole day, so we needed to make sure we were providing as much value as possible.&lt;/p&gt;

&lt;p&gt;To do this though, we had to face a limiting problem: we had to operate within the confines of the browser. This post details some of the more technical trials and tribulations we dealt with while developing our new Tools.&lt;/p&gt;

&lt;h2&gt;Canvas, canvas, and then more canvas&lt;/h2&gt;

&lt;p&gt;We wanted to make sure the Tools we built were reflective of our values. We wanted them to be fast, easy to use and fun. We knew we&amp;#8217;d have to use the HTML5 canvas element and some finely tuned JavaScript.&lt;/p&gt;

&lt;p&gt;Oftentimes when using a tool, we will be manipulating two or three different canvas elements. We found that in certain cases, it was better to work with transparent canvas elements than to manipulate the image data itself. Such a method also makes it easier to save state.&lt;/p&gt;

&lt;p&gt;In the end, we pushed the canvas element to its limit and then some. We&amp;#8217;ve never seen anything like our Eyedropper or Smart Ruler tool on the web. They&amp;#8217;re fast and a pleasure to use.&lt;/p&gt;

&lt;h2&gt;Cross-origin Resource Sharing, Oh my!&lt;/h2&gt;

&lt;p&gt;It should be no surprise that LayerVault uses Amazon S3 as our storage mechanism. It allows us to not worry about feverishly feeding machines with new hard drives. (And at just having crossed 30,000 files tracked, we&amp;#8217;re talking a lot of hard drives.)&lt;/p&gt;

&lt;p&gt;Unfortunately, it can also be a headache when it comes to Cross-origin resource sharing (CORS). Pulling images off of another domain and manipulating them using the HTML5 canvas element is not as straight-forward as one would like. Because security is a top concern among browsers, manipulating data from other domains is difficult and often prohibited. We obviously found a way around it, also using some other HTML5 APIs.&lt;/p&gt;

&lt;p&gt;Our basic methodology for this problem is as follows:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Have the File Page inject an iframe onto the page. This iframe&amp;#8217;s source shares the same domain as the image.&lt;/li&gt;
&lt;li&gt;The iframe is a simple web page that executes some JavaScript, namely a script that…&lt;/li&gt;
&lt;li&gt;Pulls down the proper image, loads it into a string, then transmits the image data as a base64-encoded string out to File Page using the &lt;strong&gt;postMessage&lt;/strong&gt; API.&lt;/li&gt;
&lt;li&gt;The File Page receives the message and swaps it into the canvas elements appropriately. &lt;/li&gt;
&lt;li&gt;The File Page has no knowledge of the origin domain of the data, so it doesn&amp;#8217;t complain when we try to do fancy things with it.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;It&amp;#8217;s quite the workaround, but it provides for a seamless experience when using the LayerVault File Page.&lt;/p&gt;

&lt;p&gt;That about wraps up this post. You can see all of the new LayerVault features on our &lt;a href="http://layervault.com/tour" target="_blank"&gt;Tour Page&lt;/a&gt;. If you have any questions, don&amp;#8217;t hesitate to &lt;a href="mailto:support@layervault.com" target="_blank"&gt;send us an email&lt;/a&gt;.&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/22593706790</link><guid>http://layervault.tumblr.com/post/22593706790</guid><pubDate>Mon, 07 May 2012 13:15:47 -0400</pubDate></item><item><title>Announcing LayerVault 2</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_m2zh9vU4rV1r0v0xk.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Allan and I are happy to announce the release of LayerVault 2 today. This release represents several months of work. We focused on our core product even better along with new great features.&lt;/p&gt;

&lt;p&gt;What you&amp;#8217;ll see at &lt;a href="http://layervault.com" target="_blank"&gt;layervault.com&lt;/a&gt; now is something we&amp;#8217;re proud of. We went through dozens of possible designs before landing on the one you&amp;#8217;ll see now.&lt;/p&gt;

&lt;p&gt;Let&amp;#8217;s dig into what&amp;#8217;s new.&lt;/p&gt;

&lt;p&gt;(Any press requests can be directed to &lt;a href="mailto:press@layervault.com" target="_blank"&gt;press@layervault.com&lt;/a&gt;. Full resolution logos can be found at &lt;a href="http://layervault.com/about" target="_blank"&gt;layervault.com/about&lt;/a&gt;.)&lt;/p&gt;

&lt;!-- more --&gt;

&lt;h2&gt;New Design&lt;/h2&gt;

&lt;p&gt;LayerVault 2 features an entirely new design. The high contrast design provides better readability. No pixel was left unquestioned. The new design takes advantage of every inch of screen real estate.&lt;/p&gt;

&lt;p&gt;Our new design brings with it a brand new logo and identity. It&amp;#8217;s beautiful. We commissioned &lt;a href="http://softfacade.com" target="_blank"&gt;SoftFacade&lt;/a&gt; to create our new logo and they delivered amazing results. We will be going into detail of the design process of the new logo in the coming weeks.&lt;/p&gt;

&lt;p&gt;And yes, they used LayerVault while designing it.&lt;/p&gt;

&lt;h2&gt;Real-time&lt;/h2&gt;

&lt;p&gt;Everything that happens on LayerVault happens in real-time. See files updating as your teammates work on them. No more page refreshes.&lt;/p&gt;

&lt;p&gt;You can also now open your files without ever leaving web application. Just click &amp;#8220;Open Locally&amp;#8221; on the Directory page or &amp;#8220;Edit&amp;#8221; on any file page. With Real-time, designers spend less time shuffling applications and more time designing.&lt;/p&gt;

&lt;h2&gt;Tools&lt;/h2&gt;

&lt;p&gt;LayerVault 2 comes with a new Toolbox to make designers&amp;#8217; lives even easier. The Toolbox lives on each File page and can be used with any design. The Toolbox is being released with 3 Tools: the Eyedropper, the Smart Ruler, and Wormhole.&lt;/p&gt;

&lt;p&gt;Simple tasks that once required opening up Photoshop can now be done in the browser. Each tool is written with the latest HTML5 technology. No Flash required. That means performance is snappy even on large designs.&lt;/p&gt;

&lt;h3&gt;Eyedropper&lt;/h3&gt;

&lt;p&gt;The Eyedropper is a staple of any designer&amp;#8217;s workflow. Being able to quickly measure colors is a must.&lt;/p&gt;

&lt;p&gt;The LayerVault Eyedropper is optimized for the web. Each click pulls out a color. Select multiple colors at once to build a palette on the fly. Once you&amp;#8217;re done, copy the values into a CSS file or another program.&lt;/p&gt;

&lt;h3&gt;Smart Ruler&lt;/h3&gt;

&lt;p&gt;The new Smart Ruler is the best way to quickly measure different parts of a design.&lt;/p&gt;

&lt;p&gt;Once activated, the Smart Ruler will spring out to the edges of its current container. Measuring pixel widths and pixel heights of gutters, buttons and columns has never been easier. We use it all the time for slicing our own designs.&lt;/p&gt;

&lt;h3&gt;Wormhole&lt;/h3&gt;

&lt;p&gt;Last but certainly not least, LayerVault 2 brings with it the new Wormhole technology. Wormhole allows you to search through a design&amp;#8217;s history, piece by piece. Just highlight an area of your design and Wormhole will tell you how many changes were made and where in the timeline they occured.&lt;/p&gt;

&lt;p&gt;It really is a piece of magic. Even in a design with hundreds of versions, isolating a change from several months ago takes less than a second. It&amp;#8217;s a great tool and it&amp;#8217;s something you won&amp;#8217;t see anywhere else.&lt;/p&gt;

&lt;h2&gt;Faster File Syncing&lt;/h2&gt;

&lt;p&gt;LayerVault 2 also brings with it better file syncing. Files will now travel shorter distances to the closest LayerVault datacenter. This can increase upload speeds by a factor of 10. It&amp;#8217;s a small detail that we sweated.&lt;/p&gt;

&lt;p&gt;That about wraps it up. We&amp;#8217;ll be going into more depth with the decisions around this release in the coming weeks. In the meantime, you can dive deep on our &lt;a href="http://layervault.com/tour" target="_blank"&gt;Tour page&lt;/a&gt; or take a look at our &lt;a href="https://layervault.com/pricing" target="_blank"&gt;Pricing page&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you would like to give LayerVault a shot, you can get 20% off the first month of LayerVault with the coupon code &lt;strong&gt;LV2&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;And a very special thanks to &lt;a href="http://twitter.com/dsmitts" target="_blank"&gt;Derek Smith&lt;/a&gt; for helping us out with a few things with this release.&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/21723378193</link><guid>http://layervault.tumblr.com/post/21723378193</guid><pubDate>Tue, 24 Apr 2012 13:57:00 -0400</pubDate></item><item><title>Big Things in Store</title><description>&lt;p&gt;We&amp;#8217;ve been quiet for a little while.&lt;/p&gt;

&lt;p&gt;On April 24, that changes. We&amp;#8217;re finally ready to show you what we&amp;#8217;ve been working on for the last few months. Please join us for the announcement at 11am PST.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;re really proud of what we&amp;#8217;ve created. We hope you like it.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://s3.amazonaws.com/layervault/layervault2.ics" target="_blank"&gt;Mark your calendars.&lt;/a&gt;&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/20963489230</link><guid>http://layervault.tumblr.com/post/20963489230</guid><pubDate>Thu, 12 Apr 2012 09:59:00 -0400</pubDate></item><item><title>Better filtering with jquery.data.filter.js</title><description>&lt;p&gt;We&amp;#8217;re trying to get better about open-sourcing some of the great code that we write. Our first foray into open-sourcing the cool stuff behind LayerVault is the simple yet effective &lt;a href="https://github.com/layervault/jquery.data.filter" target="_blank"&gt;jquery.data.filter.js&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s a simple &lt;a href="http://jquery.com/" target="_blank"&gt;jQuery&lt;/a&gt; plugin that makes it easier to filter DOM elements by &lt;a href="http://html5doctor.com/html5-custom-data-attributes/" target="_blank"&gt;data-* attributes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So now something like:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;var versions = $('.Revision')
                   .filter('[data-project-id="' + projectId + '"]');
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br/&gt;Can be simplified to:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;var versions = $('.Revision').dfilter('project-id', projectId);
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;br/&gt;Enjoy and let us know what you think!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://github.com/layervault/jquery.data.filter" target="_blank"&gt;Get jquery.data.filter.js on GitHub&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/20740015907</link><guid>http://layervault.tumblr.com/post/20740015907</guid><pubDate>Sun, 08 Apr 2012 18:34:38 -0400</pubDate></item><item><title>No One Said Scaling Was Easy</title><description>&lt;p&gt;Over the past week and a half, LayerVault hasn&amp;#8217;t gone down, but it&amp;#8217;s been noticeably slow for a few users.  We have tools in place that allow us to monitor the individual experience of each customer to the service. If anything looks amiss, we recreate the problems and tighten the screws. We&amp;#8217;ve been experiencing some great growth over the past few weeks, and with growth comes growing pains.&lt;/p&gt;

&lt;p&gt;For now, it seems like we can see the edge of this forest. I wanted to write a blog post to talk about scaling past that initial machine and scaling Rails. As always: if you&amp;#8217;re having issues with the service, please send us an email right away at &lt;a href="mailto:support@layervault.com" target="_blank"&gt;support@layervault.com&lt;/a&gt;. Chances are, we&amp;#8217;re already working on a solution.&lt;/p&gt;

&lt;p&gt;Here we go.&lt;/p&gt;

&lt;!-- more --&gt;

&lt;h2&gt;Scaling Your Web Service&lt;/h2&gt;

&lt;p&gt;At LayerVault, we built our service using the &lt;a href="http://rubyonrails.com" target="_blank"&gt;Ruby on Rails&lt;/a&gt; framework, version 3.1. Our database is &lt;a href="http://en.wikipedia.org/wiki/MySQL" target="_blank"&gt;MySQL&lt;/a&gt;. Our hosting provider is &lt;a href="http://slicehost.com" target="_blank"&gt;Slicehost&lt;/a&gt;. We use &lt;a href="http://aws.amazon.com/s3/" target="_blank"&gt;Amazon S3&lt;/a&gt; and &lt;a href="http://aws.amazon.com/cloudfront/" target="_blank"&gt;CloudFront&lt;/a&gt; for serving out static files.&lt;/p&gt;

&lt;p&gt;Rails is one of the best—if not the best—framework in existence; it is designed to take you from your initial idea to a sustainable business. In the early days of LayerVault (just a few months ago), the entire service was powered by one box. That box ran Apache, our Rails instances and the database. Scary, right? But that served our initial needs of having a service online quickly without worrying about maintaining servers we didn&amp;#8217;t need at prices we couldn&amp;#8217;t afford.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lzuqtnY0xo1r0v0xk.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;As we got more customers, our needs changed. The megabytes of daily data turned into gigabytes. We had to make sure that a heavy request would maybe slow down a box for a short while but not slow down the whole service. To do this, we slowly started peeling apart the logical functions of our web application. Now our service looks like so:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lzutafxeIs1r0v0xk.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Whew, quite a bit more complicated. That&amp;#8217;s what scaling looks like. Let&amp;#8217;s break down some of the more important things we did.&lt;/p&gt;

&lt;h3&gt;Identify the bottlenecks&lt;/h3&gt;

&lt;p&gt;Scaling for scaling&amp;#8217;s sake is a bad idea. You&amp;#8217;ll probably introduce complexity that you don&amp;#8217;t need. Make sure that you have tools that let you isolate issues. We use &lt;a href="http://newrelic.com/" target="_blank"&gt;New Relic&lt;/a&gt;, the &lt;a href="https://github.com/noahd1/oink" target="_blank"&gt;oink gem&lt;/a&gt;, &lt;a href="http://pingdom.com" target="_blank"&gt;pingdom&lt;/a&gt;, internal monitoring tools and unix&amp;#8217;s &lt;code&gt;top&lt;/code&gt;. Before you begin, watch all of the &lt;a href="http://railslab.newrelic.com/scaling-rails" target="_blank"&gt;New Relic Scaling Rails podcast&lt;/a&gt;, even if you don&amp;#8217;t use Rails.&lt;/p&gt;

&lt;p&gt;Above all, fix one thing at a time and measure the results.&lt;/p&gt;

&lt;h3&gt;Set up a reverse proxy&lt;/h3&gt;

&lt;p&gt;A &amp;#8220;proxy&amp;#8221; in web parlance is an intermediate server. Proxy servers often accomplish different things: they can help you visit otherwise blocked sites or they can act as a traffic-cop. A reverse proxy is usually the traffic cop for a mid-sized web service. It tells the individual different web requests to go to different application servers. It can also perform caching of common requests, but I won&amp;#8217;t get into that. Reverse proxy applications have many other names and uses as well; they can be sometimes referred to as HTTP accelerators or load balances. (This is grossly simplified for the sake of this post.)&lt;/p&gt;

&lt;p&gt;Technically, LayerVault uses two reverse proxies: &lt;a href="https://www.varnish-cache.org/" target="_blank"&gt;Varnish&lt;/a&gt; and &lt;a href="http://www.apsis.ch/pound" target="_blank"&gt;Pound&lt;/a&gt;. (We used a heavily modified version of &lt;a href="http://plone.org/documentation/kb/plone-behind-varnish-using-pound-for-ssl" target="_blank"&gt;this setup&lt;/a&gt;.) When a client makes an HTTPS request, Pound takes the request and translates it to a vanilla HTTP request inside our firewall and then feeds it to Varnish. Varnish takes all HTTP requests and appropriately doles them out to our application servers. We have an entire 512MB slice dedicated to being our traffic cop.&lt;/p&gt;

&lt;h3&gt;As many app servers as we need&lt;/h3&gt;

&lt;p&gt;Thanks to our reverse proxy, we now just add in application servers as we need them. For LayerVault at this point, the bottlenecks come in the form of not enough CPU time and/or memory. We can horizontally scale our app servers as necessary. All it takes it turning on a new app server and adding it to the server rotation in Varnish. Nifty.&lt;/p&gt;

&lt;p&gt;We use 2GB slices for our application servers.&lt;/p&gt;

&lt;h3&gt;Set up memcached&lt;/h3&gt;

&lt;p&gt;memcached was a service developed by the guys behind live-journal as an in-memory caching system. It&amp;#8217;s so fast. Like 1000x faster. LayerVault customers will notice that the heaviest pages now load in less than 400ms with a warm cache, i.e. they have visited the page recently. This makes navigating your account that much more pleasant.&lt;/p&gt;

&lt;p&gt;We use the &lt;a href="https://github.com/mperham/dalli" target="_blank"&gt;Dalli cache gem&lt;/a&gt; and similar caching strategies described in @&lt;a href="http://twitter.com/dhh" target="_blank"&gt;ddh&lt;/a&gt;&amp;#8217;s 37signals post: &lt;a href="http://37signals.com/svn/posts/3113-how-key-based-cache-expiration-works" target="_blank"&gt;&amp;#8220;How Key-based Cache Expiration Works&amp;#8221;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Caching is difficult, mostly due to the question of &amp;#8220;When do you expire this?&amp;#8221;. There is no silver bullet. In the future, we&amp;#8217;ll be tightening the screws on our caching strategies to shave even more milliseconds off each request.&lt;/p&gt;

&lt;h3&gt;Rails 3.1 static asset compilation, CloudFront CDN&lt;/h3&gt;

&lt;p&gt;Each HTTP request has a certain amount of overhead. In general, a page should minimize the total number of requests it makes. LayerVault is not a simple site: we have plenty of CSS and JavaScript. We write our JavaScript in such a way that is highly modular that allows us to make great encapsulations of behaviors. Our style and patterns are prettier than your average CoffeeScript (no, seriously). For example, we may have an entire file that controls the behavior of a button on a single page.&lt;/p&gt;

&lt;p&gt;We first built LayerVault on Rails 3.0. We recently upgraded to Rails 3.1 to take advantage of its &lt;a href="http://guides.rubyonrails.org/asset_pipeline.html" target="_blank"&gt;static asset pipeline&lt;/a&gt;. The static asset pipeline allows us to work in separate files until we deploy the code. Upon deploy, all of our JavaScript is smartly concatenated and served off our application server through Amazon CloudFront. Amazon CloudFront is a &lt;a href="http://en.wikipedia.org/wiki/Content_delivery_network" target="_blank"&gt;content delivery network (CDN)&lt;/a&gt;. It allowed us to remove a slow step in our deployment of uploading all of our static assets to Amazon S3.&lt;/p&gt;

&lt;p&gt;So, instead of serving up dozens of CSS and JavaScript files, we server up two. Better yet, these files come from a CDN node near you. Boss sauce. We also take advantage of the Rails &lt;code&gt;asset_data_uri&lt;/code&gt; method. &lt;a href="http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets" target="_blank"&gt;It&amp;#8217;s amazing&lt;/a&gt;. We use it to inline small images in our CSS to cut down on the number of requests. All of this in mind brought our front-page load times from 2 seconds (yuck) down to a few hundred milliseconds in most cases (getting there).&lt;/p&gt;

&lt;h2&gt;Things that made our lives much easier&lt;/h2&gt;

&lt;h3&gt;Drop the protocol declaration in as many externally-linked assets as you can.&lt;/h3&gt;

&lt;p&gt;You can visit any page on LayerVault using HTTPS. This is not any easy thing to accomplish, especially when serving up assets from several different domains and worrying about things like page caching. An easy trick is to simply drop the protocol declaration from all asset requests. Thus:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;script src="http://s3.amazonaws.com/bucket/my.css"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Becomes:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;script src="//s3.amazonaws.com/bucket/my.css"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This makes statically caching this page much easier. This will cause older versions of IE to make 2 requests for the asset. Seeing as how 90% of the people visiting LayerVault use a WebKit browser, we could care less about IE.&lt;/p&gt;

&lt;h3&gt;Offload tasks to worker processes and test them&lt;/h3&gt;

&lt;p&gt;No duh. But the problem with having worker processes is they often become something extra to test and maintain. We use the &lt;a href="https://github.com/collectiveidea/delayed_job" target="_blank"&gt;delayed_jobs gem&lt;/a&gt; to background anything that takes long than a few milliseconds. We also have a huge suite of Cucumber tests. This line in our &lt;code&gt;environments/test.rb&lt;/code&gt; allows us to essentially follow all actions to their very end:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Delayed::Worker.delay_jobs = false
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now we know that the work the workers perform will pass tests too.&lt;/p&gt;

&lt;h3&gt;Switch from Rails-provided lookup helpers to SQL&lt;/h3&gt;

&lt;p&gt;Rails and ActiveRecord is all flowers and butterflies for awhile.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;user.projects.files.select{ |f| f.file_name = "Cool.psd" }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ah, so nice. Or:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;user.select{ |u| u.plan.price &amp;gt; 20 &amp;amp;&amp;amp; /[Kk]elly/ =~ u.name }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;(Not the best examples, I know.) But while ActiveRecord is great for getting things up-and-running quickly, it&amp;#8217;s very greedy. While it&amp;#8217;s my fault for using &lt;code&gt;select&lt;/code&gt; like I have here, each line loads many more records than needed from the DB. Each record loaded gets instantiated into an ActiveRecord object then tinkered with. ActiveRecord is sufficiently complex and doesn&amp;#8217;t go easy on the memory. Too many instantiations of ActiveRecord objects and your request eats up all the memory, your box starts to swap, and your users notice a significant degradation in performance.&lt;/p&gt;

&lt;p&gt;So now, we&amp;#8217;re slowing moving to more SQL-based statements in our application:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;VoreFile.all(:conditions =&amp;gt; {
  :user_id    =&amp;gt; user.id,
  :project_id =&amp;gt; user.projects.map{ |p| p.id },
  :file_name  =&amp;gt; "Cool.psd"
}) 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;When we are explicit like this, we only load precisely what is needed. In general, the database layer is much better at selecting record with certain sets of criteria than the application. We could even get better about only loading the project IDs in the example above.&lt;/p&gt;

&lt;h3&gt;Fine-tune Apache and Passenger&lt;/h3&gt;

&lt;p&gt;If you&amp;#8217;re using Apache and Phusion Passenger, fine-tune the settings. Specifically, we found the following apache directives to be helpful:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;PassengerMinInstances
PassengerMaxRequests
PassengerMaxPoolSize
PassengerPoolIdleTime
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Because we handle a bunch of heavy requests, we recycle Rails processes more frequently than most. Our &lt;code&gt;PassengerMaxRequests&lt;/code&gt; is kept pretty low. We maintain a tight window on each application server of the number of Rails instances running. This keeps us in a sweet spot for memory.&lt;/p&gt;

&lt;h2&gt;Onward and Upward&lt;/h2&gt;

&lt;p&gt;We&amp;#8217;ve had the phrase &amp;#8220;good problems to have&amp;#8221; bashed into our skulls here at LayerVault. Getting customers is great. Getting lots of customers is even better. Getting lots of customers to your data-intensive application is a Good Problem to Have.&lt;/p&gt;

&lt;p&gt;As we move forward, we&amp;#8217;re measuring requests coming across the wire and seeing which users have difficulties. We religiously write tests against any bugs and corner cases that are found.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;ll write another post in the future to check in and see what kind of issues we&amp;#8217;re dealing with then.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://news.ycombinator.com/item?id=3625367" target="_blank"&gt;Discussion on Hacker News.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to &lt;a href="http://twitter.com/layervault" target="_blank"&gt;tweet us&lt;/a&gt; any specific questions.&lt;/p&gt;

&lt;p&gt;—Kelly&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/18131971518</link><guid>http://layervault.tumblr.com/post/18131971518</guid><pubDate>Thu, 23 Feb 2012 10:53:00 -0500</pubDate></item><item><title>While we’re heads down over here working on some great...</title><description>&lt;img src="http://25.media.tumblr.com/tumblr_lygqm0SsAq1r39a6ao1_500.jpg"/&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;While we’re heads down over here working on some great performance improvements and few other things up our sleeves, we still need to get out sometimes.&lt;/p&gt;

&lt;p&gt;Last night, our very own &lt;a href="http://twitter.com/allan" target="_blank"&gt;Allan&lt;/a&gt; won the basketball competition at the &lt;a href="http://dribbble.com" target="_blank"&gt;Dribbble&lt;/a&gt; NYC meetup. Hidden talents. The image here is a basketball signed by the Dribbble founders, Dan Cederholm and Rich Thornett. It was great to come out and meet some fellow NYC designers.&lt;/p&gt;

&lt;p&gt;Special thanks to &lt;a href="http://squarespace.com" target="_blank"&gt;Squarespace&lt;/a&gt; for hosting the meetup. See you next time!&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/16579480714</link><guid>http://layervault.tumblr.com/post/16579480714</guid><pubDate>Fri, 27 Jan 2012 10:20:24 -0500</pubDate></item><item><title>Announcing Unlimited Storage and 60-Day Trials</title><description>&lt;p&gt;Let&amp;#8217;s get right to the point —  We&amp;#8217;re building some pretty amazing stuff here at LayerVault. We&amp;#8217;ve iterated on nearly every aspect of the product, made huge improvements to things like user experience and reliability. Today, we&amp;#8217;re releasing the next iteration of the &lt;a href="http://layervault.com/pricing" target="_blank"&gt;LayerVault pricing&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We&amp;#8217;re doing away with account storage limits. As of today, all LayerVault plans will receive unlimited storage. If you&amp;#8217;re an existing customer, worry not. Your account has been upgraded.&lt;/p&gt;

&lt;p&gt;If you were on the fence about trying us out, now&amp;#8217;s a great time. We&amp;#8217;re also offering 60-day risk-free trials for all of our plans. Give LayerVault a try for 60 days and if you cancel before your trial&amp;#8217;s up, no big deal.&lt;/p&gt;

&lt;p&gt;The last few months have been really great. LayerVault has big plans for 2012 and we&amp;#8217;re more excited than ever about what&amp;#8217;s in store. Stay tuned.&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/15353369442</link><guid>http://layervault.tumblr.com/post/15353369442</guid><pubDate>Thu, 05 Jan 2012 13:40:00 -0500</pubDate></item><item><title>Improved Sharing Settings</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lvthctktcb1r0v0xk.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Earlier today we rolled out improved sharing settings at the account level. Users were asking for ways to control permalink visibility and file downloads from the account level. Today, we&amp;#8217;re happy to announce Public Permalinks and Downloadable Versions at the account level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public Permalinks&lt;/strong&gt; allow the files that you work on to be collaborate on to be visible from a randomly-generated URL, like a YouTube video. It&amp;#8217;s a great way to share work with a client or hand work off to a developer. The Latest Permalink will always display the most recent version of the file. &lt;a href="http://layervault.com/permalink/VznIOIH183" target="_blank"&gt;Here&amp;#8217;s an example of a Permalink page showing off our own Account page.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Downloadable Versions&lt;/strong&gt; allow anyone visiting a permalink page to securely download the full version of the file, e.g. the Photoshop document.&lt;/p&gt;

&lt;p&gt;Existing users can see the new controls on their &lt;a href="https://layervault.com/settings" target="_blank"&gt;Settings page&lt;/a&gt;. We think our new settings are a step in the right direction and give us the flexibility to give users more control where necessary.&lt;/p&gt;

&lt;p&gt;Let us know what you think!&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/13861666186</link><guid>http://layervault.tumblr.com/post/13861666186</guid><pubDate>Wed, 07 Dec 2011 00:03:29 -0500</pubDate></item><item><title>LayerVault Love: Typekit</title><description>&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_luw8p31JZ31r0v0xk.png" alt=""/&gt;&lt;/p&gt;

&lt;p&gt;Typekit: We like you, do you like us? Check one [ ] Yes [ ] No&lt;/p&gt;

&lt;p&gt;Our ears were burning and our tweet stream exploding earlier today, when &lt;a href="http://blog.typekit.com/2011/11/18/sites-we-like-barack-obama" target="_blank"&gt;the official Typekit blog featured us&lt;/a&gt; alongside the &lt;a href="http://www.barackobama.com/" target="_blank"&gt;President&lt;/a&gt;, &lt;a href="http://www.theverge.com/" target="_blank"&gt;the Verge&lt;/a&gt; and &lt;a href="http://bearded.com/" target="_blank"&gt;Bearded&lt;/a&gt;. We are more than flattered.&lt;/p&gt;

&lt;p&gt;Typekit is an online service that makes it easy to use high-quality fonts on our site. A good font can set you apart from the pack. Here at LayerVault, we use the serif typeface &lt;a href="https://typekit.com/fonts/adelle-web" target="_blank"&gt;Adelle&lt;/a&gt; to give our landing pages some extra pop. We&amp;#8217;ve been big fans of Typekit, even before they highlighted us on their blog.&lt;/p&gt;

&lt;p&gt;If you haven&amp;#8217;t already, check out some of the other sites we were featured alongside of. They are great. Thanks, Typekit!&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/13001590247</link><guid>http://layervault.tumblr.com/post/13001590247</guid><pubDate>Sat, 19 Nov 2011 01:06:52 -0500</pubDate><category>layervault love</category></item><item><title>LayerVault’s file page is its most heavily used page, and...</title><description>&lt;iframe src="http://player.vimeo.com/video/31774516?title=0&amp;byline=0&amp;portrait=0" width="400" height="250" frameborder="0"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;LayerVault’s file page is its most heavily used page, and as such it deserves the greatest amount of scrutiny. We’ve actually released at least 3 versions of the timeline since our first early beta — and even more updates to the file page. Here’s what we’ve learned and what we’ve changed.&lt;/p&gt;

&lt;p&gt;In the timeline’s first version, points were equidistant from one another, and we used a scrollbar metaphor. That made it rather difficult to figure out where to click. We thought we could do better.&lt;/p&gt;

&lt;p&gt;So, in the second version, we went to the other extreme — versions were positioned on the timeline as clickable points. It turned out that we were focusing too much on precision, and it was leading to a bad experience. Watch the video above and you’ll see what we mean. For users like myself, who save every few seconds, it wasn’t a great experience.&lt;/p&gt;

&lt;p&gt;In the latest iteration, precision isn’t as important as presenting a general idea of how far things are from each other. Long time spans have been truncated with a “…”. There’s a zoomed-out view (that clock icon) that you can use to jump to any point in the timeline.&lt;/p&gt;

&lt;p&gt;We’re not quite done yet on this page, but I think we’ve definitely come a long way. It really helps that we use LayerVault daily, religiously. We have a keen sense of what works and doesn’t, and it’s pretty quickly apparent. More to come soon.&lt;/p&gt;

&lt;p&gt;— Allan, Co-founder&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/12513040875</link><guid>http://layervault.tumblr.com/post/12513040875</guid><pubDate>Tue, 08 Nov 2011 10:01:00 -0500</pubDate><category>layervault</category></item><item><title>Staying Fast</title><description>&lt;p&gt;While we build out &lt;a href="http://layervault.com" target="_blank"&gt;LayerVault&lt;/a&gt; and continue to make it better, there are a few things we do to keep ourselves moving quickly. Most users shouldn&amp;#8217;t notice, but we are pushing to our production servers and updating our client application several times per day. This helps us address problems quickly and—more importantly—not push broken code.&lt;/p&gt;

&lt;p&gt;Let&amp;#8217;s chat about how we work.&lt;/p&gt;

&lt;h3&gt;Test automatically, but only as much as we need to&lt;/h3&gt;

&lt;p&gt;Half of the world loves automated testing. The other 50% hates it. Automated, high-level tests help us sleep at night. We use &lt;a href="http://cukes.info/" target="_blank"&gt;Cucumber&lt;/a&gt; to give us a &lt;em&gt;good enough&lt;/em&gt; idea that any new code doesn&amp;#8217;t have side effects. These tests likely won&amp;#8217;t help us prevent problems in the future, but they will help us catch regressions.&lt;/p&gt;

&lt;p&gt;Automated tests are like tying your shoes and showing up to the race. They don&amp;#8217;t guarantee you will perform well, but they will let you at least compete. Cucumber tests will never tell us how our application &lt;em&gt;feels&lt;/em&gt;, but it can communicate that &lt;em&gt;oh crap, that code change breaks file uploads.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Cucumber tests help us spec out future features and isolate corner cases, but we never let it slow us down and we never rely on them completely.&lt;/p&gt;

&lt;h3&gt;Keep your branches simple&lt;/h3&gt;

&lt;p&gt;Many of us like to have complicated branching schemes. We tell ourselves it makes sense to have &lt;em&gt;release&lt;/em&gt; represent what&amp;#8217;s in production, &lt;em&gt;release-hotfix-3a&lt;/em&gt; for any work that&amp;#8217;s urgent and &lt;em&gt;master&lt;/em&gt; for a general Rome that all roads lead back to.&lt;/p&gt;

&lt;p&gt;But that is wrong.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://twitter.com/#!/holman" target="_blank"&gt;Zach Holman&lt;/a&gt; and &lt;a href="http://twitter.com/#!/chacon" target="_blank"&gt;Scott Chacon&lt;/a&gt; are big proponents of fixing this anti-pattern. &lt;a href="http://zachholman.com/talk/how-github-uses-github-to-build-github" target="_blank"&gt;They explain how Github keeps branches simple in talks they give.&lt;/a&gt; You have one branch, master, that can be deployed to production. Each feature gets its own branch. Done.&lt;/p&gt;

&lt;p&gt;This chips away at a very powerful idea: if at all possible, the only thing representing your code should be the code itself not some arbitrary branching scheme or a bug-tracking system. Complicated branch naming and testing become useless because they often require too much upkeep without much reward.&lt;/p&gt;

&lt;p&gt;This leads into&amp;#8230;&lt;/p&gt;

&lt;h3&gt;No deadlines&lt;/h3&gt;

&lt;p&gt;Deadlines are toxic. Deadlines make companies push out pathetic, sometimes non-functioning code.&lt;/p&gt;

&lt;p&gt;If you need to get something done on time, &lt;em&gt;targets&lt;/em&gt; might be a better nomenclature. Shoot for a date for a feature release, but don&amp;#8217;t push things out at all costs on Tuesday at 03:13 Greenwich Mean Time. It stresses everyone out and leads to half-baked executions.&lt;/p&gt;

&lt;p&gt;At LayerVault, we release small iterations of different components as we improve upon them. Each developer or designer will focus on one idea for a small time, say improve the File Page Timeline. We get it to a point where it&amp;#8217;s measureably better then we&lt;/p&gt;

&lt;pre&gt;
$ git merge master # magic
$ rake test
$ cucumber 
$ git checkout master 
$ git merge feature
$ git push origin master
$ cap deploy
&lt;/pre&gt;

&lt;p&gt;Scott, Zach and Github hit on this a bunch although I&amp;#8217;m not sure if they have spelled out it out explicitly: &lt;strong&gt;Switching from a time-based release schedule to a feature-based release schedule does wonders for product quality.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;Reduce the friction from development to customer&lt;/h3&gt;

&lt;p&gt;All of this couldn&amp;#8217;t be done if we didn&amp;#8217;t have an easy process that encourages healthy development patterns. All LayerVault developers interact directly with customers. All LayerVault developers have the ability to fix bugs. All LayerVault developers have the ability to deploy to production.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://iamcal.com" target="_blank"&gt;Cal Henderson&lt;/a&gt; had a great slide in his deck a few years back which likened frequency of deploys to the size of teeth. The longer the deploys are spread out; the bigger the teeth are. Bigger teeth leave bigger marks. Sometimes, they puncture the skin. Deploy early, deploy often, and deploy single features. It&amp;#8217;s much easier to identify single features that are not working as expected in production than a suite of half-functioning ones.&lt;/p&gt;

&lt;p&gt;On our plate is adding &lt;a href="http://code.google.com/p/update-engine/" target="_blank"&gt;Update Engine&lt;/a&gt; to our OS X client. That way we can work just as fast on the client as we do our web application. No more pesky things like &amp;#8220;installing&amp;#8221; &amp;#8220;new&amp;#8221; &amp;#8220;versions.&amp;#8221;&lt;/p&gt;

&lt;h3&gt;Hope this helps&lt;/h3&gt;

&lt;p&gt;I hope this post helps illuminate how LayerVault is able to quickly work, respond to customer requests and continue to make our service better. Thanks for reading!&lt;/p&gt;

&lt;p&gt;&amp;#8212; &lt;a href="http://twitter.com/kellysutton" target="_blank"&gt;Kelly&lt;/a&gt;, Founder&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/11990750118</link><guid>http://layervault.tumblr.com/post/11990750118</guid><pubDate>Thu, 27 Oct 2011 10:05:05 -0400</pubDate><category>agile</category></item><item><title>Two Weeks Down</title><description>&lt;p&gt;After launching two weeks ago at FOWA in London and presenting at NYTM, we&amp;#8217;re happy to report some great initial numbers and to say thank you. Here&amp;#8217;s a few numbers:&lt;/p&gt;

&lt;ul&gt;&lt;li&gt;Over 1,500 users.&lt;/li&gt;
&lt;li&gt;Over 10,000 versions tracked across thousands of files.&lt;/li&gt;
&lt;li&gt;Average support response time is less than 10 minutes.&lt;/li&gt;
&lt;li&gt;Some of the best companies out there are using us. We&amp;#8217;ll be profiling them in the coming weeks.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;This is all more than we could have asked for in the first two weeks of LayerVault being open to the public.&lt;/p&gt;

&lt;p&gt;In the coming weeks we&amp;#8217;ll be tightening the screws and improving the experience. Things will remain simple and continue to just work, oftentimes even better. There&amp;#8217;s a few features we&amp;#8217;ll be implementing in the coming months that are giving us goosebumps.&lt;/p&gt;

&lt;p&gt;It&amp;#8217;s up and away from here!&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/11612091061</link><guid>http://layervault.tumblr.com/post/11612091061</guid><pubDate>Tue, 18 Oct 2011 10:05:06 -0400</pubDate></item><item><title>Allan and Kelly presented LayerVault at the New York Tech Meetup...</title><description>&lt;iframe src="http://player.vimeo.com/video/30433115" width="400" height="300" frameborder="0"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Allan and Kelly presented LayerVault at the &lt;a href="http://nytm.org" target="_blank"&gt;New York Tech Meetup&lt;/a&gt; last Tuesday. New York City Mayor Mike Bloomberg warmed the stage for them. They go on around 01:14:00. Vimeo doesn’t allow pseudo-seeking, so you’ll have to wait for it to buffer to that point first. &lt;/p&gt;</description><link>http://layervault.tumblr.com/post/11394374969</link><guid>http://layervault.tumblr.com/post/11394374969</guid><pubDate>Thu, 13 Oct 2011 09:46:39 -0400</pubDate></item><item><title>Fire. Works.</title><description>&lt;p&gt;Due to popular demand, we have just rolled out &lt;a href="http://www.adobe.com/products/fireworks.html" target="_blank"&gt;Adobe Fireworks&lt;/a&gt; support. We found that there are many folks out there that know and love Fireworks for all sorts of design work.&lt;/p&gt;

&lt;p&gt;Download the latest version of the &lt;a href="http://layervault.com/download_client" target="_blank"&gt;LayerVault OS X client&lt;/a&gt; and start dropping your Fireworks PNG files into your LayerVault directory. &lt;/p&gt;</description><link>http://layervault.tumblr.com/post/11149401069</link><guid>http://layervault.tumblr.com/post/11149401069</guid><pubDate>Fri, 07 Oct 2011 15:57:00 -0400</pubDate></item><item><title> 
LayerVault’s Kelly Sutton did a quick little interview...</title><description>&lt;iframe src="http://player.vimeo.com/video/30074529" width="400" height="225" frameborder="0"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;LayerVault’s Kelly Sutton did a quick little interview with TechCrunch TV earlier today.&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/11063115023</link><guid>http://layervault.tumblr.com/post/11063115023</guid><pubDate>Wed, 05 Oct 2011 12:16:00 -0400</pubDate></item><item><title>LayerVault: All Systems Go</title><description>&lt;p&gt;We are elated to announce that LayerVault has officially launched this morning from the &lt;a href="http://futureofwebapps.com/london-2011/" target="_blank"&gt;FOWA London&lt;/a&gt;. We&amp;#8217;ve also got a few new features we would like to highlight.&lt;/p&gt;



&lt;p&gt;&lt;/p&gt;&lt;h2&gt;Collaboration and Projects&lt;/h2&gt;



&lt;p&gt;&lt;img src="http://s3.amazonaws.com/layervault/blog-teams.png"/&gt;&lt;/p&gt;



&lt;p&gt;LayerVault now has the ability to help you work together in teams. Each version of a file in a Project is now saved, whether it&amp;#8217;s yours or your teammate&amp;#8217;s. Inviting teammates is as easy as clicking the plus button over a folder. Now working together creatively has never been easier.&lt;/p&gt;



&lt;p&gt;&lt;/p&gt;&lt;h2&gt;New Timeline&lt;/h2&gt;



&lt;p&gt;&lt;img src="http://s3.amazonaws.com/layervault/blog-new-timeline.png"/&gt;&lt;/p&gt;



&lt;p&gt;With our launch, we are also announcing a totally redesigned timeline. You spoke and we listened. &amp;#8220;More contrast&amp;#8221; and &amp;#8220;easier navigation&amp;#8221; were two things we heard loud an clear. We will still be iterating on the timeline on the file page until it&amp;#8217;s perfect, but the New Timeline should be a welcome change for those with many-versioned files.&lt;/p&gt;



&lt;p&gt;&lt;/p&gt;&lt;h2&gt;New Pricing Structure&lt;/h2&gt;



&lt;p&gt;&lt;img src="http://s3.amazonaws.com/layervault/blog-pricing-plans.png"/&gt;&lt;/p&gt;



&lt;p&gt;To celebrate the launch, we have published &lt;a href="http://layervault.com/pricing" target="_blank"&gt;new pricing plans&lt;/a&gt; that focus more on getting work done rather than how much space you have. Such structuring helps keep us laser-focused on the most useful features. And don&amp;#8217;t worry, phone support isn&amp;#8217;t going anywhere.&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/11056507826</link><guid>http://layervault.tumblr.com/post/11056507826</guid><pubDate>Wed, 05 Oct 2011 06:08:00 -0400</pubDate></item><item><title>Now with Increased Security</title><description>&lt;p&gt;Earlier today, we rolled out some exciting new features that are aimed to keep your files and their versions safe. From here on out,&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;All sign-in, account and upgrade pages will only be served through &lt;a href="http://en.wikipedia.org/wiki/HTTP_Secure" target="_blank"&gt;HTTPS&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;We&amp;#8217;ve tightened up security on our file storage as well. All file requests are signed with temporary certificates that expire quickly. Evil doers, be gone!&lt;/li&gt;
&lt;li&gt;We&amp;#8217;ve moved to a new method of generating permalink URLs, which ensures greater security.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Although we don&amp;#8217;t expect it, these security changes may lead to some quirky behavior. If you see anything out of the ordinary, please write to &lt;a href="mailto:support@layervault.com" target="_blank"&gt;support@layervault.com&lt;/a&gt;. But we&amp;#8217;re not stopping here. We&amp;#8217;ll be doing everything possible in the coming weeks to continue to ratchet up security.&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/10782396091</link><guid>http://layervault.tumblr.com/post/10782396091</guid><pubDate>Wed, 28 Sep 2011 18:54:00 -0400</pubDate></item><item><title>What's New: File Drop-down Menus</title><description>&lt;p&gt;We just rolled out a new feature for the directory view page: file drop-down menus. When in the thumbnail view, each file now has a drop-down menu with a few options. You can now:&lt;/p&gt;



&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Download&lt;/strong&gt; the full version of the file&lt;/li&gt;&#13;
&lt;li&gt;&lt;strong&gt;Copy&lt;/strong&gt; the file&amp;#8217;s permalink to share with a client or developer&lt;/li&gt;&#13;
&lt;li&gt;&lt;strong&gt;Delete&lt;/strong&gt; the file without moving it first to your archive.&lt;/li&gt;&#13;
&lt;/ul&gt;&lt;p&gt;This is one small convenience that is paving the way to a few, much larger features that we will be rolling out in the coming weeks!&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/10534408022</link><guid>http://layervault.tumblr.com/post/10534408022</guid><pubDate>Thu, 22 Sep 2011 18:57:00 -0400</pubDate><category>updates</category></item><item><title>We're LayerVault</title><description>&lt;p&gt;LayerVault is version control for designers. Each time a designer creates or modifies a file, we store a copy. Each file and version is securely backed up and accessible from our web interface. &lt;/p&gt;
&lt;p&gt;So, if you&amp;#8217;re working on a Photoshop or Illustrator file. Every time you save, we save. Log in to LayerVault.com, and flip through versions of your PSD. If you need to revert, just download that version of the PSD.&lt;/p&gt;
&lt;p&gt;Lots to come.&lt;/p&gt;</description><link>http://layervault.tumblr.com/post/10251010203</link><guid>http://layervault.tumblr.com/post/10251010203</guid><pubDate>Thu, 15 Sep 2011 17:24:00 -0400</pubDate></item></channel></rss>

