<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0" xml:base="http://jbenner.net/">
  <channel>
    <title />
    <link>http://jbenner.net/</link>
    <description />
    <language>en</language>
          <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/jbennersblog" type="application/rss+xml" /><item>
    <title>Review: NuSphere PhpED 5.6</title>
    <link>http://jbenner.net/blog/review-nusphere-phped-5-6</link>
    <description>&lt;p&gt;As I explained in my &lt;a href="/blog/disappointed-with-zend"&gt;previous post&lt;/a&gt;, I've been on the hunt for a new PHP&amp;nbsp;IDE. During past searches for this type of tool, I've always taken a glance at &lt;a href="http://www.nusphere.com/products/phped.htm"&gt;NuSphere's PhpED&lt;/a&gt; and usually went away screaming rather quickly because of how clunky, ugly, and just plain annoying the interface was (keep reading, though, they fixed this!). My last look at PhpED was verison 5.2 quite some time ago -- it was a good improvement over previous PhpED versions, but it couldn't compete with the Eclipse-based options (at least in the terms that mattered to me).&lt;/p&gt;
&lt;p&gt;Which brings me to an important note: what I&amp;nbsp;look for in an IDE is probably not exactly what another coder will look for in an IDE. From what I've experienced, choice of tools for most coders is 50% features/capabilities and 90% preference (oh hai, math!). For me, here is a list of features that are important:&lt;/p&gt;
&amp;lt;!--break--&gt;
&lt;ul&gt;
    &lt;li&gt;Clean, tabbed, highly customizable interface&lt;/li&gt;
    &lt;li&gt;Stability&lt;/li&gt;
    &lt;li&gt;Fast (operation, not necessarily start-up)&lt;/li&gt;
    &lt;li&gt;Good project/file management&lt;/li&gt;
    &lt;li&gt;Good/customizable syntax highlighting&lt;/li&gt;
    &lt;li&gt;Real-time, remote debugging&lt;/li&gt;
    &lt;li&gt;Code insight/navigation/etc&lt;/li&gt;
    &lt;li&gt;High degree of configurability (keyboard shortcuts, behavior of UI elements, etc)&lt;/li&gt;
    &lt;li&gt;Version control integration (SVN specifically)&lt;/li&gt;
    &lt;li&gt;Integration with other parts of my workflow (SSH, MySQL, [S]FTP, etc)&lt;/li&gt;
    &lt;li&gt;And as we saw with Zend, update regularity is important to me (especially if I pay for it)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;My First Day with PhpED&lt;/h4&gt;
