Wednesday, April 18, 2012

Still Roving Mars

On my way into work the other day I ran into a colleague from my days working on the Mars Exploration Rovers (MER).  At the time I was working MER she was a rover driver - one of the robotics engineers with the coveted job of assembling commands to drive the rover and use the robotic arm.  Turns out she's still on MER and now wearing one of my previous hats on the mission planning team (MPT).  Due to the infectious nature of the project, the excellent team, and the rewarding work, moving around the project to work different roles is not uncommon.  I personally had 4 different roles during my ~four year tenure.

The MPT's primary purpose is to coordinate Ultra high frequency (UHF) communications with Mars-orbiting satellites (MRO, Odyssey, Mars Express) and X-band communications with Earth's Deep Space Network (DSN).  Around 2005 I wrote a series of software tools to automate the team's primary deliverable, the Rover's communications window table.  The code interprets the orbit data (time of overflight, RF predicts, data volume predicts, etc) and rover constraints (time of day, orientation, quantity of passes, data rates, ...) and outputs a table of communication windows to send to the rovers.  These windows used to uplnik the rover's daily set of commands and downlink science and engineering data.

Apparently, they're still using my software 7 years later!  Some intermittent contact with old teammates over the years indicate there have been no major changes to the code.  The significance of this began to sink in after we parted:
  • The software has produced well over 10,000 commands that the rovers have executed.
  • I built a process that has withstood the test of time and attrition.  I trained about 6 others (with built-in training features) before leaving the project and later they trained fresh meat.  The number of people trained and using the code at any given time between 2005 and 2012 is probably around 20.
I am very proud to have been a part of the MER team and extremely pleased to see that some of my work is still contributing to a successful mission.

Wednesday, March 14, 2012

How to make a Twilio Voice App Hosted by Heroku

Twilio is a relatively new cloud-based platform that allows one to create and scale voice, VoIP and SMS text messaging applications.  Here, we'll walk through building an app to allow a caller to check the high and low tide times in Santa Monica for the day of the call.  We'll use TwiML, Twilio's XML-like language for issuing HTTP GET and POST requests between your server and theirs. 

In order to run your app, you'll need to find a place to host your code.  For this example, I'll use a basic Heroku app.  First, we'll build the Heroku app using ruby and Sinatra, then we'll incorporate the TwiML and the Twilio Sandbox.

If you don't already have a github account and its version control system installed on your local machine, follow these directions.  If you don't already have a Heroku account or aren't setup to push code from your local machine, follow these instructions.  If you have no idea what I'm talking about, perhaps this panda can set you straight.

Rather than reinvent the wheel, we'll clone an existing github repository that has a basic skeleton for making one page static sites on Heroku.

# Make yourself a directory for the app
$ mkdir twilio_static

# Pull a clone of the skeleton app
$ git clone git://github.com/dpritchett/wwebsite.git twilio_static/
$ cd twilio_static/

The ./twilio_static/Gemfile looks like this
source 'http://rubygems.org'
gem 'sinatra'
gem 'heroku'

# For Twilio App
gem 'hpricot'
gem 'twilio-ruby'
gem 'builder'

Install the gems...
$ bundle install

Now we need to create a repository on github.

$ git init
$ git add .
$ git commit -m "initial commit"

Go to github and create new repository on github: https://github.com/<username>
Next, associate the local files with the new repository.

# Got an error because the local name of the remote repository already exists
$  git remote add origin git@github.com:jonesbb/twilio_static.git
fatal: remote origin already exists.

# Found a workaround on Stack Overflow and was able to continue

$  git remote rm origin
$  git remote add origin git@github.com:jonesbb/twilio_static.git
$  git push -u origin master

# now create heroku app

$ heroku create
$ git push heroku master

To get a preview of the basic app, you can run the server locally
$ ruby -rubygems app.rb

Point your browser here to see the app on your local server: http://localhost:4567/

*** You need to restart the app.rb file each time you change it! ***

Get a xml file of tide data from NOAA and place it in the /public folder of the app.  For extra credit you could have the app extract that data directly from the NOAA servers, but that's outside the scope of this demo.

Start a ruby script to parse through the tide data and output the high/low tides for the current day.

Here's what's in the initial version of my public/twilio_tides.rb
require 'rubygems'
require 'hpricot'
require 'builder'


