Check out my portfolio and contact me.

Archive for February, 2013

Web Development

Posted on: February 15th, 2013 by Redd No Comments

So I recently started the journey of learning web development. To start out I decided to go ahead and rebuild my personal portfolio site, since it need to be done anyways I figured why not kill two birds with one stone. To accomplish this task I used Foundation 3 and WordPress, where I developed my site and then converted it into a custom WordPress template.

 

To start out it was rather interesting to have to install all the support software on my machine just to even begin to start developing my. I had to install Homebrew, Ruby on Rails, Foundation, and MAMP (which I already had installed). But once I got all the software in place the development speed was incredible.

 

Working within a web framework infinitely increase the web development speed, I wish I had started learning this years ago. SassĀ is also a pretty interesting way to develop as well, I really like how it’s setup to write CSS where I can nest classes within classes. The only thing I had to really adjust to was the fact that hierarchy really matters when it comes to CSS in Sass. Also adjusting to grid based web page layout was interesting to get use to as well. But overall my experience was overwhelmingly positive while learning a new way to develop websites.

Converting my site into a WordPress template was a rather interesting and difficult task. To start this next step I setup a sub domain on my website and installed WordPress. I then took a blank theme and started copying and pasting my code into the appropriate pages. To say I didn’t know what I was doing was pretty accurate. I’m not exactly familiar with php, I can read it and get an idea of what some things do as long as they are named appropriately, but for the most part I was in the dark. Needless to say my first time uploaded my theme to the test sever yielded some pretty broken results. But I would honestly say that learning to do this the hard way was probably the best. I’m one of those people that learns best by doing and by doing it a lot. Needless to say with the slow start in implementing my site into the template it was overall a very interesting and educational experience.

 

Once I was finally happy with my theme I had to recreate all of my content from my old site and port it into the test site, since I planned to start fresh with my old site by deleting the root directory of all assets. This included bringing over all of my SEO as well which wasn’t exactly difficult. I also had to remake 60+ thumbnail images for my portfolio which I can say isn’t exactly the most interesting task to do. I was introduced to fancybox for displaying all my images and videos, I’ve fallen in love with this tool with how elegant and simple it is.

 

Once I had all of my content created and ported over, I bit the bullet and deleted all of the information in domains public html folder, except for my test websites domain. There was something interesting just watching my website being deleted through my ftp client. After that I installed a fresh version of WordPress and within 2 hours I had my new portfolio site up and running with SEO in toe as well.

Overall I really enjoyed the experience in getting my hands dirty and tinkering with the creation of my portfolio site. I hope to continue learning and growing with web development along with my fledgling python and javascript skills.

 

Redd

Auto Rigging Awesome Spine

Posted on: February 14th, 2013 by Redd No Comments

I hope everyone had a wonderful holiday. Mine was good and bad at the same time. I had my wisdom teeth pulled between Christmas and New Years. Not really a great experience if I do say so myself now onto Auto Rigging Awesome Spine

Thanks to having my teeth pulled though I finally sat down and finished up creating a script to make faith of the fallen’s Awesome Spine Setup. I really like this implementation of an ik spine mainly because of how versatile it is and that you can’t gimbal lock it.

Manually Rigging The Spine

To start off with I first went through and did the tutorial manually so I would better understand what all I was doing when I went back and turned it into script. I did cheat at the end when I was connecting all the output and input nodes. I have gotten so use to doing things through code that I have begun to forget how to do certain tasks through Maya’s interface, so instead of spending an hour looking up how to connect input nodes through Maya’s interface I just wrote up a simple static script to connect everything for me. I don’t see this as much of a problem since doing connections can be tedious and messing up can cause problems, it was just faster and simpler to have the system handle it for me.

The final result from doing it manually actually didn’t work for me. I had managed to miss click one of my ik constraints in the early steps and so I failed at creating the rig manually. This was ok since I had gotten and understand of how the rigging process worked and I knew what I had messed up on.

Auto Rigging Awesome Spine

The Auto Rigging of the Awesome Spine was rather difficult and fun for me. To start off I duplicated the spine joint chain using a function I had already created with python, where I stored the joint rotations, positions and parents of each joint and then created a whole new set of joints and parented them according to the information I queried.

After that, it was actually rather simple array manipulation creating the other parts of the rig. Though during this proceses I had to speak to my mentor Ryan Griffin, who is always very patient and kind to me, several times for clarification and help. I managed to globally change Arrays, which I still haven’t figured out how I managed to do, though my mentor called it clever i’d argue with him on that one. The creation of the groups, locator nodes, and ikHandles was all just array manipulation from when I created the ik chain originally. I just had to find a way to execute the information that I had already to yield the results I desired.

