Splitting text into individual characters for animation
There are a number of ways you can improve the javascript/jquery on this page.

If possible you should move all of your &lt;script&gt; references to the end of the HTML &lt;/body&gt; element.  This improves performance because the browser will wait to process the JS until after the HTML is loaded.  With the links in the head, the browser must download the JS and parse it before continuing to the HTML.

The next thing to do is encapsulate your code in an IIFE to create a private scope for your code (and to help prevent polluting the global scope). You should also add 'use strict'; to the top of your code to put yourself in JavaScripts' strict mode.  It helps prevent a lot of common issues.

(function($){
  'use strict';
  // other code here
})(jQuery);


This has the added benefit of allowing you to pass in the jQuery object to the function as $ and know that it will work as expected.

Another thing that can be done is removing the majority of your code out of the document.ready event.  You only really need to do DOM selections there (since you need the DOM to be ready before you can select the elements). Everything else can be moved to stand-alone functions.  This will not only make the code more readable, it will also help with debugging because you wont be having as many anonymous functions. 

Also, you are "diving into the DOM" a lot more than you need to.  For instance, you have this line of code:

$(this).html($(this).text().replace(/./g, "&lt;span&gt;$&amp;&lt;/span&gt;").replace(/\s/g, "&amp;nbsp;"))


So you are grabbing $(this) from the DOM twice.  This is one of jQuerys most expensive functions in terms of performance.  You want to do this as little as possible so you should cache your selctions to improve your overall performance.

You are also adding events to each $title and $postmeta.  It would be easier to use event delegation.  This will improve the overall performance of the page.

Last, you should DRY your code.  You have a lot of repeated code that can be abstracted out to more generic functions.

Here is the updated code:

(function($){

  'use strict';

  function cleanText(sel){
    $(sel).each(function(){
      var $t= $(this);
      var txt = $t.text().replace(/./g, '&lt;span&gt;$&amp;&lt;/span&gt;').replace(/\s/g, '&amp;nbsp;');
      $t.text(txt);
    });
  }

  function handleTitleInView(event, isInView ){
    var visible = {autoAlpha:1, rotationX:0, top:"0px"},
        hidden = {autoAlpha:0, rotationX:-90, top:"-30px"},
        $el = $(this).find('span');

    TweenMax.staggerFromTo( 
        $el, 0.4, 
        (isInView) ? hidden : visible, 
        (isInView) ? visible : hidden,
        0.1 
    );
  }

  function handleMetaInView(event, isInView ){
    var visible = {autoAlpha:1, scale:1},
        hidden = {autoAlpha:0, scale:2},
        $el = $(this).find('span');

    TweenMax.staggerFromTo( 
        $el, 0.4, 
        (isInView) ? hidden : visible, 
        (isInView) ? visible : hidden,
        0.1 
    );
  }

  function init() {
    var titles = '[id^=gsap-title-]';
    var postmeta = '[id^=gsap-meta-]';

    cleanText(titles);
    cleanText(postmeta);

    $(document).on('inview', titles, handleTitleInView);
    $(document).on('inview', postmeta, handleMetaInView);

  }

  $(function() { //shorthand for document.ready
    init();
  });

})(jQuery);


There are a couple of other optimizations you could apply (ex: use a for loop instead of each for better performance) but I'll leave those for you.

Here are a few links for some best practices:


jQuery Tips Everyone Should Know
Eliminate JavaScript Code Smells
Stop Writing Slow JavaScript
JavaScript Anti-Patterns


Hope that helps!