<?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>Software and Technology Ramblings &#187; Doug Hays</title>
	<atom:link href="http://blog.eastfacesoftware.com/author/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.eastfacesoftware.com</link>
	<description>A blog of software design, architecture, and other unread ramblings.</description>
	<lastBuildDate>Wed, 19 May 2010 20:43:38 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Twitter Status Update URL issue with URL encoding</title>
		<link>http://blog.eastfacesoftware.com/2010/05/19/twitter-status-update-url-issue-with-url-encoding/</link>
		<comments>http://blog.eastfacesoftware.com/2010/05/19/twitter-status-update-url-issue-with-url-encoding/#comments</comments>
		<pubDate>Wed, 19 May 2010 20:43:38 +0000</pubDate>
		<dc:creator>Doug Hays</dc:creator>
				<category><![CDATA[iPhone Development]]></category>

		<guid isPermaLink="false">http://blog.eastfacesoftware.com/?p=75</guid>
		<description><![CDATA[I am developing an iPhone app that allows the user to tweet information from the app.  For simplicity&#8217;s sake, I chose to use the URL method of sending the user off to Twitter to sign in and finish their status update.  When I redirected the user to:
http://mobile.twitter.com/home?status=Hello%20World
The status update was dropped after the [...]]]></description>
			<content:encoded><![CDATA[<p>I am developing an iPhone app that allows the user to tweet information from the app.  For simplicity&#8217;s sake, I chose to use the URL method of sending the user off to Twitter to sign in and finish their status update.  When I redirected the user to:</p>
<pre>http://mobile.twitter.com/home?status=Hello%20World</pre>
<p>The status update was dropped after the user logged in.  So, I switched to:</p>
<pre>http://www.twitter.com/home?status=Hello%20World</pre>
<p>which looked fine even on a smaller screen.  And, after the user logged in, the status message was retained.  But, so was the URL encoding.  Instead of &#8220;Hello World&#8221; the status would have been an unsightly &#8220;Hello%20World&#8221;.  </p>
<p>I finally stumbled onto the fix and it&#8217;s an easy one.  Just drop the www:</p>
<pre>http://twitter.com/home?status=Hello%20World</pre>
<p>And, now it works as expected after the user logs in.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eastfacesoftware.com/2010/05/19/twitter-status-update-url-issue-with-url-encoding/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calling CakePHP Code from Other PHP Code</title>
		<link>http://blog.eastfacesoftware.com/2010/01/11/calling-cakephp-code-from-other-php-code/</link>
		<comments>http://blog.eastfacesoftware.com/2010/01/11/calling-cakephp-code-from-other-php-code/#comments</comments>
		<pubDate>Tue, 12 Jan 2010 05:13:15 +0000</pubDate>
		<dc:creator>Doug Hays</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[Non-CakePHP]]></category>

		<guid isPermaLink="false">http://blog.eastfacesoftware.com/?p=68</guid>
		<description><![CDATA[In order to call CakePHP from non-CakePHP code, we will copy index.php from /app/webroot and put it into our non-CakePHP codebase as cakephp.php.
Then, we&#8217;ll create a function requestCakePHP that requires the cakephp.php file:



Then, whenever we need to call for some Cake, we just call requestCake with the URL minus the hostname:

echo requestCakePHP("/webpages/view/2");

In the example above, [...]]]></description>
			<content:encoded><![CDATA[<p>In order to call CakePHP from non-CakePHP code, we will copy index.php from /app/webroot and put it into our non-CakePHP codebase as cakephp.php.</p>
<p>Then, we&#8217;ll create a function requestCakePHP that requires the cakephp.php file:<br />
<code><br />
<?<br />
function requestCakePHP($url)</p>
<p>{           </p>
<p>    // Set the url parameter for cakephp<br />
    $_GET['url'] = $url;</p>
<p>    require_once 'cakephp.php';</p>
<p>    // Fire up CakePHP and buffer results<br />
    ob_start();<br />
    $Dispatcher= new Dispatcher ();<br />
    $Dispatcher->dispatch($url);       </p>
<p>    return ob_get_clean();</p>
<p>}<br />
?><br />
</code></p>
<p>Then, whenever we need to call for some Cake, we just call requestCake with the URL minus the hostname:</p>
<p><code><br />
echo requestCakePHP("/webpages/view/2");<br />
</code></p>
<p>In the example above, I have a webpages controller, a view action and am viewing webpage #2.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eastfacesoftware.com/2010/01/11/calling-cakephp-code-from-other-php-code/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Maps Info Window Too Big &#8211; Fixed!</title>
		<link>http://blog.eastfacesoftware.com/2009/09/09/google-maps-info-window-too-big-fixed/</link>
		<comments>http://blog.eastfacesoftware.com/2009/09/09/google-maps-info-window-too-big-fixed/#comments</comments>
		<pubDate>Wed, 09 Sep 2009 15:13:27 +0000</pubDate>
		<dc:creator>Doug Hays</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Google Maps]]></category>

		<guid isPermaLink="false">http://blog.eastfacesoftware.com/?p=54</guid>
		<description><![CDATA[It always feels good to solve a long-standing and puzzling issue.  Today&#8217;s fix has to do with a Google Maps window that was about 50% taller than it had to be:

After several rounds of setting fixed widths inside the info window&#8217;s HTML content, I added the following CSS for .gmapmarker which is the class of [...]]]></description>
			<content:encoded><![CDATA[<p>It always feels good to solve a long-standing and puzzling issue.  Today&#8217;s fix has to do with a Google Maps window that was about 50% taller than it had to be:</p>
<p><img class="alignnone size-full wp-image-57" title="Google Maps Info Window - Too Tall" src="http://blog.eastfacesoftware.com/wp-content/uploads/2009/09/Picture-6.png" alt="Google Maps Info Window - Too Tall" width="407" height="365" /></p>
<p>After several rounds of setting fixed widths inside the info window&#8217;s HTML content, I added the following CSS for .gmapmarker which is the class of the div that wraps all of my info window&#8217;s content:</p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 318px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">#gmapmarker {</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 318px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>display: block;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 318px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;"><span style="white-space: pre;"> </span>max-height: 185px;</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 318px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">}</div>
<pre class="code">.gmapmarker {
    max-height: 185px;
}</pre>
<div></div>
<div>And that did the trick:</div>
<div><img class="alignnone size-full wp-image-58" title="Google Maps Info Window - Height Fixed" src="http://blog.eastfacesoftware.com/wp-content/uploads/2009/09/Picture-7.png" alt="Google Maps Info Window - Height Fixed" width="404" height="307" /></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.eastfacesoftware.com/2009/09/09/google-maps-info-window-too-big-fixed/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Automatic Switching of Environments with Adobe AIR</title>
		<link>http://blog.eastfacesoftware.com/2009/05/17/automatic-switching-of-environments-with-adobe-air/</link>
		<comments>http://blog.eastfacesoftware.com/2009/05/17/automatic-switching-of-environments-with-adobe-air/#comments</comments>
		<pubDate>Mon, 18 May 2009 05:31:54 +0000</pubDate>
		<dc:creator>Doug Hays</dc:creator>
				<category><![CDATA[AIR]]></category>
		<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://blog.eastfacesoftware.com/?p=50</guid>
		<description><![CDATA[There is an issue with AIR application development to which I still have not found an official answer.
I just need to switch between http://localhost and http://fakeproductionurl.com depending on whether I was running in Flex Builder (via adl).
I found all sorts of articles about using conditional compilation (yikes) and reading XML files (I&#8217;m too lazy).
This is [...]]]></description>
			<content:encoded><![CDATA[<p>There is an issue with AIR application development to which I still have not found an official answer.</p>
<p>I just need to switch between http://localhost and http://fakeproductionurl.com depending on whether I was running in Flex Builder (via adl).</p>
<p>I found all sorts of articles about using conditional compilation (yikes) and reading XML files (I&#8217;m too lazy).</p>
<p>This is what I ended up using:</p>
<pre class="code">if (NativeApplication.nativeApplication.publisherID != "") {
   return "http://fakeproductionurl.com";
}
else {
   return "http://localhost";
}</pre>
<p>It doesn&#8217;t give you the ability to switch between 3+ different environments, but it&#8217;s a very easy way to toggle between development / production environments.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eastfacesoftware.com/2009/05/17/automatic-switching-of-environments-with-adobe-air/feed/</wfw:commentRss>
		<slash:comments>3192</slash:comments>
		</item>
		<item>
		<title>Installing CakePHP 1.2 in a Subdirectory</title>
		<link>http://blog.eastfacesoftware.com/2009/03/17/installing-cakephp-12-in-a-subdirectory/</link>
		<comments>http://blog.eastfacesoftware.com/2009/03/17/installing-cakephp-12-in-a-subdirectory/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 22:02:56 +0000</pubDate>
		<dc:creator>Doug Hays</dc:creator>
				<category><![CDATA[CakePHP]]></category>

		<guid isPermaLink="false">http://blog.eastfacesoftware.com/?p=46</guid>
		<description><![CDATA[I needed to test some CakePHP code on a client&#8217;s 1and1 server today, so I dropped my CakePHP app in a subdirectory (called agents2) on his site.  But, after doing so, I kept getting &#8220;Class &#8216;Configure&#8217; not found&#8221;.  Luckily, I stumbled upon this blog post over at kushaura.com which saved me.
The core issue was with [...]]]></description>
			<content:encoded><![CDATA[<p>I needed to test some CakePHP code on a client&#8217;s 1and1 server today, so I dropped my CakePHP app in a subdirectory (called agents2) on his site.  But, after doing so, I kept getting &#8220;Class &#8216;Configure&#8217; not found&#8221;.  Luckily, I stumbled upon this blog post over at <a href="http://kushaura.com/blog/view/name:Installing-CakePHP-in-a-Subdirectory" target="_blank">kushaura.com</a> which saved me.</p>
<p><P>The core issue was with my root .htaccess file which needed to be changed to:</p>
<pre class="code">
      RewriteEngine on
      RewriteBase    /agents2/

      RewriteRule    ^$ app/webroot/    [L]

      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule (.*) app/webroot/$1 [L]
</pre>
<p>And that did the trick.</p>
<p>Thanks, Kushaura.com!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eastfacesoftware.com/2009/03/17/installing-cakephp-12-in-a-subdirectory/feed/</wfw:commentRss>
		<slash:comments>145</slash:comments>
		</item>
		<item>
		<title>PRG</title>
		<link>http://blog.eastfacesoftware.com/2008/11/26/prg/</link>
		<comments>http://blog.eastfacesoftware.com/2008/11/26/prg/#comments</comments>
		<pubDate>Thu, 27 Nov 2008 05:02:09 +0000</pubDate>
		<dc:creator>Doug Hays</dc:creator>
				<category><![CDATA[Coding]]></category>

		<guid isPermaLink="false">http://blog.eastfacesoftware.com/?p=42</guid>
		<description><![CDATA[In doing some research on ASP.NET MVC, Phil Haack mentioned a pattern that I had never heard of but love to use: PRG -or- Post, Redirect, Get.
Take a web form for example.  When the user clicks Save, the data is sent via POST back to the web application.  The web app saves the data to [...]]]></description>
			<content:encoded><![CDATA[<p>In doing some research on <a href="http://channel9.msdn.com/pdc2008/PC21/" target="_blank">ASP.NET MVC</a>, <a href="http://haacked.com/" target="_blank">Phil Haack</a> mentioned a pattern that I had never heard of but love to use: <a href="http://en.wikipedia.org/wiki/Post/Redirect/Get" target="_blank">PRG</a> -or- <a href="http://en.wikipedia.org/wiki/Post/Redirect/Get" target="_blank">Post, Redirect, Get</a>.</p>
<p>Take a web form for example.  When the user clicks <strong>Save</strong>, the data is sent via POST back to the web application.  The web app saves the data to the database and then redirects the user to the next page within the application.  The user&#8217;s browser then requests that page via GET.  </p>
<p>The beauty of this pattern is made very clear by Phil.  This will eliminate the possibly confusing &#8220;Are you sure you want to resubmit this form data?&#8221; browser message.  But, for me, an even better reason is that it eliminates possible data issues when the browser re-posts the data after that refresh.  </p>
<p>Either way, I&#8217;m glad to have learned the name of this pattern and even more thankful that my use of it has been validated.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eastfacesoftware.com/2008/11/26/prg/feed/</wfw:commentRss>
		<slash:comments>319</slash:comments>
		</item>
		<item>
		<title>Announcing: The EastFace Software Website</title>
		<link>http://blog.eastfacesoftware.com/2008/10/23/announcing-the-eastface-software-website/</link>
		<comments>http://blog.eastfacesoftware.com/2008/10/23/announcing-the-eastface-software-website/#comments</comments>
		<pubDate>Thu, 23 Oct 2008 21:18:19 +0000</pubDate>
		<dc:creator>Doug Hays</dc:creator>
				<category><![CDATA[EastFace Software]]></category>

		<guid isPermaLink="false">http://blog.eastfacesoftware.com/?p=38</guid>
		<description><![CDATA[We are excited to announce that we now have a website to show off some of our handiwork:
http://www.eastfacesoftware.com
I guess it was ironic that a company that builds web applications had a website with only a logo and no content.  But we did not really have a strong reason to create one.  We have [...]]]></description>
			<content:encoded><![CDATA[<p>We are excited to announce that we now have a website to show off some of our handiwork:</p>
<p><a href="http://www.eastfacesoftware.com">http://www.eastfacesoftware.com</a></p>
<p>I guess it was ironic that a company that builds web applications had a website with only a logo and no content.  But we did not really have a strong reason to create one.  We have no need to actively market ourselves as we remain plenty busy (and are thankful for this).  But, when new opportunities came by, we had nothing to give to folks to give them a feel for what we do, who we are and that we are legitimate.</p>
<p>Well, the site may not answer all of those concerns, but 2-for-3 isn&#8217;t bad.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eastfacesoftware.com/2008/10/23/announcing-the-eastface-software-website/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Flex &#8211; ObjectUtil.Copy() tip</title>
		<link>http://blog.eastfacesoftware.com/2008/09/25/flex-objectutil-copy-tip/</link>
		<comments>http://blog.eastfacesoftware.com/2008/09/25/flex-objectutil-copy-tip/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 18:51:54 +0000</pubDate>
		<dc:creator>Doug Hays</dc:creator>
				<category><![CDATA[Flex]]></category>

		<guid isPermaLink="false">http://blog.eastfacesoftware.com/?p=32</guid>
		<description><![CDATA[I just ran into an interesting issue with ObjectUtil and its handy Copy function.  After performing a copy, I was attempting to cast the resulting object and the overall result was null:
oldField = new Field();
newField = ObjectUtil.copy(oldField) as Field;
//newField is null 
Thankfully, a quick trip to Google helped me find the solution 
I added this to my [...]]]></description>
			<content:encoded><![CDATA[<p>I just ran into an interesting issue with ObjectUtil and its handy Copy function.  After performing a copy, I was attempting to cast the resulting object and the overall result was null:</p>
<pre class="code">oldField = new Field();
newField = ObjectUtil.copy(oldField) as Field;
//newField is null </pre>
<p>Thankfully, a quick trip to Google helped me find the <a href="http://www.darronschall.com/weblog/archives/000271.cfm" target="_blank">solution</a> </p>
<p>I added this to my Field class:</p>
<pre class="code">[RemoteClass(alias="com.eastfacesoftware.Field")]
public class Field {...}</pre>
<p>and I was a step further.  My last hurdle was using the Copy function on subclasses of Field.  As you might guess, you need to define the RemoteClass metadata on every class that you intend to copy.  After I did this, ObjectUtil was again on my list of favorite ActionScript classes.</p>
<p>The reason?  ObjectUtil.Copy() uses AMF to serialize and de-serialize the original object to create the copy.  If AMF doesn&#8217;t have specific knowledge of your class, it will not return an object that will cast properly.</p>
<p>Thanks to <a href="http://www.darronschall.com" target="_blank">Darron Schall</a> for this helpful <a href="http://www.darronschall.com/weblog/archives/000271.cfm" target="_blank">tip</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eastfacesoftware.com/2008/09/25/flex-objectutil-copy-tip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PositiveWare 2.2 Released &#8211; Share your work with others</title>
		<link>http://blog.eastfacesoftware.com/2008/05/16/positiveware-22-released-share-your-work-with-others/</link>
		<comments>http://blog.eastfacesoftware.com/2008/05/16/positiveware-22-released-share-your-work-with-others/#comments</comments>
		<pubDate>Fri, 16 May 2008 16:18:17 +0000</pubDate>
		<dc:creator>Doug Hays</dc:creator>
				<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://blog.eastfacesoftware.com/2008/05/16/positiveware-22-released-share-your-work-with-others/</guid>
		<description><![CDATA[A client of mine, PositiveWare, just released version 2.2 of their project, time and billing management system.  This is exciting to me for a couple of reasons.  First off, I had a fairly large role in the development of the release and it always feels good to get something of this magnitude out [...]]]></description>
			<content:encoded><![CDATA[<p>A client of mine, <a href="http://www.positiveware.com" target="_blank">PositiveWare</a>, just released version 2.2 of their project, time and billing management system.  This is exciting to me for a couple of reasons.  First off, I had a fairly large role in the development of the release and it always feels good to get something of this magnitude out to the users.  Secondly, this even further aligns PositiveWare with the way its clients run their businesses.</p>
<p>The release adds functionality that allows an existing PositiveWare client to subcontract projects and tasks out to other PositiveWare clients. It means that, as a PositiveWare client, you will interact with your subcontractors the same way you do with your employees.  No more wondering about what it is your subcontractors are doing.</p>
<p>As a PositiveWare client and as someone who occasionally uses subcontractors, this is very exciting.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eastfacesoftware.com/2008/05/16/positiveware-22-released-share-your-work-with-others/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing Dingus CMS</title>
		<link>http://blog.eastfacesoftware.com/2008/04/29/announcing-dingus-cms/</link>
		<comments>http://blog.eastfacesoftware.com/2008/04/29/announcing-dingus-cms/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 17:20:35 +0000</pubDate>
		<dc:creator>Doug Hays</dc:creator>
				<category><![CDATA[CMS]]></category>
		<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://blog.eastfacesoftware.com/2008/04/29/announcing-dingus-cms/</guid>
		<description><![CDATA[We have written a very basic CMS system (just like everyone else has) that we use on a handful of our clients&#8217; websites.  We wanted a CMS system that was:

Easy to deploy
Simple to re-skin when provided an HTML/CSS design
Search Engine Friendly
Easy enough that non-technical people could administer the content of the site
Lightweight enough so [...]]]></description>
			<content:encoded><![CDATA[<p>We have written a very basic CMS system (just like everyone else has) that we use on a handful of our clients&#8217; websites.  We wanted a CMS system that was:</p>
<ul>
<li>Easy to deploy</li>
<li>Simple to re-skin when provided an HTML/CSS design</li>
<li>Search Engine Friendly</li>
<li>Easy enough that non-technical people could administer the content of the site</li>
<li>Lightweight enough so that the system could be the foundation of a larger application or website</li>
<li>Built using CakePHP and MySQL</li>
</ul>
<p>After looking around the web for 5 minutes, and not finding anything, we decided to build it ourselves.  So, here it is, <strong>Dingus CMS</strong>.</p>
<p>In order to install and use Dingus CMS:</p>
<ol>
<li>You&#8217;ll need a basic PHP/MySQL/Apache environment. (Note: PHP 5 is recommended and Apache needs mod_rewrite)</li>
<li>Download the <a href="http://blog.eastfacesoftware.com/wp-content/uploads/2008/04/dingus-cms.tar.gz">source</a>.</li>
<li>Extract the source into the document root of your website.  Note that the app, cake, docs, etc&#8230; directories should be at the root of your site</li>
<li>Configure the database connection in <em>app/config/database.php</em></li>
<li>Run the SQL in <em>sql/dingus_cms_db_setup.sql</em></li>
<li>Go to http://localhost and you should be up and running!</li>
</ol>
<p>Note that Dingus CMS comes with built-in search and site map pages available at http://localhost/search.html and http://localhost/site-map.html</p>
<p>Finally, you may be wondering what a <strong>Dingus</strong> is.  You&#8217;ll have to stay tuned for a full explanation.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.eastfacesoftware.com/2008/04/29/announcing-dingus-cms/feed/</wfw:commentRss>
		<slash:comments>910</slash:comments>
		</item>
	</channel>
</rss>