This script does have limitations. There must always be 5 spine joints or it wont work. I have some ideas on how to make it dynamic but it would still always require the number of joints to be an odd number. There must also be control curves created and named properly in the scene for the script to execute. I did learn some things along the way. I gained a better understand of array manipulation and I learned how to loop through two different arrays at the same time, which doesn’t seem to be a big deal until you try and do it. I feel that my code became less bloated as well and that I started using dynamic solutions instead of static ones. I hope this has been an interesting/insightful read on Auto Rigging Awesome Spine.

All in all this was a difficult but fun process that I thoroughly enjoyed. I also added my shoulder control curve setup to my arm rigging script. My next step is to setup the auto rigging for the head controls and then from there I don’t know if want to start on the auto rigging of the facial controls or setup the FK with space switching scripts.

Optimizing My Website

Posted on: February 14th, 2013 by Redd No Comments

So I recently took a new job working sales at a start up web company. I figured this would work out well since I already have some knowledge of HTML/CSS and I know how to use some CMS systems like WordPress and joomla, so i’d be able to tell what websites are failing and which ones are successful. The caveat to this whole experience is that i’ve been learning about optimization for the major search engines as well so that I can tell who has bad optimization and who’s optimization is successful. So with the knowledge I’ve learned to help me sell websites i’ve gone ahead and applied this towards optimizing my website.

So far the experience has been pretty interesting. My first attempt where I just added some optimization for my title tag and the meta description with keywords yielded me 5th page results when searching for my name Jason Redd in google. My second attempt where I refined my description tag and title tag’s with stronger focus on my name plus adding title and alt tags to all of the links and images on my index page. I also went and added my websites url to all of the videos i’ve published through vimeo, to increase my back links. This ended up giving me second page results. I was rather surprised since going from 5th to second was rather nice.

On my third try I’ve gone through and cleaned up my code some to make it cleaner. Fixed links up to be prettier and added some more into the code with the proper tags associated with them. Getting my name into the body text in an h1 tag and an h2 tag was also my goal. I also published all of the videos i’ve created to a channel on youtube and added my websites url to the description in them as well. I went ahead and finally created a google+ account as well and made sure my site was listed on there too. I also went ahead and optimized all of the secondary pages on my site too.

If this last bit of optimization doesn’t yield first page results I think I’ll yield and finally put some text on my portfolio pages so that google will see that I have some content on my pages besides just links to my videos. This isn’t ideal but I’d like for some to at least when searching my name to be able to find my portfolio site. I might just also finally learn how to create a site map and submit that to the search engines as well.

Overall this has been a rather fun and educational experience. I hope to learn a great deal more and to eventually pull one of the top 3 listings for my name. Thanks for reading about me optimizing my website! Special thanks to my boss, without him I wouldn’t of been able to do this!

Redd

Setting up environment variables for Mac and userSetup.py

Posted on: February 14th, 2013 by Redd 5 Comments

Okay so I’m in my second semester at the Dojo and i’m focusing on pipeline creation. I have both Mac and Windows on my system at home. I favor Mac but work just as fine on Windows. In the initial set up to begin connecting everything together for a pipeline it’s rather easy to do on Windows… Not so much for Mac and so I wanted to do a quick write up on how to setup environment variables for Mac for any of the other crazy Mac user TD’s out there.

First off the programs you will be using are Terminal (which is part of the system), Xcode (which doesn’t come with OS X but can be found here) and a script editor of your choice (I use Sublime2 it’s a paid application but in my opinion worth the money). Now we will be doing things in the Terminal app and if you’ve never opened it up before it is a good time to finally do it! If you are new or just rusty on commands in Terminal I’d recommend checking MacRumors Terminal guide, it should get you up to speed or at least understanding some of the basics quick enough.

Before we begin I’m going to be showing and discussing a lot of things talked about in Lebenszeichen’s blog. The code will be the similar and the how to will be about the same but with my own take since i’m integrating this into Maya as well.

Environment Variables for Mac

To create an environment variable on Mac it requires the creation of a file called “environment.plist”. But unfortunately there are some steps required to get everything set up properly.

Now to start, open up Terminal (which is found in the utilities folder inside of the applications folder) you should see something similar to this.

Environment Variables for Mac - Terminal Window

Now in Terminal type.

cd ~

This is just to make sure that we are in the root directory or the users directory. The cd just means to change directory and the ~ means the root directory. Now that we are in the root directory type.