# Get Today's Date in yyyy/mm/dd format
t=Time.now
cdate = t.strftime("%Y/%m/%d")


# Read in the tides xml file
xml = File.read('public/9410840_2012_tides.xml')


# Initiate the variable, prepending an intro.
@tide_today = ["Today's Tides are as follows:"]


# Find the tide info for today's date
# There's usually more than one hi/lo for a day, so push all into an array
doc = Hpricot::XML(xml)
(doc/:item).each do |dat|
    tide_date = (dat/'date').inner_html
    tide_time = (dat/'time').inner_html
    tide_size = (dat/'predictions_in_ft').inner_html
    tide_hilo = (dat/'highlow').inner_html
    if tide_date == cdate then
        if tide_hilo == "H" then
            tide_hilo = "high"
        elsif tide_hilo == "L" then
            tide_hilo = "low"
        end
      @tide_today << "#{tide_hilo} tide, #{tide_size}feet at #{tide_time}"
    end
end

# Join the array into one string and define instance variable to pass to app.rb
@@tide_today = @tide_today.map! { |p| "#{p}" }.join(", ")

Add to the app.rb to test out the new twilio_tides.rb script.
# Setup a test of the tides script
get '/hello' do
  puts "Hello, world!"
  load 'public/twilio_tides.rb'
  puts "Here's tide info: #{@@tide_today}"
end
Run the app locally as discussed above and navigate to:
http://localhost:4567/hello (which initiates the get request to run the code in /hello).
You should see the "Hello World" and "Here's the tide info:..." print with the tide data for today.

Now you're ready for the TwiML creation.  The additional code in app.rb below makes use of the TwiML verbs, <Say> and <Gather> to tell the caller what the tides are and then to gather the caller's feedback regarding the option of repeating the info or ending the call.

Here's the final app.rb file.
require 'sinatra'
require 'builder'

# Define the route for the index.html - static homepage for the app
get '/' do
      File.read(File.join('public', 'index.html'))
end

# Setup a test of the tides script
get '/hello' do
  puts "Hello, world!"
  load 'public/twilio_tides.rb'
  puts "Here's tide info: #{@@tide_today}"

end

# Define a method that accepts both post and get requests
# This is useful because of the /loop redirect to /tides
def get_or_post(path, opts={}, &block)
  get(path, opts, &block)
  post(path, opts, &block)
end


# Create the TwiML response to read out the tide data
get_or_post '/tides' do
  load 'public/twilio_tides.rb'
  builder do |xml|
    xml.instruct!
    xml.Response do
            xml.Say("Hi #{@@tide_today}")
            xml.Gather(:action=>"/loop", :numDigits => 1) do
                  xml.Say("Press one to repeat or two to end this call.")
            end
    end
  end
end

# Loop the caller's feedback
post '/loop' do
    if !params['Digits'] or params['Digits'] != '1'
        builder do |xml|
              xml.instruct!
              xml.Response do
                xml.Say("Adios.")
              end
        end
    else
      redirect '/tides'
    end
end

Now let's push all the code to Heroku so we can access it from Twilio.

$ git add .
$ git commit -m "added TwiML to app"
$ git push
$ git push heroku

Take note of the Heroku
http://sharp-stream-4312.heroku.com

Go to Twilio and create an account (if you haven't got one already).  On your account's Dashboard, you'll see the "Sandbox."  Put the new Heroku URL, directing to the get_or_post method's /tides, in the Sandbox's Voice URL.

http://sharp-stream-4312.heroku.com/tides

Click SAVE and then try calling.  For more information, Twilio's website has many more examples of how to interface with their servers using either their REST API or TwiML.

Tuesday, February 28, 2012

Custom Domain Names on Heroku

Adding a custom domain name from namecheap to your Heroku app is straight forward.

  1. Do the first few steps of Heroku Setup to add the custom_domain add-on and inform Heroku of the domain(s) you are using.
  2. Go to Namecheap, login to your account and find the domain you want to use.
  3. Click on the URL Forwarding link to modify that domain's URL forwarding and...
    • update the IP ADDRESS/URL for both the "@" and "www" host names to be "proxy.heroku.com." without the quotes, but be sure to include the final period
    • update the RECORD TYPE to "CNAME (Alias)" for both
  4. You're good to go.  See an additional example and screen shots at this other post.

Friday, February 24, 2012

Random Unix Cmd For Listing Files

 A random tip on searching directories on unix...

I'm looking to create a single-column list of file names inside a directory.

I don't want any of the meta-data (eg. modification time, permissions...)

$ ls -C1
 file1.txt
 file2.txt
 file3.txt

For more info:
$ man ls

Wednesday, February 15, 2012

First jQuery Rails App

Creating a new app to learn jQuery basics.  I'll create a basic app per my previous post, then attempt follow this guy Jon Raasch's simple jQuery slideshow 'tutorial.'

# First, check status on versions
$ rvm --default use ruby-1.9.2-p180
Using /Users/jonesbb/.rvm/gems/ruby-1.9.2-p180
$ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-darwin10.7.0]
$ rails -v
Rails 3.0.11

