FTP Clients - Part 11: Beyond Compare 3

For this installment in my series about FTP clients, I want to take a look at Beyond Compare 3 from Scooter Software. At its heart, Beyond Compare is a file/folder comparison tool, so it might seem an unlikely candidate for an FTP client, but it has a lot of great FTP features packed into it.

Fig. 1 - The Help/About dialog in Beyond Compare 3.

Note: For this blog I used Beyond Compare version 3.3.5.

Beyond Compare 3 Overview

Like many self-proclaimed computer geeks, over the years I have collected a lot of various utilities that perform specific actions that I need to take care of. Sometimes I discover these tools when Binging my way through the Internet, and other times they come highly recommended from other people. In this specific situation, Beyond Compare falls into the latter category - dozens of people had recommended Beyond Compare to me before I tried it out, and after falling in love with it I have recommended it to dozens of my friends. At the time I was using Microsoft WinDiff to compare files, which is still a great application to do simple comparisons, but Beyond Compare does so much more.

Fig. 2 - The Start New Session screen.
Fig. 3 - Comparing the files within two folders.
Fig. 4 - Comparing the HTML content of two files.

I could go on about Beyond Compare as a comparison tool, but that's really outside the scope of this blog since I am supposed to be talking about FTP features. Needless to say, if you're looking for a good comparison tool, you might want to download the trial edition of Beyond Compare 3 and give it a try.

That being said, let's get back to the business at hand. Beyond Compare 3 has a collection of FTP Profiles, which you can think of as analogous to a site manager in more traditional FTP clients.

Fig. 5 - Opening Beyond Compare 3's FTP Profiles.

Inside the FTP Profiles dialog, you can specify a wealth of connection options for remote FTP sites that you would expect to find in any other FTP client.

Fig. 6 - Specifying FTP connection options.

Once you have established an FTP connection through Beyond Compare 3, you can view your local files and the files in your remote FTP site side-by-side, and then you can perform comparisons, updates, merges, etc.

Fig. 7 - Viewing local and remote files.

Using Beyond Compare 3 with FTP over SSL (FTPS)

Beyond Compare 3 has built-in support for Explicit FTP over SSL (FTPS), which you specify when you are creating the FTP profile for a site.

Fig. 8 - Specifying an Explicit FTPS connection.

Once you have established an Explicit FTPS connection through Beyond Compare 3, the user experience is the same as it is for a standard FTP connection.

Fig. 9 - Comparing files over FTPS.

That being said, at first glance Beyond Compare 3 did not appear to support Implicit FTPS. For me this was not a deal-breaker by any stretch of the imagination since Explicit FTPS is preferred. (Even though Implicit FTPS is supported by IIS7 through IIS8, it is really an outdated protocol.)

10 January 2013 Update: I heard from Craig Peterson at Scooter Software that Beyond Compare 3 does support Implicit FTPS, but it does so implicitly. (No pun intended. ;-]) When you connect using FTP over SSL on port 990, it will automatically use implicit FTPS.

Using Using Beyond Compare 3 with True FTP Hosts

Beyond Compare 3 has built-in support for the HOST command, so you can use true FTP host names when using Beyond Compare 3 to connect to FTP7 and FTP8 sites that are configured with host names. This feature is enabled by default, but if you needed to disable it for some reason, that feature can be accessed on the Connection tab of Beyond Compare 3's FTP Profiles dialog.

Fig. 10 - Specifying support for the FTP HOST command.

Using Using Beyond Compare 3 with Virtual FTP Hosts

Beyond Compare 3's login settings allow you to specify the virtual host name as part of the user credentials by using syntax like "ftp.example.com|username" or "ftp.example.com\username", but since Beyond Compare 3 allows you to use true FTP hosts this is really a moot point. Just the same, there's nothing to stop you from disabling the HOST command for a connection and specifying an FTP virtual host as part of your username, although I'm not sure why you would want to do that.

Fig. 11 - Specifying a virtual FTP host.

Scorecard for Beyond Compare 3

This concludes our quick look at some of the FTP features that are available with Beyond Compare 3, and here are the scorecard results:

Beyond Compare 3.3.5 Rich Y Y Y Y Y N/A 1
As noted earlier, Beyond Compare 3 supports the FTP HOST command, and is enabled by default for new connections.

