<?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>Blog of Auzigog - Jeremy Blanchard &#187; Programming</title>
	<atom:link href="http://auzigog.com/category/computers/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://auzigog.com</link>
	<description>ideas and guides from a nerdy college student</description>
	<lastBuildDate>Tue, 27 Jul 2010 00:53:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Setup Symfony on Mac OS X (using MAMP)</title>
		<link>http://auzigog.com/2009/05/10/setup-symfony-on-mac-os-x-using-mamp/</link>
		<comments>http://auzigog.com/2009/05/10/setup-symfony-on-mac-os-x-using-mamp/#comments</comments>
		<pubDate>Sun, 10 May 2009 22:04:01 +0000</pubDate>
		<dc:creator>Auzigog</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Guides]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[mac osx]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[symfony]]></category>

		<guid isPermaLink="false">http://auzigog.com/?p=393</guid>
		<description><![CDATA[
Symfony doesn&#8217;t play well with the default OS X server setup, so you will need an alternative setup. This tutorial assumes you are using MAMP but XAMPP is also an option. This tutorial will get a server up and running that works with Symfony and allow you to access your projects from <a href="http://ProjectName.localhost/">http://ProjectName.localhost/</a> Configure Server [...]
]]></description>
			<content:encoded><![CDATA[<p><img src="http://auzigog.com/wp-content/uploads/2009/04/symfony.gif" alt="symfony" title="symfony" width="448" height="122" class="aligncenter size-full wp-image-371" /><br />
Symfony doesn&#8217;t play well with the default OS X server setup, so you will need an alternative setup. This tutorial assumes you are using <a href="http://www.mamp.info/en/index.html">MAMP</a> but <a href="http://www.apachefriends.org/en/xampp-macosx.html">XAMPP</a> is also an option.</p>
<p>This tutorial will get a server up and running that works with Symfony and allow you to access your projects from <a href="http://ProjectName.localhost/">http://ProjectName.localhost/</a><br />
<span id="more-393"></span></p>
<h2>Configure Server</h2>
<ul>
<li><a href="http://www.mamp.info/en/downloads/index.html">Download the latest version of MAMP</a>. This can take a while.
</li>
<li>Install MAMP
</li>
<li>Allow MAMP&#8217;s copy of PHP, PEAR, and MySQL to run from the terminal:
</li>
</ul>
<pre lang="bash">
sudo mv /usr/bin/php /usr/bin/php-old
sudo ln -s /Applications/MAMP/bin/php5/bin/php /usr/bin/php
sudo mv /usr/bin/pear /usr/bin/pear-old
sudo ln -s /Applications/MAMP/bin/php5/bin/pear /usr/bin/pear
sudo mv /usr/bin/mysql /usr/bin/mysql-old
sudo ln -s /Applications/MAMP/Library/bin/mysql /usr/bin/mysql
</pre>
<ul>
<li>Symfony can use a lot of memory in the development environment, so you need to edit <code>/Applications/MAMP/conf/php5/php.ini</code> to allow it scripts to use more memory. I changed mine from 8M to 200M.
</li>
</ul>
<pre lang="ini">
memory_limit = 200M ;
</pre>
<h2>Set up your project</h2>
<p>Either grab a fresh project from the <a href="http://www.symfony-project.org/installation">Symfony website</a> or start from your own existing project.</p>
<p>To make sure your project is secure (even if your server isn&#8217;t publicly accessible), put the Symfony project files <em>outside</em> your webroot (<code>/Applications/MAMP/htdocs</code>). I put mine in <code>~/workspace/ProjectName</code>.</p>
<h2>Set up a subdomain for this project</h2>
<p>To make your project accessible from <a href="http://YourProject.localhost/">http://YourProject.localhost/</a> you must edit your Apache config file.</p>
<p>For the first project you ever add, put this code at the end of <code>/Applications/MAMP/conf/apache/httpd.conf</code></p>
<pre lang="apache">
<ol>
<li>Be sure to only have this line once in your configuration
</li>
</ol>

NameVirtualHost 127.0.0.1:80
Listen 127.0.0.1:80
</pre>
<p>For each project you create, add this section of code with paths modified to reflect the location of your code.</p>
<pre lang="apache">
<VirtualHost 127.0.0.1:80>
<pre>
 ServerName YOUR_PROJECT_NAME.localhost
 DocumentRoot &quot;/Users/YOUR_USER_NAME/workspace/YOUR_PROJECT_NAME/web&quot;
 DirectoryIndex index.php
 &lt;Directory &quot;/Users/YOUR_USER_NAME/workspace/YOUR_PROJECT_NAME/web&quot;&gt;
   AllowOverride All
   Allow from All
 &lt;/Directory&gt;
</pre>
<pre>
 Alias /sf /Users/YOUR_USER_NAME/workspace/YOUR_PROJECT_NAME/lib/vendor/symfony/data/web/sf
 &lt;Directory &quot;/Users/YOUR_USER_NAME/workspace/YOUR_PROJECT_NAME/lib/vendor/symfony/data/web/sf&quot;&gt;
   AllowOverride All
   Allow from All
 &lt;/Directory&gt;
</pre>
<p></VirtualHost>
</pre>
<p>For each project, you must also edit the <code>/etc/hosts</code> file and add this line to the end:</p>
<pre lang="text">
127.0.0.1       YOUR_PROJECT_NAME.localhost
</pre>
<p>Now use the MAMP control panel to restart Apache.</p>
<h2>Database</h2>
<dl>
<dd><em>Note:</em> This section doesn&#8217;t apply to those with a fresh project generated by Symfony
</dd>
</dl>
<p>If you&#8217;re working on a pre-existing project, you need to load in any existing database tables.</p>
<p>Open the file <code>~/workspace/YOUR_PROJECT_NAME/config/databases.yml</code> and look for a section like this:</p>
<pre lang="yml">
all:
<pre>
 propel:
   class: sfPropelDatabase
   param:
     classname: PropelPDO
     dsn: 'mysql:host=localhost;dbname=DATABASE_NAME'
     username: USERNAME
     password: PASSWORD
     encoding: utf8
     persistent: true
     pooling: true
</pre>
</pre>
<p>Use phpMyAdmin (located at <a href="http://localhost/MAMP/">http://localhost/MAMP/</a>) to create a user with that password. You also need to create a database with that name and assign the user to it.</p>
<p>Now you need to create all the tables for this project and load in any fixtures. Use the terminal to browse to the root of your project directly and run the following commands:</p>
<pre lang="bash">
php symfony propel:build-sql
php symfony propel:insert-sql --no-confirmation
php symfony propel:build-all-load --no-confirmation
php symfony cache:clear
</pre>
<h2>NetBeans and Xdebug</h2>
<p>I use NetBeans PHP distribution with Xdebug for step-by-step debug support. There is a <a href="http://www.netbeans.org/kb/docs/php/configure-php-environment-mac-os.html"><em>fantastic</em> tutorial</a> to set up both using MAMP.</p>
<p>The only part of that tutorial that didn&#8217;t work was the way <code>php.ini</code> was configured.</p>
<p>First, comment out these lines at the end of <code>/Applications/MAMP/conf/php5/php.ini</code> (by placing a semicolon at the beginning of the line):</p>
<pre lang="ini">
[Zend]
<dl>
<dt>zend_optimizer.optimization_level=15
</dt>
<dt>zend_extension_manager.optimizer=/Applications/MAMP/bin/php5/zend/lib/Optimizer-3.3.3
</dt>
<dt>zend_optimizer.version=3.3.3
</dt>
<dt>zend_extension=/Applications/MAMP/bin/php5/zend/lib/ZendExtensionManager.so
</dt>
</dl>
</pre>
<p>Now add the following lines to the end of the file instead of the ones mentioned in the tutorial:</p>
<pre lang="ini">
<dl>
<dt>Xdebug config for Mac OS X and NetBeans IDE
</dt>
</dl>

zend_extension=/Applications/MAMP/bin/php5/lib/php/extensions/no-debug-non-zts-20050922/xdebug.so
xdebug.default_enable = On
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9000
xdebug.idekey=netbeans-xdebug
xdebug.remote_log = /tmp/xdebug.log
</pre>
<p>Also I just skipped the MySQL Administrator program because I prefer to use phpMyAdmin (which comes with MAMP).</p>
<p>Finally, I can&#8217;t use normal NetBeans breakpoints to halt the code. I have to place <code>xdebug_break();</code> on the line that I want it to break on. This is slightly annoying, but having the power of a full debugger is certainly worth this small inconvenience.</p>
<p>Extras:</p>
<ul>
<li><a href="http://stringfoo.com/2008/08/25/tutorial-launching-mamp-silently-on-startup/">Learn how to start MAMP silently</a> (without the control panel window)
</li>
<li><a href="http://stringfoo.com/2007/11/07/mamp-setup-leopard/">Very detailed guide to setting MAMP up on OS X</a>
</li>
<li><a href="http://www.sitepen.com/blog/2008/05/16/supercharge-mamp/">Supercharge your MAMP Environment</a>
</li>
</ul>
<h2>Conclusion</h2>
<p>You should now be able to access your project from <a href="http://YourProject.localhost/">http://YourProject.localhost/</a></p>
<p>If you&#8217;re new to Symfony, here are some resources that will help you out:</p>
<ul>
<li><a href="http://www.symfony-project.org/book/1_2/">The Definitive Guide to Symfony</a>
</li>
<li><a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/">Jobeet Tutorial</a> &#8211; A step-by-step tutorial for a real-world project
</li>
<li><a href="http://www.symfony-project.org/api/1_2/">Symfony API</a>
</li>
</ul>
<p>If you have any suggestions for improving this tutorial or if you are having any trouble with it, please leave a comment below. Thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://auzigog.com/2009/05/10/setup-symfony-on-mac-os-x-using-mamp/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Symfony + Mac OS X + pdo_mysql.so</title>
		<link>http://auzigog.com/2009/04/27/symfony-mac-os-x-pdo_mysqlso/</link>
		<comments>http://auzigog.com/2009/04/27/symfony-mac-os-x-pdo_mysqlso/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 08:50:23 +0000</pubDate>
		<dc:creator>Auzigog</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Guides]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://auzigog.com/?p=370</guid>
		<description><![CDATA[
I recently started working my way into the world of the PHP framework <a href="http://www.symfony-project.org/">Symfony</a>. While following the superb <a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/">Jobeet tutorial</a>, I encountered an error involving PDO_MYSQL and Mac OS X. I spent an hour trying to trace down the problem and another hour finding a solution. And as always, when something takes me too long to solve, I write a guide for it!
]]></description>
			<content:encoded><![CDATA[<div class="boxcaption">UPDATE!</div>
<div class="box">May 10th, 2009 &#8211; This tutorial is not complete. Following these instructions will only get command line version of PDO_MYSQL working. I have written a new guide that avoids the built-in versions of PHP and Apache. <a href="http://auzigog.com/2009/05/10/setup-symfony-on-mac-os-x-using-mamp/"><strong>Read the updated tutorial &raquo;</strong></a></div>
<p>I recently started working my way into the world of the PHP framework <a href="http://www.symfony-project.org/">Symfony</a>. While following the superb <a href="http://www.symfony-project.org/jobeet/1_2/Propel/en/">Jobeet tutorial</a>, I encountered an error involving PDO_MYSQL and Mac OS X. I spent an hour trying to trace down the problem and another hour finding a solution. And as always, when something takes me too long to solve, I write a guide for it!<br />
<span id="more-370"></span></p>
<h3>The setup</h3>
<p>I tried to run this command while following the Jobeet tutorial:</p>
<pre lang="bash">php symfony propel:insert-sql</pre>
<h3>The error</h3>
<pre lang="bash">>> schema    converting "/Users/eyeRmonkey/w...obeet/config/schema.yml" to XML
>> schema    putting /Users/eyeRmonkey/works...eet/config/generated-schema.xml
>> propel    Running "insert-sql" phing task
Execution of target "insert-sql" failed for the following reason: /Users/eyeRmonkey/workspace/jobeet/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build-propel.xml:275:1:  [wrapped: could not find driver]
<pre>
   [phing] /Users/eyeRmonkey/workspace/jobeet/lib/vendor/symfony/lib/plugins/sfPropelPlugin/lib/vendor/propel-generator/build-propel.xml:275:1:  [wrapped: could not find driver]

 Some problems occurred when executing the task:
   build-propel.xml:275:1:  [wrapped: could not find driver]
   If the exception message is not clear enough, read the output of the task for more information  </pre>
</pre>
<h3>The root problem</h3>
<p>The distribution of PHP that comes with OS X doesn&#8217;t have the <code>pdo_mysql.so</code> library loaded. You can determine this by looking at output from <code>php -m</code>.</p>
<h3>The solution</h3>
<p>After much searching, I finally discovered the proper way to compile the <code>pdo_mysql.so</code> library. This all assumes that you have PHP and MySQL <a href="http://auzigog.com/2009/01/03/setting-up-apache-mysql-and-php-on-os-x-leopard/">installed the same way I do</a>. <a href="http://discussions.apple.com/thread.jspa?threadID=1539743&#038;tstart=75">(source)</a></p>
<p><strong>Compiling PDO_MYSQL:</strong></p>
<ol>
<li><a href="http://pecl.php.net/package/PDO_MYSQL">Download PDO_MYSQL</a>
</li>
<li>Run the following commands (replacing x.x.x with the version of PDO_MYSQL that you downloaded)
</li>
</ol>
<pre lang="bash">cd ~/Downloads/PDO_MYSQL-x.x.x/PDO_MYSQL-x.x.x
phpize
./configure '--with-pdo-mysql=shared,/usr/local/mysql'
make
sudo make install
</pre>
<p><strong>Updating your PHP configuration:</strong><br />
Now add the following two lines to the file <code>/etc/php.ini</code> under the &#8220;Dynamic Extensions&#8221; section:</p>
<pre lang="ini">extension_dir = "/usr/lib/php/extensions/no-debug-non-zts-20060613"
extension=pdo_mysql.so</pre>
<p>Save the file and you&#8217;re done.</p>
<h3>The conclusion</h3>
<p>Many people had this problem. It shouldn&#8217;t take hours of detailed searching to find a solution. Back to Symfony!</p>
]]></content:encoded>
			<wfw:commentRss>http://auzigog.com/2009/04/27/symfony-mac-os-x-pdo_mysqlso/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Easy Website on Your University of Oregon Web Space</title>
		<link>http://auzigog.com/2009/02/01/easy-website-on-your-university-of-oregon-web-space/</link>
		<comments>http://auzigog.com/2009/02/01/easy-website-on-your-university-of-oregon-web-space/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 23:25:54 +0000</pubDate>
		<dc:creator>Auzigog</dc:creator>
				<category><![CDATA[College]]></category>
		<category><![CDATA[Computers]]></category>
		<category><![CDATA[Guides]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[University of Oregon]]></category>

		<guid isPermaLink="false">http://auzigog.com/?p=288</guid>
		<description><![CDATA[
NOTE: shell.uoregon.edu is now sftp.uoregon.edu Ever wanted to have your own webpage at <a href="http://uoregon.edu/~YourDuckID?">http://uoregon.edu/~YourDuckID?</a> Ever wanted to setup a clean-looking, easy-to-maintain website for a student group your are associated with? Well now the whole process is a snap! Every University of Oregon student is given space to set up their own website. It&#8217;s a fairly [...]
]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-293" title="Wordpress on Your University of Oregon Web Space" src="http://auzigog.com/wp-content/uploads/2009/01/wordpress_uoregon_shell1.png" alt="Wordpress on Your University of Oregon Web Space" width="398" height="220" /></p>
<p><span style="color:red;"><strong>NOTE: shell.uoregon.edu is now sftp.uoregon.edu</strong></span></p>
<p>Ever wanted to have your own webpage at <a href="http://uoregon.edu/~jblancha">http://uoregon.edu/~YourDuckID</a>? Ever wanted to setup a clean-looking, easy-to-maintain website for a student group your are associated with? Well now the whole process is a snap! Every University of Oregon student is given space to set up their own website.</p>
<p>It&#8217;s a fairly complex process to set up all the necessary tools (PHP and MySQL) <a href="http://wiki.auzigog.com/Wordpress_on_shell.uoregon.edu">manually</a>, so I wrote a program to do it for you (mostly) automatically! All you need to do is login to your uoregon.edu account and follow a couple simple instructions.</p>
<p><span id="more-288"></span></p>
<h3>Why WordPress?</h3>
<p><a href="http://wordpress.org">WordPress</a> is tool that lets you create, design and maintain a website without knowing anything about computers or the internet. Anyone can do it! It is meant to be a tool for bloggers, but it functions perfectly for those who just want a normal website.</p>
<p>WordPress can be as simple or as powerful as you need it to be. In my opinion, it is the perfect tool for student groups because of how often management changes. With WordPress, anyone can pick it up and make any changes without any knowledge on how to create websites. The real power of WordPress is that you can create/edit pages from a web interface using an <abbr title="What You See Is What You Get">WYSIWYG</abbr> (visual) editor. You can see a demo of this web interface <a href="http://www.opensourcecms.com/blog/wordpress/admin.html">here</a> (username: admin // password: demo).</p>
<p>Other features:</p>
<ul>
<li><a href="http://wordpress.org/extend/themes/browse/popular/">Customizable themes</a> so you can easily style your website and give it it&#8217;s own distinct look.
</li>
<li><a href="http://wordpress.org/extend/plugins/browse/popular/">Amazing plugins</a> to let you add any kind of functionality to your website (e.g. adding a <a href="http://wordpress.org/extend/plugins/contact-form-7/">contact form</a> to your site).
</li>
<li>Multi-user enivronment so you can add other bloggers/editors to help you edit the website. This is especially useful for student groups with a lot of contributors.
</li>
</ul>
<div class="boxcaption">Warning: No support is guaranteed</div>
<div class="box">Before we go any further, I wanted to let everyone know that although I am writing this guide to be accessible to anyone, I also can&#8217;t promise that there will be support for it if something breaks down the road. There&#8217;s a 98% chance that nothing will ever go wrong. What you&#8217;re doing here normally requires a bit of technical knowledge, but I&#8217;ve attempted to make it easy for anyone to do. If something does go wrong, I can&#8217;t say for sure how much <a href="http://micro.uoregon.edu/">The Help Desk</a> at the UO will want to help you.</p>
<p>If you do have some problems, post a comment at the end of this post and I&#8217;ll do my best to help you out.</p></div>
<h3>Getting Started</h3>
<p>Before you can complete these instructions you will need a program that let&#8217;s you access the files on your sftp.uoregon.edu account. Accessing this account is called &#8220;SSHing&#8221; into it. This is fairly simple for Mac OS X users, but is a bit more complicated if you are using Windows.</p>
<p>You can enable shell access by going to:<br />
<a href="http://duckid.uoregon.edu">http://duckid.uoregon.edu</a><br />
Select &#8220;Manage Optional Account Access&#8221;<br />
Then hit &#8220;Enable Shell Access&#8221;</p>
<h4>Windows Users</h4>
<p><em>Note:</em> If you own a Mac, skip to the next section called <a href="#Mac_Users">&#8220;Mac Users&#8221;</a>.</p>
<p>First, you need to download and install a program called <a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/">PuTTY</a> (or just <a href="http://the.earth.li/~sgtatham/putty/latest/x86/putty-0.60-installer.exe">download v0.60</a> directly).</p>
<p>Once it is installed, run it and follow these steps.</p>
<p><img class="alignright size-full wp-image-323" title="PuTTY Host Options" src="http://auzigog.com/wp-content/uploads/2009/01/putty-host-options.png" alt="PuTTY Host Options" width="294" height="98" /><br />
Enter <em>sftp.uoregon.edu</em> under the host field. It should look the image to the right.</p>
<p>Press <em>OK</em>. You should get a message saying there is a &#8220;Security Alert&#8221;. Just press <em>Yes</em>.</p>
<p>Now you&#8217;re almost ready to go. Just enter your Duck ID (the same one you use to login to your email and blackboard) and your password. If you&#8217;re doing this for a student account, the process is exactly the same, but with the username/password that you would use to login your groups email address. It should look like this:<br />
<img class="alignnone size-full wp-image-315" title="PuTTY login screen" src="http://auzigog.com/wp-content/uploads/2009/01/putty3.png" alt="PuTTY login screen" width="499" height="276" /></p>
<p>You&#8217;re ready to move on! Go on down to the <a href="#Running_the_Script">&#8220;Running the Script&#8221;</a> section below.</p>
<h4>Mac Users</h4>
<p>Mac OS X users have it much easier because the program you need is already installed.</p>
<p><img class="alignright size-full wp-image-318" title="Spotlight Terminal Search" src="http://auzigog.com/wp-content/uploads/2009/01/spotlight-terminal-search.png" alt="Spotlight Terminal Search" width="292" height="112" />You just need to run the Terminal application. The quickest way to get it it is by using the searching for it using the search box (Spotlight) in the top right corner of the screen.</p>
<p>Once that program is up and running you just need to use your Duck ID (the same one you use to login to your email and blackboard) and your password. If you&#8217;re doing this for a student account, the process is exactly the same, but with the username/password that you would use to login your groups email address. Here&#8217;s what it looks like when I use my Duck ID (jblancha) and password:<br />
<img class="alignnone size-full wp-image-321" title="osxterminal" src="http://auzigog.com/wp-content/uploads/2009/01/osxterminal.png" alt="osxterminal" width="585" height="237" /></p>
<h3>Running the Script</h3>
<p>Now that you have SSH&#8217;ed into you account, you&#8217;re ready to run the script!</p>
<p>Type each of the following commands in and press enter after each line. The first command will take a couple moments to run, so don&#8217;t type the next one until it is done.</p>
<pre lang="bash">wget <a href="http://auzigog.com/perm/wordpress_shell.sh">http://auzigog.com/perm/wordpress_shell.sh</a>
chmod 0755 wordpress_shell.sh
./wordpress_shell.sh</pre>
<p>The last command will run the script I wrote to do <a href="http://wiki.auzigog.com/Wordpress_on_shell.uoregon.edu#The_really_long_way">all the work</a> for you.</p>
<p>The first thing you need to do is type <em>n</em> and press enter to indicate that you are not an advanced user. Now you should see a bunch of lines being output to the screen.</p>
<pre lang="txt">*** Do you want to install MySQL using the 'mysql_install_db' command? You should do this ONE TIME ONLY
Are you an advanced user who needs the MySQL passwords later? [y/n]: n
// Creating .htaccess in your public_html directory (/home6/spanst/public_html) so all files ending in .php will execute
// Creating php.cgi in your home directory (/home6/spanst) so all files ending in .php will execute
// Generating a port number (between 5000 and 6000) to run MySQL from
// For reference, the port number that MySQL is running on is: 5430
// Making a MySQL configuration file for your account
// Installing the MySQL database. This may take a few moments...
// Setting a root password for wordpress
// Creating a username and password for wordpress
// Configuring a cron job to ensure the MySQL Daemon doesn't go down
// Downloading and placing wordpress files. This may take a moment....
// Creating public_html/wp-content/uploads for uploaded images/files
// Configuring wordpress

// Here is some stuff you can ignore if you don't know what it is:
<pre>
   PORT: 5430
   MySQL 'root' account password: ########
   MySQL 'wordpressuser' account password: ########
   MySQL database for wordpress: wordpressdb
   MySQL host for connections: sftp.uoregon.edu:5430
</pre>
<p>SUCCESSS! Visit <a href="http://uoregon.edu/~spanst">http://uoregon.edu/~spanst</a> to finish the installation of your blog!</p>
<pre>
Note: Please remove index.html from your ~/public_html folder so that WordPress can actually work</pre>
</pre>
<p><em>Note:</em> Please write down the four lines that start with <em>MySQL</em> in case you or someone else ever needs those passwords to fix things down the road.</p>
<p>As the script indicates, <strong>you&#8217;re done!</strong> You can now visit <a href="http://uoregon.edu/~YourDuckID/">http://uoregon.edu/~YourDuckID/</a> to give your blog a name. When it asks you for an email address, be sure to use a real one because it that is where your username and password will be sent.</p>
<p>To login to the control panel (where you edit pages and blog posts), go to <a href="http://uoregon.edu/~YourDuckID/wp-admin/">http://uoregon.edu/~YourDuckID/wp-admin/</a>.</p>
<p>There&#8217;s some more information below that you might find helpful, but you&#8217;re basically done! If you&#8217;ve successfully used this script, please leave a comment below so I know that people are finding it useful. Spread the word to other individuals and groups so everyone can create a useful website!</p>
<h3>Extending WordPress</h3>
<p>You&#8217;re done with the important part. If you want to customize WordPress, here are some suggestions.</p>
<ul>
<li>Install a theme to give your site its own look. Check out <a href="http://wiki.auzigog.com/Wordpress_Tools#Themes">my favorite themes</a>. (<a href="http://courtneytuttle.com/2008/07/23/how-to-install-a-new-wordpress-theme/">Instructions</a>)
</li>
<li>In the control panel, go to Settings → Permalinks → Select &#8220;Day and Name&#8221; → Save Changes
</li>
<li>Add a <a href="http://wordpress.org/extend/plugins/contact-form-7/">contact form</a> to your site
</li>
<li>Add other authors/editors to your site by going to the control panel and Users → Add New
</li>
<li><a href="http://codex.wordpress.org/Akismet#Setting_Up_Akismet">Setup Akismet</a> to block spam comments on your blog posts
</li>
</ul>
<p>If you need any other help in working with WordPress, check out <a href="http://codex.wordpress.org/">their support site</a>.</p>
<p>Good luck! Please leave a comment below if you have any comments or questions!</p>
<h3>What the heck did the script do?</h3>
<p>If you&#8217;re not a big nerd, just scroll down to the comments section. If you&#8217;re a more technical user and are curious what happened, here&#8217;s an overview. You can find <a href="http://wiki.auzigog.com/Wordpress_on_shell.uoregon.edu">very detailed instructions</a> for all of this on my wiki.</p>
<ol>
<li>Use a .htaccess file to redirect all .php requests to a CGI script
</li>
<li>Use the CGI script to make sure all .php files are run under PHP5 (instead of being served as text files
</li>
<li>Install a copy of MySQL for your account on a specific port number.
</li>
<li>Create a MySQL database for WordPress
</li>
<li>Set up a cron job to make sure MySQL comes back up if the server ever restarts
</li>
<li>Download and unzip the latest version of WordPress
</li>
<li>Automatically edit your WordPress config file with all the information it has just generated
</li>
</ol>
<h3>Credits</h3>
<p>The only reason I was able to figure out this process in the first place was because of the following people</p>
<ul>
<li><a href="http://micro.uoregon.edu/unix/mysql.html">Micro&#8217;s guide to MySQL on shell</a> &#8211; Not the best instructions in the world, but absolutely necessary.
</li>
<li><a href="http://emumarketing.uoregon.edu/tristan/2008/09/30/easy-php-on-shell/">Easy PHP on shell</a> &#8211; Tristan at the EMU marketing department made most of this possible with his instructions for getting PHP files to run properly (instead of being served as text files). Tristan actually <a href="http://emumarketing.uoregon.edu/tristan/2009/01/10/getting-wordpress-working-on-shell/">wrote a WordPress installation guide</a> similar to this one last month.
</li>
<li><a href="http://twitter.com/justinmccraw">Justin McCraw</a> &#8211; Helped me remember the simplest set of steps to get this done
</li>
<li>Bruce and <a href="http://www.uoregon.edu/~spencera/">Spencer</a> at the UO for helping with specific issues I had along the way
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://auzigog.com/2009/02/01/easy-website-on-your-university-of-oregon-web-space/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		</item>
		<item>
		<title>Creating a MediaWiki API Instance Outside Installation Directory</title>
		<link>http://auzigog.com/2009/01/11/creating-a-mediawiki-api-instance-outside-installation-directory/</link>
		<comments>http://auzigog.com/2009/01/11/creating-a-mediawiki-api-instance-outside-installation-directory/#comments</comments>
		<pubDate>Sun, 11 Jan 2009 08:24:15 +0000</pubDate>
		<dc:creator>Auzigog</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Guides]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[guide]]></category>
		<category><![CDATA[mediawiki]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://auzigog.com/?p=222</guid>
		<description><![CDATA[
I&#8217;m in the process of writing mediawiki2wordpress&#8212;a plugin to allow WordPress to access and display content from a MediaWiki installation. I spent a bit of the evening figuring out how to get MediaWiki to let me trick it into thinking I was making a standard request. The method I explain here gives you access to [...]
]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m in the process of writing <a href="http://github.com/auzigog/mediawiki2wordpress/tree/master">mediawiki2wordpress</a>&mdash;a plugin to allow <a href="http://wordpress.org/">WordPress</a> to access and display content from a <a href="http://www.mediawiki.org/wiki/MediaWiki">MediaWiki</a> installation. I spent a bit of the evening figuring out how to get MediaWiki to let me trick it into thinking I was making a standard request.</p>
<p>The method I explain here gives you access to the <a href="http://www.mediawiki.org/wiki/API">MediaWiki API class</a> as opposed to the standard MediaWiki rendering class. Most of this code came from MediaWiki&#8217;s <span class="code">api.php</span> which you can find in <a href="http://download.wikimedia.org/mediawiki/1.13/mediawiki-1.13.3.tar.gz">MediaWiki 1.13</a>.</p>
<p>Here&#8217;s what the API output will look like for the <a href="http://en.wikipedia.org/w/api.php?action=parse&#038;page=Foobar">Foobar page on Wikipedia</a> (in XML).</p>
<p>I spent quite a bit of time poking around in the MediaWiki /includes directory and trying different hack-ish methods before <a href="http://www.mediawiki.org/wiki/API:Calling_internally#Using_API_internally_by_other_code">this page</a> that had exactly what I needed! It did need updating, but I <a href="http://www.mediawiki.org/w/index.php?title=API:Calling_internally&#038;diff=232400&#038;oldid=214333">was happy to oblige</a>. I even had this whole post written up using a sloppier approach before finding the <span class="code">FauxRequest</span> class that I explain below.<br />
<span id="more-222"></span></p>
<h3>The code</h3>
<p>Let&#8217;s start with the sample code, then go over the details.</p>
<pre lang="php" line="1">$mediawiki_root = '/Users/eyeRmonkey/www/mediawiki-test';
putenv("MW_INSTALL_PATH=$mediawiki_root");
// Initialise common code
require ($mediawiki_root . '/includes/WebStart.php');

class MediaWikiAPIWrapper {
	public function make_fake_request($params) {
		$request = new FauxRequest($params, true);

		$api = new ApiMain($request);

		// Process data &#038; use an output buffer to capture the resutls
		$api->execute();
		$result = $api->getResult();
		$data = &#038;$result->getData();

		return $data;
	}
}</pre>
<h3>Initializing</h3>
<p>The first matter of business is <strong>lines 1 through 4</strong>. These <em>need</em> to be called outside of any function or class. I spent some time trying to figure out why none of MediaWiki&#8217;s global variables were showing up in <span class="code">print_r($GLOBALS)</span> before thinking to <span class="code">require_once()</span> it outside of any functions. Duh. Make sure you get the path to your MediaWiki installation root correct (no trailing slash, obviously).</p>
<p>Most of the work get&#8217;s done on <strong>line 4</strong>. This get&#8217;s all the code ready for a standard API call from the web. This whole approach is meant to be used by an <a href="http://www.mediawiki.org/wiki/Extension_Matrix">extension</a>, so we need to play catchup by initializing the core MediaWiki code.</p>
<h3>Faking the Request</h3>
<p>The good folks at MediaWiki were are kind enough to provide us with a class specifically meant for faking an API request! Joy! It&#8217;s called <span class="code">FauxRequest</span> and it extends the <span class="code">WebRequest</span> object that is used by default for API calls. The <span class="code">FauxRequest</span> class takes an array of keys and values that represent what would&#8217;ve been passed in the URL.</p>
<p>The API manual has more information on  <a href="http://www.mediawiki.org/wiki/API:Data_formats">formats</a> and different <a href="http://www.mediawiki.org/wiki/API:Query">queries</a> you can make to the API.</p>
<p>Here is what your <span class="code">$params</span> array might look like to grab the Main Page:</p>
<pre lang="php">$data = array(
		'action' => 'parse',
		'page' => 'Main_Page'
	);</pre>
<h3>Running the API</h3>
<p><strong>Lines 10 through 15</strong> create an instance of the API and pass in our <span class="code">FauxRequest</span> object to get things rolling!</p>
<p>The <span class="code">$data</span> array will hold all of the information that you would get from a <span class="code">format=php</span> API call. As always, you could use <span class="code">print_r()</span> to display the Array for debugging purposes.</p>
<p><em>That&#8217;s it!</em></p>
<h3>mod_rewrite Issues</h3>
<p>On <a href="http://wiki.auzigog.com">my wiki</a>, the .htaccess mod_rewrite rules that I have seem to be preventing the API from functioning totally correctly. A workaround I discovered is to use the following API call: <a href="http://en.wikipedia.org/w/api.php?action=parse&#038;title=Main_Page&#038;text=%7B%7B%3AMain_Page%7D%7D"><span class="code">/api.php?action=parse&#038;title=Main_Page&#038;text={{:Main_Page}}</span></a>. This works by asking the API to translate the <span class="code">text</span> parameter into rendered text. The <span class="code">{{:Main_Page}}</span> says that the text is actually a <a href="http://en.wikipedia.org/wiki/Wikipedia:Transclusion">transclusion-ed</a> page. It&#8217;s definitely a hack, but it works on servers with weird rewrite rules for <a href="http://www.mediawiki.org/wiki/Manual:Short_URL">pretty URLs</a>.</p>
<h3>Further reading</h3>
<ul>
<li><a href="http://www.mediawiki.org/wiki/API:Query_-_Properties">API: Query Properties</a>
</li>
<li><a href="http://www.mediawiki.org/wiki/API:Expanding_templates_and_rendering">API: Expanding templates and rendering</a> &#8211; Relevant to the transclusion workaround.
</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://auzigog.com/2009/01/11/creating-a-mediawiki-api-instance-outside-installation-directory/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Quicksilver Trigger: &#8220;Show Current Track&#8221; in iTunes</title>
		<link>http://auzigog.com/2009/01/08/quicksilver-trigger-show-current-track-in-itunes/</link>
		<comments>http://auzigog.com/2009/01/08/quicksilver-trigger-show-current-track-in-itunes/#comments</comments>
		<pubDate>Fri, 09 Jan 2009 05:08:44 +0000</pubDate>
		<dc:creator>Auzigog</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Featured]]></category>
		<category><![CDATA[Guides]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[applescript]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[quicksilver]]></category>
		<category><![CDATA[script]]></category>

		<guid isPermaLink="false">http://auzigog.com/?p=181</guid>
		<description><![CDATA[
A while back I throw together this AppleScript to trigger Quicksilver to not only go to iTunes, but to automatically focus on the current track. (Note: When iTunes is already the front window, the command to do this is ⌘L. Features Brings iTunes to the front if it isn&#8217;t already the front window Highlights the [...]
]]></description>
			<content:encoded><![CDATA[<p>A while back I throw together this AppleScript to trigger <a href="http://docs.blacktree.com/quicksilver/what_is_quicksilver">Quicksilver</a> to not only go to iTunes, but to automatically focus on the current track. (<em>Note:</em> When iTunes is already the front window, the command to do this is ⌘L.</p>
<h3>Features</h3>
<ul>
<li>Brings iTunes to the front if it isn&#8217;t already the front window
</li>
<li>Highlights the track that is currently playing (if one is playing)
</li>
<li>If iTunes is already the front window, this script will hide the window (similar to using ⌘H
</li>
</ul>
<p><span id="more-181"></span></p>
<h3>Steps</h3>
<ol>
<li>Make sure <a href="http://docs.blacktree.com/quicksilver/what_is_quicksilver">Quicksilver</a> is installed.
</li>
<li>Copy the code below into a text file.
</li>
<li>Save that file in a directory (preferably somewhere in your home directory). Mine is saved at <span class="code">/Users/auzigog/Apple Scripts/showplayingtrack.scpt</span>.
</li>
<li>Open quicksilver by pressing your hot key (likely ⌘L) and press the arrow in the top right to open the menu. Select <em>Triggers</em>
</li>
<li>Press the + button to add a new hot key.
<ol>
<li>Into the first box, type <span class="code">~/Apple Scripts/showplayingtrack.scpt</span> (modify this if you saved it somewhere else).
</li>
<li>Press save
</li>
</ol>
</li>
<li>Assign a hot key
<ol>
<li>Select the item you just added and double-click the area that says &#8220;none&#8221;.
</li>
<li>Put your curson in the &#8220;Hot Key&#8221; box and press the keys you want to use to trigger this script. I chose ^⌘L (Ctrl + Apple + L) to mimic the built in iTunes command
</li>
</ol>
</li>
</ol>
<h3>You&#8217;re done!</h3>
<p>That&#8217;s it! Leave a comment if you find this helpful!</p>
<h3>The code</h3>
<p><br class="clear" /></p>
<pre lang="applescript">on run
	tell application "iTunes"
		if frontmost is true then
			tell application "System Events"
				set app_name to name of the first process whose frontmost is true
				set visible of process app_name to false
			end tell
		else
			set frontmost to true
			if player state is playing then
				reveal current track
			end if
		end if
	end tell
end run</pre>
]]></content:encoded>
			<wfw:commentRss>http://auzigog.com/2009/01/08/quicksilver-trigger-show-current-track-in-itunes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Hack: Accessing more than 1,000 results</title>
		<link>http://auzigog.com/2007/08/21/google-over-1000-result-hack/</link>
		<comments>http://auzigog.com/2007/08/21/google-over-1000-result-hack/#comments</comments>
		<pubDate>Tue, 21 Aug 2007 08:03:21 +0000</pubDate>
		<dc:creator>Auzigog</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[hack]]></category>

		<guid isPermaLink="false">http://eyermonkey.com/2007/08/21/google-over-1000-result-hack/</guid>
		<description><![CDATA[
I&#8217;ve been doing a lot of work with complex search queries on Google lately. I have a script that grabs all the URLs returned for a given query. The problem is that although there are hundreds of thousands of results for most queries, Google will give you this notice if you try to get more [...]
]]></description>
			<content:encoded><![CDATA[<p><a href="http://auzigog.com/2007/08/21/google-over-1000-result-hack/google-hax0r/" rel="attachment wp-att-16"><img src="http://eyermonkey.com/wp-content/uploads/2007/08/317884844_294803935d.jpg" alt="Google H4x0r" style="border: 0pt none ; float: right" /></a><br />
I&#8217;ve been doing a lot of work with complex search queries on Google lately. I have a script that grabs all the URLs returned for a given query. The problem is that although there are hundreds of thousands of results for most queries, Google will give you this notice if you try to get more than the first 1,000 results: &#8220;Sorry, Google does not serve more than 1000 results for any query.&#8221;</p>
<p>This restriction became a problem for me. After doing some research, I ran across an interesting workaround that allows you to access twice as many results. Simply include and remove a common word in your queries. For example, if you are searching for <code>proxy</code> and want to get 2,000 results, use these two queries:</p>
<ul>
<li><a href="http://www.google.com/search?q=proxy+%2B%22the%22&#038;filter=0"><code>proxy +"the"</code></a></li>
<li><a href="http://www.google.com/search?q=proxy+-%22the%22&#038;filter=0"><code>proxy -"the"</code></a></li>
</ul>
<p>Now you have 2,000 unique results.</p>
<p><span id="more-17"></span><br />
You can extend this idea to get 1000 * 2<sup>n</sup> results where <code>n</code> is the number of words you include/remove. Here is how you could get 8,000 results:</p>
<ul>
<li><a href="http://www.google.com/search?q=proxy+%2B%22the%22+%2B%22to%22+%2B%22that%22&#038;filter=0"><code>proxy +"the" +"to" +"that"</code></a></li>
<li><a href="http://www.google.com/search?q=proxy+%2B%22the%22+%2B%22to%22+-%22that%22&#038;filter=0"><code>proxy +"the" +"to" -"that"</code></a></li>
<li><a href="http://www.google.com/search?q=proxy+%2B%22the%22+-%22to%22+%2B%22that%22&#038;filter=0"><code>proxy +"the" -"to" +"that"</code></a></li>
<li><a href="http://www.google.com/search?q=proxy+%2B%22the%22+-%22to%22+-%22that%22&#038;filter=0"><code>proxy +"the" -"to" -"that"</code></a></li>
<li><a href="http://www.google.com/search?q=proxy+-%22the%22+%2B%22to%22+%2B%22that%22&#038;filter=0"><code>proxy -"the" +"to" +"that"</code></a></li>
<li><a href="http://www.google.com/search?q=proxy+-%22the%22+%2B%22to%22+-%22that%22&#038;filter=0"><code>proxy -"the" +"to" -"that"</code></a></li>
<li><a href="http://www.google.com/search?q=proxy+-%22the%22+-%22to%22+%2B%22that%22&#038;filter=0"><code>proxy -"the" -"to" +"that"</code></a></li>
<li><a href="http://www.google.com/search?q=proxy+-%22the%22+-%22to%22+-%22that%22&#038;filter=0"><code>proxy -"the" -"to" -"that"</code></a></li>
</ul>
<p>Using common works like &#8220;the&#8221;, &#8220;to&#8221; and &#8220;that&#8221; might not be the best tactic for all queries. For example, <a href="http://www.google.com/search?q=proxy+-%22the%22+-%22to%22+-%22that%22&#038;filter=0"><code>proxy -"the" -"to" -"that"</code></a> will return almost entirely non-English pages, and that might not be what you are aiming for. A better approach would be to use words that are specific to your query. For <code>proxy</code> it might be best to use these words: &#8220;myspace&#8221;, &#8220;copyright&#8221;, &#8220;nph-proxy&#8221; and &#8220;anonymous&#8221;.</p>
<p>I wrote a function in PHP that takes a list of words and query as input and outputs an array of queries.</p>
<blockquote style="font-size: 1.35em;">
<pre>&lt;code&gt;function make_queries($query, $common_terms) {
   $queries = array($query);
   foreach($common_terms as $term) {
      $new_queries = array();
      foreach($queries as $query) {
         $new_queries[] = $query.' +&quot;'.$term.'&quot;';
         $new_queries[] = $query.' -&quot;'.$term.'&quot;';
      }
      $queries = $new_queries;
   }
   return $queries;
}
&lt;/code&gt;</pre>
</blockquote>
<p>Example usage:</p>
<blockquote><p><code>$common_terms = array('myspace', 'copyright', 'anonymous');<br />
$queries = make_queries('proxy', $common_terms);<br />
print_r($queries);<br />
</code></p>
</blockquote>
<p>Be mindful of how many &#8220;common terms&#8221; you are using. Using 7 terms results in 128 different queries.</p>
<p>Also, I recommend including <code>&#038;filter=0</code> in then URL so that Google doesn&#8217;t filter out results that it thinks you don&#8217;t want. You can do the filtering yourself.</p>
<p>Another hint is to use &#8220;site:.com&#8221;, &#8220;site:.net&#8221; <b>OR</b> &#8220;site:.org&#8221; as one of your common terms. Don&#8217;t use more than one because a query with <code>+site:.com +site:.net</code> will not return any results. Although, if you manually add <code>-site:.com -site:.net -site:.org</code> you will get primarily foreign country domains.</p>
<p>Happy Googling!</p>
]]></content:encoded>
			<wfw:commentRss>http://auzigog.com/2007/08/21/google-over-1000-result-hack/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The Nerd Community</title>
		<link>http://auzigog.com/2007/07/12/nerd-community/</link>
		<comments>http://auzigog.com/2007/07/12/nerd-community/#comments</comments>
		<pubDate>Thu, 12 Jul 2007 08:45:17 +0000</pubDate>
		<dc:creator>Auzigog</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Life]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://eyermonkey.com/2007/07/12/nerd-community/</guid>
		<description><![CDATA[
I have been a nerd my entire life. I started designing websites in grade school and I have only been sucked further and further down the rabbit hole since. I have been part of the online nerdy community for quite a while, but it&#8217;s not too often that I get to interact with my geeky [...]
]]></description>
			<content:encoded><![CDATA[<p stlye="float: left; display: block; width: 240px;"><a href="http://www.flickr.com/photos/kurioso/153495196/"><img src="http://farm1.static.flickr.com/53/153495196_e864be425e_m.jpg" alt="Nerdiness" style="border: 0pt none " /></a></p>
<p>I have been a nerd my entire life. I started designing websites in grade school and I have only been sucked further and further down the rabbit hole since. I have been part of the <em>online</em> nerdy community for quite a while, but it&#8217;s not too often that I get to interact with my geeky brethren in person. This past weekend was my first excursion into that community and I must say that I had a blast.</p>
<p>My boss, Jon Steinhart, has a party at his house every summer and invites all of his friends, coworkers, etc. Little did I know, Jon has built up quite a list of contacts in the tech world in his time.</p>
<p><span id="more-13"></span><br />
I brought my friend <a href="http://oregon.facebook.com/profile.php?id=11521495">Kris</a> with me to share in the nerdiness. We got to the party early and helped Jon fuse some fireworks for the big show later that night. People showed up slowly and after the fireworks were done, Kris and I took a walk around Jon&#8217;s property and vineyard. By the time we got back to the house, there were around 60 people there!</p>
<p>Jon loves to talk about <a href="http://www.gnashdev.org/wiki/index.php/MusicML">our project</a> and he kept pulling me into conversations as he was telling people about it. That lead to me meeting some very interesting (AKA nerdy) people.</p>
<h4>QuarkXPress guy</h4>
<p><img src="http://eyermonkey.com/wp-content/uploads/2007/07/untitled-1.jpg" alt="QuarkXPress Easter Egg" style="border: 0pt none ; float: right" />The first guy I met was actually the father of a girl who is going to the <a href="http://en.wikipedia.org/wiki/University_of_Oregon">University of Oregon</a> next year. After talking to them for a while, I discovered he used to be a developer on <a href="http://en.wikipedia.org/wiki/QuarkXPress">QuarkXPress</a>, a page layout program. It turns out he was the programmer who put a well-known <a href="http://en.wikipedia.org/wiki/Easter_egg_%28virtual%29">easter egg</a> (hidden/fun feature) into the program. The easter egg involves pressing ALT+CTRL+SHIT+K and a little alien comes out and blows up your box for you (sound effects included!). It has been <a href="http://www.eeggs.com/items/895.html">well</a> <a href="http://www.crestock.com/blog/entertainment/easter-egg-hunt-hidden-treasures-in-your-design-software-52.aspx">documented</a>. Adobe&#8217;s page layout program even paid tribute to this with their own <a href="http://www.creativetechs.com/iq/hidden_easter_eggs_in_indesign_cs2.html">alien spaceship easter egg</a>.</p>
<p>In later versions of the program, a bigger alien comes out and blows up your box and the littler guy. After talking to this guy for a while, I found at that his son had drawn both aliens. He said his son was even in a QuarkXPress class in high school and he tried telling his classmates that he was the artist, but no one believed him!</p>
<h4>Ronabop: Original Developer of PHP</h4>
<p>The QuarkXPress guy had carpooled with <a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&#038;friendid=38835125">Ronald Chmara</a>. After talking for a while, Rob told me he was one of the thirteen original developers of PHP. <a href="http://en.wikipedia.org/wiki/PHP">PHP</a> is the programming language I use every day and the same one that generates a majority of the websites you view on the internet. To get an idea of what kind of a guy he was, let me just say that he was wearing a kilt and told me at one that he usually dons a trench coat. Better yet, here are <a href="http://www.opus1.com/ron/picindex.html">some photos</a>. He was a cool guy and after his fourth <em>cup</em> of wine, we had some good discussions about the programming language.</p>
<h4>The Apple Guy</h4>
<p>There was a guy there who said he worked at Apple on <a href="http://en.wikipedia.org/wiki/IWeb">iWeb</a>, their <abbr title="What You See Is What You Get">WYSIWG</abbr> website creation tool. He was, of course, sporting a brand new <a href="http://en.wikipedia.org/wiki/IPhone">iPhone</a>. He was practically a walking advertisement for it and was throwing out packaged statements like &#8220;you can also view your online photo albums. You know, for when you want to show off pictures of the kids.&#8221; I must say though, the iPhone looked pretty cool.</p>
<h4>Saul Wold: Senior Staff Engineer for Sun Microsystems</h4>
<p><a href="http://www.linkedin.com/pub/0/2/05B">Saul Wold</a> is someone I&#8217;ve actually known for a while. We met in a chat room during a <a href="http://en.wikipedia.org/wiki/Woot#Woot-Off">Woot!-off</a> and he introduced me to Jon in the first place. Saul works for Sun Microsystems and previously worked on the <a href="http://en.wikipedia.org/wiki/Java_Virtual_Machine">Java Virtual Machine</a>. Java is the programming language that most universities use to teach computer science to students (including myself).</p>
<h4>People I didn&#8217;t meet</h4>
<p>There were a few people I didn&#8217;t meet, but that were there. Most notably, <a href="http://en.wikipedia.org/wiki/Ward_Cunningham">Ward Cunningham</a>, the inventor of the <a href="http://en.wikipedia.org/wiki/Wiki">wiki</a>, was there. I also saw young, hip tech guy from <a href="http://en.wikipedia.org/wiki/Mozilla">Mozilla</a>.</p>
<p>All-in-all, I had a great time! I have no doubt that I&#8217;ll know just as many semi-famous nerds when I&#8217;m having summer parties years from now.</p>
]]></content:encoded>
			<wfw:commentRss>http://auzigog.com/2007/07/12/nerd-community/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Uploading Photos within Facebook Apps</title>
		<link>http://auzigog.com/2007/05/30/uploading-photos-within-facebook-apps/</link>
		<comments>http://auzigog.com/2007/05/30/uploading-photos-within-facebook-apps/#comments</comments>
		<pubDate>Thu, 31 May 2007 04:49:35 +0000</pubDate>
		<dc:creator>Auzigog</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://eyermonkey.com/2007/05/30/uploading-photos-within-facebook-apps/</guid>
		<description><![CDATA[
Facebook recently released the Facebook Platform which allows developers to write applications and tools that run inside users&#8217; profiles and within Facebook itself. So far, the Platform has been a huge success. Dozens of useful applications are coming out every day and most users are very excited for the extra functionality. I am in the [...]
]]></description>
			<content:encoded><![CDATA[<p><img src="http://eyermonkey.com/wp-content/uploads/2007/05/n2205007948_5657.thumbnail.jpg" alt="Facebook Platform Logo" style="border: 0pt none ; float: right" />Facebook recently <a href="http://developers.facebook.com/news.php?blog=1&amp;story=21">released</a> the <a href="http://developers.facebook.com/">Facebook Platform</a> which allows developers to write applications and tools that run inside users&#8217; profiles and within <a href="http://facebook.com">Facebook</a> itself. So far, the Platform has been a huge success. Dozens of useful applications are coming out every day and most users are very excited for the extra functionality.</p>
<p>I am in the process of writing an application that brings together <a href="http://flickr.com">Flickr</a> sets and Facebook photo albums. Unfortunately, the current implementation of the Facebook Platform lacks the ability to easily upload photos to a user&#8217;s account.</p>
<p>To remedy this situation, <a href="http://paul.elowel.org/">Paul Wells</a> and I decided to writing our own addition to the <a href="http://developers.facebook.com/resources.php">Facebook PHP5 Client Library</a>. Using it is as simple as uploading the file to your server and changing two lines of code in your existing applications. The best part is that our class does not involve code hacks at all. Our classes simply extend the current ones and add the functionality we want. The advantage to this approach is that the code will still work if Facebook updates the API.</p>
<p>To download the code and see an example of it&#8217;s use, visit the <strong><a href="http://wiki.eyermonkey.com/Facebook_Photo_Uploads">project page</a></strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://auzigog.com/2007/05/30/uploading-photos-within-facebook-apps/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>My Experience with Installing WordPress</title>
		<link>http://auzigog.com/2007/05/14/my-experience-with-installing-wordpress/</link>
		<comments>http://auzigog.com/2007/05/14/my-experience-with-installing-wordpress/#comments</comments>
		<pubDate>Mon, 14 May 2007 11:18:49 +0000</pubDate>
		<dc:creator>Auzigog</dc:creator>
				<category><![CDATA[Computers]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://eyermonkey.com/2007/05/14/my-experience-with-installing-wordpress/</guid>
		<description><![CDATA[
I was pleasantly surprised with how easy it was to install a WordPress blog to my server. I use GoDaddy for hosting. The only problem I encountered during the installation was when I wanted to change my permalink structure. The problem arose when I switched from &#8220;ugly permalinks&#8221; (<a href="http://example.com/?p=N">http://example.com/?p=N</a>) to &#8220;pretty permalinks&#8221; (<a href="http://example.com/year/month/day/post-name">http://example.com/year/month/day/post-name</a>). I already [...]
]]></description>
			<content:encoded><![CDATA[<p>I was pleasantly surprised with how easy it was to install a <a href="http://wordpress.org">WordPress</a> blog to my server. I use <a href="http://www.godaddy.com/">GoDaddy</a> for hosting. The only problem I encountered during the <a href="http://codex.wordpress.org/Installing_WordPress">installation</a> was when I wanted to change my <a href="http://codex.wordpress.org/Using_Permalinks">permalink structure</a>. </p>
<p>The problem arose when I switched from &#8220;ugly permalinks&#8221; (<code><a href="http://example.com/?p=N">http://example.com/?p=N</a></code>) to &#8220;pretty permalinks&#8221; (<code><a href="http://example.com/year/month/day/post-name">http://example.com/year/month/day/post-name</a></code>). I already had a .htaccess file in my root directory, but when switching permalink stuctures, WordPress attempts to write it&#8217;s own .htaccess file. Since mine was already in place, it failed and I started getting 404 errors on every pages except the home page.</p>
<p><span id="more-3"></span><br />
To solve them problem, I simply deleted the .htaccess file I put had in there. Then I switched back to &#8220;ugly permalinks&#8221; and then switched again to date-based permalinks. This allowed WordPress a change to create it&#8217;s own .htacces file with the correct rewrite conditions. I also add my own a couple of my own lines of code to make my site <a href="http://no-www.org/">no www</a> compliant. Here is my resulting .htaccess file for my root blog directory:</p>
<blockquote><p><code># BEGIN WordPress<br />
&lt;ifmodule mod_rewrite.c&gt;<br />
RewriteEngine On<br />
RewriteBase /<br />
RewriteCond %{HTTP_HOST} ^www.eyermonkey.com$ [NC]<br />
RewriteRule ^(.*)$ <a href="http://eyermonkey.com/">http://eyermonkey.com/</a>$1 [R=301,L]<br />
RewriteCond %{REQUEST_FILENAME} !-f<br />
RewriteCond %{REQUEST_FILENAME} !-d<br />
RewriteRule . /index.php [L]<br />
&lt;/ifmodule&gt;</p>
<ol>
<li>END WordPress</code></p></blockquote>
</li>
</ol>
<p>Other than that, everything went smoothly. I ended up using a theme called <a href="http://www.onehertz.com/portfolio/wordpress/mandigo/">Mandigo</a> with a few images from <a href="http://themes.wordpress.net/columns/2-columns/567/">Orange Crush</a>. I also installed a few plugins:</p>
<ul>
<li><a href="http://wordpress.org/extend/plugins/google-sitemap-generator/">Google Sitemap Generator</a></li>
<li><a href="http://www.oratransplant.nl/uga">Ultimate Google Analytics</a></li>
<li><a href="http://www.joshgerdes.com/blog/projects/simpleflickr-plugin/">SimpleFlickr</a></li>
<li><a href="http://wordpress.org/extend/plugins/gregarious/">Gregarious</a> (Social bookmarking &#8211; Digg and Reddit)</li>
<li>and a non-WordPress specific <a href="http://www.last.fm/widgets/">widget for Last.fm</a>
</li>
</ul>
<p>So far, my favorite part of the entire WordPress system is the ability to edit the code of your theme from within the admin panel. Before I discovered that feature, I was manually editing files on my computer, then uploading them to my server. It started to get quite tedious.</p>
<p>My advice to anyone installing WordPress for the first time is to take the time to familiarize yourself with all of the options in the admin panel.</p>
]]></content:encoded>
			<wfw:commentRss>http://auzigog.com/2007/05/14/my-experience-with-installing-wordpress/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