# Created new rails app
$ rails new simple_jquery_slideshow1

# added Heroku gem to Gemfile

Found this site for setting up the rails 3 environment for jQuery.  Follow steps on the site and make sure to update the jquery.js filename in your config file to match what you download from jquery later on in this post.

# Remove the default javascripts from the public/javascripts/ directory.
$ rm controls.js dragdrop.js effects.js prototype.js rails.js

# Setup github repository from project home directory, ./simple_jquery_slideshow1/
$ git init
$ git add .
$ git commit -m "initial commit"

# create new repository on github: https://github.com/jonesbb, name it simple_jquery_slideshow1
$ $ git remote add origin git@github.com:jonesbb/simple_jquery_slideshow1.git
$ git push origin master

# Add jquery to Gemfile with this line:
gem 'jquery-rails', '>= 1.0.12'

$ bundle install

# Using a submodule in git to add jQuery driver to public/javascripts/jquery-ujs/
$ git submodule add git://github.com/rails/jquery-ujs.git public/javascripts/jquery-ujs

# Do a submodule init, which results in the following:
$ git submodule init
Submodule 'public/javascripts/jquery-ujs' (git://github.com/rails/jquery-ujs.git) registered for path 'public/javascripts/jquery-ujs'

Next, I downloaded the minified version (1.7.0) of jquery from the jquery website.  Although 1.7.1 existed, I figured that the kinks were worked out of 1.7.0.  Maybe a bad assumption, but oh well.

Put the downloaded jquery.min.js file inj /public/javascripts/

# Updated github and created Heroku app
$ git add .
$ git commit -m "added jquery"
$ git push
$ heroku create
# created http://vivid-leaf-3508.heroku.com/
$ git push heroku master
# Checkout a new Git branch to start creating the app's pages
$ git checkout -b basic-pages

# Create the pages controller
$ rails generate controller Pages home about contact

Downloaded the basic slideshow materials from Jon's website.

Created a ./public/stylesheets/custom.css file and put Jon's CSS there.

#slideshow {
    position:relative;
    height:350px;
}

#slideshow IMG {
    position:absolute;
    top:0;
    left:0;
    z-index:8;
}

#slideshow IMG.active {
    z-index:10;
}

#slideshow IMG.last-active {
    z-index:9;
}



# added Jon's html code to the ./app/views/pages/home.html.erb file
Slideshow Image 1 Slideshow Image 2 Slideshow Image 3 Slideshow Image 4

At first, I got lots of errors trying to find the image files.  Turns out you need to specify the images using the erb syntax as shown here (defaults to images in the ./public/images/ directory).  More on routing here.

<%= image_tag "image1.jpg", :alt=>"Slideshow Image 1", :class=>"active" %> <%= image_tag "image3.jpg", :alt=>"Slideshow Image 3" %> <%= image_tag "image4.jpg", :alt=>"Slideshow Image 4" %>

Put Jon's images (because I'm lazy for this demo) in the ./public/images/ folder.  They're all the same size, so don't have to deal with possible issues there.

Added the following js code to ./public/application.js file.

function slideSwitch() {
    var $active = $('#slideshow IMG.active');

    if ( $active.length == 0 ) $active = $('#slideshow IMG:last');

    var $next =  $active.next().length ? $active.next()
        : $('#slideshow IMG:first');

    $active.addClass('last-active');

    $next.css({opacity: 0.0})
        .addClass('active')
        .animate({opacity: 1.0}, 1000, function() {
            $active.removeClass('active last-active');
        });
}

$(function() {
    setInterval( "slideSwitch()", 5000 );
});