&lt;p&gt;I went to &lt;a href="http://www.nusphere.com/index.htm"&gt;NuSphere's site&lt;/a&gt;, which still feels a little underwhelming for some reason, and downloaded, installed, and activated the PhpED Professional trial. PhpED installed easily and quickly, and getting an activation code for the trial was simple and fast.&lt;/p&gt;
&lt;p&gt;&lt;span class="inline inline-right"&gt;&lt;a href="/image/phped-debugger-in-action"&gt;&lt;img src="http://jbenner.net/sites/default/files/images/PhpED__Debugger_in_action.inline.png" alt="PhpED Debugger in Action" title="PhpED Debugger in Action"  class="image image-inline " width="238" height="180" /&gt;&lt;/a&gt;&lt;span class="caption" style="width: 236px;"&gt;&lt;strong&gt;PhpED Debugger in Action&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;I knew I&amp;nbsp;wanted to be able to do some real-time debugging on the Linux box under my desk, so I followed &lt;a href="http://www.nusphere.com/kb/technicalfaq/howto_install_dbg_module.htm"&gt;NuSphere's instructions&lt;/a&gt; on how to install their DBG debugger extension for PHP. I was pleased that their debugger installed without any trouble on PHP&amp;nbsp;5.2 on my Ubuntu 8.04 server. When starting a new project, you drop a dbg-wizard.php file into the docroot and PhpED test debugger functionality, providing you with feedback on any changes you should make to your server configuration -- such as disabling APC. I was impressed at the ease of the debugger setup. Oh, and compared to Zend's remote debugger, DBG is &lt;em&gt;fast&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;&lt;span class="inline inline-left"&gt;&lt;a href="/image/phped-new-project-wizard"&gt;&lt;img src="http://jbenner.net/sites/default/files/images/PhpED__Project_Wizard.inline.png" alt="PhpED New Project Wizard" title="PhpED New Project Wizard"  class="image image-inline " width="265" height="180" /&gt;&lt;/a&gt;&lt;span class="caption" style="width: 263px;"&gt;&lt;strong&gt;PhpED New Project Wizard&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;Next I wanted to pull my existing projects into PhpED. I work on a Vista machine that mounts a samba share containing the various docroots from my local Linux web server so I can edit files and test the local version of the site immediately without any bothersome file transfers to interrupt the process. PhpED's workspace/project setup easily and specifically accounted for this arrangement with some simple questions during the new project wizard. I just told PhpED that I&amp;nbsp;work with local files that the web server also has access to, gave PhpED details about the docroot and URL, and PhpED pulled in each project tree flawlessly.&lt;/p&gt;
&lt;p&gt;My next stop was syntax highlighting. During the very brief sting that I&amp;nbsp;worked with &lt;a href="http://macromates.com/"&gt;TextMate&lt;/a&gt;, I&amp;nbsp;fell in love with their default syntax highlight color schemes because they are easy on my poor coder eyes. PhpED's syntax highlight settings were easy to find and configure, resulting in a code interface that I was familiar and comfortable with.&lt;/p&gt;
&lt;p&gt;&lt;span class="inline inline-left"&gt;&lt;a href="/image/phped-pop-out-windows"&gt;&lt;img src="http://jbenner.net/sites/default/files/images/PhpED__Workspaces_Open.inline.png" alt="PhpED Pop-out Windows" title="PhpED Pop-out Windows"  class="image image-inline " width="238" height="180" /&gt;&lt;/a&gt;&lt;span class="caption" style="width: 236px;"&gt;&lt;strong&gt;PhpED Pop-out Windows&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;One of the things I&amp;nbsp;love about Eclipse is the incredibly customizable nature of its window interface. You can dock just about any window anywhere in the IDE, collapse them, temporarily expand them, split views -- just about anything I want. While Eclipse has spoiled me in this regard, I&amp;nbsp;was pleased to find that PhpED is fairly customizable as well. While PhpED can't do everything Eclipse can as far as customizing the interface, PhpED does enough for me to get the interface arrangement I like (only code is visible with pop-out tabs on either side for supporting features like project navigation, reference, etc).&lt;/p&gt;
&lt;p&gt;PhpED doesn't include SVN integration out-of-the-box, but their workspace/project navigator provides easy access to the Windows shell menu. This means that since I have &lt;a href="http://tortoisesvn.tigris.org/"&gt;TortoiseSVN&lt;/a&gt; installed, I was able to easily work with my SVN working copies. While I&amp;nbsp;don't feel that this is an ideal arrangement, it works and doesn't slow me down. I'd like to see tighter integration between PhpED and SVN -- even if it's in the form of more tightly integrating with TortoiseSVN. While I haven't tried this yet, it looks like there may be ways to &lt;a href="http://www.nusphere.com/kb/technicalfaq/tip_phped_and_svn.htm"&gt;get some tighter integration&lt;/a&gt; now.&lt;/p&gt;
&lt;p&gt;&lt;span class="inline inline-left"&gt;&lt;a href="/image/phped-terminal-window"&gt;&lt;img src="http://jbenner.net/sites/default/files/images/PhpED__Terminal.inline.png" alt="PhpED Terminal Window" title="PhpED Terminal Window"  class="image image-inline " width="270" height="163" /&gt;&lt;/a&gt;&lt;span class="caption" style="width: 268px;"&gt;&lt;strong&gt;PhpED Terminal Window&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;Another way in which I'm spoiled with code editors is how some will do little but meaningful things to help you code faster. Of particular interest and use to me is when the editor will auto-close brackets, parenthases, and quotes, then intelligently handle the code when you close them yourself (ie:&amp;nbsp;not adding any additional, unwanted closing characters). Zend Studio does this fairly nicely (though it gets confused sometimes), and a lot of PHP editors out there that I've tried make an attempt at this but end up being more annoying than with the feature off. PhpED, however, has implemented this type of code typing help very well. PhpED intelligent closes and manages brackets and such, pops up useful help when typing a function, and has fast, effective completion options. PhpED for another win here.&lt;/p&gt;
&lt;p&gt;&lt;span class="inline inline-right"&gt;&lt;a href="/image/phped-database-client"&gt;&lt;img src="http://jbenner.net/sites/default/files/images/PhpED__DB_Client.inline.png" alt="PhpED Database Client" title="PhpED Database Client"  class="image image-inline " width="209" height="180" /&gt;&lt;/a&gt;&lt;span class="caption" style="width: 207px;"&gt;&lt;strong&gt;PhpED Database Client&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;I was pretty happy with PhpED having discovered all the things I've already covered... but&amp;nbsp;I became somewhat thrilled with PhpED when I discovered its DB&amp;nbsp;Client and Terminal windows. PhpED lets you easily connect to many databases, browser their structure and data, and even directly query them right from within the IDE. Their terminal integration allows you to SSH (or telnet) and have the terminal window exist seamlessly inside the IDE as well. To be fair, Zend Studio has these features as well in its Remote System Management module -- but that feature is clumsy, hard to use, and often doesn't quite work right. PhpED's implementation of these features, however, is sensible, fast, and easy to use.&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;I'm pleased to say that through my whole week working with PhpED, I continued to discover new little shortcuts and features that made my life as a coder just a little bit better. PhpED has some very minor annoyances (ie: left arrow at beginning of line does not move cursor to end of previous line &lt;strong&gt;UPDATE:&amp;nbsp;&lt;/strong&gt;you can configure this to work like other editors!), but these are things that I've been able to quickly overlook. At the end of the week, I'm very happy with PhpED -- in fact, I think I'm almost ready to give NuSphere my money.&lt;/p&gt;
&lt;h4&gt;Summary&lt;/h4&gt;
&lt;p&gt;I kept a text document open all week and have collected pros, cons, better than Zend Studio for Eclipse (ZSE), worse than ZSE, nifty, and silly features.&lt;/p&gt;
&lt;p&gt;Pros:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Syntax highlight pretty customizable&lt;/li&gt;
    &lt;li&gt;Decent filesystem-based workspace/project management&lt;/li&gt;
    &lt;li&gt;Configurable shortcuts&lt;/li&gt;
    &lt;li&gt;Configurable IDE layout (can hide stuff for maximum code area)&lt;/li&gt;
    &lt;li&gt;Smart handling of brackets, parenthases, quotes, etc&lt;/li&gt;
    &lt;li&gt;Excellent debugger/profiler that just works&lt;/li&gt;
    &lt;li&gt;Intelligent project configuration&lt;/li&gt;
    &lt;li&gt;Good external tool integration&lt;/li&gt;
    &lt;li&gt;Excellent DB client&lt;/li&gt;
    &lt;li&gt;Excellent terminal/SSH client&lt;/li&gt;
    &lt;li&gt;Excellent and extensible help integration&lt;/li&gt;
    &lt;li&gt;Find declaration&lt;/li&gt;
    &lt;li&gt;Shows PHPDoc data&lt;/li&gt;
    &lt;li&gt;Code folding that doesn't make me want to shoot myself&lt;/li&gt;
    &lt;li&gt;Good code navigator/explorer&lt;/li&gt;
    &lt;li&gt;Handy features available on side of every editor tab&lt;/li&gt;
    &lt;li&gt;Floating of tabs is handy, esp. with multiple monitors&lt;/li&gt;
    &lt;li&gt;Fast&lt;/li&gt;
    &lt;li&gt;Pretty configurable (lets me turn annoying stuff off)&lt;/li&gt;
    &lt;li&gt;Lets you scroll past EOL&lt;/li&gt;
    &lt;li&gt;Intelligent PHPDoc start (auto-populates param statements)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Cons:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;No plugin system that I can see&lt;/li&gt;
    &lt;li&gt;Would rather see built-in SVN support than relying on Tortoise&lt;/li&gt;
    &lt;li&gt;No line number color change on changed lines to show diffs from saved version&lt;/li&gt;
    &lt;li&gt;No X on tabs&lt;/li&gt;
    &lt;li&gt;Can't lock toolbars&lt;/li&gt;
    &lt;li&gt;No code formatting? Maybe I just haven't found it?&lt;/li&gt;
    &lt;li&gt;Behavior of unpinned windows seems a little off&lt;/li&gt;
    &lt;li&gt;Left arrow at beginning of line does not go to end of previous line&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Better than ZSE:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Faster refresh of code warnings/errors&lt;/li&gt;
    &lt;li&gt;Syntax highlight settings doesn't mess with popups&lt;/li&gt;
    &lt;li&gt;CSS editing faster, better&lt;/li&gt;
    &lt;li&gt;Debugger install was relatively easy and worked the first time&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Worse than ZSE:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;No plugin repository for adding nifty features&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Nifty:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Dynamic highlight mode&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Silly:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&amp;quot;Full Screen&amp;quot; mode&lt;/li&gt;
    &lt;li&gt;Popup PHPDoc help when using a function destroys PHPDoc formatting (indents, etc)&lt;/li&gt;
    &lt;li&gt;Popup function help doesn't show defaults used in function declaration&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="image-clear"&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=KxBO8WZeDGQ:zT4mjAvBxQ0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=KxBO8WZeDGQ:zT4mjAvBxQ0:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=KxBO8WZeDGQ:zT4mjAvBxQ0:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=KxBO8WZeDGQ:zT4mjAvBxQ0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=KxBO8WZeDGQ:zT4mjAvBxQ0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=KxBO8WZeDGQ:zT4mjAvBxQ0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=KxBO8WZeDGQ:zT4mjAvBxQ0:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
     <comments>http://jbenner.net/blog/review-nusphere-phped-5-6#comments</comments>
 <category domain="http://jbenner.net/topic/nusphere">NuSphere</category>
 <category domain="http://jbenner.net/topic/opinion">Opinion</category>
 <category domain="http://jbenner.net/topic/php">PHP</category>
 <category domain="http://jbenner.net/topic/phped">PhpED</category>
 <category domain="http://jbenner.net/topic/review">Review</category>
 <category domain="http://jbenner.net/topic/tools">Tools</category>
 <pubDate>Fri, 20 Mar 2009 15:07:52 +0000</pubDate>
 <dc:creator>Josh</dc:creator>
 <guid isPermaLink="false">25 at http://jbenner.net</guid>
  </item>
  <item>
    <title>Disappointed with Zend</title>
    <link>http://jbenner.net/blog/disappointed-with-zend</link>
    <description>&lt;p&gt;Every few months as I&amp;nbsp;sit at my desk and code away, I can't help but wonder to myself, &amp;quot;Is there anything better out there?&amp;quot; I'm not being metaphysical or introspective -- I'm talking about my &lt;a href="http://en.wikipedia.org/wiki/Integrated_development_environment"&gt;integrated development environment (IDE)&lt;/a&gt;. Most coders I've met are the same way:&amp;nbsp;we find a tool we like, use it for a while, but usually end up wanting something more or different. Perhaps discontent is a core part of human nature, but every few months I go looking for better tools.&lt;/p&gt;