ls -a

This should display all the folders contained in the user directory. Not only do you see all the folders that you would normally see but you should also see a number of folders with a “.” at the beginning of the names. Naming folders with a “.” at the beginning is strictly for the OS which is why they are hidden from all users. There are some other folders hidden in user directory as well but for now let’s move on.

Check to see if there is a folder named “.MacOSX” if there is you can skip the next step and move onto the creation of the environment.plist file. If the directory doesn’t exist yet (which in most cases it shouldn’t) type in Terminal.

mkdir .MacOSX

Here we are creating a new directory called “.MacOSX” make sure to pay attention to capitalization since this is case sensitive. Type in Terminal.

touch .MacOSX/environment.plist

What has happened here is the creation of the “environment.plist” file that we need to setup our environment variable that contains the path information for our directories or reopositories. Type in Terminal.

open .MacOSX/environment.plist

Now we just open up our “environment.plist file” to add all the fun stuff we need. I would like to add that on my personal system when I went to open the “environment.plist” file Xcode tossed and error saying the file was corrupted. This was simple enough to work through and I’ll explain the work around. If you system didn’t toss up an error you can skip the next step and continue to setting up the plist file.

In Xcode go to file>New>File or command N. Click on the Resource selection on the left hand side from the pop up window. Select Property List. Now it’s going to prompt you to name the file right then and there. So in Terminal type.

open .MacOSX

This should pop up a new finder window with the .MacOSX directory open and we should be able to see the corrupt environment.plist file. Simply select the “environment.plist” file thats inside of the hidden directory that we can now see and drag it over the Save As window in Xcode. This will automatically set the path to the .MacOSX directory and should just name the file the name we already created. Press create and overwrite when the program asks the question.

With a new environment.plist file open in Xcode you should see something like this.

Environment Variables for Mac - Xcode pList

The document should be blank unless the environment.plist file already existed on the system before the beginning of this whole process. To setup the varialbe all we need to do is click on the + sign located on the root line. Just name the variable, in this case mine is called “ARTTOOLS” but it can be anything you want. In the value field add the drive or path information that you want to be contained in that variable. My value field is the path information to my google drive folder and looks something like /user/jredd/google drive/. Once you have the new variable named and it holds a value save the file. Now for the environment variable to take effect we need to logout of the account and log back in before Maya can take advantage of the environment variable we just set.

On a side note. If during the process of creating and setting up the “.MacOSX” folder or the “environment.plist” a wrong directory are document was created, like something was miss spelt or just plain wrong. You can always remove the newly created document by typing in Terminal.

rm nameToDelete

Integration with Maya and creating userSetup.py

Now that we can setup Environment Variables for Mac we can move onto getting things working in Maya. I implemented this by creating a userSetup.py document. I recomend typing and not just copying and pasting from the browser into the script editor. I have found that just byt typing out the code it helps with comprehension and memory.

import sys, os
import pymel.core as pmi
import maya.cmds as cmds

sys.path.append(os.environ['ARTTOOLS'])

All we are doing here is importing Maya’s command modules for python to use and appending Maya’s paths list. In place where I have “ARTTOOLS” be sure to change that to whatever variable was created in the environment.plist document.

Now that we have finished our code we need to save our document. Unfortunately Maya for Mac doesn’t check the regular scripts folder that most users are use to putting tools and things into. To get Maya to load this file when it’s starting, we must place it in /Users/UserName/Library/Preferences/Autodesk/maya/scripts. If you notice the path has you going into the library folder contained in the root user directory. The problem is that the library folder is hidden in the user directory so we need to turn back to Terminal. Type in Terminal

open Library

This should open up a new finder window with the library folder, thats hidden, opened up for us. Now just follow the path /Users/UserName/Library/Preferences/Autodesk/maya/scripts and save the text document as userSetup.py in the scripts folder.

Now that the userSetup.py folder has been created let’s open up Maya to test it out. Once Maya is open, open up the script editor in Maya and type.
cmds.joint()
If a joint is created in the scene then the userSetup.py document is being read. Now to check to see if the path to the directory has been added to Maya’s paths. In Maya’s script editor type.

import sys, os

import maya.cmds as cmds

for path in sys.path: print path

This should print out all of the paths Maya looks at and if the link to the directory is located in that list then we have been successful in setting up an environment variable for Maya to use.

I hope this has been informative on how to setup Environment Variables for Mac. If there are any mistakes in this setup or questions please feel free to comment or email me. Cheers!

Redd