# Update the config/routes.rb file to map and name the routes:
# Replace the get statements in the routes file with these match commands...
  match '/contact', :to => 'pages#contact'
  match '/about',   :to => 'pages#about'
  root :to => 'pages#home'

# update the repository to remove the default index.
$ git rm public/index.html
$ git commit -am "Removed default Rails page"

Do a set of commits and merge the basic-pages branch back to master git branch. 
Success!

Tuesday, February 14, 2012

Syntax Highlighting in Blogs

Found a good tool to do syntax highlighting in blogs, so code snips should be more legible.  Will see about working that into the flow.  No promises I'll use it all the time.

HEROKU STACKS 101

When creating a new heroku app, Heroku defaults to one stack.  You can also specify which stack to use based on which version of Ruby you're using.  See the Heroku dev article on stacks.


# determine which one am currently using:
$ heroku stack
  aspen-mri-1.8.6
* bamboo-mri-1.9.2
  bamboo-ree-1.8.7
  cedar (beta)

The bamboo-mri is the default as of writing this.
Since I'm running this app on ruby 1.8.7 (damn Johnson gem), I need to migrate to the bamboo-ree-1.8.7 stack.  See Heroku's instructions on migrating stacks here.


# Test the migration to bamboo in a temp app:
$ heroku create --stack bamboo-ree-1.8.7 --remote trybamboo
Creating pure-water-6467... done, stack is bamboo-ree-1.8.7
http://pure-water-6467.heroku.com/ | git@heroku.com:pure-water-6467.git
Git remote trybamboo added


$ git push trybamboo master

Ok, slug compiled and deployment successful.  Looking at the site, it appears to be working (in the same no-java form as on the local machine).  Except, the h5 titles "Work" went back to white text and are no longer visible.  Thought I fixed that earlier.  Not going to fret about that right now, bigger fish to fry.

$ heroku stack:migrate bamboo-ree-1.8.7 --app radiant-river-4002
-----&gt; Preparing to migrate radiant-river-4002
       bamboo-mri-1.9.2 -&gt; bamboo-ree-1.8.7

       NOTE: You must specify ALL gems (including Rails) in manifest

       Please read the migration guide:
       http://devcenter.heroku.com/articles/bamboo

-----&gt; Migration prepared.
       Run 'git push heroku master' to execute migration.

jQuery Frustration and Layouts

Check existing rvm, ruby, rails config:
$ rails -v
Rails 3.0.11
$ ruby -v
ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10.8.0]
$ rvm list

rvm rubies

=* ruby-1.8.7-p302 [ i686 ]
   ruby-1.9.2-p180 [ x86_64 ]

# => - current
# =* - current && default
#  * - default




Removed the following line from application.html.erb
<%= javascript_include_tag "bj_folio", "jquery", "jquery.scrollTo", "jquery.isotope.min", "jquery.localscroll"  %>

(left this include tag for application)
<%= javascript_include_tag "application" %>

And added these lines to application .js
//= require jquery
//= require jquery_ujs
//= require bj_folio
//= require jquery.scrollTo
//= require jquery.localscroll
//= require jquery.isotope.min
//= require jquery.infinitescroll.min
//= require fake-element
//= require fancybox
//= require custom
//= require_tree .

Useful reference for layouts and rendering


Ok, so the application.js lines with //=require jquery, etc are not doing anything.  When I look at the page source, all I see are the scripts referenced in application.html.erb.  So I removed all those requires from the application.js and put back the line in application.html.erb that lists all the js files I think I need.

I also because the application.html.erb file has the line:
<%= stylesheet_link_tag :all %>

I can remove the contents of the _stylesheets.html.erb file.

Page source indicates it finds all the css files in public/stylesheets.

Ok, so no more GET errors when I'm trying to load the homepage.  However, not seeing ANY of the images or js stuff.

*****

Trying to cleanup the home.html.erb file.  Left comments in the file for what I did.
Saw the h5 text in mainmenu go white.  Removed the style-dark.css file and works ok.  Looks like that file's not used anyway (see style.css has that commented out) and conflicts with the style-minimal.css.

****
Looking more into jquery and rails 3, I added the following line into the application.rb file (inside the application class).
config.action_view.javascript_expansions[:defaults] = %w(jquery rails)

jquery github page for reference.


RVM