&lt;p&gt;I've been happily using &lt;a href="http://www.zend.com/en/products/studio/"&gt;Zend Studio for Eclipse&lt;/a&gt; (ZSE) for just over a year now. I had loved &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; + &lt;a href="http://www.phpeclipse.com/"&gt;PHPEclipse&lt;/a&gt; for a long while before moving on to Eclipse +&amp;nbsp;&lt;a href="http://www.eclipse.org/pdt/"&gt;PDT&lt;/a&gt;, and had finally paid for ZSE to get a &lt;a href="http://www.zend.com/en/products/studio/compare"&gt;few extra features&lt;/a&gt;, support, and install packages that didn't take me hours to assemble and install. I've grown to know and understand Eclipse well, which is part of why I've been using Eclipse in one form or another for about 4 years now.&lt;/p&gt;
&lt;p&gt;In truth, I was fine using ZSE for now. Work is keeping me busy, there is plenty to do at our new house... honestly, I didn't care to spend time looking into another solution for my daily-use PHP&amp;nbsp;IDE. Then my ZSE license expired, and while I can still use ZSE, I cannot get any updates or bug fixes until I pay Zend's extortion fee of $200.&lt;/p&gt;
&lt;p&gt;Let me be clear: I understand and accept paying recurring licensing fees. Except that in a year, Zend has only managed two updates that pass for anything more than the most minor bug fixes. And $200 for yearly maintenance for a product I bought for $300 a year ago (they were running a promo) just seems too high.&lt;/p&gt;
&lt;p&gt;If Zend was offering me some great new feature, or even fixes to all of the mild annoying bugs that run a little rampant through ZSE -- I'd pay the fee! Yes, even $200! However, given the current state of ZSE and the paucity of updates from Zend, I'd have to strongly consider even putting $100 toward ZSE at this point.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=0a2cll_U0cg:jm1LQ92dEBk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=0a2cll_U0cg:jm1LQ92dEBk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=0a2cll_U0cg:jm1LQ92dEBk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=0a2cll_U0cg:jm1LQ92dEBk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=0a2cll_U0cg:jm1LQ92dEBk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=0a2cll_U0cg:jm1LQ92dEBk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=0a2cll_U0cg:jm1LQ92dEBk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
     <comments>http://jbenner.net/blog/disappointed-with-zend#comments</comments>
 <category domain="http://jbenner.net/topic/eclipse">Eclipse</category>
 <category domain="http://jbenner.net/topic/opinion">Opinion</category>
 <category domain="http://jbenner.net/topic/tools">Tools</category>
 <category domain="http://jbenner.net/topic/zend">Zend</category>
 <pubDate>Thu, 19 Mar 2009 18:10:22 +0000</pubDate>
 <dc:creator>Josh</dc:creator>
 <guid isPermaLink="false">24 at http://jbenner.net</guid>
  </item>
  <item>
    <title>Why I Cancelled My Mozy.com Subscription</title>
    <link>http://jbenner.net/blog/why-i-cancelled-my-mozy-com-subscription</link>
    <description>&lt;p&gt;&lt;a href="http://mozy.com"&gt;Mozy&lt;/a&gt; is an online backup solution that has grown in popularity recently. My wife and I&amp;nbsp;have a lot of pictures, music, and generally important files on our computers that we know need to get backed up in a reliable and secure fashion. Mozy seemed like a natural choice.&lt;/p&gt;
&lt;p&gt;Now, my profession involves computers, servers, backups, etc. Our home setup consists of my main Vista workstation, my Vista laptop, my OS&amp;nbsp;X MacBook, my wife's Vista laptop, the central Ubuntu server, and the Mac Mini that handles all of our in-house backups (time machine as well as file sync, etc). We don't have more music or pictures than the typical computer user -- ours is just dispersed among many machines and all gets synchronized or backed up to the Mac Mini running OS&amp;nbsp;X Server.&lt;/p&gt;
&lt;p&gt;So, I signed up for MozyHome, their personal-use, unlimited backup plan, and went happily on my way downloading the OS&amp;nbsp;X client to set up the online backup for our files. Imagine my surprise and disappointment when MozyHome refused to install, for no other reason than I was running a &amp;quot;Server&amp;quot; SKU product, which MozyHome refuses to operate on. There was no technical reason, no software capability limitation, and no resource problem causing this -- the MozyHome client is specifically disabled for Operating Systems it thinks should use their &amp;quot;Pro&amp;quot; product.&lt;/p&gt;
&lt;p&gt;I contact Mozy support, and their only answer is, &amp;quot;You must use MozPro to backup a server system.&amp;quot; Great. Now what?&lt;/p&gt;
&lt;p&gt;Plan B:&amp;nbsp;I'll mount the backup drive attached to my Mac Mini to my windows machine and run the backups from there.&lt;/p&gt;
&lt;p&gt;Fail again! MozyHome does not support backing up network drives. Not because the Mozy technology doesn't support this -- because their &amp;quot;Server&amp;quot; line of client software does this no problem. Again, this limitation is put in place specifically for marketing reasons.&lt;/p&gt;
&lt;p&gt;Sure, I could probably come up with a Plan C that would involve duplicating all of my backups to a windows box and pushing the Mozy updates from there, but that's not what my windows machines are set up to be spending their time and resources on. I have a home network setup that is great for backup -- but Mozy's silly limitations prevent me from taking advantage of them.&lt;/p&gt;
&lt;p&gt;So, at least until I have a spare box that runs windows or OS X (non server SKUs of course!) available to house all of our consolidated files, we won't be using Mozy. In the meantime, I'm in the market for a decent backup solution, preferably compatible with OS&amp;nbsp;X and/or Linux... I'd even settle for a good rsync-based backup solution.&lt;/p&gt;
&lt;p&gt;Any suggestions?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=LDvJ0A5P0wI:AD4AU-UKL5U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=LDvJ0A5P0wI:AD4AU-UKL5U:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=LDvJ0A5P0wI:AD4AU-UKL5U:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=LDvJ0A5P0wI:AD4AU-UKL5U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=LDvJ0A5P0wI:AD4AU-UKL5U:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=LDvJ0A5P0wI:AD4AU-UKL5U:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=LDvJ0A5P0wI:AD4AU-UKL5U:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
     <comments>http://jbenner.net/blog/why-i-cancelled-my-mozy-com-subscription#comments</comments>
 <category domain="http://jbenner.net/topic/backup">Backup</category>
 <category domain="http://jbenner.net/topic/defective-by-design">Defective by Design</category>
 <category domain="http://jbenner.net/topic/limitations">Limitations</category>
 <category domain="http://jbenner.net/topic/mozy">Mozy</category>
 <category domain="http://jbenner.net/topic/software">Software</category>
 <category domain="http://jbenner.net/topic/tools">Tools</category>
 <pubDate>Mon, 02 Mar 2009 18:11:59 +0000</pubDate>
 <dc:creator>Josh</dc:creator>
 <guid isPermaLink="false">23 at http://jbenner.net</guid>
  </item>
  <item>
    <title>The Essentials: What I Install on a Fresh Workstation</title>
    <link>http://jbenner.net/blog/the-essentials-what-i-install-on-a-fresh-workstation</link>
    <description>&lt;p&gt;This past weekend, for a number of reasons I won't get into now, I performed a complete &amp;quot;re-install&amp;quot; of my primary workstation. Previously, I was using XP Pro SP2, which had been installed and running smoothly on the machine for nearly two solid years. This also meant that my machine had two years worth of my customized configurations, applications, tools, etc., so a re-install also meant bringing a fresh Windows (Vista this time) installation up to speed and in sync with my preferences.&lt;/p&gt;
