<?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>Keith Bentrup&#8217;s Portforlio &#187; PHP</title>
	<atom:link href="http://portfolio.keithbentrup.com/archives/tag/php/feed" rel="self" type="application/rss+xml" />
	<link>http://portfolio.keithbentrup.com</link>
	<description>A brief sampling of my work</description>
	<lastBuildDate>Wed, 28 Jul 2010 18:09:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CMS for Real Estate Team and Their Clients</title>
		<link>http://portfolio.keithbentrup.com/archives/91</link>
		<comments>http://portfolio.keithbentrup.com/archives/91#comments</comments>
		<pubDate>Thu, 25 Jun 2009 11:20:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Optimization]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://portfolio.keithbentrup.com/?p=91</guid>
		<description><![CDATA[The Century 21 Alliance Gold Team

Back-end architecture and server-side information:
The site is hosted using the common LAMP software solution stack controlled and maintained via cPanel and ssh access.
It runs Joomla 1.5, a free open source CMS and MVC web application framework.
A modifed version of minify, another PHP tool,  optimally delivers the site&#8217;s JavaScript and [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.c21gt.com">The Century 21 Alliance Gold Team</a><br />
<a href="http://www.c21gt.com"><img src="/img/c21gt-thumb.jpg" width="500" height="448"></a></p>
<p><strong>Back-end architecture and server-side information:</strong><br />
The site is hosted using the common <a href="http://en.wikipedia.org/wiki/LAMP_(software_bundle)">LAMP</a> software solution stack controlled and maintained via <a href="http://www.cpanel.net">cPanel</a> and <a href="http://en.wikipedia.org/wiki/Ssh">ssh</a> access.</p>
<p>It runs <a href="http://www.joomla.org/">Joomla 1.5</a>, a free open source <a href="http://en.wikipedia.org/wiki/Content_management_system">CMS</a> and <a href="http://en.wikipedia.org/wiki/Model-view-controller">MVC</a> web application framework.</p>
<p>A modifed version of <a href="http://code.google.com/p/minify/">minify</a>, another PHP tool,  optimally delivers the site&#8217;s <a href="http://en.wikipedia.org/wiki/JavaScript">JavaScript</a> and <a href="http://www.w3.org/Style/CSS/">CSS</a>. The site also incorporates most of the <a href="http://developer.yahoo.com/yslow/help/#guidelines">YSlow</a> and <a href="http://code.google.com/speed/page-speed/docs/rules_intro.html">Google Page Speed</a> best practices. </p>
<p>To futher optimize the ouput, the modified version of <a href="http://code.google.com/p/minify/">minify</a> invokes <a href="http://developer.yahoo.com/yui/compressor/">YUI compressor</a>, a <a href="http://java.sun.com/">Java</a> tool, a further compresses the <a href="http://en.wikipedia.org/wiki/JavaScript">JavaScript</a> and <a href="http://www.w3.org/Style/CSS/">CSS</a> using techniques such as local symbol replacement. </p>
<p><strong>User Interface Design Choices:</strong><br />
The front end compromises several interesting features &#8211; many from the <a href="http://developer.yahoo.com/yui/">YUI</a> Library.</p>
<p>Since all page transitions are controlled via <a href="http://en.wikipedia.org/wiki/Ajax_(programming)">Ajax</a> giving a visitor that fastest, most fluid user experience, the <a href="http://developer.yahoo.com/yui/history/">browser history manager</a> tracks the state of the application at all times so that the forward and back buttons maintain their functionality across all <a href="http://developer.yahoo.com/yui/articles/gbs/">&#8220;A&#8221; grade</a> browsers.</p>
<p>As the user hovers over points of interest in the application, the <a href="http://developer.yahoo.com/yui/container/tooltip/index.html">tooltip</a> provides and draws attention to relevant, contextual information.</p>
<p>The local market data is tied to a data store of all the known markets. As the user types, the field offers <a href="http://developer.yahoo.com/yui/autocomplete/">autocompletion</a> regardless of whether the user searches by city or zip code.</p>
<p>The chart itself is created dynamically using the <a href="http://code.google.com/apis/chart/">Google Chart API</a> and then watermarked using the <a href="http://www.php.net/gd">PHP GD library</a>. The results are cached for set intervals.</p>
<p>The <a href="http://developer.yahoo.com/yui/tabview/">tabs</a> of the market data provide convenient views in a small amount of space.</p>
<p><a href="http://developer.yahoo.com/yui/container/dialog/index.html">Dialogs</a> and modal <a href="http://developer.yahoo.com/yui/container/panel/">panels</a> with shadow overlays engage the user during specific actions to maximize their attention.</p>
<p>The weather module provides useful information about current, local weather from the National Weather Service. <a href="http://www.php.net/">PHP</a> parses their freely available <a href="http://en.wikipedia.org/wiki/XML">XML</a> data feeds and stores the results.</p>
<p>Both the weather and the market data are customized further depending upon how the user enters the page. The site is part of a <a href="http://adwords.google.com/">Google Adwords</a> Campaign and as such, if the visitor enters with certain information in the URL (passed as GET variables based on their Google search), the user will see customized results for both the weather and market data. Compare <a href="http://www.c21gt.com/?kw=Springfield">http://www.c21gt.com/?kw=Springfield</a> to <a href="http://www.c21gt.com/?kw=19081">http://www.c21gt.com/?kw=19081</a>. The server will also reverse lookup school district information to location to account for those searches.</p>
<p>The layout of the page is controlled via CSS. Some points of notes are the <a href="http://www.alistapart.com/articles/sprites/">sprited images</a> and the image-free rounded corners.</p>
<p>For many, more details about the site and several features not discussed, please feel free to contact <a href="mailto:keith@keithbentrup.com">me</a>. Walk-throughs are available via <a href="http://www.dimdim.com/">dimdim</a></p>
]]></content:encoded>
			<wfw:commentRss>http://portfolio.keithbentrup.com/archives/91/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Back Office Web Services For Real Estate Offices</title>
		<link>http://portfolio.keithbentrup.com/archives/74</link>
		<comments>http://portfolio.keithbentrup.com/archives/74#comments</comments>
		<pubDate>Thu, 25 Jun 2009 08:18:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Social Bookmarking]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://portfolio.keithbentrup.com/?p=74</guid>
		<description><![CDATA[
]]></description>
			<content:encoded><![CDATA[<div style="width:425px;text-align:left" id="__ss_1652755"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=office2-090629000610-phpapp02&#038;stripped_title=office-2" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=office2-090629000610-phpapp02&#038;stripped_title=office-2" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
]]></content:encoded>
			<wfw:commentRss>http://portfolio.keithbentrup.com/archives/74/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Listing Manager Web Application: Overview &amp; Agent Documentation</title>
		<link>http://portfolio.keithbentrup.com/archives/3</link>
		<comments>http://portfolio.keithbentrup.com/archives/3#comments</comments>
		<pubDate>Wed, 24 Jun 2009 13:17:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[Documentation]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[Forms]]></category>
		<category><![CDATA[Google Maps]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Script.aculo.us]]></category>
		<category><![CDATA[Slideshow]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://portfolio.keithbentrup.com/?p=3</guid>
		<description><![CDATA[
Above: the original documentation / presentation for agents. The live presentation covered use of the web application and best practices for online promotion of their clients&#8217; listings. For best results, use the full screen button to view the slideshow.
Heavily modified component of Joomla! CMS
Provides real estate professionals with quick &#8220;listing sites&#8221; and management of their [...]]]></description>
			<content:encoded><![CDATA[<div style="width: 425px; text-align: left;"><object style="margin:0px" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="355" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=sellyourlistings-090303225901-phpapp02&amp;stripped_title=sell-your-listings" /><param name="allowfullscreen" value="true" /><embed style="margin:0px" type="application/x-shockwave-flash" width="425" height="355" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=sellyourlistings-090303225901-phpapp02&amp;stripped_title=sell-your-listings" allowscriptaccess="always" allowfullscreen="true"></embed></object></div>
<p>Above: the original documentation / presentation for agents. The live presentation covered use of the web application and best practices for online promotion of their clients&#8217; listings. For best results, <strong>use the full screen button to view the slideshow</strong>.</p>
<p>Heavily modified component of Joomla! CMS</p>
<p>Provides real estate professionals with quick &#8220;listing sites&#8221; and management of their listings.</p>
<p>Front-end technologies include <a href="http://www.php.net">PHP</a>, <a href="http://www.w3.org/TR/REC-html40/">HTML</a>, <a href="http://www.w3.org/Style/CSS/">CSS</a>, <a href="http://www.adobe.com/products/flashplayer/">Flash</a>, <a href="http://en.wikipedia.org/wiki/Ajax_(programming)">Ajax</a> running on <a href="http://en.wikipedia.org/wiki/Linux">Linux</a>, <a href="http://www.apache.org/">Apache</a>, <a href="http://www.mysql.com/">MySQL</a>, and <a href="http://www.php.net/">PHP</a> back-end.</p>
<p>Interesting UI components include:</p>
<ul>
<li>time saving multiple file upload (via <a href="http://www.adobe.com/products/flashplayer/">Flash</a>) bypassing browser&#8217;s single file upload mode.</li>
<li>automatic integration of <a href="http://www.youtube.com">YouTube</a> listing videos</li>
<li><a href="http://developer.yahoo.com/yui/editor/">rich text editor</a> for user input</li>
<li>visually attractive, sophisticated <a href="http://www.adobe.com/products/flashplayer/">Flash</a> mortgage calculator</li>
<li>automatic <a href="http://maps.google.com/">Google Maps</a> interactivity</li>
<li>javascript slideshow in lightbox with shadow overlay</li>
<li><a href="http://en.wikipedia.org/wiki/Ajax_(programming)">Ajax</a> user contact form</li>
<li>agent backup with one click zip and download</li>
<li>1 click sharing and promotion via integration of social bookmarking tool <a href="http://www.addthis.com">AddThis</a></li>
<li>optimized content delivery following best pratices guidelines of <a href="http://developer.yahoo.com/yslow/help/#guidelines">YSlow</a> and <a href="http://code.google.com/speed/page-speed/">Google Page Speed</a></li>
<li>combined, minified, and cached <a href="http://www.w3.org/Style/CSS/">CSS</a> &amp; <a href="http://en.wikipedia.org/wiki/JavaScript">JavaScript</a> using <a href="http://code.google.com/p/minify/">minify</a> &amp; <a href="http://developer.yahoo.com/yui/compressor/">YUI comprosser</a>, <a href="http://www.alistapart.com/articles/sprites/">sprited images</a>, and <a href="http://en.wikipedia.org/wiki/Lazy_loading">lazy loading</a> of specific components</li>
<li>time saving automatic fetching, parsing, and form populating based on single unique identifiers</li>
<li>Separate administrative and agent views</li>
<li>Ajax <a href="http://developer.yahoo.com/yui/autocomplete/">autocomplete</a> fields</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://portfolio.keithbentrup.com/archives/3/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatic Creation, Upload, and Annotation Of Online Videos</title>
		<link>http://portfolio.keithbentrup.com/archives/31</link>
		<comments>http://portfolio.keithbentrup.com/archives/31#comments</comments>
		<pubDate>Wed, 24 Jun 2009 03:57:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Creative Commons]]></category>
		<category><![CDATA[FFmpeg]]></category>
		<category><![CDATA[GD Graphics Library]]></category>
		<category><![CDATA[Google Data API]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[SoX]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://portfolio.keithbentrup.com/?p=31</guid>
		<description><![CDATA[
Above: Embedded sample videos. You can find the complete video collection at the Century 21 Alliance channel and my channel.
Overview: To increase exposure for agents&#8217; listings and create compelling marketing materials for their clients, I created the following system.
Workflow: A real estate professional uploads multiple photos at once through a Flash interface to the company internal [...]]]></description>
			<content:encoded><![CDATA[<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="610" height="373" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="wmode" value="transparent" /><param name="src" value="http://www.youtube.com/cp/vjVQa1PpcFMzKveKc4t62YVY_NCg8oiFsiGp1b-XckM=" /><embed type="application/x-shockwave-flash" width="610" height="373" src="http://www.youtube.com/cp/vjVQa1PpcFMzKveKc4t62YVY_NCg8oiFsiGp1b-XckM=" wmode="transparent"></embed></object></p>
<p style="margin-top: -20px;">Above: Embedded sample videos. You can find the complete video collection at the <a href="http://www.youtube.com/user/century21alliance">Century 21 Alliance</a> channel and <a href="http://www.youtube.com/user/keithbentrup">my channel</a>.</p>
<p><strong>Overview:</strong> To increase exposure for agents&#8217; listings and create compelling marketing materials for their clients, I created the following system.</p>
<p><strong>Workflow:</strong> A real estate professional uploads multiple photos at once through a <a href="http://www.adobe.com/products/flashplayer/">Flash</a> interface to the company internal content management system running on Joomla. Nightly, a <a href="http://en.wikipedia.org/wiki/Cron">cron</a> job runs a application written in PHP. The PHP application takes the photos calculates their dimensions, scales them to the appropiate size, and optionally adds padding if necessary to fit the required dimensions. This is accomplished with the <a href="http://us2.php.net/manual/en/ref.image.php">GD and image functions</a>.</p>
<p>Then depending on the requested duration per photo and the selected frame rate creates all of the <a href="http://en.wikipedia.org/wiki/Tweening">inbetweens</a> for the final video. The  application automatically creates the visually appealling affects of panning out to wider angles and adjusting the opacity to fade between photos.  It also &#8220;paints&#8221; the appropiate credits on to the end of the videos to comply with copyright requirements.</p>
<p>After several thousand frames have been created, the application passes the frames to <a href="http://ffmpeg.org/">FFmpeg</a>.  Before final processing by <a href="http://ffmpeg.org/">FFmpeg</a>, the soundtrack must be created to combine with the movie timeline. First, the total length of the video is calculated from the frame rate, number of photos, and requested time between transitions. The application the passes an <a href="http://www.vorbis.com/">ogg</a> file to <a href="http://sox.sourceforge.net/">SoX</a> for processing most notably looping music for longer videos and fading out the sound track as the end approaches, thus avoiding a sudden, harsh stop.</p>
<p>With the photos and soundtrack now ready, <a href="http://ffmpeg.org/">FFmpeg</a> can combine the visual and audio inputs to produce the final output an <a href="en.wikipedia.org/wiki/MPEG-4">MPEG-4</a> encoded video. This video is then automatically uploaded to <a href="http://www.youtube.com">YouTube</a>&#8217;s servers using the <a href="http://code.google.com/apis/youtube/2.0/developers_guide_php.html">Google Data API</a> provided in the <a href="http://framework.zend.com/">Zend Framework</a>. The videos are then programmatically given a 5-star rating and completed with relevant information about the listing.</p>
]]></content:encoded>
			<wfw:commentRss>http://portfolio.keithbentrup.com/archives/31/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>www.TheHollowAtFoxValley.com</title>
		<link>http://portfolio.keithbentrup.com/archives/47</link>
		<comments>http://portfolio.keithbentrup.com/archives/47#comments</comments>
		<pubDate>Tue, 23 Jun 2009 22:19:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Photoshop]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Prototype]]></category>
		<category><![CDATA[Script.aculo.us]]></category>
		<category><![CDATA[Video editing]]></category>
		<category><![CDATA[Videos]]></category>
		<category><![CDATA[YUI]]></category>

		<guid isPermaLink="false">http://portfolio.keithbentrup.com/archives/47</guid>
		<description><![CDATA[The Hollow At Fox Valley
]]></description>
			<content:encoded><![CDATA[<div style="width:425px;text-align:left" id="__ss_1635438"><a  target="_blank" href="http://www.thehollowatfoxvalley.com" title="The Hollow At Fox Valley">The Hollow At Fox Valley</a><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=thehollowatfoxvalley-090624165601-phpapp01&#038;stripped_title=the-hollow-at-fox-valley" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=thehollowatfoxvalley-090624165601-phpapp01&#038;stripped_title=the-hollow-at-fox-valley" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
]]></content:encoded>
			<wfw:commentRss>http://portfolio.keithbentrup.com/archives/47/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