Already have rvm installed and been using it, but haven't switched between rubies in a while.  Here's a refresher...

Added a file, .gemrc to my home directory.  One line in the file to prevent installing all the ri and rdoc files associated with Rails install.
gem: --no-ri --no-rdoc

$ rvm list
rvm rubies

=* ruby-1.8.7-p302 [ i686 ]
   ruby-1.9.2-p180 [ x86_64 ]

# => - current
# =* - current && default
#  * - default

# To install rails for the current gemset:
$ gem install rails --version 3.0.11

# when looking at what rails -v, it says:
Could not find activesupport-3.0.6 in any of the sources
Run `bundle install` to install missing gems.

# ran bundle install

$ rails -v
Rails 3.0.6

# Thought I'd installed 3.0.11, but Gemfile probably has 3.0.6 gems.  Oh well, good enough for now.
# Now let's switch to use ruby 1.9.2 and see what rails is there.

$ rvm use ruby-1.9.2-p180

$ rails -v
Could not find rake-0.9.2.2 in any of the sources


Not sure what's going on here, but need 1.8.7 for johnson gem, so going to revert to that one and continue.

Note that opening a new terminal window results in use of the default ruby.

More info at the RVM site.

Monday, February 13, 2012

jQuery and Isotope Setup Attempt

Some references:

Found a good intro to isotope
a) To include files, create a config/isotope.yml file.
b) add gems
c) ruby script/rails plugin install git@github.com:elado/isotope.git

Errors!!  Couldn't load the johnson gem.  Lot's of googling and found that johnson isn't compatible with ruby 1.9.2, but others had success with 1.8.7.  Fortunately, I'm using RVM to manage Ruby versions, just for instances like this.

in my project's root directory (which looking back on, I hope I don't regret)
# update RVM
$ rvm get head
$ rvm reload
$ rvm install 1.8.7-p302
# wait a while for the new ruby to install
# create gemsets for each version of rails I've got
$ rvm --create 1.8.7-p302@learningjava
$ rvm gemset list # lists the current gemsets

# now install bundler
$ gem install bundler

# check which ruby version:
$ ruby -v
     ruby 1.8.7 (2010-08-16 patchlevel 302) [i686-darwin10.8.0]
# check which version of rails
$ rails -v
     Got and error "Rails is not currently installed on this system."

# install rails for this gemset
$ gem install rails --version 3.0.11
# worked

# ok, now retry bundler to see if johnson works
$ bundle install
# success!

Ok, now where was I?  Following the intro to isotope from the top of this post.

$ ruby script/rails plugin install git@github.com:elado/isotope.git

***
Found my css templates were getting referenced from the wrong place, so cleaned that up.

***
Defined a logo in the app/helpers/application_helper.rb to allow for a simple line to get the logo in the application.html.erb

***
When I try to view the app using rails server, I get a lot of errors:

Started GET "/javascripts/jquery.toscrollTo.js" for 127.0.0.1 at Mon Feb 13 19:40:48 -0800 2012

ActionController::RoutingError (No route matches "/javascripts/jquery.toscrollTo.js"):


After reading lots of stackoverflow and other sites, it looks like I need to remove the :defaults in the application.html.erb file:
    <%= javascript_include_tag :defaults %>

and replace it with a callout to each js file in public/javascripts/

    <%= javascript_include_tag "jquery.js", "bj_folio.js" , "jquery.min.js", "jquery.toscrollTo.js", "jquery.isotope.min.js", "jquery.localscroll.js", "application.js"  %>

I've also seen some reference that the loading order matters.

I have a feeling dynamically loading partials will be a good subject soon, so here's a good example.


No luck getting the app to work.  Calling it a night.

Creating a Basic RoR Application

Creating a basic Ruby on Rails app to learn Jquery and other javascript. (using rails 3.0.6)
$ rails new learning_java
# update Gemfile to include Heroku
$ git init
$ git add .
$ git commit -m "initial commit"
# update README
$ git mv README README.markdown
$ git commit -a -m "Improved the README"
# create new repository on github: https://github.com/<username>
$ git remote add origin git@github.com:<username>/learning_java.git
$ git push origin master


As a result, have a new app, learning_java, on my local machine as well as on github.
Although it's early in the design phase, let's deploy to Heroku.