&lt;p&gt;During the process of re-installing all the various programs and utilities that I make regular use of, it occurred to me that I was installing the things that I just couldn't do without -- the tools I keep in my toolbelt at all times. I don't know if I've got everything installed yet, but I know I've installed all the primary tools that I use on a regular basis... and they are listed here:&lt;/p&gt;
&amp;lt;!--break--&gt;
&lt;h3&gt;AVG Free Anti-Virus&lt;/h3&gt;
&lt;p class="rteindent1"&gt;&lt;a href="http://free.grisoft.com"&gt;http://free.grisoft.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Regardless of the enhanced security of Windows Vista, the very first thing I installed was AVG Free. This free little anti-virus is great for the price tag and reasonably effective at catching threats.&lt;/p&gt;
&lt;h3&gt;Firefox 3&lt;/h3&gt;
&lt;p class="rteindent1"&gt;&lt;a href="http://getfirefox.com"&gt;http://getfirefox.com&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Firefox is by far my browser of choice due to its features, speed, extensibility, standards compliance, and cross-platform support. Along with Firefox I also install a standard battery of extensions, including:&lt;/p&gt;
&lt;ul class="rteindent1"&gt;
    &lt;li&gt;Firebug&lt;/li&gt;
    &lt;li&gt;Web Developer Toolbar&lt;/li&gt;
    &lt;li&gt;YSlow&lt;/li&gt;
    &lt;li&gt;Download status bar&lt;/li&gt;
    &lt;li&gt;Foxmarks&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Notepad++&lt;/h3&gt;
