<?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>Internet Lake &#187; Programming</title>
	<atom:link href="http://rogercollins.com/topics/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://rogercollins.com</link>
	<description>Roger Collins on Domains, Internet, Software, Society</description>
	<lastBuildDate>Thu, 15 Dec 2011 21:33:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>My Last Project</title>
		<link>http://rogercollins.com/2011/11/my-last-project/</link>
		<comments>http://rogercollins.com/2011/11/my-last-project/#comments</comments>
		<pubDate>Tue, 08 Nov 2011 12:25:31 +0000</pubDate>
		<dc:creator>Roger Collins</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[avionics]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://rogercollins.com/?p=481</guid>
		<description><![CDATA[(I mean my previous project. I&#8217;m not retiring yet.) Here&#8217;s a video about the 787, which is where some of my software engineering work is flying. Cool, right? &#160;]]></description>
			<content:encoded><![CDATA[<p></p><p>(I mean my previous project. I&#8217;m not retiring yet.)</p>
<p>Here&#8217;s a video about the 787, which is where some of my software engineering work is flying. Cool, right?</p>
<p>&nbsp;<iframe width="560" height="315" src="http://www.youtube.com/embed/dPltBtBa7VQ" frameborder="0" allowfullscreen></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://rogercollins.com/2011/11/my-last-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Non-technical first-level managers</title>
		<link>http://rogercollins.com/2011/06/non-technical-first-level-managers/</link>
		<comments>http://rogercollins.com/2011/06/non-technical-first-level-managers/#comments</comments>
		<pubDate>Mon, 27 Jun 2011 13:33:26 +0000</pubDate>
		<dc:creator>Roger Collins</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://rogercollins.com/?p=391</guid>
		<description><![CDATA[I just finished a DO-178B avionics software project as a senior software engineer. It was somewhat a third career, going back to my first career. From this perspective as a former software engineering manager and former business manager with an MBA, I saw many ways to improve our team&#8217;s process, methods, productivity, and overall performance [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://rogercollins.com/wp-content/uploads/2011/06/1-1210861596T3lN.jpg"><img class="alignleft size-medium wp-image-393" title="1-1210861596T3lN" src="http://rogercollins.com/wp-content/uploads/2011/06/1-1210861596T3lN-300x199.jpg" alt="" width="300" height="199" /></a>I just finished a DO-178B avionics software project as a senior software engineer. It was somewhat a third career, going back to my first career.  From this perspective as a former software engineering manager and former business manager with an MBA, I saw many ways to improve our team&#8217;s process, methods, productivity, and overall performance for the client, but I was not in a position to influence such things. As they say, prophets get no respect in their home lands. So I&#8217;ll discuss these things with the blogosphere.</p>
<p>I&#8217;ll start at the highest level. Directors, why do you hire non-technical first-level managers? Non-technical first-level managers, how do you make it work? I think managers in other industries would expect all these types of mistakes and indeed I observe them:</p>
<ol>
<li>Errors in assessing the completeness and quality of work,</li>
<li> Errors in assessing productivity and expertise of team members and candidates for recruitment,</li>
<li> Errors in estimating schedules,</li>
<li> Errors in negotiating schedules and design trade-offs with team members,</li>
<li> Errors in setting priorities and organizing tasks among team members to reduce bottlenecks,</li>
<li> Errors in understanding the dependencies for a task and thus obtaining those dependencies before the task should begin,</li>
<li> Errors in assessing the productivity of contributors,</li>
<li> Errors in resolving conflicts among team members on process, methods, etc.,</li>
<li> Errors in making trade-off decisions among design, quality, staffing, and schedule,</li>
<li> Lack of knowledge about what parts of the process to standardize and/or improve for better quality, productivity, etc.</li>
</ol>
<ol></ol>
]]></content:encoded>
			<wfw:commentRss>http://rogercollins.com/2011/06/non-technical-first-level-managers/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Symfony Great Except Documentation</title>
		<link>http://rogercollins.com/2010/04/symfony-great-except-documentation/</link>
		<comments>http://rogercollins.com/2010/04/symfony-great-except-documentation/#comments</comments>
		<pubDate>Mon, 05 Apr 2010 22:02:46 +0000</pubDate>
		<dc:creator>Roger Collins</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Ruby on Rails]]></category>
		<category><![CDATA[Symfony]]></category>

		<guid isPermaLink="false">http://rogercollins.com/?p=362</guid>
		<description><![CDATA[When I developed my first commercial website about a decade ago there were no decent website development frameworks like Symfony so I created my own.  It even had a simple ORM known simply as the Entity class.  It made the rest of the development effort faster and more scalable. My decision was informed by a [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://rogercollins.com/wp-content/uploads/2010/04/symfony.png"><img class="alignleft size-full wp-image-363" title="symfony" src="http://rogercollins.com/wp-content/uploads/2010/04/symfony.png" alt="" width="204" height="62" /></a>When I developed my first commercial website about a decade ago there were no decent website development frameworks like <a href="http://www.symfony-project.org/">Symfony</a> so I created my own.  It even had a simple ORM known simply as the Entity class.  It made the rest of the development effort faster and more scalable.</p>
<p>My decision was informed by a masters in computer science and 15 years of software development projects.  I knew good architecture was crucial for complex projects. It might have been one of the most important things we did to make New Afternic a success in the beginning.</p>
<p>However, when I recently discovered Symfony I was thrilled.  Symfony is like a Cadillac Escalade, fully loaded, compared to my Yugo.  I had considered learning a new language (Ruby) just to get a good framework, but Symfony seemed to offer a framework similar to Ruby&#8217;s but using PHP.</p>
<p>After using it for a over a month now, I can say that Symfony really does include all the features I wanted and more.  It is well organized.  And it seems pretty stable.  However, if I started this project over from scratch, I&#8217;d strongly consider switching to Ruby for one reason alone: documentation.  The documentation is scattered in tutorials, APIs, YML file references, plugin references, Doctrine website APIs, Doctrine YML file references, etc.  And worst of all, none of it is complete.</p>
<p>Let me give a recent example.  Say you&#8217;re working on your schema and you&#8217;re defining a special column so you wonder what are the valid options for specifying a column?  I still don&#8217;t know where to find documentation that answers that straightforward question.</p>
<p>Its hard to complain about an otherwise fantastic framework that is free, but I hate to see such a brilliant project and so much hard work fail to get adopted faster due to a problem that is so much easier to fix than developing the framework in the first place.  Complete some documentation.  In my humble opinion as a newbie, documentation is by far its biggest weakness.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogercollins.com/2010/04/symfony-great-except-documentation/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Development Process</title>
		<link>http://rogercollins.com/2010/03/development-process/</link>
		<comments>http://rogercollins.com/2010/03/development-process/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 14:00:27 +0000</pubDate>
		<dc:creator>Roger Collins</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[software dev]]></category>

		<guid isPermaLink="false">http://rogercollins.com/?p=288</guid>
		<description><![CDATA[In recent post I mentioned an engineering process.  When most developers hear the word process they instinctively brace themselves for the overbearing, bureaucratic, time-wasting requirements that usually follow.  This is not that kind of process. Every development team uses a process whether it is documented or not. A good process makes work more predictable and [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://rogercollins.com/wp-content/uploads/2010/03/checkboxes.jpg"><img class="alignleft size-full wp-image-292" title="checkboxes" src="http://rogercollins.com/wp-content/uploads/2010/03/checkboxes.jpg" alt="" width="192" height="144" /></a>In recent post I mentioned an engineering process.  When most developers hear the word <em>process</em> they instinctively brace themselves for the overbearing, bureaucratic, time-wasting requirements that usually follow.  This is not that kind of process. Every development team uses a process whether it is documented or not. A good process makes work more predictable and even enjoyable for all parties, inside and outside the engineering team.</p>
<p>This process allows developers to work more independently with less  task-by-task direction than required in most organizations. This is a few years old and I&#8217;ll update it before I use it again,  especially to add more testing requirements now that frameworks come  with better testing features.</p>
<p>Here it is, as it was.</p>
<hr />Work on tasks from Change Requests, highest priority requests first.</p>
<p>Do not multitask.  Work on the highest priority CR until it is blocked or completed.  <em>Blocked</em> means you <em>have</em> to wait on someone else (a customer, manager, vendor, etc.).</p>
<p>When a manager is available, discuss with manager before beginning a new CR so that most current company priorities are considered.</p>
<p>Each CR should go through the following phases in this order:</p>
<ol>
<li>Analyze</li>
<li>Implement</li>
<li>Code Review</li>
<li>Test</li>
<li>Publish</li>
<li>Business Review</li>
</ol>
<h3>Analyze</h3>
<p>Assign the CR to yourself at the beginning of this step.</p>
<p>Analyze means to understand the request fully.  Interview the reporter, manager, customers, etc. as necessary.  Seek direction from other business functions like Marketing and Operations.</p>
<p>Present the alternatives and a proposed high-level design to the team for the most complex requests.  This is rarely required but do it at your discretion for large requests.  Use story board, prototypes, or any tool you want.</p>
<h3>Implement</h3>
<p>Implement means to develop the solution in a development tree and using a development database.  Some Do’s of implementation:</p>
<ul>
<li>Perform some unit testing for medium to complex changes, but not simple changes.</li>
<li>Use comments liberally.</li>
<li>Follow the coding style (indenting, naming convention, etc.) of the current code.</li>
<li>Make sure any new database features can be managed from the admin interface.</li>
<li>Make sure online documents are updated to match features.  Add likely questions to FAQ, etc.</li>
<li>Get all new copy written or reviewed by Marketing.</li>
</ul>
<h3>Code Review</h3>
<p>Code Review before Test is not a mistake.  It saves time to catch errors by review rather than by testing.  Another engineer or manager reviews the changes line by line to identify errors.  Count lines reviewed and number of errors found.  Post this info as a bug note on the CR.  Simple rework can be included in this step.  Complex rework should be reviewed again.</p>
<p>Commit changes to source code control after Code Review is complete and advise all engineers that the tree cannot be published until testing is complete.  Make sure any new files are added and committed to source code control.</p>
<h3>Test</h3>
<p>Test.  A different specialist should test the new feature using a read-only tree.  This phase includes any required rework.</p>
<h3>Publish</h3>
<p>Publish.  Implement any database changes required on the production server.  Publish the code and “touch test” on the production server to test the publish process.  The CR should be changed to Resolved at the end of this step.</p>
<h3>Business Review</h3>
<p>Business Review.  Implementer should demo user interface changes to Marketing and Support so the change can be communicated and supported effectively.  This phase includes training internal users.  Manager should change the CR to Closed at the end of this step.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogercollins.com/2010/03/development-process/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross browser FireUnit for JavaScript unit testing</title>
		<link>http://rogercollins.com/2010/02/cross-browser-fireunit-for-javascript-unit-testing/</link>
		<comments>http://rogercollins.com/2010/02/cross-browser-fireunit-for-javascript-unit-testing/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 19:40:38 +0000</pubDate>
		<dc:creator>Roger Collins</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Firebug]]></category>
		<category><![CDATA[FireUnit]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://rogercollins.com/?p=213</guid>
		<description><![CDATA[I&#8217;m been delving more deeply into the world of front-end development recently, and after trying out a few different JavaScript unit testing tools I selected FireUnit.  I installed the Firefox extensions Firebug and FireUnit &#8211; you need both for unit testing with FireUnit. However, sometimes Firebug doesn&#8217;t work for me and I want to use [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>I&#8217;m been delving more deeply into the world of front-end development recently, and after trying out a few different JavaScript unit testing tools I selected <a href="http://ejohn.org/blog/fireunit/" target="_blank">FireUnit</a>.  I installed the Firefox extensions <a href="http://getfirebug.com/" target="_blank">Firebug</a> and FireUnit &#8211; you need both for unit testing with FireUnit.</p>
<p>However, sometimes Firebug doesn&#8217;t work for me and I want to use Safari for debugging JavaScript.  I also found some tests that worked in Firefox but failed in Safari just because of differences in how the browsers handle UTF-8. Running your JavaScript unit tests in multiple browsers is clearly a good idea.  So, the obvious drawback to using FireUnit is that it only works in Firefox.</p>
<p>My solution is to create a stub version of FireUnit so when I run my tests in Safari, the stubs are defined, but when I run them in Firefox, my tests use the real FireUnit functions.  The following code at the top of my test files make them work in any browser, with or without FireUnit.</p>
<blockquote><p>&lt;script src=&#8221;FireUnitStub.js&#8221; type=&#8221;text/javascript&#8221;&gt;&lt;/script&gt;</p></blockquote>
<p>Of course, I need my stub source code in a file <a href="http://rogercollins.com/wp-content/uploads/2010/02/FireUnitStub.js">FireUnitStub.js</a> in the same directory for the above line to work.</p>
<p>I&#8217;ve only implemented a few of these functions so I hope someone else will do it properly and completely, maybe using the source code for FireUnit itself.</p>
<p>Hereby forthwith released into the public domain.  Have fun!</p>
<p>Here&#8217;s a screen shot of my tests after a successful completion in the Safari browser, with the debugging enabled.  (Click on the image to see the whole image.)</p>
<p><a href="http://rogercollins.com/wp-content/uploads/2010/02/FireUnitSafari.png"><img class="aligncenter size-full wp-image-221" title="FireUnitSafari" src="http://rogercollins.com/wp-content/uploads/2010/02/FireUnitSafari.png" alt="" width="727" height="797" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://rogercollins.com/2010/02/cross-browser-fireunit-for-javascript-unit-testing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blue button images for iPhone apps</title>
		<link>http://rogercollins.com/2010/01/blue-button-images-for-iphone-apps/</link>
		<comments>http://rogercollins.com/2010/01/blue-button-images-for-iphone-apps/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 22:57:13 +0000</pubDate>
		<dc:creator>Roger Collins</dc:creator>
				<category><![CDATA[iPhone/iPod Touch]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[iPhone programming]]></category>

		<guid isPermaLink="false">http://rogercollins.com/?p=183</guid>
		<description><![CDATA[The iPhone SDK makes it easy to add a bright blue button on the navigation bar.  It is the color that means press this when you&#8217;re done doing what you&#8217;re doing. However, if you want to add a button with the same meaning somewhere else, its a lot of work.  There is a blue button [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>The iPhone SDK makes it easy to add a bright blue button on the navigation bar.  It is the color that means press this when you&#8217;re done doing what you&#8217;re doing. However, if you want to add a button with the same meaning somewhere else, its a lot of work.  There is a blue button that all the demos and beginning developer books use that is provided in the sample apps, but its the wrong color of blue.  So, here&#8217;s the right color.  First, normal:</p>
<p><a href="http://rogercollins.com/wp-content/uploads/2010/01/action-normal.png"><img class="aligncenter size-full wp-image-184" title="action-normal" src="http://rogercollins.com/wp-content/uploads/2010/01/action-normal.png" alt="" width="29" height="37" /></a>Then, pressed:</p>
<p><a href="http://rogercollins.com/wp-content/uploads/2010/01/action-pressed.png"><img class="aligncenter size-full wp-image-185" title="action-pressed" src="http://rogercollins.com/wp-content/uploads/2010/01/action-pressed.png" alt="" width="29" height="37" /></a></p>
<p>Then, here is the code to make the images stretchable and set your button images to them.  Put this in viewDidLoad method:</p>
<blockquote><p>UIImage *buttonImageNormal = [UIImage imageNamed:@"action-normal.png"];<br />
UIImage *stretchableButtonImageNormal = [buttonImageNormal stretchableImageWithLeftCapWidth:12 topCapHeight:0];<br />
[playButton setBackgroundImage:stretchableButtonImageNormal forState:UIControlStateNormal];</p>
<p>UIImage *buttonImagePressed = [UIImage imageNamed:@"action-pressed.png"];<br />
UIImage *stretchableButtonImagePressed = [buttonImagePressed stretchableImageWithLeftCapWidth:12 topCapHeight:0];<br />
[playButton setBackgroundImage:stretchableButtonImagePressed forState:UIControlStateHighlighted];</p></blockquote>
<p>Here&#8217;s what it looks like when you&#8217;re done.  Notice how it matches the standard switch control pretty well:</p>
<p><a href="http://rogercollins.com/wp-content/uploads/2010/01/button-example.png"><img class="aligncenter size-full wp-image-186" title="button-example" src="http://rogercollins.com/wp-content/uploads/2010/01/button-example.png" alt="" width="336" height="182" /></a></p>
<p>Feel free to download and use these images and code.  Hope it helps.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogercollins.com/2010/01/blue-button-images-for-iphone-apps/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>strtotime warning from WordPress/PHP</title>
		<link>http://rogercollins.com/2009/12/strtotime-warning/</link>
		<comments>http://rogercollins.com/2009/12/strtotime-warning/#comments</comments>
		<pubDate>Sat, 26 Dec 2009 16:14:22 +0000</pubDate>
		<dc:creator>Roger Collins</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://rogercollins.com/?p=115</guid>
		<description><![CDATA[If you try to install WordPress with the PHP and MySQL procedures I recently posted you&#8217;ll get the following warning all over your WordPress pages. Warning: strtotime() [function.strtotime]: It is not safe to rely on the system&#8217;s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>If you try to install WordPress with the PHP and MySQL procedures I recently posted you&#8217;ll get the following warning all over your WordPress pages.</p>
<blockquote><p><strong>Warning</strong>:  strtotime() [<a href="http://ch.bigmac/function.strtotime">function.strtotime</a>]: It is not safe to rely on the system&#8217;s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected &#8216;America/New_York&#8217; for &#8216;EST/-5.0/no DST&#8217; instead in <strong>file-name-here</strong> on line <strong>NN</strong></p></blockquote>
<p>Here&#8217;s how to fix it.  Edit (or create if it does not exist) /etc/php.ini and add the following line:</p>
<blockquote><p>date.timezone = &#8220;America/New_York&#8221;</p></blockquote>
<p>Then restart  your web server:</p>
<blockquote><p>sudo /usr/sbin/apachectl restart</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://rogercollins.com/2009/12/strtotime-warning/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installing MySQL and PHPMyAdmin on a Mac</title>
		<link>http://rogercollins.com/2009/12/installing-mysql-phpmyadmin-on-mac/</link>
		<comments>http://rogercollins.com/2009/12/installing-mysql-phpmyadmin-on-mac/#comments</comments>
		<pubDate>Thu, 24 Dec 2009 16:09:22 +0000</pubDate>
		<dc:creator>Roger Collins</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[PHPMyAdmin]]></category>

		<guid isPermaLink="false">http://rogercollins.com/?p=98</guid>
		<description><![CDATA[Part of making OS X 10.6 (Snow Leopard) a great LAMP development platform is installing MySQL. Here&#8217;s how to install that along with the most popular web interface for managing MySQL, PHPMyAdmin. 1. Download the Mac OS X 10.5 (x86_64) package format from dev.mysql.com.  The downloaded file should be named mysql-5.1.xx-osx10.5-x86_64.dmg with &#8220;xx&#8221; replaced with [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Part of making OS X 10.6 (Snow Leopard) a great LAMP development platform is installing MySQL. Here&#8217;s how to install that along with the most popular web interface for managing MySQL, PHPMyAdmin.</p>
<p>1. Download the Mac OS X 10.5 (x86_64) package format from <a href="http://dev.mysql.com/downloads/mysql/5.1.html#macosx-dmg">dev.mysql.com</a>.  The downloaded file should be named mysql-5.1.xx-osx10.5-x86_64.dmg with &#8220;xx&#8221; replaced with a minor release number.  Open it and see something like this:</p>
<p><a href="http://rogercollins.com/wp-content/uploads/2009/12/mysql.png"><img class="aligncenter size-full wp-image-100" title="mysql" src="http://rogercollins.com/wp-content/uploads/2009/12/mysql.png" alt="" width="696" height="193" /></a></p>
<p>2. Double click the mysql-5.1.xx-osx10.5-x86_64.pkg and install it with the defaults.</p>
<p>3. Do the same for MySQLStartupItem.pkg.</p>
<p>4. Double click MySQL.prefPane and follow the instructions to add the MySQL pane to your System Preferences.</p>
<p>5. Open System Preferences -&gt; MySQL and start MySQL.  Check &#8220;Automatically Start MySQL Server on Startup&#8221; unless you want to restart it with this panel manually every time you reboot.</p>
<p><a href="http://rogercollins.com/wp-content/uploads/2009/12/mysql-pref.png"><img class="aligncenter size-full wp-image-104" title="mysql-pref" src="http://rogercollins.com/wp-content/uploads/2009/12/mysql-pref.png" alt="" width="668" height="330" /></a></p>
<p>We&#8217;re done with MySQL.  Now lets download and install PHPMyAdmin.</p>
<p>6. Download the PHPMyAdmin .bz2 file from <a href="http://phpmyadmin.net/">phpmyadmin.net</a>.  Put it in the Sites folder (under your home folder).  Double click it in Finder to unarchive it.  Rename the folder it creates to phpMyAdmin (just removing the version info to make it easier to remember).  Now for the trickiest part.  Edit the Apache configuration files.</p>
<p>7. Edit system file /etc/apache2/httpd.conf and just remove the # from the line that includes the httpd.vhosts file.  From now on whenever I say &#8220;edit system file&#8221; that means use sudo and your favorite editor.  (I use vi but I would never recommend that unless you want to learn a powerful but very obscure and difficult to learn editor.)  If you&#8217;re not sure how to edit a system file try this.  Open Terminal (Applications -&gt; Utilities -&gt; Terminal) and enter this command to edit system file /etc/apache2/httpd.conf:</p>
<blockquote><p>sudo nano /etc/apache2/httpd.conf</p></blockquote>
<p>When it asks for a password, enter your OS X login password.  Look at the hints at bottom of the Terminal figure out how to write the file with your changes and exit the editor.</p>
<p>Should look like this when you&#8217;re done:</p>
<blockquote><p>Include /private/etc/apache2/extra/httpd-vhosts.conf</p></blockquote>
<p>8. Edit system file /etc/apache2/extra/httpd-vhosts.conf and replace the VirtualHost example blocks with this (replacing <em>roger</em> with your own username):</p>
<blockquote><p>&lt;VirtualHost *:80&gt;<br />
DocumentRoot /Users/roger/Sites/phpMyAdmin<br />
ServerName phpMyAdmin.localhost<br />
ErrorLog &#8220;/private/var/log/apache2/phpMyAdmin.localhost-error_log&#8221;<br />
CustomLog &#8220;/private/var/log/apache2/phpMyAdmin.localhost-access_log&#8221; common<br />
&lt;Directory &#8220;/Users/roger/Sites/phpMyAdmin&#8221;&gt;<br />
AllowOverride All<br />
Allow from All<br />
&lt;/Directory&gt;<br />
&lt;/VirtualHost&gt;</p></blockquote>
<p>9. Edit system file /etc/hosts to add the local domain name for your PHPMyAdmin site.  Just add this line to the file:</p>
<blockquote><p>127.0.0.1     phpMyAdmin.localhost</p></blockquote>
<p>10. Now just restart the web server with the new configuration with this command:</p>
<blockquote><p>sudo /usr/sbin/apachectl restart</p></blockquote>
<p>11. Open your browser and visit http://phpMyAdmin.localhost to experience the victory and start managing your databases.</p>
<p>I think these instructions should work just as well on 10.5 (Leopard).</p>
<p>Good luck and post a comment if you need any help.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogercollins.com/2009/12/installing-mysql-phpmyadmin-on-mac/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>How to use PHP on Snow Leopard</title>
		<link>http://rogercollins.com/2009/12/php-on-snow-leopard/</link>
		<comments>http://rogercollins.com/2009/12/php-on-snow-leopard/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 23:34:02 +0000</pubDate>
		<dc:creator>Roger Collins</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Apache]]></category>
		<category><![CDATA[OS X]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://rogercollins.com/?p=87</guid>
		<description><![CDATA[Here&#8217;s how to get a PHP site running on your Mac with minimal effort.  First, lets put a PHP file in the right directory so we&#8217;ll have something to see when we get it working.  Put the following code in Sites/phpinfo.php &#60;?php phpinfo(); ?&#62; It is an effective method to develop backwards, so lets start [...]]]></description>
			<content:encoded><![CDATA[<p></p><p><a href="http://rogercollins.com/wp-content/uploads/2009/12/phpinfo.png"><img class="alignleft size-full wp-image-93" title="phpinfo" src="http://rogercollins.com/wp-content/uploads/2009/12/phpinfo.png" alt="" width="328" height="164" /></a>Here&#8217;s how to get a PHP site running on your Mac with minimal effort.  First, lets put a PHP file in the right directory so we&#8217;ll have something to see when we get it working.  Put the following code in Sites/phpinfo.php</p>
<blockquote><p>&lt;?php phpinfo(); ?&gt;</p></blockquote>
<p>It is an effective method to develop backwards, so lets start with what we want to see at the end of this procedure.  Open your browser and visit (replace <em>roger</em> with <em>your</em> username):</p>
<blockquote><p>http://localhost/~roger/phpinfo.php</p></blockquote>
<p>You should get an error like &#8220;Unable to connect.&#8221;  That&#8217;s because we haven&#8217;t enabled the web server nor enabled PHP in the web server.  Lets enable Apache web server.  Go to System Preferences -&gt; Internet &amp; Wireless -&gt; Sharing, and check Web Sharing.</p>
<p>Now if you refresh your browser with the above URL you&#8217;ll just see the PHP file as you coded it.  Still not what we want, but at least the web server is running.</p>
<p>Edit the file /etc/apache2/httpd.conf, search for &#8220;php&#8221;, and uncomment (remove the #) on that line. Should look like this when you&#8217;re done:</p>
<blockquote><p>LoadModule php5_module  libexec/apache2/libphp5.so</p></blockquote>
<p>Now go back to Sharing, uncheck Web Sharing, wait till it says it stopped, then check it again.  This restarts the web server with the configuration change you just made.  Now refresh your browser and you have your first PHP page served on your Mac. Congratulations!</p>
<p><a href="http://rogercollins.com/wp-content/uploads/2009/12/phpinfo.tiff"><img class="aligncenter size-full wp-image-88" title="phpinfo" src="http://rogercollins.com/wp-content/uploads/2009/12/phpinfo.tiff" alt="" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://rogercollins.com/2009/12/php-on-snow-leopard/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upgrade your hard drive first</title>
		<link>http://rogercollins.com/2009/12/upgrade-your-hard-drive-first/</link>
		<comments>http://rogercollins.com/2009/12/upgrade-your-hard-drive-first/#comments</comments>
		<pubDate>Sat, 19 Dec 2009 15:36:22 +0000</pubDate>
		<dc:creator>Roger Collins</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[mac]]></category>

		<guid isPermaLink="false">http://rogercollins.com/?p=83</guid>
		<description><![CDATA[Added a page for my mac.  I will be recording what I install and why on that page.  One additional tip from studying computer architecture.  When you&#8217;re deciding where to spend money increasing your computer&#8217;s performance, start with the slowest things first, namely the hard drive. A standard MacBook Pro 17 already comes packed with [...]]]></description>
			<content:encoded><![CDATA[<p></p><p>Added a <a href="http://rogercollins.com/pimpin-mac/">page for my mac</a>.  I will be recording what I install and why on that page.  One additional tip from studying computer architecture.  When you&#8217;re deciding where to spend money increasing your computer&#8217;s performance, start with the slowest things first, namely the hard drive. A standard MacBook Pro 17 already comes packed with high performance but I did add one item above standard.  I got the 7200 rpm  500 GB hard drive compared to the standard 5400 rpm drive.</p>
<p>Of course there are exceptions.  Your mileage might vary if you&#8217;re running some particular memory intensive app or cpu intensive app all the time, but for most people, the hard drive upgrade will be the most satisfying.</p>
]]></content:encoded>
			<wfw:commentRss>http://rogercollins.com/2009/12/upgrade-your-hard-drive-first/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

