<?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>Aldenta: Handcrafting the Web &#187; Tips</title>
	<atom:link href="http://www.aldenta.com/category/tips/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.aldenta.com</link>
	<description>Handcrafting the Web by John Ford</description>
	<lastBuildDate>Sat, 01 May 2010 05:49:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1-alpha</generator>
		<item>
		<title>Programmatically Pull Attachments from WordPress Posts</title>
		<link>http://www.aldenta.com/2009/05/05/programmatically-pull-attachments-from-wordpress-posts/</link>
		<comments>http://www.aldenta.com/2009/05/05/programmatically-pull-attachments-from-wordpress-posts/#comments</comments>
		<pubDate>Tue, 05 May 2009 13:59:33 +0000</pubDate>
		<dc:creator>John Ford</dc:creator>
				<category><![CDATA[Example Code]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.aldenta.com/?p=138</guid>
		<description><![CDATA[One of my favorite tricks in using WordPress as a CMS is to have it handle photo resizing and insertion into pages automatically. For example, swissmiss and I just launched Convert (a NYC based Green Roof Service) today. Within the projects section they display photos of the green roofing projects they&#8217;ve done and let you [...]]]></description>
			<content:encoded><![CDATA[<p>One of my favorite tricks in using WordPress as a CMS is to have it handle photo resizing and insertion into pages automatically.  For example, <a href="http://www.swiss-miss.com/">swissmiss</a> and I just launched <a href="http://www.redefinetheskyline.com/">Convert (a NYC based Green Roof Service)</a> today.  Within the <a href="http://www.redefinetheskyline.com/projects/">projects section</a> they display photos of the green roofing projects they&#8217;ve done and let you download a project sheet PDF.</p>
<p>It would be quite a burden for the client to have to know how to create all of the appropriate image sizes, upload the photos and insert the correct HTML tags.  So here&#8217;s what we&#8217;ve done instead:</p>
<p>First, we set the WordPress image sizes to match the thumbnail and large sizes that we needed by going to Settings->Media in the admin tool.</p>
<p>Next, the client just has to upload all of their photos and a PDF for the project sheet.  The images are automatically scaled by WordPress and attached to the page.  They can also change the order the photos appear by dragging/dropping them in the admin tool.</p>
<p>Finally, adding this simple snippet of code to the functions.php in their theme, I can ask for all of the images associated with the post.</p>
<pre>
// get all of the images attached to the current post
function aldenta_get_images($size = 'thumbnail') {
	global $post;

	$photos = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );

	$results = array();

	if ($photos) {
		foreach ($photos as $photo) {
			// get the correct image html for the selected size
			$results[] = wp_get_attachment_image($photo->ID, $size);
		}
	}

	return $results;
}
</pre>
<p>So, if you want all of the thumbnail images (as an array of html tags) you can make the default call:</p>
<pre>$photos = aldenta_get_images();</pre>
<p>If you want all of the medium sized images you pass medium as the size:</p>
<pre>$photos = aldenta_get_images('medium');</pre>
<p>My function has a bit more going on inside of it but you get the idea of what you can do with this.  Another way I like to use it is to pull the first image from the post.  Sometimes, you want to display a thumbnail image that represents a post.  Here&#8217;s how I like to do that:</p>
<pre>
// get the first image attached to the current post
function aldenta_get_post_image($size = 'thumbnail') {
	global $post;

	$photos = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'image', 'order' => 'ASC', 'orderby' => 'menu_order ID') );

	if ($photos) {
		$photo = array_shift($photos);
		return wp_get_attachment_image($photo->ID, $size);
	}

	return false;
}

// the html tag for the first image or false if no image is found
$photo = aldenta_get_post_image();
</pre>
<p>What if you want to get the PDF attached to the post?  No problem &#8211; it works the same but you change the mime type to application/pdf.</p>
<pre>
// get the first PDF attached to the current post
function aldenta_get_post_pdf() {
	global $post;

	$attachments = get_children( array('post_parent' => $post->ID, 'post_status' => 'inherit', 'post_type' => 'attachment', 'post_mime_type' => 'application/pdf', 'order' => 'ASC', 'orderby' => 'menu_order ID') );

	if ($attachments) {
		$attachment = array_shift($attachments);
		return wp_get_attachment_url($attachment->ID);
	}

	return false;
}

// the url to the first pdf or false if no pdf is found
$pdf = aldenta_get_post_pdf();
</pre>
<p>This technique has helped me tremendously and I hope it does the same for you.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aldenta.com/2009/05/05/programmatically-pull-attachments-from-wordpress-posts/feed/</wfw:commentRss>
		<slash:comments>42</slash:comments>
		</item>
		<item>
		<title>Stop Mailing Me Phone Books</title>
		<link>http://www.aldenta.com/2009/02/17/stop-mailing-me-phone-books/</link>
		<comments>http://www.aldenta.com/2009/02/17/stop-mailing-me-phone-books/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 21:58:31 +0000</pubDate>
		<dc:creator>John Ford</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[YellowPages.com]]></category>

		<guid isPermaLink="false">http://www.aldenta.com/?p=115</guid>
		<description><![CDATA[With Google&#8217;s local search, and sites like YellowPages.com, I haven&#8217;t opened a phone book in years. The printed books are such a waste of resources and time. I also get the same book delivered to my home and work addresses. I contacted YellowPages.com via email and they were nice enough to give me a list [...]]]></description>
			<content:encoded><![CDATA[<p>With <a href="http://maps.google.com/">Google&#8217;s local search</a>, and sites like <a href="http://www.yellowpages.com/">YellowPages.com</a>, I haven&#8217;t opened a phone book in years.  The printed books are such a waste of resources and time.  I also get the same book delivered to my home and work addresses.</p>
<p>I contacted YellowPages.com via email and they were nice enough to give me a list of local providers who are responsible for phone books.  So, I called Bell South, my local book provider, and removed both of my addresses from their mailing list.</p>
<ul>
<li>AMERITECH: 1-800-346-4377</li>
<li>BELL ATLANTIC/VERIZON: 1-800-346-9639</li>
<li>BELL SOUTH: 1-800-682-4000</li>
<li>GTE: 1-800-346-9639</li>
<li>MCI: 1-800-444-3333</li>
<li>PAC BELL: 1-800-848-8000</li>
<li>SWBELL: 1-800-792-2665</li>
</ul>
<p>Get rid of these monstrous books and help save a tree (and fuel, paper waste, water, forest animals, money and everything else that&#8217;s connected to producing a phone book)!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aldenta.com/2009/02/17/stop-mailing-me-phone-books/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Phusion Passenger (mod_rails) Memory Management</title>
		<link>http://www.aldenta.com/2008/09/25/phusion-passenger-mod_rails-memory-management/</link>
		<comments>http://www.aldenta.com/2008/09/25/phusion-passenger-mod_rails-memory-management/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 19:38:26 +0000</pubDate>
		<dc:creator>John Ford</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mod_rails]]></category>
		<category><![CDATA[Phusion Passenger]]></category>
		<category><![CDATA[Ruby on Rails]]></category>

		<guid isPermaLink="false">http://www.aldenta.com/?p=72</guid>
		<description><![CDATA[I&#8217;ve been using Phusion Passenger (mod_rails) for about a month to run a production and staging machine with a Ruby on Rails app. So far things have been going really well. Installation was smooth and it&#8217;s been really peppy. However, the app just got hit by a lot of people at once and stopped responding. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://www.modrails.com/">Phusion Passenger (mod_rails)</a> for about a month to run a production and staging machine with a Ruby on Rails app.  So far things have been going really well.  Installation was smooth and it&#8217;s been really peppy.</p>
<p>However, the app just got hit by a lot of people at once and stopped responding.  I didn&#8217;t realize the default setting in Passenger is to spawn a max of 6 Rails instances simultaneously.  The documentation recommends 2 instances for a VPS with 256MB of memory (almost exactly what I&#8217;m running).  So, my server spawned the max and then ran out of memory which made it unresponsive.</p>
<p>I hit a couple of small walls while getting  this working so I wanted to share the process.</p>
<p>On linux based machines you can run <code><a href="http://www.modrails.com/documentation/Users%20guide.html#_inspecting_phusion_passenger_s_internal_status">passenger-status</a></code> to find out the number of Phusion Passenger application instances that are running.</p>
<pre>
----------- General information -----------
max      = 6
count    = 3
active   = 0
inactive = 3

----------- Applications -----------
/u/apps/myapp/releases/20080921194503:
  PID: 8792      Sessions: 0
  PID: 8789      Sessions: 0
  PID: 8784      Sessions: 0
</pre>
<p>You can see that the output show the default max value of 6.  To change this number you need to edit your httpd.conf and set the <code><a href="http://www.modrails.com/documentation/Users%20guide.html#_passengermaxpoolsize_lt_integer_gt">PassengerMaxPoolSize</a></code> option. <strong>Make sure this is outside of your VirtualHost or it won&#8217;t work</strong>&#8230; which, I obviously ran into.  It should probably look something like this:</p>
<pre>
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.0.3/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.0.3
PassengerRuby /usr/local/bin/ruby
PassengerMaxPoolSize 2
</pre>
<p>Once you&#8217;re done with that restart Apache and Passenger.  Now, to take a look at the memory that Apache and Passenger are using run <code><a href="http://www.modrails.com/documentation/Users%20guide.html#_inspecting_memory_usage">passenger-memory-stats</a></code>.  You&#8217;ll see something like this:</p>
<pre>
------------- Apache processes -------------
PID   PPID  Threads  VMSize   Private  Name
--------------------------------------------
5842  1     1        10.3 MB  0.2 MB   /usr/local/apache2/bin/httpd -k start
8757  5842  1        10.4 MB  0.3 MB   /usr/local/apache2/bin/httpd -k start
8784  5842  1        10.4 MB  0.2 MB   /usr/local/apache2/bin/httpd -k start
9137  5842  1        10.3 MB  0.2 MB   /usr/local/apache2/bin/httpd -k start
9141  5842  1        10.4 MB  0.2 MB   /usr/local/apache2/bin/httpd -k start
9143  5842  1        10.3 MB  0.2 MB   /usr/local/apache2/bin/httpd -k start
9147  5842  1        10.4 MB  0.3 MB   /usr/local/apache2/bin/httpd -k start
9155  5842  1        10.4 MB  0.3 MB   /usr/local/apache2/bin/httpd -k start
9163  5842  1        10.4 MB  0.3 MB   /usr/local/apache2/bin/httpd -k start
9506  5842  1        10.4 MB  0.3 MB   /usr/local/apache2/bin/httpd -k start
9510  5842  1        10.3 MB  0.2 MB   /usr/local/apache2/bin/httpd -k start
9623  5842  1        10.4 MB  0.3 MB   /usr/local/apache2/bin/httpd -k start
9629  5842  1        10.3 MB  0.2 MB   /usr/local/apache2/bin/httpd -k start
9631  5842  1        10.3 MB  0.2 MB   /usr/local/apache2/bin/httpd -k start
9633  5842  1        10.3 MB  0.2 MB   /usr/local/apache2/bin/httpd -k start
9750  5842  1        10.3 MB  0.2 MB   /usr/local/apache2/bin/httpd -k start
9752  5842  1        10.3 MB  0.2 MB   /usr/local/apache2/bin/httpd -k start
9865  5842  1        10.3 MB  0.2 MB   /usr/local/apache2/bin/httpd -k start
### Processes: 18
### Total private dirty RSS: 4.36 MB

-------- Passenger processes ---------
PID   Threads  VMSize   Private  Name
--------------------------------------
8749  20       6.0 MB   0.5 MB   /usr/local/lib/ruby/gems/1.8/gems/passenger-2.0.3/ext/apache2/ApplicationPoolServerExecutable 0 /usr/local/lib/ruby/gems/1.8/gems/passenger-2.0.3/bin/passenger-spawn-server  /usr/local/bin/ruby  /tmp/passenger_status.5842.fifo
8758  1        5.5 MB   2.9 MB   Passenger spawn server
8789  1        61.6 MB  53.7 MB  Rails: /u/apps/myapp/releases/20080921194503
8792  1        61.8 MB  53.9 MB  Rails: /u/apps/myapp/releases/20080921194503
### Processes: 4
### Total private dirty RSS: 111.03 MB
</pre>
<p>Now, that may look like a lot of Apache instances running but you can see the &#8220;Total private dirty RSS&#8221; (<strong>real</strong> memory usage of the processes) is only 4.36 MB which is nothing in the scheme of things.  More importantly, the real memory that the Rails instances are taking is 111.03 MB which my server can handle.  Remember, you&#8217;ll probably have MySQL and other applications running along with these processes, so don&#8217;t up the <code>PassengerMaxPoolSize</code> to the point of bringing your server to its knees.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aldenta.com/2008/09/25/phusion-passenger-mod_rails-memory-management/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing ImageMagick/RMagick on Leopard</title>
		<link>http://www.aldenta.com/2007/11/26/installing-imagemagickrmagick-on-leopard/</link>
		<comments>http://www.aldenta.com/2007/11/26/installing-imagemagickrmagick-on-leopard/#comments</comments>
		<pubDate>Mon, 26 Nov 2007 18:08:32 +0000</pubDate>
		<dc:creator>John Ford</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[ImageMagick]]></category>
		<category><![CDATA[Leopard]]></category>
		<category><![CDATA[OnRails.org]]></category>
		<category><![CDATA[RMagick]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Solomon White]]></category>

		<guid isPermaLink="false">http://www.aldenta.com/2007/11/26/installing-imagemagickrmagick-on-leopard/</guid>
		<description><![CDATA[I&#8217;ve heard many horror stories of developers trying to install ImageMagick/RMagick to manipulate images. Fortunately, when I needed to install RMagick to use with the attachment_fu plugin, I ran across a fantastic script at OnRails.org by Solomon White (many thanks). It gave the steps to install RMagick from source without MacPorts or Fink. I made [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve heard many horror stories of developers trying to install ImageMagick/RMagick to manipulate images.  Fortunately, when I needed to install RMagick to use with the <a href="http://svn.techno-weenie.net/projects/plugins/attachment_fu/">attachment_fu plugin</a>, I ran across <a href="http://onrails.org/articles/2007/11/03/installing-rmagick-on-leopard-without-macports-or-fink">a fantastic script</a> at <a href="http://onrails.org/">OnRails.org</a> by Solomon White (many thanks).  It gave the steps to install RMagick from source without MacPorts or Fink.</p>
<p>I made the following minor changes to get it working for me and posted the script below.</p>
<ul>
<li>Changed &#8216;wget&#8217; to &#8216;curl -O&#8217;</li>
<li>Updated a couple of links that weren&#8217;t working for me</li>
<li>Updated sourceforge links to the east coast</li>
<li>Updated links to latest version of source code (as of today)</li>
</ul>
<pre>
#!/bin/sh
curl -O http://download.savannah.gnu.org/releases/freetype/freetype-2.3.5.tar.gz
tar xzvf freetype-2.3.5.tar.gz
cd freetype-2.3.5
./configure --prefix=/usr/local
make
sudo make install
cd ..

curl -O http://superb-east.dl.sourceforge.net/sourceforge/libpng/libpng-1.2.23.tar.bz2
tar jxvf libpng-1.2.23.tar.bz2
cd libpng-1.2.23
./configure --prefix=/usr/local
make
sudo make install
cd ..

curl -O http://www.ijg.org/files/jpegsrc.v6b.tar.gz
tar xzvf jpegsrc.v6b.tar.gz
cd jpeg-6b
ln -s `which glibtool` ./libtool
export MACOSX_DEPLOYMENT_TARGET=10.5
./configure --enable-shared --prefix=/usr/local
make
sudo make install
cd ..

curl -O ftp://ftp.remotesensing.org/libtiff/tiff-3.8.2.tar.gz
tar xzvf tiff-3.8.2.tar.gz
cd tiff-3.8.2
./configure --prefix=/usr/local
make
sudo make install
cd ..

curl -O http://superb-east.dl.sourceforge.net/sourceforge/wvware/libwmf-0.2.8.4.tar.gz
tar xzvf libwmf-0.2.8.4.tar.gz
cd libwmf-0.2.8.4
make clean
./configure
make
sudo make install
cd ..

curl -O http://www.littlecms.com/lcms-1.17.tar.gz
tar xzvf lcms-1.17.tar.gz
cd lcms-1.17
make clean
./configure
make
sudo make install
cd ..

curl -O http://superb-east.dl.sourceforge.net/sourceforge/ghostscript/ghostscript-8.61.tar.gz
tar zxvf ghostscript-8.61.tar.gz
cd ghostscript-8.61/
./configure  --prefix=/usr/local
make
sudo make install
cd ..

curl -O http://mirror.cs.wisc.edu/pub/mirrors/ghost/GPL/current/ghostscript-fonts-std-8.11.tar.gz
tar zxvf ghostscript-fonts-std-8.11.tar.gz
sudo mv fonts /usr/local/share/ghostscript

curl -O ftp://ftp.imagemagick.org/pub/ImageMagick/ImageMagick-6.3.7-1.tar.gz
tar xzvf ImageMagick-6.3.7-1.tar.gz
cd ImageMagick-6.3.7
export CPPFLAGS=-I/usr/local/include
export LDFLAGS=-L/usr/local/lib
./configure --prefix=/usr/local --disable-static --with-modules --without-perl --without-magick-plus-plus --with-quantum-depth=8 --with-gs-font-dir=/usr/local/share/ghostscript/fonts
make
sudo make install
cd ..
</pre>
<p>To test that ImageMagick was installed properly you can check the version number.</p>
<pre>
convert -version

[you should see something like this]
Version: ImageMagick 6.3.7 11/26/07 Q8 http://www.imagemagick.org
Copyright: Copyright (C) 1999-2007 ImageMagick Studio LLC
</pre>
<p>To test that ImageMagick is working properly you can run the following test.  It will create a copy of the ImageMagick logo.</p>
<pre>
convert logo: logo.gif
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.aldenta.com/2007/11/26/installing-imagemagickrmagick-on-leopard/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Getting Apache &amp; PHP to work with Leopard (OS X 10.5)</title>
		<link>http://www.aldenta.com/2007/10/28/getting-apache-php-to-work-with-leopard-os-x-105/</link>
		<comments>http://www.aldenta.com/2007/10/28/getting-apache-php-to-work-with-leopard-os-x-105/#comments</comments>
		<pubDate>Sun, 28 Oct 2007 05:13:46 +0000</pubDate>
		<dc:creator>John Ford</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[403 Forbidden]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Leopard]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.aldenta.com/2007/10/28/getting-apache-php-to-work-with-leopard-os-x-105/</guid>
		<description><![CDATA[I ran into a snag today while trying to get the websites on my local machine running with Leopard. The first thing was that the config file in the new version of Apache is in a different location (/etc/apache2/httpd.conf instead of /etc/httpd/httpd.conf). Once I changed the settings I kept getting 403 Forbidden messages every time [...]]]></description>
			<content:encoded><![CDATA[<p>I ran into a snag today while trying to get the websites on my local machine running with Leopard.  The first thing was that the config file in the new version of Apache is in a different location (<em>/etc/apache2/httpd.conf</em> instead of <em>/etc/httpd/httpd.conf</em>).  Once I changed the settings I kept getting 403 Forbidden messages every time I loaded a page (the default in the new httpd.conf is &#8216;Deny from all&#8217; for all directories).  I finally figured things out and here&#8217;s what I did:</p>
<ol>
<li>Open the httpd.conf file for editing (<em>sudo vi /etc/apache2/httpd.conf</em>).</li>
<li>Uncomment the line<br />
<em>LoadModule php5_module &nbsp; &nbsp;    libexec/apache2/libphp5.so</em><br />
by removing the &#8216;#&#8217; from the front of the line. This will enable PHP 5.  The php5.conf file is loaded automatically from <em>/private/etc/apache2/other/</em>.</li>
<li>Create a file called _sites.conf in your Sites folder. I like to keep my site configuration in the Sites folder to make it more easily accessible as I&#8217;m doing development.</li>
<li>Add the following line to the very bottom of the httpd.conf file:<br />
<em>Include /Users/yourusername/Sites/_sites.conf</em><br />
That will make Apache load all the configuration settings from your _sites.conf file.</li>
<li>Add the following information to your _sites.conf file.</li>
</ol>
<pre>
# Enable named virtual hosts
NameVirtualHost *:80

# Override the default httpd.conf directives.  Make sure to
# use 'Allow from all' to prevent 403 Forbidden message.
&lt;Directory />
	Options ExecCGI FollowSymLinks
	AllowOverride all
	Allow from all
&lt;/Directory>

# A basic virtual host config
&lt;VirtualHost *:80>
	# Add yoursite to your /etc/hosts file so you can
	# type it directly in your browser
	ServerName yoursite

	DocumentRoot /Users/yourusername/Sites/yoursite
&lt;/VirtualHost>
</pre>
<p>Now you just need to start/restart Apache and the sites should load.  PHP should be working and no more 403 Forbidden message.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aldenta.com/2007/10/28/getting-apache-php-to-work-with-leopard-os-x-105/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>script.aculo.us Slider Demo : Update Text Field and Change Slider</title>
		<link>http://www.aldenta.com/2007/07/16/scriptaculous-slider-demo-update-text-field-and-change-slider/</link>
		<comments>http://www.aldenta.com/2007/07/16/scriptaculous-slider-demo-update-text-field-and-change-slider/#comments</comments>
		<pubDate>Mon, 16 Jul 2007 23:20:53 +0000</pubDate>
		<dc:creator>John Ford</dc:creator>
				<category><![CDATA[Example Code]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[script.aculo.us]]></category>
		<category><![CDATA[slider]]></category>

		<guid isPermaLink="false">http://www.aldenta.com/2007/07/16/scriptaculous-slider-demo-update-text-field-and-change-slider/</guid>
		<description><![CDATA[For those of you using the script.aculo.us Slider demos I&#8217;ve just added a new one. Sometimes you may have a slider and a text field to show the value. This example lets you change the value in the text box and the slider will update to match the value. Example: Change Slider Value by Changing [...]]]></description>
			<content:encoded><![CDATA[<p>For those of you using the <a href="/examples/script.aculo.us/">script.aculo.us Slider demos</a> I&#8217;ve just added a new one.  Sometimes you may have a slider and a text field to show the value. This example lets you change the value in the text box and the slider will update to match the value.</p>
<p>Example: <a href="/examples/script.aculo.us/slider-text-field.html">Change Slider Value by Changing Text Input Field</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.aldenta.com/2007/07/16/scriptaculous-slider-demo-update-text-field-and-change-slider/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Architect and Builder Dilemma</title>
		<link>http://www.aldenta.com/2006/12/04/the-architect-and-builder-dilemma/</link>
		<comments>http://www.aldenta.com/2006/12/04/the-architect-and-builder-dilemma/#comments</comments>
		<pubDate>Mon, 04 Dec 2006 15:00:36 +0000</pubDate>
		<dc:creator>John Ford</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[client interaction]]></category>
		<category><![CDATA[frustration]]></category>
		<category><![CDATA[quoting]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.aldenta.com/2006/12/04/the-architect-and-builder-dilemma/</guid>
		<description><![CDATA[(Originally uploaded by sweetsexything) One of the problems I&#8217;ve seen over the years, in corporations where I&#8217;ve worked and as a business owner, is the misconception that a builder (a developer in this case) can quote a project without the blueprints. I often times receive a request for a quote (10 pages long) and it [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/43802765@N00/313714321/"><img src="http://static.flickr.com/114/313714321_de9c05584b.jpg" width="450" alt="Blueprint" /></a><br />
<small>(Originally uploaded by <a href="http://www.flickr.com/photos/43802765@N00/313714321/">sweetsexything</a>)</small></p>
<p>One of the problems I&#8217;ve seen over the years, in corporations where I&#8217;ve worked and as a business owner, is the misconception that a builder (a developer in this case) can quote a project without the blueprints. I often times receive a request for a quote (10 pages long) and it says something like this:</p>
<blockquote><p>We want a dynamic website with a unique design and easy to follow navigation that we can update ourselves.</p></blockquote>
<p>That&#8217;s basically the equivalent of going to a car dealership and asking &#8220;how much is a car with wheels and doors?&#8221; Until you tell them the make, model, and all of the features you want they can&#8217;t give you a real price.</p>
<p><strong>The Problem</strong><br />
The problem with this process is that the client and the developer both have expectations and a vision for the project but you&#8217;re not talking apples-to-apples.  Sure, the developer can give a quote based on vague information but everyone loses during the process.  The client loses because their expectations aren&#8217;t going to be met.  The developer loses since they can&#8217;t possibly give a realistic quote.  What do you do when you start working and the client expects the Ferrari (which they all do)? Both parties clash when they aren&#8217;t on the same page.</p>
<p><strong>The Solution</strong><br />
Hire an architect. When I get a vague request for a quote I tell the client it will take a few hours of billable time and we&#8217;ll make a blueprint together.  There is no reason for me to give a vague quote on a vague request. I&#8217;ll be quoting the Ferrari just to cover every possibility, and the client can&#8217;t afford the Ferrari. No one expects an architect to build a blueprint for free and it should be the same with a developer.  Once the client has the blueprint they can send it out for quoting and will get apple-to-apple quotes back instead of a fruit basket.</p>
<p>No one is to blame for this misconception since the idea of web development is new and mysterious to most people.  However, I challenge all developers to change things and educate the clients that come asking for help.  They&#8217;ll appreciate the education, respect the architect idea, save money, save time, and you&#8217;ll prevent lots of future headaches.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aldenta.com/2006/12/04/the-architect-and-builder-dilemma/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>script.aculo.us Slider Demos and Example Code</title>
		<link>http://www.aldenta.com/2006/11/12/scriptaculous-slider-demos-and-example-code/</link>
		<comments>http://www.aldenta.com/2006/11/12/scriptaculous-slider-demos-and-example-code/#comments</comments>
		<pubDate>Sun, 12 Nov 2006 17:51:54 +0000</pubDate>
		<dc:creator>John Ford</dc:creator>
				<category><![CDATA[Example Code]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[mouse wheel]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[script.aculo.us]]></category>
		<category><![CDATA[slider]]></category>

		<guid isPermaLink="false">http://www.aldenta.com/2006/11/12/scriptaculous-slider-demos-and-example-code/</guid>
		<description><![CDATA[I&#8217;ve been following along the script.aculo.us Slider Demo discussion area recently and have tried to answer questions when possible. Since it&#8217;s difficult to post examples to the discussion I&#8217;ve compiled a more extensive set of Slider demos. Some are examples that I&#8217;ve wanted and others are in response to questions in the discussion area. The [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been following along the <a href="http://script.aculo.us/">script.aculo.us</a> <a href="http://wiki.script.aculo.us/scriptaculous/discuss/SliderDemo">Slider Demo discussion area</a> recently and have tried to answer questions when possible.  Since it&#8217;s difficult to post examples to the discussion I&#8217;ve compiled <a href="http://www.aldenta.com/examples/script.aculo.us/">a more extensive set of Slider demos</a>. Some are examples that I&#8217;ve wanted and others are in response to questions in the discussion area.</p>
<p>The <a href="http://www.aldenta.com/examples/script.aculo.us/">demo code</a> includes the following slider examples:</p>
<ul>
<li>Standard Slider</li>
<li>Reversed Slider</li>
<li>Slider Controlled with Mouse Wheel</li>
<li>One Slider Controlling Multiple Sliders</li>
<li>Using Images to Spruce Up a Slider</li>
<li>Two Colored Slider</li>
<li>Submit the Slider Value in a Form</li>
<li>Use a Slider as a Scrollbar <small>(added Nov 21, 2006)</small></li>
<li>Change Slider Value by Changing Text Input Field <small>(added Jul 16, 2007)</small></li>
</ul>
<p>It&#8217;s really amazing what you can do with the script.aculo.us library.  Please let me know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aldenta.com/2006/11/12/scriptaculous-slider-demos-and-example-code/feed/</wfw:commentRss>
		<slash:comments>106</slash:comments>
		</item>
		<item>
		<title>Staying Healthy as Designers and Developers</title>
		<link>http://www.aldenta.com/2006/10/19/staying-healthy-as-designers-and-developers/</link>
		<comments>http://www.aldenta.com/2006/10/19/staying-healthy-as-designers-and-developers/#comments</comments>
		<pubDate>Fri, 20 Oct 2006 00:32:14 +0000</pubDate>
		<dc:creator>John Ford</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[ergonomic]]></category>
		<category><![CDATA[health]]></category>
		<category><![CDATA[nutrition]]></category>
		<category><![CDATA[programmer]]></category>

		<guid isPermaLink="false">http://www.aldenta.com/2006/10/19/staying-healthy-as-designers-and-developers/</guid>
		<description><![CDATA[I&#8217;m just getting back into the swing of things after returning from a 2.5 week business event overseas. These trips really take a toll on my body so I do my best to stay aware and focused on my health. As regular computer users we&#8217;re also abusing our bodies by sitting in front of a [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m just getting back into the swing of things after returning from a 2.5 week business event overseas.  These trips really take a toll on my body so I do my best to stay aware and focused on my health.  As regular computer users we&#8217;re also abusing our bodies by sitting in front of a computer for hours at a time.  It&#8217;s become the norm for many of us these days. Here are a few personal tips to help stay healthy and sharp.</p>
<p><strong>Set It Up</strong><br />
Make sure your computer environment is as ergonomic as possible.  There are a number of ways to <a href="http://www.healthycomputing.com/office/setup/monitor/">setup and position</a> yourself and computer to put less stress on your body.</p>
<p><strong>Sleep On It</strong><br />
I know I&#8217;m guilty of getting hung up on something and not sleeping until it&#8217;s done.  Of course, the next day I regret the long night and I&#8217;m less productive that day.  When you feel yourself fading then take a break and sleep on it.  I&#8217;m always amazed how often the solution comes to me as soon as I wake up.</p>
<p><strong>Look Away</strong><br />
I asked my eye doctor for tips to keep my vision healthy.  One recommendation was to regularly focus on an object far away from the computer.  Apparently, your eyes start to adjust to the nearness of your computer.  By looking away you can help counter it.</p>
<p><strong>Eat It Up</strong><br />
Everyone knows how important diet is for overall health and well-being.  Make sure you take time to eat good meals throughout the day. (Caffeine and sugar don&#8217;t count as good meals.)  Your brain and body need nutrients to do their part.</p>
<p>Use some common sense and stay healthy when you&#8217;re using the computer.  You&#8217;ll be more productive and your body will thank you.</p>
<p>What are some things you do to stay healthy?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aldenta.com/2006/10/19/staying-healthy-as-designers-and-developers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Submit Your Site to 300+ Search Engines</title>
		<link>http://www.aldenta.com/2006/09/20/dont-submit-your-site-to-300-search-engines/</link>
		<comments>http://www.aldenta.com/2006/09/20/dont-submit-your-site-to-300-search-engines/#comments</comments>
		<pubDate>Thu, 21 Sep 2006 03:16:08 +0000</pubDate>
		<dc:creator>John Ford</dc:creator>
				<category><![CDATA[Tips]]></category>
		<category><![CDATA[AOL]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[DMOZ]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[MSN]]></category>
		<category><![CDATA[seo]]></category>
		<category><![CDATA[viral]]></category>
		<category><![CDATA[Yahoo!]]></category>

		<guid isPermaLink="false">http://www.aldenta.com/2006/09/20/dont-submit-your-site-to-300-search-engines/</guid>
		<description><![CDATA[If you ever see a product or website that offers a service to submit your website to hundreds of search engines, here are some reasons not to do it. Link farms As search engines continue to become smarter they often times penalize for having your website listed on link farms or similar sites. It is [...]]]></description>
			<content:encoded><![CDATA[<p>If you ever see a product or website that offers a service to submit your website to hundreds of search engines, here are some reasons <b>not</b> to do it.</p>
<ol>
<li><b>Link farms</b><br />
As search engines continue to become smarter they often times penalize for having your website listed on link farms or similar sites. It is possible that a submission tool may submit your site to a link farm.
</li>
<li><b>Automatic submission</b><br />
Some search engines penalize or ban websites for being automatically entered by software robots. It only takes a moment to submit your website to a search engine so take the time to do it by hand.
</li>
<li><b>Google, Yahoo!, MSN</b><br />
A December 2004 report by <a href="http://www.nielsen-netratings.com/">Nielsen//NetRatings</a> showed the audience reach of US home and work Internet users. The estimates shown below are users who searched on each site at least once during the month.
<ul>
<li>Google &#8211; 44.9%</li>
<li>Yahoo &#8211; 32.0%</li>
<li>MSN &#8211; 25.2%</li>
</ul>
</li>
</ol>
<p>Another thing to note is that the search results of the next most popular search sites were usually driven by <a href="http://www.google.com/">Google</a>, <a href="http://www.overture.com/">Overture</a> (<a href="http://search.yahoo.com/">Yahoo</a>), or <a href="http://search.msn.com/">MSN</a>.  For example, if you search at AOL then your results are from Google.</p>
<p><a href="http://www.flickr.com/photos/john-ford/248727228/"><img src="http://static.flickr.com/86/248727228_7210f8bbaf.jpg" width="332" height="94" alt="AOL Enhanced by Google" /></a></p>
<p>Since the very large majority of users search these major search engines then why waste your time with the little guys?  It is more cost effective and better for your search engine ranking to spend the extra time submitting your website url to the major search engines listed above and to good Internet directories such as <a href="http://www.dmoz.org/">DMOZ</a>.</p>
<p><strong>What should you really be doing?</strong><br />
Blogging! I&#8217;ll touch more on the details in future posts but you need to start getting your voice out there.  The <a href="http://en.wikipedia.org/wiki/Viral_marketing">viral aspects</a> of self publishing and communicating with others has formed a wonderful marriage with Google and the like.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.aldenta.com/2006/09/20/dont-submit-your-site-to-300-search-engines/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
