<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>RSS feed for InstantSpot site Rob Wilkerson</title><link>http://robwilkerson.instantspot.com</link><description>You&apos;ll Know When I Know</description><language>en-us</language><copyright>This work is Copyright &#xA9; 2009 by Rob Wilkerson</copyright><generator>RSSVille ColdFusion FeedMaker, version 1.0</generator><pubDate>Sat, 21 Nov 2009 15:22:30 GMT</pubDate><item><title>Firefox 3.0b3.  Sexy.</title><link>http://robwilkerson.instantspot.com/blog/2008/02/13/Firefox-30b3--Sexy</link><description>&lt;p&gt;In spite of my previous rant, I&apos;m not prepared to give up Firefox just yet - even in the face of blazing speed increases from the Safari camp.  Now the Firefox team has given me one less reason to switch (albeit a superficial one). The new beta3 release is gorgeous, borrowing heavily (it&apos;s homage, right?) from the Safari UI, it seems to me.&lt;/p&gt; &lt;p&gt;I&apos;ve only had it installed for a few minutes so I can&apos;t speak to any other improvements, but I like the look (a lot) and they appear to have fixed a bug that prevented me from editing blog posts in the beta2 version.&lt;/p&gt;</description><pubDate>Wed, 13 Feb 2008 14:36:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/02/13/Firefox-30b3--Sexy</guid><category>Technical</category></item><item><title>Leaving Firefox Behind</title><link>http://robwilkerson.instantspot.com/blog/2008/02/07/Leaving-Firefox-Behind</link><description>&lt;p&gt;I keep trying to leave Firefox behind.  And trying.  And trying.  Not behind, behind like feathered hair or roadkill, but behind as in dropping it as my primary browser.  I haven&apos;t had much luck so far and it&apos;s pissing me off just a little bit.  This I tell you this now because I just installed 3.0 b2 on my Mac hoping it would be better than 2.x and my bitterness is a bit more acute at the moment.  Needless to say, it&apos;s not better.  Not really, anyway.  It doesn&apos;t even look that much better.  I may even prefer the look of 2.x with one of Aronnax&apos;s outstanding grApple themes applied, to be honest.&lt;/p&gt;</description><pubDate>Fri, 08 Feb 2008 03:00:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/02/07/Leaving-Firefox-Behind</guid><category>Technical</category></item><item><title>SuperDuper 2.5 (Finally) Released</title><link>http://robwilkerson.instantspot.com/blog/2008/02/07/SuperDuper-25-Finally-Released</link><description>&lt;p&gt;I&apos;ve been looking forward to this for a long time now.  SuperDuper, of course, is the outstanding backup software for Macs and this release offers compatibility with OS X Leopard.  It&apos;s not free, sadly, but it&apos;s one of those apps that is far enough ahead of its free counterparts that I believe it&apos;s worth paying for.  Yeah, I know Leopard ships with TimeMachine.  Wonderful.  Fantastic.  Not good enough.  Doesn&apos;t work for me.&lt;/p&gt; &lt;p&gt;I don&apos;t mean that it literally doesn&apos;t work for me.  It probably functions just fine.  My problem with it is that TimeMachine forces me to park a big ol&apos; external hard drive on my desk and hard-wire it to my machine.&lt;/p&gt;</description><pubDate>Thu, 07 Feb 2008 21:25:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/02/07/SuperDuper-25-Finally-Released</guid><category>Technical</category></item><item><title>Fail Now, Fail Loud, Fail Proud</title><link>http://robwilkerson.instantspot.com/blog/2008/01/30/Fail-Now-Fail-Loud-Fail-Proud</link><description>&lt;p&gt;I write less code than I used to (particularly during the daylight hours), but I inherit a lot of code and I review a lot of code in addition to that which I still write. Today I read something that reminded me to write about a trend - or maybe it&apos;s an oversight - I&apos;ve noticed in the last few years. It seems that a lot of developers are afraid of errors. Somewhere, somehow, it seems like it became the norm to create &quot;bug-free&quot; software by masking bugs and failing silently. Why? Or, more assertively...stop that.&lt;/p&gt; &lt;p&gt;Contrary to popular belief, errors are user-friendly (at least in the long run). Errors are certainly developer-friendly. In almost every case, the latter begets the former, I&apos;ve found.&lt;/p&gt;</description><pubDate>Wed, 30 Jan 2008 21:53:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/01/30/Fail-Now-Fail-Loud-Fail-Proud</guid><category>Technical</category></item><item><title>Don&apos;t Break the Web</title><link>http://robwilkerson.instantspot.com/blog/2008/01/23/Dont-Break-the-Web</link><description>&lt;p&gt;In light of Microsoft&apos;s plans (or is it just a proposal?) for browser version targeting, I decided to weigh-in on a more philosophical level.  There are a lot of very smart people chiming in on this who are much closer to the situation than I am at a practical level.  They are better equipped to speak to any implementation concerns.  My concern rests at a higher (as in more abstract, not better) level.&lt;/p&gt;</description><pubDate>Wed, 23 Jan 2008 18:49:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/01/23/Dont-Break-the-Web</guid><category>Technical</category></item><item><title>Attractive Accessibility</title><link>http://robwilkerson.instantspot.com/blog/2008/01/22/Attractive-Accessibility</link><description>&lt;p&gt;Generally speaking, I do everything I can to avoid images in content.  Simple text is easier, more maintainable, more accessible and, for added incentive, I&apos;m a spectacularly inept designer.  Predictably, though, there&apos;s always an exception.  When an exception arises and I have to use an image, I still want the markup to be semantic and accessible.&lt;/p&gt;  &lt;p&gt;The technique I use isn&apos;t revolutionary or even new, but I don&apos;t see it used very much where I work, so I thought I&apos;d write it down.  Who knows?  Maybe it&apos;s less common than I&apos;ve been assuming it is.&lt;/p&gt;</description><pubDate>Wed, 23 Jan 2008 01:10:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/01/22/Attractive-Accessibility</guid><category>Technical</category></item><item><title>Ant for Web Applications</title><link>http://robwilkerson.instantspot.com/blog/2008/01/20/Ant-for-Web-Applications</link><description>&lt;p&gt;On the whole, I suppose, Ant is probably best known as a build automation tool for &quot;traditional&quot; software projects (particularly Java), but its usefulness for building and deploying web applications should not be dismissed.  I&apos;ve been using Ant since maybe 2003 or 2004 to do just that.&lt;/p&gt; &lt;p&gt;This entry offers a high-level view of how I use Ant to meet my own build and deployment needs.  Subsequent posts will look at specific elements that are non-standard or that relate to how I integrate Ant into my end-to-end deployment process.&lt;/p&gt;</description><pubDate>Sun, 20 Jan 2008 22:56:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/01/20/Ant-for-Web-Applications</guid><category>Technical</category></item><item><title>Variable Replacement with Ant</title><link>http://robwilkerson.instantspot.com/blog/2008/01/14/Variable-Replacement-with-Ant</link><description>In the years I&apos;ve been using Ant, there aren&apos;t many things I haven&apos;t been able to make it do for me to automate the end-to-end build and/or deployment process.  There is at least one thing that&apos;s eluded me, though.  Automated changes to a config file.</description><pubDate>Tue, 15 Jan 2008 01:31:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/01/14/Variable-Replacement-with-Ant</guid><category>Technical</category></item><item><title>On Nomenclature in Code</title><link>http://robwilkerson.instantspot.com/blog/2008/01/14/On-Nomenclature-in-Code</link><description>&lt;p&gt;Among the (many) things that I&apos;m admittedly anal about with respect to code is nomenclature.  I hate obfuscation, I detest ambiguity, I deplore obscure abbreviations.  I&apos;m also not a fan of misdirection.&lt;/p&gt;</description><pubDate>Mon, 14 Jan 2008 22:05:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/01/14/On-Nomenclature-in-Code</guid><category>Technical</category></item><item><title>Principles of Web Application Development</title><link>http://robwilkerson.instantspot.com/blog/2008/01/12/Principles-of-Web-Application-Development</link><description>&lt;p&gt;Anyone that&apos;s been building web applications (or doing anything else, for that matter) for any length of time has undoubtedly established a few operating principles that drive the way they work and the deliverables they produce.  I have mine.  Not too long ago, I sat down and made an effort to articulate the principles (well, at least the big ones) that drive my work and, after some thought, decided to publish them here.  I&apos;d be interested in hearing how others apply (or avoid) the principles that I follow.&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Keep It Simple, Stupid&lt;/li&gt; &lt;li&gt;Separate Presentation from Content&lt;/li&gt; &lt;li&gt;Separate Content from Behavior&lt;/li&gt; &lt;li&gt;Prefer Extensibility to Performance&lt;/li&gt; &lt;li&gt;Prefer Readability to Perforance&lt;/li&gt; &lt;li&gt;Prefer Simplicity to Flexibility&lt;/li&gt; &lt;li&gt;Less First, Then More&lt;/li&gt; &lt;ol&gt;</description><pubDate>Sat, 12 Jan 2008 23:48:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/01/12/Principles-of-Web-Application-Development</guid><category>Technical</category></item><item><title>MAMP 1.7.1: Problem(s) Solved</title><link>http://robwilkerson.instantspot.com/blog/2008/01/08/MAMP-171-Problems-Solved</link><description>&lt;p&gt;After all of my bitching and moaning about how MAMP was affecting (read: preventing) my full development workflow, last night I downloaded v1.7.1 - I&apos;ve been running 1.7.0. I knew 1.7.1 had been released recently and it was on my &quot;short&quot; list of things to do, but yesterday I did it to see if it would automagically fix all my problems. Sho&apos;nuff...it did.&lt;/p&gt;</description><pubDate>Wed, 09 Jan 2008 01:46:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/01/08/MAMP-171-Problems-Solved</guid><category>Technical</category></item><item><title>Most Commonly Installed Fonts</title><link>http://robwilkerson.instantspot.com/blog/2008/01/07/Most-Commonly-Installed-Fonts</link><description>&lt;p&gt;I&apos;m not a designer (quite).  I don&apos;t play one on TV.  When it comes to typography for my sites - unless I have a designer screaming for something else - I stick to the tried and true &lt;strong&gt;&lt;font face=&quot;courier new,courier&quot;&gt;font-family&lt;/font&gt;&lt;/strong&gt; value in my CSS: &lt;strong&gt;&lt;font face=&quot;courier new,courier&quot;&gt;Verdana, Arial, Geneva, Helvetica, sans-serif&lt;/font&gt;&lt;/strong&gt;.  Good &apos;nuff, on to better things.  Today, though, I decided to do the dance so I had to see which fonts are cross-platform enough and whose operating system install base is significant enough that I can use them with a reasonable degree of comfort.&lt;/p&gt; &lt;p&gt;&lt;a href=&quot;http://www.codestyle.org/&quot;&gt;CodeStyle&lt;/a&gt; provided &lt;a href=&quot;http://www.codestyle.org/css/font-family/sampler-CombinedResults.shtml&quot;&gt;the answers I needed&lt;/a&gt;.  Good stuff.&lt;/p&gt;</description><pubDate>Mon, 07 Jan 2008 21:44:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/01/07/Most-Commonly-Installed-Fonts</guid><category>Technical</category></item><item><title>PHP, Meet ColdFusion</title><link>http://robwilkerson.instantspot.com/blog/2008/01/07/PHP-Meet-ColdFusion</link><description>&lt;p&gt;Caught this post on one of the PHP feed aggregators: &lt;a title=&quot;Permanent Link to 10 PHP Myths Dispelled&quot; href=&quot;http://jaybill.com/2008/01/02/10-php-myths-dispelled/&quot; rel=&quot;bookmark&quot;&gt;10 PHP Myths Dispelled&lt;/a&gt;.  Any of these ring familiar to any ColdFusion Developers out there?&lt;/p&gt;</description><pubDate>Mon, 07 Jan 2008 17:03:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/01/07/PHP-Meet-ColdFusion</guid><category>Technical</category></item><item><title>MAMP + Svn Woes</title><link>http://robwilkerson.instantspot.com/blog/2008/01/05/MAMP--Svn-Woes</link><description>&lt;p&gt;Reckon I just might&apos;ve spoke too soon when I posted last night. Maybe. I thought I&apos;d solved all of my issues with MAMP and had successfully bent it to my will when I got pear running. Alas, &apos;twould appear not. Today I tried to execute an Ant script and one of my Subversion tasks was failing.&lt;/p&gt;</description><pubDate>Sat, 05 Jan 2008 18:37:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/01/05/MAMP--Svn-Woes</guid><category>Technical</category></item><item><title>MAMP + PEAR + tcsh</title><link>http://robwilkerson.instantspot.com/blog/2008/01/04/MAMP--PEAR--tcsh</link><description>&lt;p&gt;Having chosen MAMP as my Apache, MySQL &amp;amp; PHP stack of choice on the Mac, things have been rolling along pretty well. Well, until tonight. Tonight was the first time I&apos;ve had a need to connect to a database since I started developing locally. I&apos;ve been building out the domain model of a project for the past few weeks and now it&apos;s time to establish persistence. Since I&apos;ve used PEAR::MDB2 for database abstraction in the past and am reasonably comfortable with doing so, I decided to just stick with it (one of these days I&apos;ll get around to trying out PHP&apos;s baked-in data objects). Using MDB2, though, means that I need a working installation of pear. MAMP comes with pear installed, but it&apos;s not necessarily configured and happily ready to run. Mine most certainly wasn&apos;t.&lt;/p&gt;</description><pubDate>Sat, 05 Jan 2008 00:59:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2008/01/04/MAMP--PEAR--tcsh</guid><category>Technical</category></item><item><title>Safari Screams</title><link>http://robwilkerson.instantspot.com/blog/2007/12/29/Safari-Screams</link><description>&lt;p&gt;I&apos;ve been thinking about making the move to &lt;a href=&quot;http://www.apple.com/safari/&quot;&gt;Safari&lt;/a&gt; as my primary browser for day-to-day browsing for a while now.  Please note my use of the word &amp;quot;thinking&amp;quot;.  That&apos;s key.  I never actually &lt;em&gt;did&lt;/em&gt; it.  At least not until this week.  Before embarking on a holiday vacation to the &lt;a href=&quot;http://en.wikipedia.org/wiki/Toledo,_Ohio&quot;&gt;tropical utopia of northwest Ohio&lt;/a&gt; from which I hail, I made a pact with myself to use Safari instead of &lt;a href=&quot;http://www.mozilla.com/en-US/firefox/&quot;&gt;Firefox&lt;/a&gt; for all of my non-development browsing activities.  Well, save for &lt;a href=&quot;https://mail.google.com&quot;&gt;Gmail&lt;/a&gt; because, frankly, I can&apos;t live without the &lt;a href=&quot;http://userscripts.org/scripts/show/2432&quot;&gt;Gmail Macros&lt;/a&gt; script for &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/748&quot;&gt;Greasemonkey&lt;/a&gt;.  Armed with these good intentions and the inevitable exception to the rule, I donned my snow tires and ventured north and west for a week of family, yuletide mirth and Firefox-less browsing.&lt;/p&gt; &lt;p&gt;The results of my (frighteningly) unscientific experiment?  Safari freaking screams.  Holy crap, it&apos;s fast.  Really fast.&lt;/p&gt; &lt;p&gt;I didn&apos;t do any benchmarking or perform any kind of useful quantitative analysis to validate my observations (I mentioned that this was an unscientific analysis, right?); I&apos;m just going to ask you to trust me on this one.  I was impressed.  I decided about 3 days in that Safari was now going to be my browser o&apos; choice when frolicking about the Internet.&lt;/p&gt; &lt;p&gt;Now I just need to figure out how to get &lt;a href=&quot;http://en.wikipedia.org/wiki/Quicksilver_(software)&quot;&gt;Quicksilver&lt;/a&gt; (link to Wikipedia because &lt;a href=&quot;http://quicksilver.blacktree.com&quot;&gt;quicksilver.blacktree.com&lt;/a&gt; appears to be down) to open my Gmail bookmark in Firefox and everything else in Safari.  Surely that can be done.  Um, right?&lt;/p&gt;</description><pubDate>Sat, 29 Dec 2007 23:43:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2007/12/29/Safari-Screams</guid><category>Technical</category></item><item><title>Rockin&apos; the Keyboard: Open the Task Manager</title><link>http://robwilkerson.instantspot.com/blog/2007/12/28/Rockin-the-Keyboard-Open-the-Task-Manager</link><description>&lt;p&gt;I can&apos;t count the number of times Windows has frozen up on me and prevented me from accessing the Start Menu to restart.  I just found out that there is another way.  Press &lt;strong&gt;&lt;font face=&quot;courier new,courier&quot;&gt;Ctrl+Shift+Esc&lt;/font&gt;&lt;/strong&gt; to open the Windows &lt;strong&gt;Task Manager&lt;/strong&gt;.  From there, choose &lt;strong&gt;Shut Down &amp;gt; Restart&lt;/strong&gt; to avoid a hard reboot.  I suspect this will come in handy...&lt;/p&gt;</description><pubDate>Fri, 28 Dec 2007 21:29:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2007/12/28/Rockin-the-Keyboard-Open-the-Task-Manager</guid><category>Technical</category></item><item><title>Engineering an Effective Stylesheet</title><link>http://robwilkerson.instantspot.com/blog/2007/12/10/Engineering-an-Effective-Stylesheet</link><description>&lt;p&gt;In the course of catching up on some (very) neglected reading, I ran across a fantastic article by &lt;a href=&quot;http://jinabolton.com/&quot;&gt;Jina Bolton&lt;/a&gt;  about &lt;a href=&quot;http://www.thinkvitamin.com/features/design/creating-sexy-stylesheets&quot;&gt;how to engineer a stylesheet&lt;/a&gt;.  Well, her title is &lt;span style=&quot;font-weight: normal;&quot;&gt;&lt;span style=&quot;font-style: italic;&quot;&gt;Creating Sexy Stylesheets&lt;/span&gt;, but I don&apos;t like that title.  That might be the only think I don&apos;t like about the article.  In my mind, the title itself is too whimsical - or maybe titillating - &lt;/span&gt;and masks the importance of what she&apos;s espousing.  In the article, she ticks off ten tips for engineering a, um, sexy stylesheet.  I really like and agree with what she&apos;s saying, but thought I&apos;d add a few of my own thoughts to what she&apos;s offering.&lt;/p&gt; &lt;h3&gt;01. Keep CSS out of the markup.&lt;/h3&gt; &lt;p&gt;Oh, dear God, yes.  Yes, yes, yes.  For exactly the reasons she gives, yes.  If you&apos;re serious about this web design|development stuff, treat this as a commandment.  This is not optional or discretionary in any way.&lt;/p&gt; &lt;h3&gt;02. Semantics is not just a buzz word.&lt;/h3&gt; &lt;p&gt;See my response to item 01.  Double it.  Multiple the product by a factor of 27.&lt;/p&gt; &lt;h3&gt;04. Know when to use conditional comments or hacks.&lt;/h3&gt; &lt;p&gt;Better yet, don&apos;t use them.  The hacks, I mean, not the conditional comments.  If you &lt;span style=&quot;font-style: italic;&quot;&gt;must&lt;/span&gt; use them (and dammit, we all know we must from time to time), though, at least sequester them in the isolation ward of an IE-only style sheet.  Today it&apos;s one small(-ish) hack, tomorrow it&apos;s 19.  If you&apos;re working in a team of 3-5 people all updating stylesheets it&apos;ll be more like 52.  Accept - and learn to love - the small inefficiency you&apos;re going to introduce.  It won&apos;t hurt much now and over the life of your style sheet, you&apos;ll be much happier, I think.&lt;/p&gt; &lt;h3&gt;05. Organizing selectors and declarations.&lt;/h3&gt; &lt;p&gt;I organize my stylesheets a little differently.  I tend to organize my selectors according to the markup so I can nicely indent descendant selectors.  Organizing things that way helps me more clearly draw the mental map between my markup and my styles.&lt;/p&gt; &lt;p&gt;My declarations, I choose to order alphabetically.  I&apos;ve known the alphabet since I was, like, 5 and it hasn&apos;t changed even a little bit in all that time.  Organizing the way Jina does is just too confusing for my tastes.  I can never remember the &amp;quot;proper&amp;quot; grouping of declarations and any &amp;quot;personalized&amp;quot; grouping of declarations just seems - and is - too arbitrary for my tastes.&lt;/p&gt; &lt;p&gt;The alphabet is, in my experience, reasonably stable and accessible.  It&apos;s even got a nice little melody, if I get confused about whether &amp;quot;J&amp;quot; comes before &amp;quot;L&amp;quot;.  I think I&apos;ll just stick to that for now.&lt;/p&gt; &lt;h3&gt;07. Balance readability and optimization.&lt;/h3&gt; &lt;p&gt;Agree completely.  But err on the side of readability.  Assuming your site or application is going to evolve over a span of time measured in months or years rather than minutes and you&apos;re not working in some insane, performance-is-everything shop, prefer readability over performance.  Certainly there&apos;s a balance, but never lose sight of the fact that readability is the key to cheap, timely and easy maintenance.&lt;/p&gt; &lt;h3&gt;About Tips 03, 06, 08, 09 &amp;amp; 10&lt;/h3&gt; &lt;p&gt;Everything else she writes is, as my grandmother used to say, &lt;em&gt;just good sense&lt;/em&gt; and I agree with it just the right amount.  Which is to say, I disagree with nothing and have nothing to add.&lt;/p&gt; &lt;p&gt;All in all, a great article that&apos;s well worth a read.&lt;/p&gt;</description><pubDate>Mon, 10 Dec 2007 18:16:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2007/12/10/Engineering-an-Effective-Stylesheet</guid><category>Technical</category></item><item><title>.Mac Sync?</title><link>http://robwilkerson.instantspot.com/blog/2007/11/15/Mac-Sync</link><description>&lt;p&gt;Yep, I&apos;m still learning how to use a Mac.&amp;nbsp; &lt;br /&gt; &lt;br /&gt; Tonight, after installing the 10.5.1 update, I noticed an icon in my menu bar that I&apos;d never seen before.&amp;nbsp; Being naturally inquisitive, I clicked it.&amp;nbsp; The &lt;a href=&quot;http://en.wikipedia.org/wiki/Kremlin&quot;&gt;Kremlin&lt;/a&gt; wasn&apos;t notified, nor was global thermonuclear war initiated, but it turned out to be some .Mac syncing utility.&amp;nbsp; I&apos;ve never used .Mac.&amp;nbsp; I don&apos;t have an account with .Mac.&amp;nbsp; Truth be told, I don&apos;t really know all that much about .Mac at all; I&apos;ve never needed it.&amp;nbsp; I spent a fleeting moment being somewhat miffed before semi-logically deciding that it must have been my upgrade that installed it.&amp;nbsp; It was kind of annoying to have it just show up, but no worries, I thought, I&apos;ll just remove it.&lt;/p&gt; &lt;p&gt;The way I usually (now read: used to) manipulate menu bar icons is to open the preferences panel and tell the application not to appear on my menu bar.&amp;nbsp; Easy.&amp;nbsp; Except that no such option was available for .Mac Sync.&amp;nbsp; As I started getting more irritated by its presence and my seeming lack of ability to remove it, I decided to try something really simple, stupid and just drag it off.&amp;nbsp; Poof!&amp;nbsp; The icon disappeared into Apple&apos;s familiar little puff of smoke.&lt;/p&gt; &lt;p&gt;Nice.&lt;/p&gt;</description><pubDate>Thu, 15 Nov 2007 23:36:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2007/11/15/Mac-Sync</guid><category>Technical</category></item><item><title>Running MAMP Installed Services Without MAMP</title><link>http://robwilkerson.instantspot.com/blog/2007/11/13/Running-MAMP-Installed-Services-Without-MAMP</link><description>&lt;p&gt;Tonight, I walked in the door from work to this email from John:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;Greetings. I read your post on running MAMP with virtual hosts, which was the same thing I did.&lt;/p&gt; &lt;p&gt;Now MAMP annoys me by prompting me for my credentials each time it launches, since 80 is a low port.&lt;/p&gt; &lt;p&gt;After reading your blog, I thought you&apos;d be the kind of person whom  that would annoy, too, and you would have already come up with a nifty  startup thingy to get around it. I thought I would just request that  you send it to me whilst I continue to bask here in my laziness.&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;Well, I hadn&apos;t come up with any such a &amp;quot;nifty startup thingy&amp;quot;, but John&apos;s email amused me (by sounding remarkably similar to something I might say) so I thought I&apos;d look into it.&amp;nbsp; I have &lt;a href=&quot;http://mamp.info/en/mamp.html&quot;&gt;MAMP&lt;/a&gt; in my login items so I got this same request for authorization every time I logged in, but I restart so seldom that I never really gave it much thought.&amp;nbsp; It was just part of my startup process.&amp;nbsp; My MAMP-related login flow goes like this: &lt;strong&gt;Login -&amp;gt; Authenticate to start the MAMP servers -&amp;gt; Quit MAMP (leaving the services themselves running)&lt;/strong&gt;.&amp;nbsp; Now that John mentioned it, that &lt;em&gt;was&lt;/em&gt; annoying.&amp;nbsp; And now that it was on my mind, my annoyance would only grow.&amp;nbsp; Thanks for that, John.&amp;nbsp; :-)&lt;/p&gt; &lt;p&gt;So I started looking for a solution.&amp;nbsp; To solve the problem to &lt;em&gt;my&lt;/em&gt; satisfaction, I needed to solve John&apos;s problem and then some.&amp;nbsp; Here&apos;s what I was after:&lt;/p&gt; &lt;ol&gt;     &lt;li&gt;I wanted to avoid the post-login credential validation.&lt;/li&gt;     &lt;li&gt;I wanted the services - Apache and MySQL - to start when I booted up.&lt;/li&gt;     &lt;li&gt;I did not want the MAMP application to start when I booted up (I mean, hell, the first thing I did was quit it).&lt;/li&gt; &lt;/ol&gt; &lt;p&gt;Like any good Unix geek (or wannabe geek), I cracked open the terminal and found the first part of the solution.&amp;nbsp; Although stopping and starting Apache and MySQL from the command line are both fairly trivial tasks, MAMP ships with a handy shell script aptly named &lt;strong&gt;&lt;font face=&quot;courier new,courier&quot;&gt;start.sh&lt;/font&gt;&lt;/strong&gt;.&amp;nbsp; Guess what it does?&amp;nbsp; It calls &lt;font face=&quot;courier new,courier&quot;&gt;startApache.sh&lt;/font&gt; and &lt;font face=&quot;courier new,courier&quot;&gt;startMysql.sh&lt;/font&gt;.&amp;nbsp; Surprise.&amp;nbsp; I love when developers make it easy to work with their software.&amp;nbsp; After making sure that both servers were stopped, I executed the script:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font face=&quot;courier new,courier&quot;&gt; $ sudo ./start.sh&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Apache started fine, but MySQL wouldn&apos;t start.&amp;nbsp; Seems that since I installed MAMP as myself a few critical files were owned by me rather than by the system and that prevented &lt;a href=&quot;http://xkcd.com/149/&quot;&gt;sudo&lt;/a&gt; from doing what I needed with them.&amp;nbsp; To fix that, I modified the ownership of two directories:&lt;/p&gt; &lt;p&gt;&lt;strong&gt;&lt;font face=&quot;courier new,courier&quot;&gt; $ sudo chown -R mysql:admin /Applications/MAMP/db/mysql&lt;br /&gt; $ sudo chown -R mysql:admin /Applications/MAMP/tmp/mysql&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Both statements grant ownership of the respective directories to the &lt;font face=&quot;courier new,courier&quot;&gt;mysql&lt;/font&gt; user.&amp;nbsp; It should come as no great shock that this is the user that the MySQL server runs as rather than running as me or some other arbitrary user.&amp;nbsp; The first directory is the location of all of the database files and the second is a temporary file location to which MySQL needs to write from time to time.&amp;nbsp; Once these changes were made the start script ran as expected and both services started successfully.&lt;/p&gt; &lt;p&gt;The second part of that problem was to make the machine run that script at startup.&amp;nbsp; I guess I could have created an &lt;a href=&quot;http://en.wikipedia.org/wiki/Automator_(software)&quot;&gt;Automator&lt;/a&gt; application that executed the script and put the application in my login items, but that seemed too hacky for my tastes.&amp;nbsp; I like elegance.&amp;nbsp; Besides, that would only start the servers when I login.&amp;nbsp; I kind of wanted them to just start, you know, independent of me.&amp;nbsp; There may be other ways, but I chose to create a &lt;strong&gt;&lt;font face=&quot;courier new,courier&quot;&gt;.plist&lt;/font&gt;&lt;/strong&gt; file and save it in &lt;font face=&quot;courier new,courier&quot;&gt;&lt;strong&gt;/Library/LaunchDaemons&lt;/strong&gt;&lt;/font&gt;.&amp;nbsp; I created &lt;font face=&quot;courier new,courier&quot;&gt;&lt;strong&gt;/Library/LaunchDaemons/info.mamp.servers.plist&lt;/strong&gt;&lt;/font&gt; with the following content:&lt;/p&gt; &lt;p&gt;&lt;font face=&quot;courier new,courier&quot;&gt;  &lt;br /&gt; &lt;br /&gt; &lt;plist version=&quot;1.0&quot;&gt; &lt;br /&gt; &lt;dict&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp; &lt;key&gt;Label&lt;/key&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp; &lt;string&gt;info.mamp.servers&lt;/string&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp; &lt;key&gt;ProgramArguments&lt;/key&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp; &lt;array&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;string&gt;/Applications/MAMP/bin/start.sh&lt;/string&gt;&lt;br /&gt; &amp;nbsp;&amp;nbsp; &lt;/array&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp; &lt;key&gt;RunAtLoad&lt;/key&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp; &lt;true&gt; &lt;/true&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp; &lt;key&gt;ServiceDescription&lt;/key&gt; &lt;br /&gt; &amp;nbsp;&amp;nbsp; &lt;string&gt;This plist starts the Apache and MySQL servers that are shipped with MAMP&lt;/string&gt; &lt;br /&gt; &lt;/dict&gt; &lt;br /&gt; &lt;/plist&gt; &lt;/font&gt;&lt;/p&gt; &lt;p&gt;I rebooted and, with a kindly tip-o&apos;-the-hat to Emeril, BAM!&amp;nbsp; I had services with no MAMP.&amp;nbsp;&lt;/p&gt; &lt;p&gt;I honestly don&apos;t know whether the secondary authentication when MAMP starts is caused by the low port number (80) that I use as John suggests or whether it has something to do with the permissions as they existed before I changed them or something else entirely.&amp;nbsp; All I know is that now that I&apos;m not starting MAMP every time I login, I don&apos;t get the login box.&amp;nbsp; All three problems solved...even if I don&apos;t know exactly why one was a problem to begin with.&lt;/p&gt;</description><pubDate>Wed, 14 Nov 2007 01:20:00 GMT</pubDate><guid>http://robwilkerson.instantspot.com/blog/2007/11/13/Running-MAMP-Installed-Services-Without-MAMP</guid><category>Technical</category></item></channel></rss>