$ heroku create
$ git push heroku master
[Update 4/21/12]
If you receive the following error during the initial push to Heroku, do a bundle install and then repeat the push to git and push to heroku.
Error: "You have modified your Gemfile in development but did not check the resulting snapshot (Gemfile.lock) into version control"

# Website for app:
http://radiant-river-4002.heroku.com/

# make sure everything is up to date:
$ git push
$ git push heroku

# Checkout a new Git branch to start creating the app's pages
$ git checkout -b basic-pages

# Create the pages controller
$ rails generate controller Pages home about contact blog flightprojects hackings

Some background on controllers, classes and methods courtesy of The RoR Tutorial:
The pages_controller.rb defines a class called PagesController. Classes are simply a convenient way to organize functions (also called methods) like the home and contact actions, which are defined using the def keyword.

The PagesController is a Ruby class, but because it inherits from ApplicationController the behavior of its methods is specific to Rails: when visiting the URL /pages/home, Rails looks in the Pages controller and executes the code in the home action, and then renders the view (the V in MVC).

# Although we haven't done much, we can commit to github
$ git add .
$ git commit -m "Added a Pages controller"

Updated app/controllers/pages_controller.rb file.  Want to assign instance variables for each page method to define the page's title (@title = "Home").

The at sign @ in @title indicates that it is an instance variable. Instance variables have a more general meaning in Ruby, but in Rails their role is primarily to link actions and views: any instance variable defined in the home action is automatically available in the home.html.erb view, and so on for other action/view pairs.

Then, the app/views/layouts/application.html.erb can be updated to include embedded ruby defining the title.
More info on this here:
http://ruby.railstutorial.org/chapters/static-pages#sec:layouts

# Update the config/routes.rb file to map and name the routes:
# Replace the get statements in the routes file with these match commands...

  match '/contact', :to => 'pages#contact'
  match '/about',   :to => 'pages#about'
  root :to => 'pages#home'
# update the repository to remove the default index.
$ git rm public/index.html
$ git commit -am "Removed default Rails page"

Going to start venturing off the reservation soon, so want to push what we've got so far in case need to revert back.
Dump of command line history...
  503  git add .
  504  git commit -m "Done with basic page setup"
  505  git checkout master
  506  git branch
  507  git merge basic-pages
  508  git push
  509  git push heroku

OK, now for the new stuff.

Was going to install jrails, but saw a post that it was abandoned with Rails 3.  So going to use the jquery-rails gem.
Found this website as a good resource for installing the gem.

Add to the gemfile:
gem "jquery-rails"

# Then:
 $  bundle install
 $  rails generate jquery:install

Files magically appear in public/javascripts/


***

Messing with isotope and jquery
Downloaded isotope (a jquery plugin for "magical" layouts) from https://github.com/desandro/isotope

Looking at a friend's site that uses itotope and jquery.  Here are the files/scripts references...
     <script type="text/javascript" src="js/jb_olio.js"></script>
     <script type="text/javascript" src="js/jquery-1.6.2.js"></script>
     <script type="text/javascript" src="js/backbone/underscore.js"></script>
     <script type="text/javascript" src="js/jquery.scrollTo.js"></script>
     <script type="text/javascript" src="js/jquery.localscroll.js"></script>
  <script src="js/jquery-1.5.1.min.js"></script>
  <script src="jquery.isotope.min.js"></script>


Found this gem gem "jquery-scrollto-rails":
Added to Gemfile and run bundle install.  Got an error:

Bundler could not find compatible versions for gem "railties":
  In snapshot (Gemfile.lock):
    railties (3.0.6)

  In Gemfile:
    jquery-scrollto-rails depends on
      railties (~> 3.1)

Running `bundle update` will rebuild your snapshot from scratch, using only
the gems in your Gemfile, which may resolve the conflict.


Ran bundler update and didn't work.  Didn't find anything online, so going to remove from Gemfile for now.

Created the jquery.scrollTo.js and jquery.localscroll.js files by hand and put into javascript directory with other jquery files.

Can't get any of the js to render.  Tried this in application.html.erb, but also didn't work.
    <%= javascript_include_tag 'jquery', 'bj_folio' , 'jquery.min', 'jquery.toscrollTo', 'jquery.isotope.min', 'jquery.localscroll' %>

Basically, stuck right now.  Don't have any of the js working.

Sunday, February 12, 2012

Helloworld

Blog to document learning of new skillz.