<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-5025818534862481469</id><updated>2012-02-16T06:36:53.018-06:00</updated><title type='text'>The Well-Tempered ElePHPant</title><subtitle type='html'>The Well-Tempered ElePHPant: Thoughts thought, lessons learned, tutorials taught, opinions turned. The subject is PHP, our favorite Hypertext Preprocessor and general-purpose programming language, learning how to use it better, and perhaps learning a bit about ourselves in the process (can't help but philosophize).</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://clarkeveretts.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://clarkeveretts.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Clark Everetts</name><uri>https://profiles.google.com/117820681766580323713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-T0yptebhZ3M/AAAAAAAAAAI/AAAAAAAAAQo/cIQ74alDOeo/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>9</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5025818534862481469.post-7905753531692512031</id><published>2012-01-22T12:17:00.000-06:00</published><updated>2012-01-22T12:17:23.277-06:00</updated><title type='text'>Git happy - A Two-second Fix for OSX git: command not found</title><content type='html'>&lt;br /&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;After downloading and installing the appropriate git dmg from &lt;a href="http://code.google.com/p/git-osx-installer/downloads/list?can=3"&gt;http://code.google.com/p/git-osx-installer/downloads/list?can=3&lt;/a&gt;, add a trailing slash to the end of the git file in paths.d as follows:&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;sudo vi /etc/paths.d/git&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;so it reads like this after you're finished:&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Courier New', Courier, monospace;"&gt;/usr/local/git/bin/&lt;/span&gt;&lt;/div&gt;&lt;div class="p2"&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Exit the current terminal window, open a new one. You're done.&lt;/span&gt;&lt;/div&gt;&lt;div class="p1"&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;PS. You don't &lt;i&gt;have&lt;/i&gt; to use vim if you really don't want to, but hey...&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5025818534862481469-7905753531692512031?l=clarkeveretts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://clarkeveretts.blogspot.com/feeds/7905753531692512031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://clarkeveretts.blogspot.com/2012/01/git-happy-two-second-fix-for-osx-git.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/7905753531692512031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/7905753531692512031'/><link rel='alternate' type='text/html' href='http://clarkeveretts.blogspot.com/2012/01/git-happy-two-second-fix-for-osx-git.html' title='Git happy - A Two-second Fix for OSX git: command not found'/><author><name>Clark Everetts</name><uri>https://profiles.google.com/117820681766580323713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-T0yptebhZ3M/AAAAAAAAAAI/AAAAAAAAAQo/cIQ74alDOeo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5025818534862481469.post-2139433274245384633</id><published>2012-01-14T13:30:00.000-06:00</published><updated>2012-01-14T13:30:21.423-06:00</updated><title type='text'>An Excellent Start to the Year (or "Great is the Enemy of Good.")</title><content type='html'>&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Let me read something to you, and tell you what it means to me. If you like, we can talk about it.&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;This is important: my aim is not to make the perfect bread or pasta or mayonnaise or biscuits - the best I've ever had. It's to set a baseline to work off of. When I was writing "Walk on Water," about a renowned surgeon, more than one doctor noted the common saying "great is the enemy of good," meaning that when surgeons strive for greatness, they can cause harm when they might otherwise not have harmed had they simply strived for good. I've worked with the greatest perfectionist there is in the cooking world, and I love that hunt for the perfect sauce, the perfect custard, but here I'm after good. Only when we know good can we begin to inch up from good to excellent.&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;And this...&lt;/span&gt;&lt;br /&gt;&lt;blockquote class="tr_bq"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;We must have craft before we have art, and craft is founded on fundamentals.&lt;/span&gt;&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;These quotes are from a book my wife and I sometimes read in the kitchen. It was written by Michael Ruhlman, and is called "Ratio: The Simple Codes Behind the Craft of Everyday Cooking."&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;True perfectionism hinders as much as it might inspire or encourage. Excellence, not perfectionism, should be what we strive for, and become the standard by which we operate.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;In "great is the enemy of good," &lt;i&gt;great&lt;/i&gt; is perfectionism, born of vanity, ego, obsession, or a possible disorder. Whatever the cause, it is unhealthful. &lt;i&gt;Good&lt;/i&gt; does not mean merely sufficient, good enough to get by, or mediocre. Good is a &lt;i&gt;reasonable, healthy minimum&lt;/i&gt; given the constraints of time, ability, resources, and the true expectations of those affected by our efforts.&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;So, this is not an assault on striving toward high standards, but recognizing that we should keep everything in perspective while doing the best we can, knowing that "only when we know good can&amp;nbsp;we begin to inch up from good to excellent," and acknowledging that "we must have craft before we have art, and craft is founded on fundamentals."&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Get the fundamentals down pat, then build upon that platform a structure of excellence.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;That's what this little corner of the interwebs is about, primarily within the context of developing software, primarily in PHP. Why haven't I written more before now? I guess I know a thing or two about perfectionism...&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Have an Excellent Year!&lt;/span&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5025818534862481469-2139433274245384633?l=clarkeveretts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://clarkeveretts.blogspot.com/feeds/2139433274245384633/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://clarkeveretts.blogspot.com/2012/01/excellent-start-to-year-or-great-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/2139433274245384633'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/2139433274245384633'/><link rel='alternate' type='text/html' href='http://clarkeveretts.blogspot.com/2012/01/excellent-start-to-year-or-great-is.html' title='An Excellent Start to the Year (or &quot;Great is the Enemy of Good.&quot;)'/><author><name>Clark Everetts</name><uri>https://profiles.google.com/117820681766580323713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-T0yptebhZ3M/AAAAAAAAAAI/AAAAAAAAAQo/cIQ74alDOeo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5025818534862481469.post-8540841329506532526</id><published>2011-09-24T13:20:00.000-05:00</published><updated>2011-09-24T13:20:16.709-05:00</updated><title type='text'>How to Quickly Rotate Several Image Files from Upside Down to Rightside Up in OSX</title><content type='html'>&lt;br /&gt;Not exactly the PHP-related post I expected to write next... Many people, Mac users included, won't need this post. That's okay, because it isn't &lt;i&gt;for&lt;/i&gt; you. &amp;nbsp;It's for Mac newbies, a description which I apply to myself.&lt;br /&gt;&lt;br /&gt;I'm using an extended keyboard, with the numeric keypad and inverted-T arrow keys. &amp;nbsp;I'll have to look at a regular keyboard and see what the equivalent keystrokes would be.&lt;br /&gt;&lt;br /&gt;Someone scanned 40-something pages of a document and emailed the resulting jpeg image files to me. &amp;nbsp;They were all upside down. &amp;nbsp;Here's what I did to get them right-side up, fairly quickly - though still a manual process - on the Mac under OSX.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Open a Finder window showing all the files in a list view. Get into list view by clicking the second icon from the left immediately above the area in which the files appear.&lt;/li&gt;&lt;li&gt;Select all of the image files by clicking on the file at the top of the list, pressing the shift key and, holding it down, press the down arrow key until all filenames are highlighted.&lt;/li&gt;&lt;li&gt;Command-O to open all of them at once in the Preview application.&lt;/li&gt;&lt;li&gt;Hold down the Command key with your right thumb.&lt;/li&gt;&lt;li&gt;With your left hand, press the "R" key twice, to rotate the image right, until it is vertical. Do &lt;b&gt;NOT&lt;/b&gt; release the Command key with your right thumb.&lt;/li&gt;&lt;li&gt;Press the "S" key with your left hand to save the image.&lt;/li&gt;&lt;li&gt;Release the command key under your right thumb, and press the down arrow key.&lt;/li&gt;&lt;li&gt;Repeat steps 4 through 7 until you've finished with all the images.&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;If this happens to you a lot, you could record this process and play it on another set of files using the built-in &lt;i&gt;Automator Application&lt;/i&gt;. &amp;nbsp;That's for another day, though.&lt;br /&gt;&lt;br /&gt;If you find this useful, or if you have suggestions for improvements to this process, let me know.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5025818534862481469-8540841329506532526?l=clarkeveretts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://clarkeveretts.blogspot.com/feeds/8540841329506532526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://clarkeveretts.blogspot.com/2011/09/how-to-quickly-rotate-several-image.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/8540841329506532526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/8540841329506532526'/><link rel='alternate' type='text/html' href='http://clarkeveretts.blogspot.com/2011/09/how-to-quickly-rotate-several-image.html' title='How to Quickly Rotate Several Image Files from Upside Down to Rightside Up in OSX'/><author><name>Clark Everetts</name><uri>https://profiles.google.com/117820681766580323713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-T0yptebhZ3M/AAAAAAAAAAI/AAAAAAAAAQo/cIQ74alDOeo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5025818534862481469.post-6194836920912855692</id><published>2011-03-31T11:34:00.000-05:00</published><updated>2011-03-31T11:34:12.431-05:00</updated><title type='text'>Ideas of March, or Thank you, Mr. Shiflett.</title><content type='html'>We do &lt;a href="http://shiflett.org/blog/2011/mar/ideas-of-march"&gt;need more blogging&lt;/a&gt;.&amp;nbsp; Tweets are fine for their intended purpose, but there is only so much idea one can squeeze into so little space.&lt;br /&gt;&lt;br /&gt;I like blogs because of what I learn from them; they encourage me to stay current, they expose me to new thoughts and they help me stay connected with the community.&lt;br /&gt;&lt;br /&gt;I like blogs precisely because they &lt;i&gt;aren't real-time&lt;/i&gt;. They are the result of observation and reflection.&amp;nbsp; I get to read someone's more fully-developed thoughts, communicated in full sentences, with examples, and even paragraphs!&amp;nbsp; Blogging forces one to crystallize one's thoughts, and teaches us how to communicate more effectively.&amp;nbsp; True written communication is not dead.&amp;nbsp; Blogs make me think; I not only like that, I &lt;b&gt;need&lt;/b&gt; it.&lt;br /&gt;&lt;br /&gt;I like being able to go back to a blog post I've bookmarked as a reference, finding again something I needed once, and need again from time to time. In addition, I get to see how the concept develops over time, as commentors contribute their thoughts and opinions on the subject.&lt;br /&gt;&lt;br /&gt;Blogs also inspire me to contribute some of what I may have learned along the way.&amp;nbsp; This is where I've fallen down, terribly, often believing that I really didn't have much to say that would be of use to others.&lt;br /&gt;&lt;br /&gt;I see otherwise now.&amp;nbsp; I've been teaching novice programmers PHP and Zend Framework with &lt;a href="http://www.zend.com/en/services/training/"&gt;Zend Technologies&lt;/a&gt; since autumn 2008.&amp;nbsp; I get asked a lot of questions about programming, code design, object-oriented development, and testing.&amp;nbsp; Most of my colleagues are advanced developers, and they often blog about advanced techniques, and although those techniques help make a developer's life easier, some of the people I encounter daily aren't quite ready to take advantage of particularly advanced development practices.&lt;br /&gt;&lt;br /&gt;I pledge to blog more often, and help flatten out the learning curve for the newbies.&amp;nbsp; We were all newbies, once, and if we're committed to lifelong learning, and to keeping our skills current, we &lt;b&gt;remain&lt;/b&gt; newbies, in at least one area, all the time.&lt;br /&gt;&lt;br /&gt;See you briefly on Twitter with a &lt;a href="http://search.twitter.com/search?q=%23ideasofmarch"&gt;#ideasofmarch&lt;/a&gt; tweet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5025818534862481469-6194836920912855692?l=clarkeveretts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://clarkeveretts.blogspot.com/feeds/6194836920912855692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://clarkeveretts.blogspot.com/2011/03/ideas-of-march-or-thank-you-mr-shiflett.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/6194836920912855692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/6194836920912855692'/><link rel='alternate' type='text/html' href='http://clarkeveretts.blogspot.com/2011/03/ideas-of-march-or-thank-you-mr-shiflett.html' title='Ideas of March, or Thank you, Mr. Shiflett.'/><author><name>Clark Everetts</name><uri>https://profiles.google.com/117820681766580323713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-T0yptebhZ3M/AAAAAAAAAAI/AAAAAAAAAQo/cIQ74alDOeo/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5025818534862481469.post-6328444528177862291</id><published>2011-03-31T10:46:00.000-05:00</published><updated>2011-03-31T10:46:11.612-05:00</updated><title type='text'>Zend Framework Autoloading - Finding Your Library Classes</title><content type='html'>Attention &lt;a href="http://framework.zend.com/"&gt;Zend Framework&lt;/a&gt; beginners.&amp;nbsp; Since today is the final day for me to get around to contributing - in some small way - to &lt;a href="http://shiflett.org/blog/2011/mar/ideas-of-march"&gt;The Ideas of March&lt;/a&gt;, which encourages people to blog more often, I offer up the following.&lt;br /&gt;&lt;br /&gt;If you find yourself using &lt;a href="http://www.php.net/manual/en/function.require-once.php"&gt;&lt;i&gt;require_once&lt;/i&gt;&lt;/a&gt; statements in your Zend Framework applications in order for ZF to find your library classes, in spite of using &lt;a href="http://framework.zend.com/manual/en/zend.application.html"&gt;Zend_Application&lt;/a&gt; - which you know establishes &lt;a href="http://framework.zend.com/manual/en/zend.loader.autoloader.html"&gt;autoloading&lt;/a&gt; by default - then there is one simple thing you need to add to your application's config file, typically configs/application.ini, to fix the problem.&amp;nbsp; End your frustration, and read on.&lt;br /&gt;&lt;br /&gt;Assuming a &lt;a href="http://framework.zend.com/manual/en/project-structure.project.html"&gt;directory structure&lt;/a&gt; something like this (my "vendor prefix" of EAI stands for Everetts Associates, Inc.):&lt;br /&gt;application/&lt;br /&gt;data/&lt;br /&gt;docs/&lt;br /&gt;library/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EAI/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mail.php&lt;br /&gt;public/&lt;br /&gt;scripts/&lt;br /&gt;temp/&lt;br /&gt;tests/&lt;br /&gt;&lt;br /&gt;and a class named EAI_Mail in the Mail.php file, and assuming your library is on your include_path, all that is needed is a line like this in application.ini:&lt;br /&gt;&lt;br /&gt;autoloaderNamespaces[] = "EAI_"&lt;br /&gt;&lt;br /&gt;Zend Framework's autoloader is already configured to match class prefixes &lt;i&gt;Zend_&lt;/i&gt; and &lt;i&gt;ZendX_&lt;/i&gt;.&amp;nbsp; What you're doing by adding the above line to the application's config file is register &lt;b&gt;your&lt;/b&gt; library prefix/namespace with the autoloader.&amp;nbsp; The include_path was not your problem, the problem was that ZF wasn't acknowledging your class prefix.&lt;br /&gt;&lt;br /&gt;Now you can strip out those require_once statements for a bit of a &lt;a href="http://framework.zend.com/manual/en/performance.classloading.html"&gt;performance boost&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Happy coding.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5025818534862481469-6328444528177862291?l=clarkeveretts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://clarkeveretts.blogspot.com/feeds/6328444528177862291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://clarkeveretts.blogspot.com/2011/03/zend-framework-autoloading-finding-your.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/6328444528177862291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/6328444528177862291'/><link rel='alternate' type='text/html' href='http://clarkeveretts.blogspot.com/2011/03/zend-framework-autoloading-finding-your.html' title='Zend Framework Autoloading - Finding Your Library Classes'/><author><name>Clark Everetts</name><uri>https://profiles.google.com/117820681766580323713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-T0yptebhZ3M/AAAAAAAAAAI/AAAAAAAAAQo/cIQ74alDOeo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5025818534862481469.post-3668443457231015029</id><published>2010-12-15T18:26:00.000-06:00</published><updated>2010-12-15T18:26:36.818-06:00</updated><title type='text'>An old idea slowly becoming reality</title><content type='html'>Sunglasses that &lt;a href="http://www.engadget.com/2010/12/15/dynamic-eye-lcd-sunglasses-blot-out-the-sun-not-the-rest-of-you/"&gt;blot out just the sun&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;"... each lens is an LCD that creates a dark box over the sun, blotting out the biggest source of glare and allowing the rest of the glasses to remain rather less tinted. ..."&lt;br /&gt;&lt;br /&gt;I had a similar idea nearly 20 years ago for a car windshield/windows that would do the same thing, and prevent overly-bright oncoming headlights from blinding you. My imaginary version had a dial on the dashboard, so you could adjust the tint level, and it even had a lock-out feature so that law enforcement could disable it when approaching a stopped vehicle.&lt;br /&gt;&lt;br /&gt;I knew this kind of device would eventually exist in some form, but never became involved in any way as a part of making it happen.&lt;br /&gt;&lt;br /&gt;Ideas are worthless. Execution is everything.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5025818534862481469-3668443457231015029?l=clarkeveretts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://clarkeveretts.blogspot.com/feeds/3668443457231015029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://clarkeveretts.blogspot.com/2010/12/old-idea-slowly-becoming-reality.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/3668443457231015029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/3668443457231015029'/><link rel='alternate' type='text/html' href='http://clarkeveretts.blogspot.com/2010/12/old-idea-slowly-becoming-reality.html' title='An old idea slowly becoming reality'/><author><name>Clark Everetts</name><uri>https://profiles.google.com/117820681766580323713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-T0yptebhZ3M/AAAAAAAAAAI/AAAAAAAAAQo/cIQ74alDOeo/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5025818534862481469.post-7550566801965511703</id><published>2010-12-14T10:34:00.000-06:00</published><updated>2010-12-14T10:34:24.621-06:00</updated><title type='text'>Zend Framework Local Deployment Script</title><content type='html'>Here is a deployment script I wrote to install &lt;a href="http://framework.zend.com/download/latest"&gt;Zend Framework&lt;/a&gt; on my local development computer. I use Gnu/Linux, so converting this for use on Windows is, at least for the time being, left as an exercise to the reader. Use it, improve it, throw it away, ignore it. Whatever you do with it, enjoy!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;#! /bin/sh&lt;br /&gt;# deploy latest ZF to LOCAL development machine&lt;br /&gt;# run using sudo (make executable with chmod u+x deploy-zf-latest-to-local.sh)&lt;br /&gt;&lt;br /&gt;# TARFILE_LOCATION is where the ZF tarball you downloaded resides&lt;br /&gt;# TARGET_LOCATION is where ZF is to be deployed (and is my PHP include_path)&lt;br /&gt;# PHP_BIN_DIR is where zf command line tool is to be deployed &lt;br /&gt;# A symlink in ~/bin like this is useful: zf -&amp;gt; /usr/local/bin/zf.sh&lt;br /&gt;# See &lt;a href="http://framework.zend.com/manual/en/zend.tool.framework.clitool.html"&gt;http://framework.zend.com/manual/en/zend.tool.framework.clitool.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;ZF_BASENAME=ZendFramework-1.11.1&lt;br /&gt;TARFILE_LOCATION=/home/clark/deploy/archives&lt;br /&gt;TARGET_LOCATION=/usr/share/php&lt;br /&gt;PHP_BIN_DIR=/usr/local/bin&lt;br /&gt;&lt;br /&gt;if test `whoami` != root&lt;br /&gt;then&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo Please run using \"sudo\".&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit&lt;br /&gt;fi&lt;br /&gt;&lt;br /&gt;# extract ZF from tarball&lt;br /&gt;cd ${TARFILE_LOCATION}&lt;br /&gt;tar -xzf ${ZF_BASENAME}.tar.gz&lt;br /&gt;&lt;br /&gt;# remove prior version of ZF from the system; put the current version in place&lt;br /&gt;cd ${TARGET_LOCATION}&lt;br /&gt;rm -rf Zend&lt;br /&gt;cp -r ${TARFILE_LOCATION}/${ZF_BASENAME}/library/Zend .&lt;br /&gt;cp ${TARFILE_LOCATION}/${ZF_BASENAME}/bin/zf.sh ${TARFILE_LOCATION}/${ZF_BASENAME}/bin/zf.php ${PHP_BIN_DIR}/&lt;br /&gt;&lt;br /&gt;# autoloading is always used, so &lt;a href="http://framework.zend.com/manual/en/performance.classloading.html"&gt;remove require_once statements for performance&lt;/a&gt;&lt;br /&gt;find ${TARGET_LOCATION}/Zend -name '*.php' -not -name 'Application.php' -not -wholename '*/Loader/Autoloader.php' -print0 | xargs -0 sed --regexp-extended --in-place 's/(require_once)/\/\/ \1/g'&lt;br /&gt;&lt;br /&gt;# set up autoloading for zf.php command line tool&lt;br /&gt;sed --regexp-extended --in-place "s/^(if \(!getenv\('ZF_NO_MAIN)/require_once 'Zend\/Loader\/Autoloader\.php'\; Zend_Loader_Autoloader::getInstance\(\)\;\n\1/g" ${PHP_BIN_DIR}/zf.php&lt;br /&gt;&lt;br /&gt;# set file permissions, clean up extraction area, indicate what version we're running&lt;br /&gt;chown -R root:root ${TARGET_LOCATION}/Zend/&lt;br /&gt;rm -rf ${TARFILE_LOCATION}/${ZF_BASENAME}&lt;br /&gt;# next line should reference PHP_BIN_DIR instead of hardcoding the directory&lt;br /&gt;php -r 'include "/usr/share/php/Zend/Version.php"; echo "Running Version " . Zend_Version::VERSION . "\n";'&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5025818534862481469-7550566801965511703?l=clarkeveretts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://clarkeveretts.blogspot.com/feeds/7550566801965511703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://clarkeveretts.blogspot.com/2010/12/zend-framework-local-deployment-script.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/7550566801965511703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/7550566801965511703'/><link rel='alternate' type='text/html' href='http://clarkeveretts.blogspot.com/2010/12/zend-framework-local-deployment-script.html' title='Zend Framework Local Deployment Script'/><author><name>Clark Everetts</name><uri>https://profiles.google.com/117820681766580323713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-T0yptebhZ3M/AAAAAAAAAAI/AAAAAAAAAQo/cIQ74alDOeo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5025818534862481469.post-8675329173686540687</id><published>2010-12-12T06:52:00.000-06:00</published><updated>2010-12-12T06:52:43.104-06:00</updated><title type='text'>IndieConf, and an OOTNO</title><content type='html'>Almost a month ago, an eternity on the Intertubes, I attended &lt;a href="http://indieconf.com/"&gt;IndieConf&lt;/a&gt;, the conference for independent web professionals, held in Raleigh, NC, organized by my friend &lt;a href="http://michaelkimsal.com/"&gt;Michael Kimsal&lt;/a&gt;, web developer, publisher, and &lt;a href="http://webdevradio.com/"&gt;"web radio dude"&lt;/a&gt; based in NC.&amp;nbsp; He pulled together a cast of experienced individuals, credible speakers from a broad range of disciplines, to speak on a variety of topics of vital importance to the independent/freelance software developer.&lt;br /&gt;&lt;br /&gt;He provided a great experience to everyone, speakers and attendees alike, from the speakers' dinner on Friday evening, to the conference sessions, to the afterparty Saturday evening.&amp;nbsp; Wanting to give everyone a great experience, providing value through practical sessions - that's what makes him an OOTNO, One Of The Nice Ones*. &lt;br /&gt;&lt;br /&gt;Whether you're already an independent web provider, or thinking about embracing the freelance "workstyle", don't be a NOOTNO (Not One Of The Nice Ones), and skip IndieConf next year.&amp;nbsp; Check it out.&amp;nbsp; Make some connections.&amp;nbsp; Learn some stuff.&amp;nbsp; Have some fun.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Guess its about time I filled out the conference survey form, and give him some happy feedback data...&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;*From an article in a 70's science fiction magazine, the name of which escapes me, else I'd give full credit to the author.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5025818534862481469-8675329173686540687?l=clarkeveretts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://clarkeveretts.blogspot.com/feeds/8675329173686540687/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://clarkeveretts.blogspot.com/2010/12/indieconf-and-ootno.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/8675329173686540687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/8675329173686540687'/><link rel='alternate' type='text/html' href='http://clarkeveretts.blogspot.com/2010/12/indieconf-and-ootno.html' title='IndieConf, and an OOTNO'/><author><name>Clark Everetts</name><uri>https://profiles.google.com/117820681766580323713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-T0yptebhZ3M/AAAAAAAAAAI/AAAAAAAAAQo/cIQ74alDOeo/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5025818534862481469.post-757652735648920860</id><published>2010-12-11T18:15:00.001-06:00</published><updated>2010-12-11T18:20:27.179-06:00</updated><title type='text'>Sometimes I Just Wanna READ</title><content type='html'>Instead of talking about PHP or software development, I'm going to rant about the prevalence of video for just a bit.&amp;nbsp; Video is great, except when I don't want video.&amp;nbsp; I was reading about the Google CR-48 Chrome OS Notebook, and followed a link to a description of &lt;a href="http://www.google.com/chromeos/features.html"&gt;Chrome features&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;This is the &lt;b&gt;Overview&lt;/b&gt; page, which briefly discusses Chrome's cloud-based, always-connected, instant web nature.&amp;nbsp; Great.&amp;nbsp; I click on the &lt;b&gt;Speed&lt;/b&gt; link to read about that.&lt;br /&gt;&lt;br /&gt;Oh. A video. Pressed for time, I'd rather quickly read a description than sit through a video, so I click on the &lt;b&gt;Sync&lt;/b&gt; link to see what that's about.&lt;br /&gt;&lt;br /&gt;Hmm. Another video. &lt;b&gt;Connectivity&lt;/b&gt;? Video. &lt;b&gt;Security&lt;/b&gt;? Video. &lt;b&gt;Updates&lt;/b&gt;, &lt;b&gt;Apps&lt;/b&gt;, &lt;b&gt;Guided Tour&lt;/b&gt;? Argh - all videos.&amp;nbsp; No text.&lt;br /&gt;&lt;br /&gt;I kind of expect to see video - or at least screenshots - on a page titled "Guided Tour," but what's wrong with good, old-fashioned text and images for the others, with a link to a video if I want to see one?&amp;nbsp; Surely the vids were scripted, so why can't I simply read some content drawn from those scripts?&lt;br /&gt;&lt;br /&gt;I don't mind videos, really, especially when they communicate information more easily demonstrated than described.&lt;br /&gt;&lt;br /&gt;The use of video over text content on the web seems to be increasing.&amp;nbsp; I guess videos are supposed to give us an "experience" intended to hold our interest longer than mere dull, dry words.&amp;nbsp; And we certainly are bombarded with text.&amp;nbsp; I see every day in my email inbox the misunderstandings resulting from people's skimming, rather than reading, that flood of written communication.&lt;br /&gt;&lt;br /&gt;Is a viewer's comprehension and retention greater than a reader's? I don't know.&lt;br /&gt;&lt;br /&gt;I appreciate the efforts people and organizations go through to produce high-quality videos.&amp;nbsp; I'd just like the option to choose whether to read or watch.&lt;br /&gt;&lt;br /&gt;Hmm.&amp;nbsp; Blew my first blog post on a rant.&amp;nbsp; Oh, well: nowhere to go but up?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5025818534862481469-757652735648920860?l=clarkeveretts.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://clarkeveretts.blogspot.com/feeds/757652735648920860/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://clarkeveretts.blogspot.com/2010/12/sometimes-i-just-wanna-read.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/757652735648920860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5025818534862481469/posts/default/757652735648920860'/><link rel='alternate' type='text/html' href='http://clarkeveretts.blogspot.com/2010/12/sometimes-i-just-wanna-read.html' title='Sometimes I Just Wanna READ'/><author><name>Clark Everetts</name><uri>https://profiles.google.com/117820681766580323713</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh5.googleusercontent.com/-T0yptebhZ3M/AAAAAAAAAAI/AAAAAAAAAQo/cIQ74alDOeo/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry></feed>