1 Note: I could not find anyway to extend the functionality of Beyond Compare 3, but it does have a scripting interface; see their Automating with Scripts and Scripting Reference pages for more details.

So there you have it - Beyond Compare 3 contains many of the features that would make up a great GUI-based FTP client with first-class support for all of the features that I have been examining in detail throughout my blog series about FTP clients. And as I have done with all of my blogs thus far, I included the following disclaimer in all of my preceding posts: there are a great number of additional features that Beyond Compare 3 provides - but once again I only focused on a few specific topic areas that apply to FTP7 and FTP8. For example, one particular feature that I might to experiment with in the future is Beyond Compare 3's support for FTP SSL Client Certificates. But I'll leave that for another day. ;-]

Note: This blog was originally posted at http://blogs.msdn.com/robert_mcmurray/

Using WebMatrix to Take a PHP Class

With the release of WebMatrix 2, I thought that it would be great to take a PHP class and use WebMatrix exclusively for the entire class. Much to my surprise, this proved to be a great experience. Seriously, I did not expect it to go as well as it did. This has nothing to do with WebMatrix, it's just that I've picked up some cynicism over the years where editors are concerned. This pessimistic outlook is largely due to the fact that I've tried a lot of editors based on the recommendations of my fellow geeks, and those have often been bad experiences. Usually they say something like, "Dude, if you're going to write code in <some language> then you have to use the <some editor> application."

Unfortunately, most of these editors fail to live up to their hype, and I am forced to endure trials and tribulations where I loudly exclaim "If I was using <my favorite editor> I would be done by now!" (I periodically accompany those moments with language that is best reserved for a golf course when you've just hit your last Titlelist into the water hazard.)

But those experiences never happened with WebMatrix 2 - not even once; WebMatrix did pretty much everything that I needed it to do, and it did everything really well. As a result, my cynical skepticism quickly gave way to optimistic impression.

I took copious notes about my experiences with WebMatrix throughout the class, and with that in mind, I thought that it would be great to write a blog with my genuinely unbiased thoughts about using WebMatrix exclusively as my PHP authoring platform for the two-month duration of my class. (As a point of trivia, the PHP class that I took was BMIS 410 - Web Enterprise Technologies at Liberty University. Quick shout out to my professor, Michael Hart, who was a great instructor.)

What Went Well

First of all, the intellisense for PHP was quite good - and having the URLs to the PHP.net reference pages in the tooltip help for PHP functions was extremely useful; I spent a lot of time clicking through to the PHP.net website for assistance for one function or other.

Fig. 1 - WebMatrix's Intellisense for PHP.

Using WebMatrix to preview in IE and WP7/iPhone/iPad emulators was great; in my opinion, this experience was much better than the SuperPreview feature of Expression Web.

Fig. 2 - Options for previewing your website.
Fig. 3 - Testing my website in the iPad simulator.

Using the WebMatrix database editor to create tables for my MySQL database was great - in many ways it was much better than using the MySQL Workbench. The biggest drawback in WebMatrix was the inability to create auto-number fields, and I couldn't enter dates in the correct format in the database UI. (That was undoubtedly something that I was doing wrong.) So every once in a while I had to go back to the MySQL Workbench to fix something. That being said, the interface for creating relationships in WebMatrix is great, and much better than using MySQL Workbench.

Fig. 4 - Editing the data in a MySql Database.

FTP publishing is much better in version 2 of WebMatrix. I used an IIS7 web server, so I was able to use FTP7's virtual hosts to publish to a specific site on a shared server. WebMatrix has no FTPS support, so that is something of a loss. (WebMatrix also lacks full WebDAV support, but I've already talked about that in other blogs.)

Fig. 5 - FTP Publish Settings.

This last point might seem trivial, and I realize that a lot of editors have similar features, but the way that WebMatrix keeps track of opening/closing parentheses, brackets, and curly braces saved me more times than I can count.

Fig. 6 - Helping me keep track of what I'm doing.

What Could Have Been Better

Here are the few problems that I encountered with WebMatrix during the course:

My first issue was not a problem that was due to WebMatrix per-se, but every once in a while a page would get stuck in the cache and I couldn't see changes that I had made to a page, so I would have to restart IIS Express. I'll have to investigate why that was happening; it could be IIS Express, or it could be the PHP engine - I'm still not sure where the fault lies. Fortunately WebMatrix makes it very easy to restart IIS Express from inside WebMatrix, but still - it was a minor frustration.

