<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
  <channel>
    <title>Web Developer - Dale Tan</title>
    <link>http://www.whatthedale.com/v3</link>
    <description>Web Developer - Dale Tan Feed</description>
    <language>en-us</language>
    <generator>Symphony (build 2.2)</generator>
    <atom:link href="http://www.whatthedale.com/v3/rss/" rel="self" type="application/rss+xml"/>
    <item>
      <title>Using custom ssh key with github</title>
      <link>http://www.whatthedale.com/v3/articles/using-custom-ssh-key-with-github/</link>
      <pubDate>Wed, 27 Apr 2011 08:51 -0400</pubDate>
      <guid>http://www.whatthedale.com/v3/articles/using-custom-ssh-key-with-github/</guid>
      <description>&lt;p&gt;I recently started a new job at &lt;a href="http://www.dealer.com"&gt;Dealer.com&lt;/a&gt; and needed to set up my laptop.  However, since we are switching over to Git internally, I needed to set up multiple RSA keys.&lt;/p&gt;

&lt;p&gt;First, go to where your ssh keys are stored.  On my local, they are here (which i would imagine most devs have this similar set up): &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cd ~/.ssh/
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;then in your &lt;code&gt;config&lt;/code&gt; file, add the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Host github.com
    User user_name_goes_here
    Hostname github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa_github
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I used &lt;code&gt;id_rsa_github&lt;/code&gt; since that was an easy name to associate it with my github account.  I named my dealer one &lt;code&gt;id_rsa_dealer&lt;/code&gt; and so forth.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Moving on</title>
      <link>http://www.whatthedale.com/v3/articles/moving-on/</link>
      <pubDate>Mon, 04 Apr 2011 00:26 -0400</pubDate>
      <guid>http://www.whatthedale.com/v3/articles/moving-on/</guid>
      <description>&lt;p&gt;Here is a brief timeline of my life:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Seattle (well, sho'line) for my first 18&lt;/li&gt;
&lt;li&gt;Drexel University in Philadelphia for 4&lt;/li&gt;
&lt;li&gt;NYC for 6.  While there, &lt;a href="http://www.ugo.com"&gt;UGO.com&lt;/a&gt; for about 2.5 years then &lt;a href="http://www.rga.com"&gt;R/GA&lt;/a&gt; for the remainder&lt;/li&gt;
&lt;li&gt;Burlington, VT&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After working remotely for a little under two months with R/GA after moving up to Burlington, I will be moving onto the next part of my development career working for &lt;a href="http://www.dealer.com"&gt;Dealer.com&lt;/a&gt;.  I will start mid-April working as a frontend dev with their custom client work (though I do want to work on their platform, really, but we'll see how it all goes).  &lt;/p&gt;

&lt;p&gt;I was a little reluctant at first to accept the job offer with all the stuff I went through with R/GA and my circumstance, but surprisingly, R/GA was pretty cool about me leaving after all.  Once I found that out, it was a weight lifted off my shoulders so I could look forward to my next venture.  I was glad that I was at least able to see my last project with them out the door before I started with Dealer.  I am not completely leaving R/GA just yet - I am going to be working for them on a part-time freelance basis so that I can at least still have some connection to the best project I've worked on this far in my career.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up different development environments using Git (and Github)</title>
      <link>http://www.whatthedale.com/v3/articles/setting-up-different-development-environments-using-git-and-github/</link>
      <pubDate>Sun, 03 Apr 2011 22:02 -0400</pubDate>
      <guid>http://www.whatthedale.com/v3/articles/setting-up-different-development-environments-using-git-and-github/</guid>
      <description>&lt;p&gt;It has taken me a while to get used to using Git and using it in my whole development workflow.  Since &lt;a href="http://www.symphony-cms.com/"&gt;Symphony CMS&lt;/a&gt; is on &lt;a href="http://www.github.com/"&gt;github&lt;/a&gt; and so are basically all of the contributing and extension developers, it only makes sense to get used to using git and github.  &lt;/p&gt;

&lt;p&gt;After reading this &lt;a href="http://symphony-cms.com/discuss/thread/65913/"&gt;thread&lt;/a&gt; on the forums, it helped me figure out how to get my workflow going.  Also, &lt;a href="http://symphony-cms.com/learn/articles/view/getting-git-for-symphony-development/"&gt;Jona's &lt;em&gt;Getting Git for Symphony Development&lt;/em&gt;&lt;/a&gt; article and &lt;a href="http://rowanlewis.com/using-git-and-symphony-cms"&gt;Rowan Lewis' *Using Git and Symphony CMS&lt;/a&gt; article helped me figure out how to separate the different git repos and upstreams.&lt;/p&gt;

&lt;p&gt;For my local development, I use MAMP and wrote a &lt;a href="/articles/"&gt;brief article (NEED CORRECT URL)&lt;/a&gt; about setting this up the other day.  Once that is up and running, and in terms of Symphony, you &lt;code&gt;clone&lt;/code&gt; the official github repository:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ cd site
$ git clone https://github.com/symphonycms/symphony-2.git v1
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;v1&lt;/code&gt; is the folder you would like to clone this repository into.  This also goes for any other git remote repository you may be working with.  Now, you should have &lt;code&gt;site/v1&lt;/code&gt; with the entire symphony repo in &lt;code&gt;v1&lt;/code&gt;.  Once that is done, you don't want to continue to work off of the symphony repository since you don't technically have push access (unless if you're a core developer) and like what &lt;a href="http://symphony-cms.com/discuss/thread/65913/#position-2"&gt;Craig&lt;/a&gt; said, it's good practice to NOT use the default &lt;code&gt;origin&lt;/code&gt; remote url.  Instead, just remove and rename that remote:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ cd v1
$ git remote rm origin
$ git remote add symphony git://github.com/symphonycms/symphony-2.git
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Before adding your site's remote url, you need to create the repository from the github admin, which is pretty straight forward so I will not get into those instructions.  After creating your new github repository, you can now add your remote url:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ git remote add site git@github.com:username/site-repo.git
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This remote url shows that you have push access to this repository.  Now there should be two remote urls:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ git remote -v
site    git@github.com:username/site-repo.git (fetch)
site    git@github.com:username/site-repo.git (push)
symphony    git://github.com/symphonycms/symphony-2.git (fetch)
symphony    git://github.com/symphonycms/symphony-2.git (push)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;With your remotes setup, you should next set up your branches:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ git branch -m master symphony
$ git checkout -b site-name
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;the &lt;code&gt;-m&lt;/code&gt; flag changes the &lt;code&gt;master&lt;/code&gt; branch name to &lt;code&gt;symphony&lt;/code&gt;.  This is done so that it's easier to know which branch to use when symphony needs to be updated.  Now with the original master branch renamed, it's time to checkout and create and new branch named &lt;code&gt;site-name&lt;/code&gt;.  &lt;/p&gt;

&lt;p&gt;If you run into merge issues when checking out from the &lt;code&gt;symphony&lt;/code&gt; repo to the &lt;code&gt;site-name&lt;/code&gt; (this could happen on setting up an already existing repo onto a new computer) then just simply resolve the conflicts because it is more than likely that they will differ from the base symphony build.&lt;/p&gt;

&lt;p&gt;Once those conflicts are resolved, make sure to run&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ git submodule update --init
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This command will then install any &lt;code&gt;extensions&lt;/code&gt; associated as submodules in your build.  If you do not do this step, then you will more than likely get an "extension not found" error when trying to load up the page.&lt;/p&gt;

&lt;p&gt;If you do not have the &lt;a href="http://symphony-cms.com/download/extensions/view/40986/"&gt;Dump DB&lt;/a&gt; extension installed, I would highly recommend installing this extension to export your authors and data sql files to move around environments by committing it to Git.  Obviously, this can pose a major security risk since you will be technically exposing user information and storing it in your version control history, but this seems to be the easiest way to manage your sql between environments.  I haven't fully fleshed out this method, but for not it seems to work fine for me.  I will, however, delete the sql files so they are not always just lingering there since they are saved onto your server.&lt;/p&gt;

&lt;p&gt;Now, to get to the point of that tangent - after doing all the above steps, if you do not load in your database, simply put, you won't have a site.  So since I am running MAMP as my localhost, I simply load up &lt;code&gt;phpMyAdmin&lt;/code&gt;, create the db table, and then load in the associated sql files.  Once I have done that, I &lt;code&gt;git rm *.sql&lt;/code&gt; and push so my other environments can do a pull request.&lt;/p&gt;

&lt;p&gt;At this point, you should have a running replica of your Production environment.&lt;/p&gt;

&lt;p&gt;If you are using the multi-environment &lt;code&gt;manifest&lt;/code&gt; mentioned on the Symphony CMS forums (which I can't seem to find a link for), you may need to create a symbolic link to your respective environment.  If not, and you try to load up your page, you will be greeted with a &lt;code&gt;missing manifest/config.php&lt;/code&gt; message (or something along those lines).   To get around this, create your symbolic link (in this example using &lt;code&gt;dev&lt;/code&gt; and on the &lt;code&gt;site-name&lt;/code&gt; branch):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ cd v1
$ ln -s ./manifest.dev ./manifest
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Once you do create the symbolic link, and then load up the site, you'll be shown a &lt;code&gt;cannot find database [name]&lt;/code&gt; message.  To get around this, you will need to load in an existing database, usually pulled down from production site like mentioned above.&lt;/p&gt;

&lt;p&gt;TO WRITE ABOUT:
 - how to handle branch pushes with different remotes
 - upstreams:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;$ git branch --set-upstream site site-name
Branch site set up to track local branch site-name.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;code&gt;site&lt;/code&gt; is the remote name and &lt;code&gt;site-name&lt;/code&gt; is the branch&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setting up MAMP for localhost development</title>
      <link>http://www.whatthedale.com/v3/articles/setting-up-mamp-for-localhost-development/</link>
      <pubDate>Sat, 02 Apr 2011 18:03 -0400</pubDate>
      <guid>http://www.whatthedale.com/v3/articles/setting-up-mamp-for-localhost-development/</guid>
      <description>&lt;p&gt;I'm sure this topic has been beaten to death, but I just recently set up another computer with MAMP and took me probably an extra 20 minutes just to get a local dev domain to work correctly when it should have taken me less than five - which includes downloading the application.  Ok, with the downloading, that might be an exaggeration because I already had it on my machine, so I can't really say how long the download takes, but I digress.  &lt;/p&gt;

&lt;p&gt;In order to get local dev domain, something like &lt;code&gt;awesome-site&lt;/code&gt; to work in your MAMP environment, you will need the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;10 minutes&lt;/li&gt;
&lt;li&gt;Admin access&lt;/li&gt;
&lt;li&gt;The latest MAMP / MAMP Pro install&lt;/li&gt;
&lt;li&gt;Text editor for &lt;code&gt;.conf&lt;/code&gt; files (really, extensions shouldn't matter for a text)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once you have MAMP installed in your root &lt;code&gt;/Applications&lt;/code&gt; folder (it must be root, otherwise you will get an error on boot up saying to install MAMP in your root &lt;code&gt;/Applications&lt;/code&gt; folder), you will need to find your Apache httpd.conf file.  Via the command line:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;cd /Applications/MAMP/conf/apache&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;touch vhosts.conf&lt;/code&gt; (we'll get to this in a minute)&lt;/li&gt;
&lt;li&gt;Open httpd.conf file and scroll to the very bottom of the file&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You should see something like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;#
# Use name-based virtual hosting.
#

# NameVirtualHost *
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now, since MAMP defaults to port &lt;code&gt;8888&lt;/code&gt;, I'm not really sure why they do not just put &lt;code&gt;*:8888&lt;/code&gt; for the &lt;code&gt;NameVirtualHost&lt;/code&gt; since they do the same already for the &lt;code&gt;localhost&lt;/code&gt; value (&lt;code&gt;localhost:8888&lt;/code&gt;).  Regardless, it is an easy change:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;# NameVirtualHost * 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;should now become&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;NameVirtualHost *:8888
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ok, so this opens up port &lt;code&gt;8888&lt;/code&gt; for your dev domains like &lt;code&gt;awesome-site:8888&lt;/code&gt;.  &lt;/p&gt;

&lt;p&gt;So, how do you add domain aliases that your browser will recognize?  You will need to use Apache's &lt;a href="http://httpd.apache.org/docs/2.0/vhosts/"&gt;&lt;code&gt;VirtualHost&lt;/code&gt; configuration&lt;/a&gt;.  You can add this information directly into your &lt;code&gt;httpd.conf&lt;/code&gt; file, but if you ever update that file via a script, it will wipe out all your configurations.  Instead, this is where the &lt;code&gt;vhosts.conf&lt;/code&gt; file comes into play.  Yes, your changes with the &lt;code&gt;NameVirtualHost&lt;/code&gt; and &lt;code&gt;Include&lt;/code&gt; can also be wiped out, but at least by using an external &lt;code&gt;vhosts.conf&lt;/code&gt; file, those changes will not be wiped out.&lt;/p&gt;

&lt;p&gt;Before we get to editing the &lt;code&gt;vhosts.conf&lt;/code&gt; file, we want to make sure MAMP will load up that file on boot.  After the &lt;code&gt;NameVirtualHost&lt;/code&gt;, add this &lt;code&gt;Include&lt;/code&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Include /Applications/MAMP/conf/apache/vhosts.conf
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now, on to editing the &lt;code&gt;vhosts.conf&lt;/code&gt;.  Like I said earlier, you will need to use Apache's &lt;code&gt;VirtualHost&lt;/code&gt; configuration:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;VirtualHost *:8888&amp;gt;
ServerName awesome-site
DocumentRoot /Applications/MAMP/htdocs/awesome-site/
&amp;lt;Directory /Applications/MAMP/htdocs/awesome-site/&amp;gt;
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    Order allow,deny
    allow from all
&amp;lt;/Directory&amp;gt;
&amp;lt;/VirtualHost&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I'm not an Apache expert, so I really cannot say what everything up there means, I just know it has worked for me and so that is what I'm sticking to.  These are the most important parts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;VirtualHost *:8888&lt;/code&gt;: This just tells the browser to use any url pointed to port &lt;code&gt;8888&lt;/code&gt; to resolve to local domain and not one in the intertubes.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ServerName&lt;/code&gt;: this is what you want your URL (plus port &lt;code&gt;8888&lt;/code&gt;) to resolve to when you type it into the address bar.  So effectively, &lt;code&gt;awesome-site:8888&lt;/code&gt; will resolve to your local MAMP instance.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DocumentRoot&lt;/code&gt; and &lt;code&gt;Directory&lt;/code&gt;: This is the folder that will be used as your root.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The options within the &lt;code&gt;Directory&lt;/code&gt; configuration is out of scope for this article so you will need to look those up yourself for more information.&lt;/p&gt;

&lt;p&gt;Ok, once we save both the &lt;code&gt;httpd.conf&lt;/code&gt; and &lt;code&gt;vhosts.conf&lt;/code&gt; files, we will need to restart MAMP so that Apache will recognize these changes.  After restarting, we can now go to &lt;code&gt;awesome-site:8888&lt;/code&gt; in the browser.  But wait, the browser isn't resolving to anything...that's rather strange.  It turns out, there is one more thing we need to configure to make this work: the system's host file which can be found here:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;cd /private/etc/hosts
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The &lt;code&gt;hosts&lt;/code&gt; portion is an actual file, not a directory.  Open up the &lt;code&gt;hosts&lt;/code&gt; file in your text editor and add this line to the bottom of the file and then save:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;127.0.0.1 awesome-site
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Like editing the &lt;code&gt;httpd.conf&lt;/code&gt; or &lt;code&gt;vhosts.conf&lt;/code&gt; files, you will need to restart MAMP to recognize this change.  This is also where you will need admin access in order to make save these changes.  Once that is done, you will be up and running an aliased localhost url.  &lt;/p&gt;

&lt;p&gt;If you don't want to edit the &lt;code&gt;hosts&lt;/code&gt; file yourself, there is a program that handles these changes: &lt;a href="http://clickontyler.com/virtualhostx/"&gt;VirtualHostX&lt;/a&gt;.  If your aren't doing anything more complicated than what I just described, i think this might be a little overkill to use, considering the paid version is $25 US.  &lt;/p&gt;

&lt;p&gt;You should now know how to set up your aliased localhost domain with MAMP.&lt;/p&gt;</description>
    </item>
    <item>
      <title>testing multiple posts on one day</title>
      <link>http://www.whatthedale.com/v3/articles/testing-multiple-posts-on-one-day/</link>
      <pubDate>Tue, 14 Dec 2010 19:40 -0400</pubDate>
      <guid>http://www.whatthedale.com/v3/articles/testing-multiple-posts-on-one-day/</guid>
      <description>&lt;p&gt;This is a test post.  Will delete&lt;/p&gt;</description>
    </item>
    <item>
      <title>Response to "Should web designers be learning HTML 5?"</title>
      <link>http://www.whatthedale.com/v3/articles/response-to-should-web-designers-be-learning-html-5/</link>
      <pubDate>Tue, 14 Dec 2010 02:15 -0400</pubDate>
      <guid>http://www.whatthedale.com/v3/articles/response-to-should-web-designers-be-learning-html-5/</guid>
      <description>&lt;p&gt;Perusing the intertubes of the world, I was google something for html5 and came across this &lt;a href="http://www.killersites.com/blog/2010/should-web-designers-be-learning-html-5/"&gt;question/answer&lt;/a&gt; article about whether or not it's a good idea to learn HTML5 right now.  I didn't think the author seemed to understand what the status of the current browser wars stood, but I don't think his advice should really be followed:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Yes, HTML 5 does have a lot of cool things it can do, and so it’s tempting to jump in and start learning. But that would largely be a waste of time … at least for now.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Granted, this article was written back in April 2010 so even by today's standards that is a bit dated.  Also, the question was proposed to "web designers".  Does that exclude developers?  Anyways, rather than leaving a rather long comment, i decided to post this instead:&lt;/p&gt;

&lt;p&gt;You can always use the html5 shiv (http://code.google.com/p/html5shiv/) to make IE7/8 more or less compatible with html5 syntax which in turn can then be styled with css.  basically for ie7/8 to recognize html5 tags (i'm not saying all, like audio/video since you still need certain codec support), it just needs to have that particular element "created" once and it will be good to go. Also, a lot of html5 has to really do with semantics of the page.  Hell, you can change just the doctype of your page and say you're supporting html5. &lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hard-core nerds tend to ignore reality&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;this may have been true in the 1990s, but the web has matured a lot since then and a lot more people are on the standards trend.  this means even today html5 will not suffer the same as early css adopters, as you mentioned.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Here’s the problem (now) with HTML 5 – most of the browsers being used today don’t support it AND it will take a few years before the majority of people out there will have HTML 5 equipped browsers.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yes, with IE, that is very true.  However, if you're using Webkit (chrome/safari) or Firefox 3.5, you will see benefits of html5 in action.&lt;/p&gt;

&lt;p&gt;People that know the technology shouldn't be saying hold off on using it, but instead should be evangelizing it.  This, of course, has its own boundaries.  For example, Web3D is coming along and seems like it will be implemented in every browser.  However, the only work that I have seen with it is in the Firefox 4 nightlies.  So that's not to say, "Yes, work with Web3D," but that's something that could really be more akin to hold off on using it now.  But with the more readily available technologies and standards out there, there is no point in telling people not to use it.  If there are bandaids to get some new standard to work in all browsers, I'd say go for it.  Push the boundaries of what the web can do and what you are currently capable of.  Without people pushing boundaries, we could very well be stuck in deeply nested cross browser hacks with no real solution in sight.  But thankfully we have working group to help get standards in place from once thought of bleeding edge technologies.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Video encoding for iPhone 3GS</title>
      <link>http://www.whatthedale.com/v3/articles/video-encoding-for-iphone-3gs/</link>
      <pubDate>Fri, 03 Dec 2010 04:12 -0400</pubDate>
      <guid>http://www.whatthedale.com/v3/articles/video-encoding-for-iphone-3gs/</guid>
      <description>&lt;p&gt;Going away for the weekend on a ~5-6 hr flight, and not bringing my laptop (for once) on a trip, I wanted to get as much knowledge dump into my brain as possible.  I set out to download as many videocasts as possible and load them onto my iphone.  &lt;em&gt;Easy and straightforward&lt;/em&gt;, I thought, but per usual with getting anything other type of media other than photos and music onto the iphone, i was wrong.  In retrospect, yes it was easy, but not straightforward.  &lt;/p&gt;

&lt;p&gt;Just like loading up PDFs onto the iPhone, i thought, Ok, grab an mp4 encoded video, drag it onto my iphone.  However, I was greeted with an unsightly warning message:&lt;/p&gt;

&lt;p&gt;&lt;img src="http://www.whatthedale.com/v3/workspace/iphone_video_error-1291872798.png" alt="Iphone Video Error" /&gt; &lt;/p&gt;

&lt;p&gt;I thought it was just some weird issue with dragging directly onto my iphone from the Finder so next step was to drag it into my iTunes Library.  Once doing that, I dragged the Library video onto my iPhone only to get the exact same message!  I googled something along the lines of "load video on iphone" and I found a link to HandBrake.  I downloaded HandBrake, added videos to my queue to be encoded and voila! they were encoded...into mp4s, which I thought were acceptable since I had encoded the video.  Once again, my assumptions got the best of me and going through the same steps above, I was greeted once again with that unsightly error message.  I think i toiled with this for at least an hour or two before I finally had the sense to google the error message which ultimately me to &lt;a href="http://penguintool.blogspot.com/" title="iPhone m4v video encoder"&gt;PEnGUIn&lt;/a&gt; &lt;a href="http://www.macupdate.com/app/mac/33486/penguin-encoder-m4v" title="Download PEnGUIn"&gt;&lt;/a&gt;.  &lt;/p&gt;

&lt;p&gt;The GUI is a little confusing at first because once installed (hell, i'm still learning how to use my iphone and i've had it for over a year and a half now), because you need to install one more binary before you can encode anything.  &lt;/p&gt;

&lt;h2&gt;Woes of iTunes encoding and Movie library&lt;/h2&gt;

&lt;p&gt;Awfully slow.  Felt really clunky at managing the videos and keeping them organized.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Issues with Symphony JIT Extension and symlinks</title>
      <link>http://www.whatthedale.com/v3/articles/issues-with-symphony-jit-extension-and-symlinks/</link>
      <pubDate>Sun, 28 Nov 2010 22:28 -0400</pubDate>
      <guid>http://www.whatthedale.com/v3/articles/issues-with-symphony-jit-extension-and-symlinks/</guid>
      <description>&lt;p&gt;I am seeing this error in my log files:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Call to a member function Meta() on a non-object in /site.com/extensions/jit&lt;em&gt;image&lt;/em&gt;manipulation/lib/image.php on line 231 &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I've done some back tracking and have traced it down to the &lt;code&gt;class.image.php&lt;/code&gt; file (or at least i think).  As i've been digging, I saw this method that seems to pull in a bunch of meta data for the image itself (around line 217):&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;$method = 'load' . ($param-&gt;external === true ? 'External' : NULL);&lt;br /&gt;
     $image = call&lt;em&gt;user&lt;/em&gt;func&lt;em&gt;array(array('Image', $method), array($image&lt;/em&gt;path));&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not knowing PHP super well, I found that the first argument for the &lt;code&gt;call_user_func_array&lt;/code&gt; built-in  was a method and in order to use a static object and one of its methods is to make it an array with the class first, and then the method second.  Now, with this in mind, I figured there was an &lt;code&gt;Image&lt;/code&gt; class and in that class, there would be at least these two methods: &lt;code&gt;load&lt;/code&gt;, and &lt;code&gt;loadExternal&lt;/code&gt;, and sure enough, those two methods were there.  &lt;/p&gt;

&lt;p&gt;Now, if i take a look at where my original problem exists, I see that it will be using one of two things: &lt;code&gt;Image::load&lt;/code&gt; or &lt;code&gt;Image::loadExternal&lt;/code&gt; methods.  With that little background, I saw that where my error is happening, it's happening on the &lt;code&gt;$image&lt;/code&gt; instance of the class &lt;code&gt;Image&lt;/code&gt; when trying to fetch the &lt;code&gt;Meta&lt;/code&gt; method that returns the relavant meta information associated with that image.&lt;/p&gt;

&lt;p&gt;Point is, it doesn't seem to be instantiating the &lt;code&gt;Image&lt;/code&gt; class with the image information.&lt;/p&gt;

&lt;p&gt;The issue turned out to be the path that the image was looking for was pointing to my base installation,[^install] which of course the image wouldn't be found in there.  I &lt;strong&gt;add&lt;/strong&gt; the following code after the first two &lt;code&gt;define()&lt;/code&gt;s to the &lt;code&gt;lib/image.php&lt;/code&gt; file used in the extension:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/**
 * Utility function to easily create a rtrimmed value
 * @param {STRING} $value String of value to modify
 * @returns value with whitespace and the / character removed from the end
 * @type STRING
 */
function rTrimmed($value) {
    return rtrim($value, '/');  
}

/**
 * Checks to see if the request is being sent from the base install
 * or if it is coming from a symlinked folder
 * If coming from a different folder, the WORKSPACE global is redefined with the correct path
 * Currently only tested on (mt) (dv) server
 * @author Dale Tan wtdtan@gmail.com
 */
function checkMultipleDomains() {
    $realDocRoot = rTrimmed($_SERVER['DOCUMENT_ROOT']);
    $httpHost = rTrimmed($_SERVER['HTTP_HOST']);
    if ($httpHost != DOMAIN) {
    $rootSubFolder = str_replace($httpHost, '', DOMAIN);
}
if ($realDocRoot != DOCROOT) {
        if (isset($rootSubFolder)) {
            $realWorkspace = $realDocRoot . $rootSubFolder . '/workspace';
            define('WORKSPACE', $realWorkspace);
        }
    }
}

// call method above
checkMultipleDomains();
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This checks to see what the real root path is to the image called.  if the image doesn't match the predefined &lt;code&gt;DOMAIN&lt;/code&gt; value in the previously mentioned &lt;code&gt;define()&lt;/code&gt; method, then the script knows it is in a different domain than the base build.  Then the same goes with the &lt;code&gt;DOCROOT&lt;/code&gt; (also in another &lt;code&gt;define()&lt;/code&gt; method) and if all those checks pass, the &lt;code&gt;WORKSPACE&lt;/code&gt; variable gets redefined to the correct domain's workspace.  &lt;/p&gt;

&lt;p&gt;[^install]: Hosted on a (mt) (dv) with one base symphony build spread across multiple domains&lt;/p&gt;</description>
    </item>
    <item>
      <title>A primer to Symphony 2's default theme</title>
      <link>http://www.whatthedale.com/v3/articles/a-primer-to-symphony-2s-default-theme/</link>
      <pubDate>, NaN    -0400</pubDate>
      <guid>http://www.whatthedale.com/v3/articles/a-primer-to-symphony-2s-default-theme/</guid>
      <description>&lt;p&gt;Every theme in Symphony has an important mission: to introduce newcomers to Symphony by way of a working example. &lt;em&gt;Spectrum&lt;/em&gt;, the name of this version's default theme, was designed and developed with such a mission in mind by following a set of constraints. A default theme is required to:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;be presented in a format that is universally identified and intuitive.&lt;/li&gt;
&lt;li&gt;have a clear and simple HTML structure.&lt;/li&gt;
&lt;li&gt;demonstrate the fundamental concepts in Symphony - &lt;code&gt;sections&lt;/code&gt;, &lt;code&gt;fields&lt;/code&gt;, &lt;code&gt;data sources&lt;/code&gt; and &lt;code&gt;events&lt;/code&gt; and their interactions together.&lt;/li&gt;
&lt;li&gt;avoid functionality that does not have any educational value.&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;The design&lt;/h4&gt;

&lt;p&gt;Our first rule states that a default theme needs to be in a format that is instantly recognisable to a user. As a result, all of the themes created in Symphony's history have emphasised a weblog structure. &lt;em&gt;Spectrum&lt;/em&gt; continues this tradition.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cubic&lt;/em&gt;, the name of a previous default theme, followed the teaching mandate very closely. However, the theme took it one step further and removed complex structure and colour in favour of a simplified look and feel. The main design goal for &lt;em&gt;Spectrum&lt;/em&gt; is to introduce more colours but still follow the philosophy of a simplistic layout.&lt;/p&gt;

&lt;h4&gt;Features&lt;/h4&gt;

&lt;p&gt;&lt;em&gt;Spectrum&lt;/em&gt; has a handful of additional features that you won't find in previous default themes. These new features are not only meant to demonstrate the capabilities of the system but also explain some fundamental philosophies in Symphony 2. Below is a list of features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Logged in users will see Links to Symphony's admin to edit articles, manage comments and add notes.&lt;/li&gt;
&lt;li&gt;Logged in users will see 3 protected menu items, article drafts, the debug page and a link to the Symphony admin.&lt;/li&gt;
&lt;li&gt;Articles on the drafts page sports a button to publish the article.&lt;/li&gt;
&lt;li&gt;Article images take advantage of Symphony's build-in image manipulation feature to crop and size the image automatically.&lt;/li&gt;
&lt;li&gt;The contact form on the about page saves the content to the Messages section on the backend and emails the website's owner.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Philosophy&lt;/h4&gt;

&lt;p&gt;All of the above takes advantage of new features found in version 2. An important concept that is being advocated in Symphony is the practise of creating a tighter connection between the front-end and the backend. Developers are encouraged to take advantage of the simplified URL structure of the admin to create a more convenient environment for their users.&lt;/p&gt;

&lt;p&gt;With the introduction of the Event editor, developers now have even more control when developing a website. For example, the &lt;em&gt;Publish&lt;/em&gt; button on the &lt;a href="/drafts/"&gt;article drafts page&lt;/a&gt; utilises the event editor to create an interaction between the frontend and the backend. This allows the &lt;em&gt;Publish&lt;/em&gt; button to update the "Publish this article" checkbox field from the "Articles" section. This feature also compliments and encourages the philosophy of a more seamless environment between the website and the admin interface.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