&lt;p class="rteindent1"&gt;http://notepad-plus.sourceforge.net/uk/site.htm&lt;br /&gt;
&lt;br /&gt;
For my simple text-editing and random coding, Notepad++ is my weapon of choice. I spent some time taking a look at the editors highlighted over at &lt;a href="http://lifehacker.com/385929/best-text-editors"&gt;LifeHacker&lt;/a&gt;, but Notepad++&amp;nbsp;has just the right mix of everything for my taste.&lt;/p&gt;
&lt;h3&gt;PuTTY/PuTTY Tray&lt;/h3&gt;
&lt;p class="rteindent1"&gt;PuTTY:&amp;nbsp;&lt;a href="http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html"&gt;http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html&lt;/a&gt;&lt;br /&gt;
PuTTY Tray:&amp;nbsp;&lt;a href="http://www.xs4all.nl/~whaa/putty/"&gt;http://www.xs4all.nl/~whaa/putty/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I've looked at other programs for Windows, but they are either too expensive, too bloated, or just too limited. PuTTY is by far my favorite SSH/terminal program for Windows. I install the full PuTTY package including PuTTYGen and the like, then replace the putty.exe file with the exe from the PuTTY Tray project, to get just a few more nice features that make it that much better.&lt;/p&gt;
&lt;h3&gt;Zend Studio for Eclipse&lt;/h3&gt;
&lt;p class="rteindent1"&gt;&lt;a href="http://www.zend.com/en/products/studio/"&gt;http://www.zend.com/en/products/studio/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
As covered &lt;a href="http://jbenner.net/blog/zend-studio-for-eclipse-6-1"&gt;previously&lt;/a&gt;, I use ZSE as my primary IDE for my web development work.&lt;/p&gt;
&lt;h3&gt;MySQL GUI&amp;nbsp;Tools&lt;/h3&gt;
&lt;p class="rteindent1"&gt;&lt;a href="http://dev.mysql.com/downloads/gui-tools/5.0.html"&gt;http://dev.mysql.com/downloads/gui-tools/5.0.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
During the course of web development, you usually end up interacting with databases a good bit. I've found that the MySQL Query Browser is a handy little tool, especially when working in a local development environment. This is probably a tool I could do without or even find a better fit, but it got installed quickly nonetheless -- because I'm familiar with it.&lt;br /&gt;
&lt;br /&gt;
P.S.:&amp;nbsp;It's a rather large shame that MySQL decided to cripple the free version of &lt;a href="http://www.mysql.com/products/workbench/"&gt;MySQL&amp;nbsp;Workbench&lt;/a&gt; and charge you $100 for some of the best features. I don't mind paying for software, but the value provided by Workbench is not worth $100, especially when many of those features used to be free.&lt;/p&gt;
&lt;h3&gt;KatMouse&lt;/h3&gt;
&lt;p class="rteindent1"&gt;&lt;a href="http://ehiti.de/katmouse/"&gt;http://ehiti.de/katmouse/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
KatMouse is a little Windows interface tweak that makes the cursor behave a little more like Linux desktops or OS X by allowing you to use the scroll wheel to scroll a window does not have the focus but is directly under the cursor. Once you have this functionality you never want to go back... imagine not having to click in the list of files to scroll through it or not having to switch windows to scroll that web page you have open behind your terminal...&lt;/p&gt;
&lt;h3&gt;Taskix&lt;/h3&gt;
&lt;p class="rteindent1"&gt;&lt;a href="http://taskix.robustit.com/"&gt;http://taskix.robustit.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Taskix is simple and to the point:&amp;nbsp;it lets you drag taskbar items to reorganize them. It is lightweight and just works, so I love it. Thanks &lt;a href="http://lifehacker.com/5045312/taskix-enables-taskbar-reordering-with-a-small-footprint"&gt;LifeHacker &lt;/a&gt;for turning me on to this little gem.&lt;/p&gt;
&lt;h3&gt;FileZilla&lt;/h3&gt;
&lt;p class="rteindent1"&gt;&lt;a href="http://filezilla-project.org/"&gt;http://filezilla-project.org/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I have been using FileZilla for (S)FTP transfers for as long as I&amp;nbsp;can remember -- long before it was a slick as it is now. &lt;a href="http://lifehacker.com/5042583/hive-five-winner-for-best-ftp-client-filezilla"&gt;Many agree&lt;/a&gt; that FileZilla is the best FTP program out there.&lt;/p&gt;
&lt;h3&gt;eWallet&lt;/h3&gt;
&lt;p class="rteindent1"&gt;&lt;a href="http://www.iliumsoft.com/wallet.htm"&gt;http://www.iliumsoft.com/wallet.htm&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
eWallet is a little addiction I picked up a couple years ago at my last job. This is where I keep all of my passwords and important information, safely encrypted behind my master password. As an added bonus, Illium software (the maker of eWallet) just released an iPhone version of eWallet that syncs over WiFi with your Windows eWallet!&lt;/p&gt;
&lt;h3&gt;Launchy&lt;/h3&gt;
&lt;p class="rteindent1"&gt;&lt;a href="http://www.launchy.net/"&gt;http://www.launchy.net/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Since I&amp;nbsp;am using Vista this time around, I thought Vista's nifty search bar in the start menu would replace Launchy. However, my love for Launchy's power, customizability, and great plugins brought me running back into Launchy's arms. Launchy is a simple (although not very light-weight) application launcher that indexes your Start Menu (and whatever you want) and provides a great little hotkey-induced interface for launching your programs, documents, or whatever you want. The excellent &lt;a href="http://code.google.com/p/putty-launchy-plugin/"&gt;PuTTY Plugin&lt;/a&gt; makes a great companion to PuTTY as well!&lt;/p&gt;
&lt;h3&gt;TUGzip&lt;/h3&gt;
&lt;p class="rteindent1"&gt;&lt;a href="http://www.tugzip.com/"&gt;http://www.tugzip.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
After a long time of using 7-Zip, I found TUGZip about a year ago. TUGZip is extremely fast, has an excellent shell extension (right click on a file and extract it in place), and supports every compression format I've ever heard of... and many that I've &lt;em&gt;never&lt;/em&gt; heard of. Best of all, it's free!&lt;/p&gt;
&lt;h3&gt;CrossClip&lt;/h3&gt;
&lt;p class="rteindent1"&gt;&lt;a href="http://www.stretchedout.com/products/crossclip/crossclip.php"&gt;http://www.stretchedout.com/products/crossclip/crossclip.php&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
I started using CrossClip when I started working from home a year ago. My Windows machine sits front and center, flanked by my Ubuntu laptop running virtual machines on the left and my MacBook Pro with OS X on the right. Swivelling back and forth between the platforms is great fun until you realize that you would give just about anything to be able to quickly and easily copy from one computer and paste to the other. CrossClip lets you do that, and it works on Windows, Mac, and Linux (though I&amp;nbsp;don't use it on Linux right now because of synergy), and it turns out I&amp;nbsp;only had to sacrifice $19.95.&lt;/p&gt;
&lt;h3&gt;Synergy&lt;/h3&gt;
&lt;p class="rteindent1"&gt;&lt;a href="http://synergy2.sourceforge.net/"&gt;http://synergy2.sourceforge.net/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Synergy, with all its quirks and oddities, is still the only cross-platform way I've found to use the keyboard/mouse of one computer to control another computer. I use the keyboard/mouse connected to my Windows workstation to also use my Ubuntu workstation to the left.&lt;br /&gt;
&lt;br /&gt;
Note:&amp;nbsp;If you need this functionality between two Windows computers, check out Stardock's &lt;em&gt;excellent&lt;/em&gt; &lt;a href="http://www.stardock.com/products/multiplicity/"&gt;Multiplicity&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Jing&lt;/h3&gt;
&lt;p class="rteindent1"&gt;&lt;a href="http://www.jingproject.com/"&gt;http://www.jingproject.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Jing is awesome. Never has it been so easy to make a screen capture (with or without voice-over), take a screenshot of just part of the screen, or share your captures with the rest of the world. You have to try it to understand -- I&amp;nbsp;use it regularly to collaborate with coworkers or explain things to clients.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=NZcPOMthirw:EPSQxxjwBmA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=NZcPOMthirw:EPSQxxjwBmA:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=NZcPOMthirw:EPSQxxjwBmA:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=NZcPOMthirw:EPSQxxjwBmA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=NZcPOMthirw:EPSQxxjwBmA:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=NZcPOMthirw:EPSQxxjwBmA:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=NZcPOMthirw:EPSQxxjwBmA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
     <comments>http://jbenner.net/blog/the-essentials-what-i-install-on-a-fresh-workstation#comments</comments>
 <category domain="http://jbenner.net/topic/opinion">Opinion</category>
 <category domain="http://jbenner.net/topic/software">Software</category>
 <category domain="http://jbenner.net/topic/tools">Tools</category>
 <category domain="http://jbenner.net/topic/web-development">Web Development</category>
 <pubDate>Wed, 22 Oct 2008 20:13:15 +0000</pubDate>
 <dc:creator>Josh</dc:creator>
 <guid isPermaLink="false">22 at http://jbenner.net</guid>
  </item>
  <item>
    <title>Quick Tip: Route All PHP E-Mails for Development</title>
    <link>http://jbenner.net/blog/quick-tip-route-all-php-e-mails-for-development</link>
    <description>&lt;p&gt;I do a lot of work involving PHP-based web development. I often find myself needing to test e-mail functionality of a complex PHP application (such as Drupal), but I want to be sure that emails won't be sent to any of the unsuspecting users in the database of the application I'm testing.&lt;/p&gt;
&lt;p&gt;Do accomplish this, I make a small but important change to my php.ini (actually in my conf.d/dev_mail.ini -- but it's the same thing):&lt;/p&gt;
&lt;p&gt;sendmail_path="/usr/sbin/sendmail -i user@host.tld"&lt;/p&gt;
&lt;p&gt;This tells PHP to use this command line whenever the mail() function is used to send an email. PHP's default here is "sendmail -i -t". The -t tells sendmail to scan the message text for To:, Cc:, and Bcc: headers to determine where to deliver the mail. By eliminating the -t we tell sendmail to use the email address(es) on the command line to determine delivery, thus making sure that no matter what PHP's mail() tells sendmail, it will deliver to the address you want.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=kSA1jkDeuWk:t3PVDRQQAbY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=kSA1jkDeuWk:t3PVDRQQAbY:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=kSA1jkDeuWk:t3PVDRQQAbY:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=kSA1jkDeuWk:t3PVDRQQAbY:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=kSA1jkDeuWk:t3PVDRQQAbY:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=kSA1jkDeuWk:t3PVDRQQAbY:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=kSA1jkDeuWk:t3PVDRQQAbY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
     <comments>http://jbenner.net/blog/quick-tip-route-all-php-e-mails-for-development#comments</comments>
 <category domain="http://jbenner.net/topic/php">PHP</category>
 <category domain="http://jbenner.net/topic/quick-tip">Quick Tip</category>
 <category domain="http://jbenner.net/topic/web-development">Web Development</category>
 <pubDate>Wed, 15 Oct 2008 17:49:33 +0000</pubDate>
 <dc:creator>Josh</dc:creator>
 <guid isPermaLink="false">20 at http://jbenner.net</guid>
  </item>
  <item>
    <title>Zend Studio for Eclipse 6.1</title>
    <link>http://jbenner.net/blog/zend-studio-for-eclipse-6-1</link>
    <description>&lt;p&gt;I'm one of "those" people that paid for &lt;a href="http://eclipse.org"&gt;Eclipse&lt;/a&gt;, an open source integrated development environment (&lt;a href="http://en.wikipedia.org/wiki/Integrated_development_environment"&gt;IDE&lt;/a&gt;). I originally bought it because I love and use Eclipse a lot for my work and I wanted commercially available support for the product on which I depend so heavily.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://zend.com"&gt;Zend&lt;/a&gt; recently released version 6.1 of Studio for Eclipse, with very little (if any) fanfare or announcements (I didn't know about it until I looked at the download site), compared to the release of 6.0.1 which was heralded in their newsletter, all over their website, and everywhere Zend's press team has any influence. I find this ironic, because 6.1 contains huge improvements and more fixes than the upgrade to 6.0.1 did.&lt;/p&gt;
&lt;p&gt;Clearly the biggest change is Studio 6.1's move to being based on Eclipse 3.4, the most recent edition of the IDE. This brings with it a whole slew of fixes and improvements on its own, such as a (marginally) improved install/update engine, more efficiency with how the thousands of Eclipse files are handled, some better over-the-shoulder security, icons and more colors now in various interfaces (such as search), and a whole slew of enhancements to SWT, the graphics engine that renders Eclipse.&lt;/p&gt;
&lt;p&gt;Anyone who has used Eclipse/PDT knows that there is a lurking bug that manifests seemingly at random during which the PHP builder/parser will get stuck in some sort of infinite loop. This tied up the workspace task queue, which meant that many other functions were useless when this bug reared its ugly head. The only solution was to kill the Eclipse process and restart it, hoping that your workspace didn't require any Notepad surgery to recover. All that is over in the new version of Studio for Eclipse. Let the villagers rejoice!&lt;/p&gt;
&lt;p&gt;A minor annoyance I encountered while updating to 6.1 is that it's not actually an update. Instead, I had to download the full 6.1 release and install it separate from 6.0.x. Zend claims this is because 6.1 uses Eclipse 3.4 -- apparently there isn't an easy upgrade path from 3.3 to 3.4 -- oh well. Overall, though, just installing 6.1 was fine as it was able to load up and understand my workspace just fine. The worst part was re-installing my favorite plugins, like &lt;a href="http://www.bastian-bergerhoff.com/eclipse/features/web/QuickREx/toc.html"&gt;QuickRex&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;While Zend solved my biggest gripe about Studio for Eclipse (the building PHP problem mentioned above), they've managed to incorporate a new, really annoying issue. If the Code Analyzer marks a part of your code with a warning or error, in some cases the syntax highlighting just stops after that line. The only way I've been able to get the syntax highlighting to return is to disable the specific error that the Code Analyzer was flagging (usually something like using the value of a function that might not return a value -- duh, then NULL is a possible return!) and rebuild the file. The next time I encounter it, I'm reporting it to Zend to see if that commercial support I paid for really works...&lt;/p&gt;
&lt;p&gt;All-in-all -- I'm very pleased with Studio 6.1, and at this point, I'll continue to be a Zend customer, and Studio for Eclipse will continue to be my IDE of choice.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=mpBAPTk9BE4:9GF28WyYF9I:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=mpBAPTk9BE4:9GF28WyYF9I:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=mpBAPTk9BE4:9GF28WyYF9I:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=mpBAPTk9BE4:9GF28WyYF9I:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=mpBAPTk9BE4:9GF28WyYF9I:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=mpBAPTk9BE4:9GF28WyYF9I:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=mpBAPTk9BE4:9GF28WyYF9I:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
     <comments>http://jbenner.net/blog/zend-studio-for-eclipse-6-1#comments</comments>
 <category domain="http://jbenner.net/topic/eclipse">Eclipse</category>
 <category domain="http://jbenner.net/topic/opinion">Opinion</category>
 <category domain="http://jbenner.net/topic/tools">Tools</category>
 <category domain="http://jbenner.net/topic/web-development">Web Development</category>
 <category domain="http://jbenner.net/topic/zend">Zend</category>
 <pubDate>Fri, 26 Sep 2008 18:28:15 +0000</pubDate>
 <dc:creator>Josh</dc:creator>
 <guid isPermaLink="false">19 at http://jbenner.net</guid>
  </item>
  <item>
    <title>Drupal for Firebug</title>
    <link>http://jbenner.net/blog/drupal-for-firebug</link>
    <description>&lt;p&gt;
Last month &lt;a href="http://chapterthree.com"&gt;Chapter Three&lt;/a&gt; &lt;a href="http://www.chapterthree.com/blog/matt_cheney/drupal_for_firebug"&gt;announced&lt;/a&gt; they were working on a &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/8370"&gt;Firefox plugin&lt;/a&gt; and &lt;a href="http://drupal.org/project/drupalforfirebug"&gt;Drupal module&lt;/a&gt; that would allow Firebug to talk with Drupal. As a Web Developer who uses &lt;a href="http://getfirebug.com"&gt;Firebug&lt;/a&gt; heavily every day and who specializes in &lt;a href="http://drupal.org"&gt;Drupal&lt;/a&gt;, this announcement from Chapter Three got me a little excited -- so I installed the plugin, enabled the module, and gave it a shot.
&lt;/p&gt;
&amp;lt;!--break--&gt;
&lt;h4&gt;Installing the DrupalForFirebug Firefox Extension&lt;/h4&gt;
&lt;p&gt;
Downloading and installing the DrupalForFirebug Firefox extension was basically like installing any other extension for Firefox: find it, click the link, let Firefox install it, then restart Firefox. Except one little oddity: in order to download/install from &lt;a href="http://addons.mozilla.org"&gt;addons.mozilla.org&lt;/a&gt;, you have to have an account on the site and be logged in because DrupalForFirebug is in a pre-release status. Not a big deal, so I signed up, clicked the link in my confirmation email, and went on my way downloading the extension.
&lt;/p&gt;
&lt;h4&gt;Installing the DrupalForFirebug Drupal Module&lt;/h4&gt;
&lt;p&gt;
Installing the Drupal module, on the other hand, involved nothing special at all. I just downloaded the module from the Drupal.org &lt;a href="http://drupal.org/project/drupalforfirebug"&gt;project page&lt;/a&gt;, unzipped it into my Drupal install's sites/all/modules directory, and enabled the module in the Drupal module administration page (note there are two modules, both required). Also, if you plan to use DrupalForFirebug with a user other than user 1, then you may have to grant the appropriate permissions (I did this for testing things as an anonymous user).
&lt;/p&gt;
&lt;h4&gt;Using DrupalForFirebug&lt;/h4&gt;
&lt;p&gt;
One of the unfortunately rare, but pleasantly surprising events when working with pre-release software, especially software targeted at other developers, is when it works the way it is intended the first time. I took my newly-enhanced Firefox and navigated to the login page of my newly-enhanced Drupal instance and was very pleased to see this section available in my Firebug window:
&lt;br /&gt;&lt;br /&gt;
&lt;img src="/sites/default/files/drupalforfirebug1.png" /&gt;
&lt;br /&gt;
The DrupalForFirebug module processed the forms on the page (the login form in this case) and output useful information inside a hidden div at the bottom of the page. The Firefox/Firebug extension then pulls that hidden data and puts it into a convenient spot inside the ever-open Firebug interface. And the fun doesn't just stop with outputting FormsAPI arrays. DrupalForFirebug will also tell you useful bits of info, such as:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;List of SQL queries, their exection times, and what function called the query (just grabs output from &lt;a href="http://drupal.org/project/devel"&gt;Devel module&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Dump of any user objects loaded during page execution&lt;/li&gt;
&lt;li&gt;Dump of any node loaded during page execution&lt;/li&gt;
&lt;li&gt;Dump of any view built during page execution&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
DrupalForFirebug also provides a quick and easy wrapper around Devel's execute PHP code feature, letting you execute arbitrary PHP code on the server from within the Firebug window.
&lt;/p&gt;
&lt;h4&gt;Getting the Most of out DrupalForFirebug&lt;/h4&gt;
&lt;p&gt;
If DrupalForFirebug just had the features already mentioned, it would be worth using. However, the authors took some initiative and included a means for module developers (or debuggers) to output information from their code in a meaningful and well-organized fashion. If you're a seasoned Drupal developer, you've probably done your share of print_r($node) and the like when trying to track down an odd behavior or figure out what data is available to you at the theme level (let's just ignore real-time debugging for now, even though that's still by far my preferred method). The DrupalForFirebug module provides a simple function, firep(), that lets you send in any data, and DrupalForFirebug will wrap it in PRE tags and output it in the General tab of Firebug.
&lt;/p&gt;
&lt;p&gt;
Here's an example I had while working on a site just recently. I had some data stored in the session while going through a wizard-like series of pages. I was debugging the process and I wanted to be able to quickly see what was in the session on each page load. Real-time debugging wasn't ideal for this as there were many page loads during the series of tests I was performing, so instead, I used firep():
&lt;/p&gt;
&lt;div class="geshifilter"&gt;&lt;pre class="php geshifilter-php" style="font-family:monospace;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; my_module_menu&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$may_cache&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
  &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #339933;"&gt;!&lt;/span&gt;&lt;span style="color: #000088;"&gt;$may_cache&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
    &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;module_exists&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'drupalforfirebug'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
      firep&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$_SESSION&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;'Session'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
    &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
  &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;
This bit of code put the entire $_SESSION variable dump into the General tab in Firebug on every page load, so I could get a quick insight into what data was being maintained in the session. Using this I was able to quickly track down a silly typo that was putting the data I wanted into the wrong element of the session variable. If you're wondering what the optional second argument is, it is a label placed above the data output in the Firebug window. This is so you can identify various dumps if there are more than one during a page load.
&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
DrupalForFirebug has earned itself a place in my Drupal toolkit for now. I'm curious to see how often I'll use it over real-time debugging, and I'm anxious to see if the developers of this tool maintain it well and/or take it any further than it already is.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=sHf05j17iT0:0jK8ntsU8Tw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=sHf05j17iT0:0jK8ntsU8Tw:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=sHf05j17iT0:0jK8ntsU8Tw:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=sHf05j17iT0:0jK8ntsU8Tw:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=sHf05j17iT0:0jK8ntsU8Tw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=sHf05j17iT0:0jK8ntsU8Tw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=sHf05j17iT0:0jK8ntsU8Tw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
     <comments>http://jbenner.net/blog/drupal-for-firebug#comments</comments>
 <category domain="http://jbenner.net/topic/drupal">Drupal</category>
 <category domain="http://jbenner.net/topic/firebug">Firebug</category>
 <category domain="http://jbenner.net/topic/firefox">Firefox</category>
 <category domain="http://jbenner.net/topic/opinion">Opinion</category>
 <category domain="http://jbenner.net/topic/tools">Tools</category>
 <category domain="http://jbenner.net/topic/web-development">Web Development</category>
 <pubDate>Tue, 09 Sep 2008 15:58:35 +0000</pubDate>
 <dc:creator>Josh</dc:creator>
 <guid isPermaLink="false">18 at http://jbenner.net</guid>
  </item>
  <item>
    <title>Google Chrome: First Impressions</title>
    <link>http://jbenner.net/blog/google-chrome-first-impressions</link>
    <description>&lt;p&gt;
Sometime near the beginning of this week I heard something in passing about &lt;a href="http://lifehacker.com/5044057/can-google-build-a-better-browser"&gt;Google releasing a web browser&lt;/a&gt;. At first, I thought that was a cute idea. After a couple seconds of letting it soak in, however, I began to wonder what Google would try to bring to the table that they felt was not already present. I also wondered if &lt;a href="http://tech.slashdot.org/article.pl?sid=08/08/29/144202&amp;from=rss"&gt;Google's banning, then re-instatement of the Mozilla Public License&lt;/a&gt; had anything to do with their new browser -- but they're not evil, so that can't be it!
&lt;/p&gt;
&lt;p&gt;
I wasn't really worried about trying it out at all, but a few things conspired to change my mind. First, seeing the CEO of Google being interviewed about Chrome during prime-time. Second, all the blog coverage of Chrome; and, third, glancing over the shoulder of someone trying it out and thinking to myself, "Huh -- looks interesting."
&lt;/p&gt;
&lt;p&gt;
So I &lt;a href="http://www.google.com/chrome"&gt;downloaded Chrome&lt;/a&gt; and set about evaluating it:
&lt;/p&gt;
&amp;lt;!--break--&gt;
&lt;h4&gt;Installation&lt;/h4&gt;
&lt;p&gt;
Installation was surprisingly simple and quick. Chrome made things convenient by pulling in all my relevant data from Firefox (including stored passwords -- a reminder that malicious software could get this too!).
&lt;/p&gt;
&lt;h4&gt;Startup&lt;/h4&gt;
&lt;p&gt;
I had heard that Chrome was based largely on &lt;a href="http://webkit.org/"&gt;WebKit&lt;/a&gt;, an excellent Open Source browser engine that is used by Apple's Safari browser. If you've used Safari in Windows, you've probably come to expect to wait a few seconds longer than you're accustomed to waiting while Safari starts up for the first time. This is what I half-expected when starting Chrome, but I was pleasantly surprised when Chrome started up very quickly and cleanly.
&lt;/p&gt;
&lt;h4&gt;Appearance&lt;/h4&gt;
&lt;p&gt;
Having already seen Chrome at a glance, I knew basically what to expect. In general, the interface looks very clean and quick -- just like what we've all come to expect from Google.
&lt;/p&gt;
&lt;h4&gt;Usability&lt;/h4&gt;
&lt;p&gt;
You can't help but feel very unhindered by Chrome's interface. Moving tabs into the title bar is, in my opinion, a cool idea that I jive with (especially nice when the browser window is maximized). The button layout is similar to other browsers, especially Safari, and the configurations and options are easy to find under two buttons to the right of the address bar. I continue to be a little bothered by Chrome responding more than other applications to a single notch on my mouse wheel. Also, scrolling in general sometimes goes noticeably slower than Firefox/IE and shoots the CPU usage pretty high.
&lt;/p&gt;
&lt;h4&gt;Page Rendering&lt;/h4&gt;
&lt;p&gt;
I clicked around for a little while in some of the recent sites I'd worked on, and I couldn't find any rendering errors. After some clicking around to the sites that I frequent I was able to count two instances of not-quite-right rendering of sites that appear fine in FF2/3, IE7, and Safari3.
&lt;/p&gt;
&lt;p&gt;
Often during page loading I would see the various layers get rendered in order. This isn't necessarily bad, because Chrome seems to go pretty quick (at least on my machine) -- but I found this interesting and wonder if it implies something about Chrome's differences even from its WebKit cousins.
&lt;/p&gt;
&lt;h4&gt;Conclusion&lt;/h4&gt;
&lt;p&gt;
I like Chrome. I don't expect to be using it as my primary browser just yet, and I'm not sure if I'd be ready to give up my Firefox extensions. I'll probably use Chrome for quick testing and possibly as just another browser session when testing sites, etc. If you want a simple, quick browser, though -- Chrome doesn't seem like a bad choice. And who knows -- maybe Google is only getting started!
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=1V86ho5Zyz0:8DmJ5N-I6tg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=1V86ho5Zyz0:8DmJ5N-I6tg:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=1V86ho5Zyz0:8DmJ5N-I6tg:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=1V86ho5Zyz0:8DmJ5N-I6tg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=1V86ho5Zyz0:8DmJ5N-I6tg:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=1V86ho5Zyz0:8DmJ5N-I6tg:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=1V86ho5Zyz0:8DmJ5N-I6tg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
     <comments>http://jbenner.net/blog/google-chrome-first-impressions#comments</comments>
 <category domain="http://jbenner.net/topic/browsers">Browsers</category>
 <category domain="http://jbenner.net/topic/chrome">Chrome</category>
 <category domain="http://jbenner.net/topic/google">Google</category>
 <category domain="http://jbenner.net/topic/opinion">Opinion</category>
 <category domain="http://jbenner.net/topic/standards">Standards</category>
 <category domain="http://jbenner.net/topic/web">Web</category>
 <pubDate>Fri, 05 Sep 2008 20:17:17 +0000</pubDate>
 <dc:creator>Josh</dc:creator>
 <guid isPermaLink="false">17 at http://jbenner.net</guid>
  </item>
  <item>
    <title>Make Views More Flexible/Maintainable</title>
    <link>http://jbenner.net/blog/make-views-more-flexiblemaintainable</link>
    <description>&lt;p&gt;Any Drupal developer worth his salt at least knows of the &lt;a href="http://drupal.org/project/views"&gt;Views&lt;/a&gt; module.  The shear usefulness and time-saving nature of views has earned the module a place in every Drupal site I've developed. However, because views are stored in the database and their presentation is controlled by the views module itself, managing views between staging/live sites, handling updates, and tracking revisions become difficult issues when dealing with Views. On the other hand, source code is easily managed between copies of a site, updates are a breeze, and revisions are natural -- all of this with revision control, such as Subversion. Also, what if you want to implement complicated access rules for your view?&lt;/p&gt;
&lt;p&gt;Views documentation has a section on &lt;a href="http://drupal.org/node/138828"&gt;how to programmatically build and render views&lt;/a&gt;. This is great, but building a view programmatically takes a lot more time than using the Views UI because you're constantly trying to figure out the table/field names used by the various modules that provide views integration, let alone filter, field, and argument settings. If your development cycle is anything like mine, taking more time on something is not always a luxury you can afford.&lt;/p&gt;
&lt;p&gt;Views module also provides an interesting Import/Export feature that allows you to copy/paste a view definition between sites. This helps with moving a view between two copies of a site and even helps a little dealing with updates. If you're diligent, this could be used to deal with revision control as well, but it's still a little clunky if you're maintaining and building sites all the time.&lt;/p&gt;
&lt;p&gt;In my opinion, the sweet spot when dealing with views is combining views exports with embedding views in your own PHP code.&lt;/p&gt;
&lt;p&gt;Every Drupal site I've developed as ended up with a "custom" or "glue_code" module that does various minor modifications to the site, such as hook_form_alter, hook_nodeapi, hook_menu, etc. I've also started to use this type of module to render and provide default views using the following process:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;First, during development of your site, go ahead and design the view using the Views UI as you normally would. We'll call this view example_view.&lt;/li&gt;
&lt;li&gt;Once you have the view's page display the way you like it, keep the page display enabled, but clear the URL so that the view page isn't really accessible anywhere on your site.&lt;/li&gt;
&lt;li&gt;Now, export the view and copy the large export array that is provided.&lt;/li&gt;
&lt;li&gt;Implement &lt;a href="http://drupal.org/node/99568"&gt;hook_views_default_views()&lt;/a&gt; in your custom module. Simply paste the exported views array into this function. Be sure your code makes sense and returns something according to the hook spec.&lt;/li&gt;
&lt;li&gt;Delete the view from your site, because your custom module will be providing it now.&lt;/li&gt;
&lt;li&gt;In your custom module, add a new hook_menu item that points to a callback that will provide the view. For the purpose of this example, our callback is called 'custom_view_page'.&lt;/li&gt;
&lt;li&gt;The custom_view_page() function will then look something like this:&lt;br /&gt;
&lt;div class="geshifilter"&gt;&lt;pre class="php geshifilter-php" style="font-family:monospace;"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; custom_view_page&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;
  &lt;span style="color: #000088;"&gt;$view&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; views_get_view&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'example_view'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
  &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; views_build_view&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'embed'&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #000088;"&gt;$view&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That will retrieve the view (the default one provided by your implementation of hook_views_default_views OR the overridden version if you've defined a view in the UI by the same name), then render it for output. If you need to send arguments to the view, pass them as elements of an array in the third parameter sent to views_build_view().&lt;/p&gt;
&lt;p&gt;Benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;View definition is no longer in the database.&lt;/li&gt;
&lt;li&gt;Updates are performed by updating code base. Simply build updated version of view on dev/staging site, export, and update the hook_views_default_views() implementation.&lt;/li&gt;
&lt;li&gt;Revisions of changes to view are kept in source control.&lt;/li&gt;
&lt;li&gt;All benefits and flexibility of views is maintained.&lt;/li&gt;
&lt;li&gt;Finer control over things like access to the URL that provides the view.&lt;/li&gt;
&lt;li&gt;Possible performance gains (untested).&lt;/li&gt;
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=pSfykGoWHiM:6G4xTpz2PPQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=pSfykGoWHiM:6G4xTpz2PPQ:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=pSfykGoWHiM:6G4xTpz2PPQ:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=pSfykGoWHiM:6G4xTpz2PPQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=pSfykGoWHiM:6G4xTpz2PPQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=pSfykGoWHiM:6G4xTpz2PPQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=pSfykGoWHiM:6G4xTpz2PPQ:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
     <comments>http://jbenner.net/blog/make-views-more-flexiblemaintainable#comments</comments>
 <category domain="http://jbenner.net/topic/drupal">Drupal</category>
 <category domain="http://jbenner.net/topic/php">PHP</category>
 <category domain="http://jbenner.net/topic/views">Views</category>
 <pubDate>Sat, 24 May 2008 15:53:42 +0000</pubDate>
 <dc:creator>Josh</dc:creator>
 <guid isPermaLink="false">16 at http://jbenner.net</guid>
  </item>
  <item>
    <title>Ecto and Drupal</title>
    <link>http://jbenner.net/blog/ecto-and-drupal</link>
    <description>&lt;p&gt;A few weeks ago I read a brief but interesting article by Jeff Whatcott on &lt;a href="http://jeffwhatcott.com/drupal/content/getting-ecto-set-drupal"&gt;Getting Ecto Set Up with Drupal&lt;/a&gt;. I had heard of Ecto in passing but had never really looked into using it. With all the hubbub around WYSIWYG tools for Drupal and the like recently, I wondered if a good desktop application would be a viable solution, so I figured I'd give Ecto a try for myself.&lt;/p&gt;&amp;lt;!--break--&gt;
&lt;p&gt;I was initially very impressed with the relatively simple interface sported by Ecto. After quickly configuring the blog_api module on Drupal and just a few clicks in Ecto I had connected to my Drupal blog and was presented with a list of the blog posts already published. I explored the various configurations and was pleased to find a lot of configuration options -- this isn't just a handy app, Adriaan Tijsseling has done a fine job putting together a fully-featured application workspace.&lt;/p&gt;
&lt;p&gt;I decided that I owed Ecto at least a couple blog posts to see if I could use it effectively on my Drupal installation found at jbenner.net. I set about writing my first post with Ecto, and was very comfortable at first, typing away and easily setting basic font styles, adding links, and breaking paragraphs. I was a little confused by the interface to select "Categories" and "Tags" -- as I was entirely sure how they translated into my Drupal environment.&lt;/p&gt;
&lt;p&gt;I published the post, then went to my site to check it out. For the most part, things looked okay... there were a few minor formatting things here and there that most likely resulted from oversights on my part while preparing the post. The problems came in when I started inspecting the post in more detail. First, Ecto didn't seem to set my topic tags at all -- for future reference, ignore Ecto's tags, and just use Categories.&lt;/p&gt;
&lt;p&gt;Also, I use the &lt;a href="http://drupal.org/project/pauthauto"&gt;pathauto&lt;/a&gt; module to automate Drupal's path aliases -- but posting using Drupal's blog_api seems to go right around pathauto. From a Drupal developer's perspective, this will probably make some sense, as I imagine that pathauto does its magic with a combination of hook_form_alter() and hook_nodeapi(). Does blog_api skip various hooks? This might be worth more investigation.&lt;/p&gt;
&lt;p&gt;Add to this Drupal's lack of proper time zone handling and you get a rather confusing set of configurations between Drupal and Ecto to get both Ecto and Drupal to show the same (and correct) time. I eventually got a pair of settings that seemed to almost work properly, but the journey was ripe with confusion and lacked a satisfying end. In fairness, I think this may be a shortcoming of Drupal, though I'm not entirely sure in this instance.&lt;/p&gt;
&lt;p&gt;Ecto has an option to set the input format to use when it sends the post to Drupal; however, it did not seem to set this correctly in every case. I don't know what was causing the difference in behavior in different instances, but this is an issue worthy of note.&lt;/p&gt;
&lt;p&gt;As a note -- don't touch Ecto's summary feature if you're using it to post to Drupal. For some reason, it sends Ecto into a spiral of arguing with Drupal over the contents of your post, and seems to always end up adding what it wants your summary to be at the beginning of your post with broken HTML. You're better either setting your break tag manually in the HTML or creating a custom HTML tag in Ecto and inserting it that way.&lt;/p&gt;
&lt;p&gt;Overall, Ecto did a fair job of posting. However, between skipping pathauto and the time zone issues, I can't see myself using Ecto regularly, as I'd find myself in Drupal's node form fixing things up anyway. More importantly, Ecto doesn't really simplify the process of posting blog entries in general, though it does offer some nice tools for performing more advanced blog actions, such as integrating images, or Amazon and Flickr resources. If anything, I could see myself using Ecto to write drafts and performing cleanup and publishing in the web interface. This might especially be handy if I want to start a post while offline.&lt;/p&gt;
&lt;p&gt;I don't see myself encouraging any clients to use Ecto with Drupal at this point. I want to emphasize, however, that this isn't necessarily because of problems with Ecto as much as some problems between Ecto and Drupal.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=F02G24OhVhc:gNHSpgA4PYk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=F02G24OhVhc:gNHSpgA4PYk:V_sGLiPBpWU"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=F02G24OhVhc:gNHSpgA4PYk:V_sGLiPBpWU" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=F02G24OhVhc:gNHSpgA4PYk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=F02G24OhVhc:gNHSpgA4PYk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?i=F02G24OhVhc:gNHSpgA4PYk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/jbennersblog?a=F02G24OhVhc:gNHSpgA4PYk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/jbennersblog?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description>
     <comments>http://jbenner.net/blog/ecto-and-drupal#comments</comments>
 <category domain="http://jbenner.net/topic/blogging">Blogging</category>
 <category domain="http://jbenner.net/topic/drupal">Drupal</category>
 <category domain="http://jbenner.net/topic/ecto">Ecto</category>
 <category domain="http://jbenner.net/topic/xml-rpc">XML-RPC</category>
 <pubDate>Tue, 13 May 2008 03:07:09 +0000</pubDate>
 <dc:creator>Josh</dc:creator>
 <guid isPermaLink="false">12 at http://jbenner.net</guid>
  </item>
  </channel>
</rss>