WebMatrix only wanted to validate against HTML5, but my class required all assignments to use XHTML 1.0 Transitional DOCTYPE, and that showed up as errors in WebMatrix. Yes - the world is moving to HTML5, but still - that shouldn't cause an error.

Perhaps the biggest feature that WebMatrix lacks is the really cool local and remote side-by-side publishing view that both Expression Web and it's predecessor FrontPage had.

When you have a lot of pages open the WebMatrix tab bar fills up, and it's really difficult to keep track of which pages are open.

It would be nice to tear pages out of the editor like you can do with Internet Explorer and Visual Studio.

I have to mention this last item because it was in my notes, but it's technically not an issue for WebMatrix. One of my personal coding self-annoyances was that I would write the text for a string and then realize that I forgot to put it in quotes; when I would type an opening quote, WebMatrix would try to help me out by adding the closing quote - which would now be outside my string, so I always had to delete one of the quotes. There is an option to turn off that feature; see File->Options->Code in WebMatrix. But that being said, this is a useful feature when I remember to create the quotes before I start typing in a string. So once again, this is really more of a complaint against myself; it's my fault that I sometimes have lousy typing skillz. [sic]


I should start off by saying that I got an "A" in the course, and I can honestly give WebMatrix some of the credit for that. If I had spent a great deal of time fighting with an editor, I would have had less time to focus on writing PHP code. But in the end, WebMatrix actually made it easier for me to write PHP code.

So in closing, WebMatrix rocks, PHP rocks, and using WebMatrix with PHP definitely rocks.

Note: This blog was originally posted at http://blogs.msdn.com/robert_mcmurray/

Restoring an Old Friend Back to Life

My Love Affair with Explorer-style Guitars

Many years ago - more years than I will care to admit - I saw Cheap Trick in concert. (Okay, just to give you an idea of how long ago this was - Cheap Trick was touring to promote their Cheap Trick at Budokan album; you can do the math from there.) At this point in my life, I hadn't been playing the guitar for very long, and my main guitar at the time was a cheap 3/4-size nylon-string acoustic that my dad had bought for me from a store on a military base. Military bases aren't known for keeping great guitars in stock, so it needs little explanation that I was fascinated by any cool guitar that came along. This made seeing Cheap Trick even more entertaining, because their lead guitar player, Rick Nielson, used something like 1,000 different guitars throughout the show.

But one particular guitar caught my eye - an Explorer; something about it's futuristic shape seemed to me like the coolest guitar ever. Rick Nielson played an Explorer from Hamer Guitars, but I soon learned that Hamer's Explorer was a copy of the Gibson Explorer, and that became the 'Guitar to Have' for me.

Rick Nielson (left) playing a Hamer Explorer onstage with Cheap Trick.
(Note: This image is originally from Wikipedia.)

