<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>eingko weblog &#187; Et Cetera</title>
	<atom:link href="http://www.eingko.net/blog/category/et-cetera/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.eingko.net/blog</link>
	<description>a developer&#039;s thoughts and musings</description>
	<lastBuildDate>Sat, 14 May 2011 04:58:20 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Apple Sells a Product, Not a PC</title>
		<link>http://www.eingko.net/blog/2011/05/13/apple-sells-a-product-not-a-pc/</link>
		<comments>http://www.eingko.net/blog/2011/05/13/apple-sells-a-product-not-a-pc/#comments</comments>
		<pubDate>Sat, 14 May 2011 04:38:42 +0000</pubDate>
		<dc:creator>Ronald Timoshenko</dc:creator>
				<category><![CDATA[Et Cetera]]></category>

		<guid isPermaLink="false">http://www.eingko.net/blog/?p=120</guid>
		<description><![CDATA[While speaking with a co-worker today, the topic of OS X being unavailable for use in VirtualBox led to a tangentially related discussion regarding Apple&#8217;s licensing restrictions for OS X. We shared the same sentiment: If Microsoft were to require users to purchase a PC from them as the only method to acquire their operating [...]]]></description>
			<content:encoded><![CDATA[<p>While speaking with a co-worker today, the topic of OS X being unavailable for use in <a href="http://www.virtualbox.org/">VirtualBox</a> led to a tangentially related discussion regarding Apple&#8217;s licensing restrictions for OS X. We shared the same sentiment: If Microsoft were to require users to purchase a PC from them as the only method to acquire their operating system, there would be a lawsuit. So, why does Apple get away with it? </p>
<p>Immediately after the conversation, I came to the realization that I, and many others like me (programmers, computer geeks, tech bloggers, etc.), have always thought about Apple in the wrong way: Apple as a computer company. I realized that Apple can control their operating system the way that it does because Apple doesn&#8217;t sell an operating system nor do they sell computers, they sell a product.</p>
<p>When you buy a GPS device for your car, do you get upset that you can&#8217;t install the operating system from that particular device onto a competitor&#8217;s device? Of course not. The operating system is specifically designed for that particular hardware and it would be ridiculous to think that it could (or should) be able to be easily ported to any other device. The hardware and the software are designed simultaneously in order to work together in as integrated a manner as possible. You are not buying the GPS operating system, you are buying a GPS device.</p>
<p>Apple wants (has wanted) to change the way we think about computers. This is the whole premise behind the &#8220;Think Different&#8221; campaign. Once this realization set in, a comment Steve Jobs made during an interview at D8 immediately made more sense:</p>
<blockquote><p>We never saw ourselves in a platform war with Microsoft, and maybe that’s why we lost. We just wanted to make the best thing — we just thought about how can we build a better product.<small>(<a href="http://d8.allthingsd.com/20100601/d8-video-steve-jobs-on-google-android-and-the-iphone/">Steve Jobs at D8</a>)</small></p></blockquote>
<p>We never think of Apple this way because our experience with computers comes from the likes of Microsoft and the various Linux variants. We&#8217;ve become accustomed to installing an operating system on any combination of assorted motherboards, processors, drives, etc. and then just installing the necessary drivers to make everything run as it should (in some cases this is a serious pain in the ass<sup>2</sup>). But this isn&#8217;t how Apple operates. They don&#8217;t sell you computer parts. That&#8217;s why they make it so hard to do hardware upgrades or to access the battery, because you&#8217;re not supposed to.</p>
<p>For consumers to think of Apple products as appliances, not as computers, is what I believe Apple wants. It explains many of the decisions that they have made regarding the iPhone, iPad and iOS. When you look at things from this perspective, it all makes perfect sense. </p>
<p>Those of us who don&#8217;t understand why people &#8220;drink the Apple &#8216;Kool-Aid&#8217;&#8221; don&#8217;t get it. And the reason we don&#8217;t get it is because we look at it the wrong way. Apple isn&#8217;t about tech specs, customization, or feature lists because the only people that care about that are geeks like me. All people want is a way to check their email, browse the web (i.e., FaceBook, Twitter, etc.) and not worry about what&#8217;s under the hood. </p>
<p>This, I think, is why so many iPhone vs. Android flame wars erupt on tech blogs. It&#8217;s like comparing a luxury car to a Formula-1 race car. One is all about speed and performance, the other one just wants you to get to where you want in as comfortable a way as possible. It&#8217;s ridiculous to compare the two and people who try don&#8217;t &#8220;get it&#8221;.  They&#8217;re not even in the same category. Apple <em>doesn&#8217;t want to be</em> in the same category. That was never their intention. </p>
<p>As for me, I think I finally &#8220;get it&#8221;<sup>2</sup>. </p>
<hr />
<small></p>
<p>1.  In the past I have spent days trying to get integrated Intel graphics chips to work properly in an earlier version of Ubuntu.</p>
<p>2. One might expect an iOS developer to understand why people would choose Apple products, and I thought I did. But I found that despite the fact that I enjoyed my various Apple purchases, I could never explain or justify them to others. I think that now I can. </small></p>
]]></content:encoded>
			<wfw:commentRss>http://www.eingko.net/blog/2011/05/13/apple-sells-a-product-not-a-pc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Japanese Alphabet Study Guide On Sale</title>
		<link>http://www.eingko.net/blog/2010/10/21/japanese-alphabet-study-guide-on-sale/</link>
		<comments>http://www.eingko.net/blog/2010/10/21/japanese-alphabet-study-guide-on-sale/#comments</comments>
		<pubDate>Thu, 21 Oct 2010 21:45:18 +0000</pubDate>
		<dc:creator>Ronald Timoshenko</dc:creator>
				<category><![CDATA[Et Cetera]]></category>
		<category><![CDATA[iOS]]></category>

		<guid isPermaLink="false">http://www.eingko.net/blog/?p=108</guid>
		<description><![CDATA[The Japanese Alphabet Study Guide iOS app is now on sale until the end of the year. Check it out.]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://itunes.apple.com/app/japanese-alphabet-study-guide/id385795022?mt=8">Japanese Alphabet Study Guide</a> iOS app is <strong>now on sale</strong> until the end of the year. <a href="http://itunes.apple.com/app/japanese-alphabet-study-guide/id385795022?mt=8">Check it out</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eingko.net/blog/2010/10/21/japanese-alphabet-study-guide-on-sale/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Japanese Alphabet Study Guide</title>
		<link>http://www.eingko.net/blog/2010/08/25/japanese-alphabet-study-guide/</link>
		<comments>http://www.eingko.net/blog/2010/08/25/japanese-alphabet-study-guide/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 21:43:24 +0000</pubDate>
		<dc:creator>Ronald Timoshenko</dc:creator>
				<category><![CDATA[Et Cetera]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Prototyping]]></category>

		<guid isPermaLink="false">http://www.eingko.net/blog/?p=76</guid>
		<description><![CDATA[Today marks two weeks of availability in the app store for my Japanese Alphabet Study Guide app and I thought I&#8217;d share my experience and what I&#8217;ve learned regarding iOS software development. You can read about the rationale for creating the app, etc., if you&#8217;d like, via my guest post at JapanGaku. It&#8217;s not too [...]]]></description>
			<content:encoded><![CDATA[<p>Today marks two weeks of availability in the app store for my <a href="http://itunes.apple.com/app/japanese-alphabet-study-guide/id385795022?mt=8">Japanese Alphabet Study Guide</a> app and I thought I&#8217;d share my experience and what I&#8217;ve learned regarding iOS software development. </p>
<p>You can read about the rationale for creating the app, etc., if you&#8217;d like, via <a href="http://japangaku.com/japanese-alphabet-study-guide">my guest post at JapanGaku</a>. It&#8217;s not too long, but for the sake of the topic at hand, here&#8217;s a summary:</p>
<blockquote><p>Learning the Kana (Hiragana &#038; Katakana) is one of the first steps in learning the language. And, since Romaji isn’t used in Tae Kim’s guide, it seemed like a great place to start. &#8230; I looked at some of what appeared to be the more popular Kana/Kanji apps and tried to include in my own app what users felt was lacking in others (based on the reviews they were leaving). Ultimately, I decided not to include everything I initially wanted to before releasing the app. &#8230; [Doing so would have been] a significant effort, and as already mentioned, it makes little sense to invest in something that won’t be used (I’m reminded of the YAGNI programming mantra: You Ain’t Gonna Need It). <small>(<a href="http://japangaku.com/japanese-alphabet-study-guide">Source</a>)</small></p></blockquote>
<p>So, I had a pretty good idea of what I wanted to do before I started doing anything. In addition to researching related applications, I did <a href="http://mattgemmell.com/2008/10/29/favorites-ui-design">some reading</a> regarding the user interface design of an iOS app, and I looked at <a href="http://emberapp.com/explore/categories/user-interface-design/iphone">examples of some well-designed apps</a> before deciding where to start. With some ideas in mind, I started throwing together some mockups together in Adobe Photoshop. </p>
<div id="attachment_83" class="wp-caption alignnone" style="width: 708px"><a href="http://www.eingko.net/blog/wp-content/uploads/2010/08/mocks_japanese_alphabet_study_guide_banner.jpg"><img src="http://www.eingko.net/blog/wp-content/uploads/2010/08/mocks_japanese_alphabet_study_guide_banner.jpg" alt="Japanese Alphabet Study Guide Photoshop app mockups" title="Japanese Alphabet Study Guide Photoshop app mockups" width="698" height="393" class="size-full wp-image-83" /></a><p class="wp-caption-text">Initial design concepts for the Japanese Alphabet Study Guide iOS app in Photoshop</p></div>
<p>If you already know what the app looks like, it is evident that, graphically, a lot has changed (to me, anyway) since the initial design concept, but structurally, the app did not change significantly.</p>
<p>After deciding what I, basically, wanted the app to look like. I started putting together some prototypes, both in code and on paper, and began writing down ideas regarding application flow and functionality.</p>
<div id="attachment_83" class="wp-caption alignnone" style="width: 708px"><a href="http://www.eingko.net/blog/wp-content/uploads/2010/08/prototyping_banner.jpg"><img src="http://www.eingko.net/blog/wp-content/uploads/2010/08/prototyping_banner.jpg" alt="Japanese Alphabet Study Guide Prototyping" title="Japanese Alphabet Study Guide Prototyping" width="698" height="393" class="alignnone size-full wp-image-77" /></a><p class="wp-caption-text">Japanese Alphabet Study Guide Prototyping</p></div>
<p>Typically, I might start with prototyping before I even think about how the design should look and feel, but since I already had in mind how the app was going to work, I did things a bit backwards this time around.</p>
<p>I learned a lot while creating <a href="http://itunes.apple.com/app/learning-japanese/id377785100?mt=8">my first application</a> (I spent a lot of time on <a href="http://stackoverflow.com/">Stack Overflow</a>), so I made sure to repeat those things that were beneficial/helpful the first time around. User testing, for example. I never realized how great a resource my Japanese meetup group was for testing until I started writing software. I would install beta versions of my apps on my phone to bring for testing and observe how various people interacted with the apps. It became immediately obvious that the way I thought the apps should work was <a href="http://successfulsoftware.net/2010/08/24/10-things-non-technical-users-dont-understand-about-your-software/">different from the way other people expected them to work</a>. What&#8217;s more, these people were/are actually my target demographic &#8211; perfect!</p>
<p><img src="http://www.eingko.net/blog/wp-content/uploads/2010/08/todos_japanese_alphabet_study_guide_screenshot.jpg" alt="Screenshot of Japanese Alphabet Study Guide To-dos" title="Screenshot of Japanese Alphabet Study Guide To-dos" width="320" height="480" class="alignleft size-full wp-image-88" />Additionally, organizing things/&#8221;to-do&#8221;s that needed to be completed and adding tasks and ideas as they popped up was simplified thanks to the <a href="http://culturedcode.com/things/iphone/">Things</a> application. <a href="http://culturedcode.com/things/iphone/">Things</a> is probably one of my favorite apps, especially for getting things done. I can&#8217;t describe how valuable it has been to be able to add items/tasks to my to-do lists as they would come into my head (while trying to sleep, watching TV, reading articles, etc.). If you already have a to-do list manager, great! Use what works for you, but if you&#8217;re looking for one that&#8217;s simple, powerful, and elegant. Give <a href="http://culturedcode.com/things/iphone/">Things</a> a try.</p>
<p>Finally, keep in mind that you&#8217;re not really done with your application once it&#8217;s available for sale. If you&#8217;re fortunate enough, you&#8217;ll get some users that will leave meaningful reviews and provide insight into how you can improve your app (i.e. &#8220;If this app had feature X, it would perfect&#8221;, etc.). If users start complaining about crashes, be sure to check the crash logs provided in iTunes Connect.</p>
<p>Well, I guess that about wraps it up. I feel like I&#8217;ve kind of rambled my way through this, but hopefully what I&#8217;ve shared here can be useful to someone starting out in iOS (or software in general) development. In bullet points:</p>
<ul>
<li>Plan &#038; Research</li>
<li>Prototype &#038; Design</li>
<li>User Testing</li>
<li>Review</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.eingko.net/blog/2010/08/25/japanese-alphabet-study-guide/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Busy Year</title>
		<link>http://www.eingko.net/blog/2010/08/19/busy-year/</link>
		<comments>http://www.eingko.net/blog/2010/08/19/busy-year/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 16:27:28 +0000</pubDate>
		<dc:creator>Ronald Timoshenko</dc:creator>
				<category><![CDATA[Et Cetera]]></category>

		<guid isPermaLink="false">http://www.eingko.net/blog/?p=63</guid>
		<description><![CDATA[I don&#8217;t normally do &#8220;status updates&#8221;, but it&#8217;s been a while since I&#8217;ve posted anything, so I&#8217;ll go ahead and do one. The past year has been kind of crazy, a lot of stuff going on. I&#8217;ve moved to ASP.Net C# as my primary back-end development language, although I still use PHP for most projects. [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t normally do &#8220;status updates&#8221;, but it&#8217;s been a while since I&#8217;ve posted anything, so I&#8217;ll go ahead and do one. The past year has been kind of crazy, a lot of stuff going on. I&#8217;ve moved to ASP.Net C# as my primary back-end development language, although I still use PHP for most projects. I definitely believe in using the right tool for the right job, and sometimes .Net isn&#8217;t the right tool (sometimes PHP isn&#8217;t the right tool either). I&#8217;ve always been a fan of the strictness and type-safety of C#, and finally getting to use it on a daily basis is pretty exciting for me (Who gets excited about code anyway? Heh, I know I do).  </p>
<p>I&#8217;ve also moved away from Flash development and into the &#8220;mobile sphere&#8221;. I&#8217;m still willing to do Flash where necessary, but I just <a href="http://blog.laptopmag.com/mobile-flash-fail-weak-android-player-proves-jobs-right">don&#8217;t think that it makes sense</a> for most websites. We&#8217;ve come a long way since the &#8220;<a href="http://thefwa.com">All Flash</a>&#8221; website &#8220;glory days&#8221;&#8230; I think that it&#8217;s fairly evident that mobile devices are <a href="http://www.wired.com/magazine/2010/08/ff_webrip_debate/">the future</a>. I&#8217;ve completed two iPhone apps (<a href="http://www.ronaldtimoshenko.com/learning_japanese/">Learning Japanese</a> and <a href="http://www.ronaldtimoshenko.com/japanese_alphabet/">Japanese Alphabet Study Guide</a>) and will probably start doing some Android development next year. I may even start posting more often&#8230; See you around.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eingko.net/blog/2010/08/19/busy-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TweenLite Version 11 Rocks My Socks!</title>
		<link>http://www.eingko.net/blog/2009/10/29/tweenlite-version-11-rocks-my-socks/</link>
		<comments>http://www.eingko.net/blog/2009/10/29/tweenlite-version-11-rocks-my-socks/#comments</comments>
		<pubDate>Thu, 29 Oct 2009 20:07:49 +0000</pubDate>
		<dc:creator>Ronald Timoshenko</dc:creator>
				<category><![CDATA[Et Cetera]]></category>
		<category><![CDATA[Flash]]></category>

		<guid isPermaLink="false">http://www.eingko.net/blog/?p=39</guid>
		<description><![CDATA[Jack Doyle is a genius (Grant Skinner also deserves mention, a genius in his own right). TweenLite (and TweenMax, and TweenNano, and Tween&#8230;) proves, yet again, that it is the best ActionScript tweening engine in the world. I haven&#8217;t been this excited about a tweening engine in a while. Check out the new features of [...]]]></description>
			<content:encoded><![CDATA[<p>Jack Doyle is a genius (<a href="http://www.gskinner.com/">Grant Skinner</a> also deserves mention, a genius in his own right). <a href="http://blog.greensock.com/">TweenLite</a> (and TweenMax, and TweenNano, and Tween&#8230;) proves, yet again, that it is the best ActionScript tweening engine in the world. I haven&#8217;t been this excited about a tweening engine in a while. Check out the <a href="http://blog.greensock.com/v11/">new features of TweenLite</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eingko.net/blog/2009/10/29/tweenlite-version-11-rocks-my-socks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting Up the Symfony Framework on MediaTemple&#8217;s Grid Server</title>
		<link>http://www.eingko.net/blog/2007/06/20/setting-up-the-symfony-framework-on-mediatemples-grid-server/</link>
		<comments>http://www.eingko.net/blog/2007/06/20/setting-up-the-symfony-framework-on-mediatemples-grid-server/#comments</comments>
		<pubDate>Thu, 21 Jun 2007 07:06:58 +0000</pubDate>
		<dc:creator>Ronald Timoshenko</dc:creator>
				<category><![CDATA[Et Cetera]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.eingko.net/blog/2007/06/20/setting-up-the-symfony-framework-on-mediatemples-grid-server/</guid>
		<description><![CDATA[Introduction and Disclaimer Before I begin I should probably mention that this will take quite a bit of time, potentially up to an hour or more; so make sure you set aside enough time to do this. Also, I&#8217;d like to point out that Media Temple has an excellent tutorial and the official documentation may [...]]]></description>
			<content:encoded><![CDATA[<h3>Introduction and Disclaimer</h3>
<p>Before I begin I should probably mention that this will take quite a bit of time, potentially up to an hour or more; so make sure you set aside enough time to do this.  Also, I&#8217;d like to point out that <a title="Media Temple" target="_blank" href="http://kb.mediatemple.net/article.php?id=237">Media Temple has an excellent tutorial</a> and the official documentation may be found on the <a title="Symfony Project" target="_blank" href="http://www.symfony-project.com/content/download.html">Symfony website</a>.</p>
<p>A lot of this information can be found elsewhere on the internet, but I haven&#8217;t really seen a complete/concise walkthrough on setting up and configuring <a target="_blank" title="Symfony" href="http://www.symfony-project.com/">Symfony</a> to work with <a target="_blank" title="Media Temple" href="http://www.mediatemple.net/">MediaTemple</a>&#8216;s Grid Server, so I&#8217;m writing my own.  The following instructions are written from the perspective of a Windows PC user, but &#8211; for the most part &#8211; everything should be pretty much the same on OSX or Linux. Keep in mind that you should only do this if you know what you&#8217;re doing.  You could potentially mess up your web server if you&#8217;re not careful; also keep in mind that these instructions may not apply to all server configurations.  Don&#8217;t blame me if you end up screwing up your server.</p>
<h3>First and Foremost</h3>
<h4>PHP 5</h4>
<p>Before you can even get started you have to make sure that your server is configured properly.  Make sure that the <em>Primary PHP Version</em> is set to PHP 5.  You can do this by selecting your target domain from the domains tab, then click on <strong>PHP Settings</strong> and select PHP 5 and press save at the bottom.</p>
<h4>SSH Access</h4>
<p>The next thing you need to make sure to do is enabled SSH access to your MediaTemple account.  Still on the control panel page press the Server Administrator button/cell and make sure that under the <em>SSH Option</em> section that you select <strong>enabled</strong>. Save your settings.</p>
<p>Server Number:  You&#8217;ll need to know your MediaTemple server number.  In order to find out what your server number is, go the the Account Center control panel and click on the Server Guide button/cell.  On the next page click the &#8220;System Paths&#8221; link in the third column.  You should see a page that lists all of your server paths, environment variables, etc.  You should see a line titled <strong>System path</strong> with a value of something like: &#8220;home/####/domains/yoursite.com&#8221; write down the number that comes after &#8220;home/&#8221; and before &#8220;/domains&#8221;; that&#8217;s your server number, it could be four or five digits (maybe more).</p>
<h4>SSH Client</h4>
<p>Now that you SSH access you&#8217;ll need a client to utilize its power.  Mac users should have already have a client pre-installed on their OS (Applications>Utilities>Terminal).  Unix/linux users should already know how to do this.  For Windows users, I recommend using <a title="Putty" target="_blank" href="http://www.putty.nl/">Putty</a>; but if you have a preferred client feel free to use it. You can download the Putty client at http://www.putty.nl/download.html.  Select the version that applies to your version of Windows (select the putty.exe file, not one of the other options).  Whenever the Putty client finishes downloading, put the .exe file into your Windows folder (most likely C:\Windows); create a shortcut (right-click > &#8220;create shortcut&#8221;) and drag the shortcut to your desktop, start menu, wherever you want it.</p>
<h3>Connecting to the Server</h3>
<h4>Connecting</h4>
<p>Launch Putty (or your SSH client) from your shortcut, put your website hostname (www.example.com) or IP address into the hostname field &#8211; make sure the SSH option is selected and that the port number is correct &#8211; then click &#8220;open&#8221; on the bottom.  If you haven&#8217;t connected to your server with the SSH client before you&#8217;ll get a &#8220;The server&#8217;s host key is not cached in the registry&#8221; alert. Click &#8220;Yes&#8221; to continue.</p>
<h4>Logging In</h4>
<p>Put in your username (it should be serveradmin@yoursite.com), press enter, then type in your password and press enter.  If after logging in the client immediately closes or you get a &#8220;Connection closed by remote host&#8221; alert, it&#8217;s because you didn&#8217;t set your &#8220;SSH option&#8221; to <strong>enabled</strong> in the MediaTemple Account Center or you forgot to save your settings after you did so.  If this happens to you, change your settings and try logging in again.  After logging in successfully you should see a prompt with something like (except the *asterisks* will be an alphanumeric combination):</p>
<pre class="code">yoursite.com@****:~$</pre>
<h3>Installing Custom Pear Packages</h3>
<p>Fortunately Pear comes as a global pre-install with MediaTemple&#8217;s Grid Servers, so that saves us a step (kind of); but because we&#8217;re adding a custom package/module we need to manually create an install copy in the server&#8217;s home directory.</p>
<h4>Pear Install</h4>
<p>Before we install/copy Pear we need to create a configuration file.  Make sure that you&#8217;re still logged in with your SSH client (log in again if you&#8217;re not) and generate a configuration file for your home directory by typing in the following:</p>
<pre class="code">/usr/local/pear/bin/pear config-create $PWD .pearrc</pre>
<p>Double check your spelling.  If you did everything correctly you should see a list of files scroll past and the last line of text should read &#8220;Successfully created default configuration file&#8221;, etc.  Now you&#8217;ll need to run the install:</p>
<pre class="code">/usr/local/pear/bin/pear install -o PEAR</pre>
<p>Be sure to double check everything and make sure you don&#8217;t misspell anything.  If you typed in everything correctly you&#8217;ll see a series of lines scroll past with things like &#8220;Downloading Console_Getopt&#8221;, &#8220;Downloading Structures_Graph&#8221;, etc. and then a few lines that say &#8220;install ok: channel://pear.php.net&#8221; and so on.</p>
<h4>Bash Profile</h4>
<p>So that you don&#8217;t have to type the full path to Pear in every time we&#8217;ll create a .bash_profile in order to make things more efficient. Check to see if a .bash_profile file already exists (chances are it doesn&#8217;t) by typing in the following:</p>
<pre class="code">ls -a</pre>
<p>If you have a .bash_profile file in there already, fine, if you don&#8217;t also fine. You can do this next part one of two ways; you can use the Vi editor, or you can &#8220;concatenate&#8221; or &#8220;echo&#8221; the text directly into the file.  If .bash_profile already exists you should use the Vi editor to make sure you&#8217;re not adding something that&#8217;s already there.</p>
<h3>Vi Editor Method</h3>
<p>Launch the Vi editor within your SSH client by typing in:</p>
<pre class="code">vi .bash_profile</pre>
<p>This should &#8220;clear&#8221; the screen except for a line at the bottom that says something like:</p>
<pre class="code">".bash_profile" [New File]</pre>
<p>The Vi editor defaults to &#8220;Command Mode&#8221;, be sure to press &#8220;i&#8221; on your keyboard to switch to &#8220;INSERT&#8221; mode.  You&#8217;ll be able to tell because the bottom line changes to &#8220;&#8211; INSERT &#8211;&#8221;.  Now type:</p>
<pre class="code">export PATH=$PATH:/home/####/users/.home/pear/</pre>
<p>Be sure to replace the #### symbols with the server number you wrote down earlier.  Double check your spelling and press the Escape (ESC) key on your keyboard, this will put you back in &#8220;Command Mode&#8221;.  Hold down the Shift key (SHIFT) on your keyboard and press &#8220;ZZ&#8221; (make sure you press &#8220;Z&#8221; twice); again: &#8220;SHIFT+ZZ&#8221;.  If you did everything correctly it should take you back to the shell prompt.</p>
<p>Go ahead and make sure that the file is there by displaying a directory listing:</p>
<pre class="code">ls -a</pre>
<p>It should look just like it did earlier except now there&#8217;s a &#8220;.bash_profile&#8221; file in there.</p>
<h3>Concatenation Method</h3>
<p>If the .bash_profile file doesn&#8217;t exist in the current directory, at the SSH prompt type in:</p>
<pre class="code">touch .bash_profile</pre>
<p>Press Enter. This will create a .bash_profile file for you. Next type in the following:</p>
<pre class="code">echo export 'PATH=$PATH:/home/####/users/.home/pear/' >> ~/.bash_profile</pre>
<p>You can make sure that everything worked by typing in:</p>
<pre class="code">cat ~/.bash_profile</pre>
<p>If you did everything properly it should basically just echo back the contents of the file.</p>
<h3>Verifying the Profile</h3>
<p>Now you can install Pear packages without having to type in the full path.  Let&#8217;s run a test by installing/updating the mail package:</p>
<pre class="code">pear install -o Mail</pre>
<p>It should scroll a few lines saying &#8220;Downloading&#8221;, etc. and end with &#8220;install ok: channel://pear.php.net&#8221; and so on, just like when we copied/installed Pear to the home directory.</p>
<h3>Editing the PHP.INI File</h3>
<p>If you&#8217;re not logged into the MediaTemple Account Center anymore, be sure to log back in for this next segment.  From the Account Center control panel click on the &#8220;File Manager&#8221; button/cell.  On that page, click into the &#8220;etc&#8221; folder.  Once inside the &#8220;etc&#8221; folder you should see a file titled &#8220;php.ini.sample&#8221;, click it to open it and edit it.  By the way, I would recommend that you copy everything that&#8217;s in that text box and make a backup somewhere on your computer, just in case you accidentally mess something up and have to go back to the default settings.</p>
<p>Scroll down to the very bottom and add the following line:</p>
<pre class="code">include_path = ".:/home/####/users/.home/pear/php"</pre>
<p>Be sure to change the #### to your server number.  If you want, feel free to add a comment (start the line with a semi-colon &#8220;;&#8221;) that says something like &#8220;pear include path&#8221;.  Finally, change &#8220;php.ini.sample&#8221; to php.ini&#8221;.  If you don&#8217;t do this, your settings won&#8217;t take effect.  Click &#8220;save changes&#8221; to save the file.<br />
Some users may  prefer to change the include path on a directory-by-directory basis via an .htaccess file or  on a script-by-script (.php file) basis but I wouldn&#8217;t recommend it unless you know what you&#8217;re doing.  If you made the changes to your php.ini file as instructed above go ahead and skip to the next section, otherwise &#8211; if you&#8217;re wanting to go about it a different way &#8211; read the next few of paragraphs.<br />
If you want to do it via .htaccess files (keep in mind this only affects .php files within that directory) add the following line to the .htaccess file in your target directory (remember to change the #### values to your server number):</p>
<pre class="code">php_value include_path /home/####/users/.home/pear/php'</pre>
<p>If you&#8217;re wanting to change your include directive on a script-by-script basis, add the following somewhere near the top (probably before any &#8216;include&#8217; commands):</p>
<pre class="code">set_include_path('/home/####/users/.home/pear/php');</pre>
<p>Be sure &#8211; this is getting redundant, I know &#8211; to change the #### values to your server number.</p>
<h3>Preparing to Install Symfony</h3>
<p>Okay, we&#8217;re about half way done (I told you this would take a while).  By the time you&#8217;ve gone through all of this your SSH client has probably timed out and aborted the connection, if this is case go ahead and log back in.  If your client has not timed out type in &#8220;clear&#8221; and press enter to clear the screen (if you had to log back in, go ahead and do this as well).</p>
<p>You&#8217;ll have to make sure that the command-prompt is running as PHP5, to do this you&#8217;ll have to update your .bash_profile file again.  There are two methods to doing this, as mentioned before.  In this instance, I&#8217;m going to use the concatenation method:</p>
<pre class="code">echo export 'PATH=/usr/local/php5/bin:$PATH:/home/####/users/.home/pear'  >> ~/.bash_profile</pre>
<p class="alert">WARNING:  Make sure not to insert a carriage return or line break when entering the above two lines.  The code above is merely wrapping.</p>
<p>Type that into your SSH client and make sure to replace the #### with your server number.  Double check that everything is typed correctly, it&#8217;s a pretty lengthy line.</p>
<p>If you&#8217;re wanting to use Vi to input that, it&#8217;s the same except you don&#8217;t need to type &#8220;echo&#8221; or the &#8220;>> ~/.bash_profile&#8221;, nor do you need to put single quotes around the path.<br />
To make sure that everything worked correctly type:</p>
<pre class="code">cat ~/.bash_profile</pre>
<p>If you typed everything in correctly, it should echo the contents of .bash_profile out to you.  The last line is the part that you just added.</p>
<p>Before we move on, you&#8217;ll need to refresh the shell environment variables, type:</p>
<pre class="code">source ~/.bash_profile</pre>
<h3>Installing Symfony</h3>
<h4>Discovery</h4>
<p>Before installing Symfony you have to &#8220;discover&#8221; it through pear, type in:</p>
<pre class="code">pear channel-discover pear.symfony-project.com</pre>
<p>After a slight pause, you should see a couple of lines that say: &#8220;Adding Channel pear.symfony-project.com succeeded&#8221; and &#8220;Discovery of channel pear.symfony-project.com succeeded&#8221;. Now with the next part you can either choose to install the latest stable release of Symfony or the &#8220;nightly builds&#8221; (beta releases); I recommend using the stable release.</p>
<p>For the stable release (recommended), type:</p>
<pre class="code">pear install symfony/symfony</pre>
<p>For the &#8220;nightly build&#8221;:</p>
<pre class="code">pear install symfony/symfony-beta</pre>
<p>You should see some text that says &#8220;starting to download symfony&#8221; then a progressing load, and finally, &#8220;install ok: channel://pear.symfony-project.com&#8221;.</p>
<p>This next part can be a little tricky so follow along closely.</p>
<h3>Initializing a Symfony Project</h3>
<p>After completing the previous section, Symfony is officially installed on your server; but, before you can use it you have to initialize a project and an application.  The following steps will walk you through setting up a &#8220;symfony&#8221; subdomain which you can use to play with your Symfony installation.  If you don&#8217;t want to create a subdomain you don&#8217;t have to.</p>
<p>To create a subdomain type:</p>
<pre class="code">mkdir ~/domains/symfony.yoursite.com</pre>
<p>Obviously change &#8220;yoursite.com&#8221; to whatever your site may be (&#8220;example.com&#8221;, &#8220;mysite.net&#8221;, etc.).  Next create a &#8220;symfony&#8221; directory:</p>
<pre class="code">mkdir ~/domains/symfony.yoursite.com/symfony</pre>
<p>If you didn&#8217;t create a subdomain replace &#8220;symfony.yoursite.com&#8221; with simply &#8220;yoursite.com&#8221;.  Now within the &#8220;symfony&#8221; directory create a directory called &#8220;web&#8221;:</p>
<pre class="code">mkdir ~/domains/symfony.yoursite.com/symfony/web</pre>
<p>The reason we created these two directories is so that we can establish a symbolic link &#8220;SymLink&#8221; from the newly created &#8220;web&#8221; folder to the root &#8220;html&#8221; folder.  Type in the following (be absolutely sure to type this in correctly):</p>
<pre class="code">cd ~/domains/symfony.yoursite.com/
ln -s symfony/web html</pre>
<p>Again, if you didn&#8217;t create a subdomain instead of &#8220;symfony.yoursite.com&#8221; it will be just &#8220;yoursite.com&#8221;.  The reason this is necessary is because Symfony&#8217;s default folder structure is different from MediaTemple&#8217;s structure, so we have to create a &#8220;SymLink&#8221; that will basically redirect the framework to the required files.</p>
<p>You may have noticed that after typing &#8220;cd ~/domains/symfony.domain.com/&#8221; that the prompt changed; that&#8217;s because you&#8217;ve moved into another directory, which is what is supposed to happen.  Now that that&#8217;s done we need to actually &#8220;initialize&#8221; our Symfony project.  Make sure that the prompt displays (note the word &#8220;symfony&#8221; at the end):</p>
<pre class="code">yoursite.com@****:~/domains/symfony.yoursite.com/symfony$</pre>
<p>If it doesn&#8217;t type (if you didn&#8217;t create a subdomain &#8211; &#8220;yoursite.com&#8221; instead of &#8220;symfony.yoursite.com&#8221;):</p>
<pre class="code">cd ~/domains/symfony.yoursite.com/symfony</pre>
<p>Now, at the SSH shell type:</p>
<pre class="code">symfony init-project myproject</pre>
<p>Feel free to change &#8220;myproject&#8221; to whatever you want (e.g., &#8220;test&#8221;, &#8220;demo&#8221;, &#8220;default&#8221;, etc.).  You should see a series of lines scroll by, if you typed everything correctly.  Now type in the following:</p>
<pre class="code">symfony init-app myapp</pre>
<p>Again, feel free to change &#8220;myapp&#8221; to whatever you wish, just make sure to be consistent.</p>
<p>If you&#8217;ve created a subdomain you have to make sure to add an .htaccess file in your &#8220;symfony/web&#8221; directory that adds a php5 script handler.  To do this just type:</p>
<pre class="code">echo 'Options +FollowSymLinks +ExecCGI' >> ~/domains/symfony.yoursite.com/symfony/web/.htaccess
echo 'AddHandler php5-script .php' >> ~/domains/symfony.yoursite.com/symfony/web/.htaccess</pre>
<p class="alert">WARNING:  Make sure not to insert a carriage return or line break when entering the above two lines.  The code above is merely wrapping.</p>
<p>Be sure to type this accurately (note the spaces and periods carefully) otherwise you&#8217;ll get a &#8220;500 Internal Server Error&#8221;.  Again, if you prefer to use Vi to add those two lines to the end, it&#8217;s up to you.<br />
Now go and test your work: symfony.yoursite.com (or just yoursite.com if you didn&#8217;t create the subdomain).</p>
<h3>Where Are the Media Files?</h3>
<p>If for some reason you&#8217;re not seeing the stylesheet, images, etc.  It&#8217;s because the &#8220;sf&#8221; files didn&#8217;t get copied over, I&#8217;m not sure why this happens, but there&#8217;s an easy fix.  In your SSH shell type:</p>
<pre class="code">cp -r ~/pear/data/symfony/web/sf ~/domains/symfony.yoursite.com/symfony/web/sf</pre>
<p class="alert">WARNING:  Make sure not to insert a carriage return or line break when entering the above two lines.  The code above is merely wrapping.</p>
<p>Be sure to type all of that in carefully.  Also if you didn&#8217;t create a subdomain change &#8220;symfony.yoursite.com&#8221; to simply &#8220;yoursite.com&#8221;.</p>
<p>Now go and test your work: symfony.yoursite.com (or just yoursite.com if you didn&#8217;t create the subdomain).  Everything should be up and running smoothly.  Congratulations, you&#8217;re finished.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eingko.net/blog/2007/06/20/setting-up-the-symfony-framework-on-mediatemples-grid-server/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Official Computer Geek</title>
		<link>http://www.eingko.net/blog/2007/06/18/official-computer-geek/</link>
		<comments>http://www.eingko.net/blog/2007/06/18/official-computer-geek/#comments</comments>
		<pubDate>Mon, 18 Jun 2007 19:29:12 +0000</pubDate>
		<dc:creator>Ronald Timoshenko</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Et Cetera]]></category>

		<guid isPermaLink="false">http://www.eingko.net/blog/2007/06/18/official-computer-geek/</guid>
		<description><![CDATA[I&#8217;m not entirely sure what it takes to be considered a &#8220;Computer Geek&#8221; or &#8220;Computer Nerd&#8221; (whichever/whatever), but I think I may have crossed that line. I was reading &#8220;C for Dummies&#8221; by Dan Gookin and around page 210 he mentioned the origin of the name &#8220;C++&#8221; (check it out on Wikipedia), and I found [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m not entirely sure what it takes to be considered a &#8220;Computer Geek&#8221; or &#8220;Computer Nerd&#8221; (whichever/whatever), but I think I may have crossed that line.  I was reading <a rel="external" href="http://www.amazon.com/C-Dummies-2nd-Dan-Gookin/dp/0764570684/ref=pd_bbs_sr_1/102-7323323-9268954?ie=UTF8&#038;s=books&#038;qid=1182194601&#038;sr=8-1">&#8220;C for Dummies&#8221; by Dan Gookin</a> and around page 210 he mentioned the origin of the name &#8220;C++&#8221; (check it out on <a rel="external" href="http://en.wikipedia.org/wiki/C++#The_name_.22C.2B.2B.22">Wikipedia</a>), and I found it to be quite funny.  Originally it was called &#8220;C with classes&#8221;, but <a rel="external" href="http://en.wikipedia.org/wiki/Rick_Mascitti">Rick Mascitti</a> referred to it as &#8220;C++&#8221; as a sort of tongue-in-cheek reference to the incremental postfix operator (as in loops; e.g., i++).</p>
<p class="cplus">c = c + 1;</p>
<p>or</p>
<p class="cplus">c++;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.eingko.net/blog/2007/06/18/official-computer-geek/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Database Caching 1/34 queries in 0.088 seconds using disk
Object Caching 218/444 objects using disk

Served from: www.eingko.net @ 2012-02-05 18:39:16 -->