About this time I was in my first rock band with my good friend Gene Faith. Even though we both actually played the guitar, we liked to create fake instruments for ourselves - I made myself a fake guitar out of scrap wood that looked like an Explorer, even though it was hollow and had strings that were made out of rubber bands. But it was cool - there was no doubt in my mind about that. Once we had some 'instruments' at our disposal, we'd put on a record and pretend to actually play these fake instruments and jump around my dad's living room like we were rock stars. (Hey, don't laugh so hard - I was only 12 or 13 years old.)

My first electric guitar was a cheap copy of a Gibson SG that I purchased at Sears for somewhere around $100. (And believe me - I delivered a lot of newspapers to earn the $100 to buy that guitar.) It was okay as a starter guitar, but I soon found myself wanting a better axe. A year or so later I saved up more of the proceeds from my newspaper route and I bought an Explorer copy from an off-brand company named Seville - it was nowhere near as good as a Gibson, but it was the best that I could do on a paperboy's budget. It had a hideous tobacco sunburst paint job, so I removed the neck and hardware, sanded the body down to the bare wood, stained it with a dark wood color, and then I shellacked the body with a clear finish. When I reassembled the guitar, it looked pretty good. I played that Explorer for a few years, and I eventually sold it to my friend Gene.

That's me on the right
playing my Seville
Explorer back in 1981.
Gene posing with my
Seville Explorer.

Jumping ahead a few decades, another good friend, Harold Perry, was moving from Seattle to San Francisco, so he was parting with a bunch of musical gear. I'm always in the market for seasoned gear that needs a new home, so Harold and I were going through a bunch of his old items while I was deciding what I might want to buy. Harold had bought a 1980 Gibson Explorer II several years earlier as a 'project guitar' - it had been badly treated by a previous owner and needed a lot of repair work. Since Harold was moving, he didn't expect to have time to finish the guitar, and he wanted it to find a good home, so he sold it to me for a great price.

And so my adventure with guitar restoration began as a labor of love.

Restoring My Gibson Explorer II

When I took the guitar home, the first thing that I did was strip all of the remaining hardware off the guitar; thereby leaving nothing but the wood body. I then proceeded to polish every inch of the guitar for a few hours. Whoever had owned the guitar before Harold apparently had some hygiene issues and it seemed like he had never cleaned the guitar despite voluminous amounts of caked sweat that coated much of the surface. What's more, his sweat had corroded all of the stock hardware, so nearly all of the hardware would need to be replaced. With that in mind, I decided that this would be a long-term project and I would take my time with it.

The Explorer with all of
the hardware removed.
original hardware.

The next thing that I needed to do was to polish the hardware that I intended to keep - which was just the brass nut and frets, all of which looked pretty hideous. I used Mr. Metal to polish the hardware, which seemed a strangely apropos title for a former heavy metal dude.

Badly-tarnished frets and nut. Dude - it's "Mr. Metal." :-O
The pile of used cotton patches
after I finished polishing.
Shiny frets and brass nut!

Over several months I slowly bought new hardware that I needed. I'll spare you most of the details, but suffice it to say that it took a long time for me to locate and purchase all of the right replacement parts that I wanted. I primarily bought the hardware from Stewart McDonald, Musician's Friend, and Guitar Center, and I had the guys at Parson's Guitars create a new truss rod cover to replace the original that had been lost before the guitar had found its way to me. In the end, I replaced the bridge, tailpiece, volume & tone potentiometers, tuning machines, strap locks, toggle switch, and speed knobs. (The folks at Parson's Guitars thought that replacing the stock Gibson parts was a sacrilege, even though I explained that keeping the stock parts left the guitar unplayable.)

All new hardware. New truss rod cover.

Before I started wiring the guitar, I lined the inside of the routing cavities with copper tape - this is supposed to reduce EMI on the guitar. I've never used it before, so it's something of an experiment. In any event - lining the routing took several hours to complete; time will tell if it was worth it.

Lining the interior routing cavities with copper tape.

The next part of the project was to install the new guitar tuning machines. Oddly enough, Gibson won't sell their inline-6 set of tuners for an Explorer to customers, so I had to buy tuning machines from another company. I eventually decided on tuning machines from Gotoh, which I was able to order through Stewart McDonald. The trouble is, once I mounted them on the headstock, I discovered that the screw holes for the tuning machines were off by a little over a millimeter. (If you look at the image, you can see that the screw holes are angled slightly downward on the right side of the machines, but they needed to be perpendicular to the machine shafts.)

Bad news - these tuning machines don't fit. :-(

After doing some additional research, I discovered that the only Gotoh tuning machines that Stewart McDonald sells are Gotoh's SG381 tuning machines, and I needed their SG360 tuning machines for my Explorer. After a quick call to Stewart McDonald, I verified that they cannot order Gotoh's SG360 tuning machines for me, so I searched the Internet until I found a distributer in Australia who could ship them to me. It took several weeks for the tuners to make the journey to the United States, but when they arrived they were a perfect fit.

Good news - these tuning machines fit. :-)

Once I had the right tuning machines installed, I started the long process of wiring and soldering the electronics.

Installing the pickups and
running the wires.
Soldering the pickup
selector switch.
Soldering a capacitor on
the tone potentiometer.
Installing the pickup selector
switch and running the wires.
Testing some of the
wiring before final soldering.
Soldering completed!

Once I completed the wiring, the last hurdles were to re-string the guitar, tune it up, adjust the string height and intonation, and test it out. (Which is the fun part.)

That about sums it up. The guitar looks great and plays great, although I might drop it by the folks at Parson's Guitars and have them them give it a quick tune-up for good measure.

Special thanks go to Harold for hooking me up with this guitar; and I also owe a big set of thanks to my wife, Kathleen, for humoring me while I took over one of the rooms in our house for the several weeks that I spent working on this project. ;-)