Technology

Tips and tricks related to website development, along with everything else that can be considered “technical” in some broad sense of the word.

Installing MLPACK on Windows 10 using Cygwin

After spending far too many hours trying to get mlpack installed under Windows using Cygwin, I wanted to document a simple change that finally made it work for me.

In order to get mlpack to compile correctly, you first need to install (A) the boost development library; and (B) the Armadillo linear algebra library. The boost development library (libboost-devel) can be installed directly from the Cygwin installation program. Armadillo can be downloaded from sourceforge, and I was able to install it without difficulty.

The most frustrating problem came when I tried the actual build for mlpack. The process started out fine, but after a while it failed at the linking stage for executables. It was generating error messages related to undefined references, and including the following ominous note:

[...] relocation truncated to fit: R_X86_64_PC32 against undefined symbol [...]

I’d never seen that error before and had no idea what to do about it. Looking for a solution caused nothing but pain and frustration. The most promising leads were suggesting that I may need to specify a larger memory model when compiling (using the flag -mcmodel on g++). It didn’t work. I tried numerous changes somewhat blindly: different compiler flags, cleaning and rebuilding from scratch, etc. I even installed the 32-bit version of Cygwin in the hopes that the 64-bit version was the source of my problem. It wasn’t.

Here are some of the actual error messages enountered:

[ 24%] Linking CXX executable ../../../../bin/mlpack_preprocess_describe.exe
CMakeFiles/mlpack_preprocess_describe.dir/preprocess_describe_main.cpp.o:preprocess_describe_main.cpp:(.text+0x12cd): undefined reference to `mlpack::util::PrefixedOutStream::operator<<(std::ostream& (*)(std::ostream&))'
CMakeFiles/mlpack_preprocess_describe.dir/preprocess_describe_main.cpp.o:preprocess_describe_main.cpp:(.text+0x12cd): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `mlpack::util::PrefixedOutStream::operator<<(std::ostream& (*)(std::ostream&))'
CMakeFiles/mlpack_preprocess_describe.dir/preprocess_describe_main.cpp.o:preprocess_describe_main.cpp:(.text$_ZN6mlpack3CLI8GetParamISsEERT_RKSs[_ZN6mlpack3CLI8GetParamISsEERT_RKSs]+0x2e): undefined reference to `mlpack::CLI::GetSingleton()'
CMakeFiles/mlpack_preprocess_describe.dir/preprocess_describe_main.cpp.o:preprocess_describe_main.cpp:(.text$_ZN6mlpack3CLI8GetParamISsEERT_RKSs[_ZN6mlpack3CLI8GetParamISsEERT_RKSs]+0x2e): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `mlpack::CLI::GetSingleton()'
CMakeFiles/mlpack_preprocess_describe.dir/preprocess_describe_main.cpp.o:preprocess_describe_main.cpp:(.text$_ZN6mlpack3CLI8GetParamISsEERT_RKSs[_ZN6mlpack3CLI8GetParamISsEERT_RKSs]+0x3d): undefined reference to `mlpack::CLI::GetSingleton()'
CMakeFiles/mlpack_preprocess_describe.dir/preprocess_describe_main.cpp.o:preprocess_describe_main.cpp:(.text$_ZN6mlpack3CLI8GetParamISsEERT_RKSs[_ZN6mlpack3CLI8GetParamISsEERT_RKSs]+0x3d): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `mlpack::CLI::GetSingleton()'
CMakeFiles/mlpack_preprocess_describe.dir/preprocess_describe_main.cpp.o:preprocess_describe_main.cpp:(.text$_ZN6mlpack3CLI8GetParamIiEERT_RKSs[_ZN6mlpack3CLI8GetParamIiEERT_RKSs]+0x22): undefined reference to `mlpack::CLI::GetSingleton()'
CMakeFiles/mlpack_preprocess_describe.dir/preprocess_describe_main.cpp.o:preprocess_describe_main.cpp:(.text$_ZN6mlpack3CLI8GetParamIiEERT_RKSs[_ZN6mlpack3CLI8GetParamIiEERT_RKSs]+0x22): relocation truncated to fit: R_X86_64_PC32 against undefined symbol `mlpack::CLI::GetSingleton()'

So how did I resolve this issue? I disabled the use of shared libraries and used static libraries instead. Admittedly this is more of a workaround than a solution, but it worked. And it was not at all obvious to me that I should try doing that, given my line of thinking related to the error message above.

In the top-level directory for mlpack, I simply edited the following line in CMakeLists.txt and turned the option for shared libraries OFF rather than leaving it turned ON.

option(BUILD_SHARED_LIBS
    "Compile shared libraries (if OFF, static libraries are compiled)." OFF)

Once I changed that flag and started a clean build, everything worked fine.

RAW to DNG: Making The Change For Lightroom Users

I recently decided to convert all of my future RAW files to DNG format.  Finding information about DNG, however, left me confused when it came to options and efficiency issues inside of Adobe Lightroom.  I hope to clear up that confusion for anyone else thinking about making this change. Please understand that what follows is my best understanding of DNG handling inside of Lightroom.  I cannot guarantee accuracy, and I hope others will chime in if they see errors. This discussion assumes you are shooting in RAW format — as opposed to JPEG — with your digital camera. (JPEG shooters will find little reason to convert their files to DNG.) The discussion and menu descriptions below are relevant to Lightroom 5.7 on a Windows 8.1 computer.

Why Make The Change To DNG?

DNG is an open-standard file format, available to all camera makers and software companies.  Unlike Nikon’s NEF, Canon’s CR2, and many other manufacturer-specific proprietary formats, DNG is more likely to provide long-term compatibility of raw files with future software platforms. It also alleviates the need for Lightroom’s separate sidecar (XMP) files, since develop settings and metadata additions can be stored directly in the DNG files. Additionally, DNG (typically) uses less space on your hard drive than the original raw formats. This is accomplished through the use of a lossless compression scheme that retains all of the image data from your original RAW files. Finally, “Fast Load” data can be included during the conversion process, enabling faster load times in Lightroom’s Develop module.

Are There Any Downsides?

Converting to DNG may discard some proprietary information stored in original RAW files. Is this a big deal?  Not for me.  All of the image data and relevant settings are retained.  Non-standard metadata — perhaps things like TTL flash-system data — might be discarded. The conversion process to DNG also takes time, and the extra delay may not be an acceptable burden to your standard workflow. Additionally, some manufacturer software packages will only work with their original proprietary formats and will not read DNG files.

Adobe Lightroom Options & Settings: Conversion After Import

For my own workflow, the initial import and selection process is performed using the original manufacturer-specific raw files.  Once I have discarded the “reject” images, I convert the remaining RAW files to DNG. This is accomplished by selecting the desired images in Lightroom’s Library module and choosing “Library” –> “Convert Photos to DNG” to bring up the DNG conversion dialog:

convert-photos-dialog

The settings I use when converting to DNG format:

Only convert Raw files – Yes. RAW file formats will be converted, but JPEG, TIFF, or PSD files will be left alone.

Delete originals after successful conversion – Yes. The new DNG files will contain all of the image data and relevant metadata. Keeping the original RAW files in addition to the DNG files wastes a good deal of disk space with little value added.

File Extension – I prefer lower case “dng” as the file suffix.

Compatibility – I leave this on the default (newest) setting. Other settings might be relevant if you are sharing files with people who have older versions of Adobe (or other) software.

JPEG Preview – Medium Size. This setting is used to store a JPEG preview of the image inside of the DNG file. These previews are completely ignored by Adobe Lightroom and Photoshop, but may be used by operating systems and other software packages. For this reason, I like to have a JPEG preview present in the file, but full-size previews take up additional space and do not provide any benefit for my workflow. Full-size previews within the DNG files will not speed up Lightroom or Photoshop.

Embed Fast Load Data – Yes. Including this data will help data load into Lightroom’s Develop module quicker.  It does not affect the speed of Lightroom’s Libray module.

Use Lossy Compression – No. DNG already employs a lossless compression scheme to reduce file size without throwing away any of the original image data.  Turning lossy compression on will allow greater compression and even smaller file sizes, but will throw away some of the original data in the process.

Embed Original Raw File – No. This flag will incorporate the original RAW file within the DNG file, in addition to the data that is already there.  This effectively doubles the resultant file size with little anticipated benefit.

Adobe Lightroom Options & Settings: Conversion During Import

The conversion to DNG can also be done during import, if desired, at the beginning of your workflow. I find the import  process to be frustratingly slow to begin with, so adding on the DNG conversion up front is not appealing to me at all. Of course, you could always leave the room and do something else while the import process runs, returning at a later time.  When performing the DNG conversion during import, the options discussed in the section above are available through the “Edit”–> “Preferences” menu entry.

preferences-dialog

You then select “Copy as DNG” from the top-center section of the Import window.

import-screen

The rest of the import process remains unchanged.

About Those JPEG Previews

This was the single most confusing attribute to figure out when learning about DNG. In the Lightroom dialog boxes above, you can select one of the following for the JPEG Preview to be embedded in the DNG file: None, Medium Size, or Full Size. Adding the JPEG preview to a DNG file increases the file size (slightly), but does not directly affect the speed of processing within Lightroom or Photoshop.  Neither of these Adobe programs use the DNG embedded preview in any manner whatsoever.

Lightroom manages its own set of JPEG previews for library images, separately from the internal DNG previews we’ve been discussing here. They are managed through the “Library” ==> “Previews” menu, or from the “File Handling” box on the Import window. Lightroom previews are stored in the library’s “*.lrdata” directory and are typically discarded after 30 days (this can be changed in the “Catalog Settings” dialog).

So what is the benefit to embedding a JPEG preview into the DNG file?  If you eventually decide to use the DNG file in another software package, it may make use of the preview. Operating systems may also use this preview to display a thumbnail of the image while browsing the disk.  (The codec for Windows 7/8 machines can be found on the Adobe website.)

Writing Updates To DNG Files

If you would like develop settings to be written directly into your DNG files, you need to set the “Automatically write changes into XMP” flag within the Catalog Settings dialog (“Edit” ==> “Catalog Settings”). This will cause all changes from the Develop module to be automatically added to your DNG file, without altering the original image data. This is generally considered a smart thing to turn on, regardless of whether you use DNG or XMP sidecar files (“A Lightroom Tip That Could Save You”).

catalog-settings-metadata

If you have made substantial edits to a photo and would like those changes reflected in the JPEG preview within the DNG file, this can be accomplised by selecting the photo(s) in the Library module and using “Metadata” ==> “Update DNG Previews & Metadata”.

File Size Experiments

The following is an example showing how various DNG options affect file size. This is not a comprehensive study, since image content will affect the performance of compression (both lossy and lossless) algorithms. But it will hopefully put some structure on the discussion above.  I started with a single image taken with a Nikon D800e, stored in RAW/NEF format, and converted it to DNG using the following setups, showing the file size of each:

Original NEF (48.7 MB)

JPEG Preview None, Fast Load Data NO (42.9 MB)

JPEG Preview None, Fast Load Data YES (43.9 MB)

JPEG Preview Medium, Fast Load Data YES (44.0 MB)

JPEG Preview Full Size, Fast Load Data YES (51.2 MB)

JPEG Preview Medium, Fast Load Data YES, Lossy Compression (20.1 MB)

JPEG Preview Medium, Fast Load Data YES, Embed Original (92.8 MB)

For my specific test image — which may or may not be representative of a typical image in your collection — the basic DNG file requires 11.9% less space than the original NEF file (42.9 MB vs. 48.7 MB).  Adding the Fast Load Data will increase file size slightly to 43.9 MB.  From here, if we add an embedded medium-sized JPEG preview to the file. the resultant DNG file comes in at 44.0 MB. (This is the storage configuration that I am using in my daily workflow.) If we now replace the embedded JPEG preview with a full-size version, the file is now larger than the original NEF file (51.2 MB vs 48.7 MB).

For completeness, I also performed the conversion using Lossy compression (resulting in a substantially smaller file) and also by including the original RAW data (resulting in a substantially larger file).

References

I can’t say enough about Julieanne Kost and her videos on Adobe TV.  Most of my questions were answered by watching her excellent videos:

LR/PS – The Advantages of the DNG File Format (Julieanne Kost, Adobe TV)

DNG Enhancements in Lightroom 4 (Julieanne Kost, Adobe TV)

A great deal of information was gathered from various help forums around the internet.  Published articles that were particularly useful include the following:

Adobe offering new reasons to get DNG religion (Stephen Shankland, c|net)

 

New SmugMug Widget For WordPress

I have been searching for an easy way to display my latest SmugMug photos in this website’s sidebar. I came across a couple of relevant plugins in the WordPress repository, but neither fit the bill completely for what I wanted to do. I was hoping to find something that (A) was easy to use; (B) displayed all images with a single user-specified fixed width; and (C) did not require formal authorization to work with my SmugMug account.

I decided to use this opportunity to learn something new and develop my own plugin for WordPress. The result was my new SmugMug Widget plugin, available through the official WordPress.org repository and also here on this website. The widget is simple to configure, and makes use of the public RSS feed on SmugMug to obtain its content.

Feel free to try it out and let me know what you think! (By the way, if you are looking for a more comprehensive SmugMug solution, the other plugins I came across were WP-SmugMug and SmugMug for WordPress, both of which are worth a look.)

Sync XAMPP Data With Dropbox

I use XAMPP for my local website development environment. It’s a wonderful free tool to use for this purpose, since I need access to a local WordPress distribution and the associated MySQL database to experiment with with themes and plugins.

One challenge I faced had to do with the fact that I use three different computers for development activities. Keeping data in sync across these platforms is important to me. The natural solution is to install Dropbox (referral link) on my various machines. (If you’re not familiar with Dropbox, be sure to read about maximizing free space before installing it.)

To be clear about what I set out to accomplish, I wanted to sync (A) my local web pages; and (B) the MySQL database across multiple machines. I did not want to sync the entire XAMPP distribution with all of its binaries. It is not difficult to make this work correctly, but it does require modifying a couple of configuration files.

Before we begin, I will assume you have XAMPP successfully installed and running on multiple machines independently (successfully running the HTTP server and MySQL database components). Our goal, then, is to make all of your installations access a single directory structure within Dropbox. A word of caution with all projects of this sort is that you should backup all of your data before making changes to your configuration files.

For my setup, the directory in which XAMPP is installed happens to be the same on all of my machines. Similarly, the directory in which my Dropbox folder is located is the same across all machines. This is not a requirement to make this work, but you may need to keep this in mind if your setup is different. My folder locations are:

XAMPP Installation =   C:\xampp

Dropbox Location   =   C:\Users\Patrick\Dropbox

Step 1 – Create web page directory in Dropbox folder. The first thing you need to do is set up a directory in your Dropbox folder to hold your web pages (HTML, PHP, etc.). For this example, I will create a folder named “C:\Users\Patrick\Dropbox\web-content”.

Step 2 – Change XAMPP configuration to point at this folder. There are two variables that need to be modified in the XAMPP configuration file. Edit “C:\xampp\apache\conf\httpd.conf” and modify DocumentRoot and Directory so they point to the new folder inside of Dropbox. For my setup, it looked like this:

OLD ENTRIES (search for them in "httpd.conf"):

    DocumentRoot "C:/xampp/htdocs"

    <Directory "C:/xampp/htdocs">

NEW ENTRIES (change lines above to this):

    DocumentRoot "C:/Users/Patrick/Dropbox/web-content"

    <Directory "C:/Users/Patrick/Dropbox/web-content">

Step 3 – Restart Apache and test. From the XAMPP control panel, stop and restart the Apache server. Create a file named “test.html” inside of your new Dropbox/web-content folder. Open “http://localhost/test.html” in your favorite browser, and you should see the contents of your test.html file.

Step 4 – Sync Dropbox across machines, and modify other configuration files. At this point, it should be easy to make your other computers access the same Dropbox folder. Go to your other machines and edit the “httpd.conf” file in the same was as you did on the first machine. If your Dropbox folder or XAMPP installations are located in different places than they were on your first computer, adjust directory names accordingly.

If you don’t need MySQL support for your development efforts, you can stop here. If you want to use something like WordPress, or another package that requires MySQL, continue with the rest of this process.

Step 5 – Turn off the MySQL server. Before moving things around, make sure the MySQL server is turned off from the XAMPP control panel.

Step 6 – Copy MySQL database into Dropbox. From your first machine, locate the directory containing the actual MySQL database. Copy that directory in its entirety to Dropbox. In my case, I simply had to copy the folder “C:\xampp\mysql\data” to “C:\Users\Patrick\Dropbox\web-database”.

Step 7 – Modify the MySQL configuration file. Edit the file “C:\xampp\mysql\bin\my.ini” and modify three variables to point at the new database folder inside of Dropbox.

OLD ENTRIES (search for them in "my.ini"):

    datadir="C:/xampp/mysql/data"

    innodb_data_home_dir = "C:/xampp/mysql/data"

    innodb_log_group_home_dir = "C:/xampp/mysql/data"

NEW ENTRIES (change lines above to this):

    datadir="C:/Users/Patrick/Dropbox/web-database"

    innodb_data_home_dir = "C:/Users/Patrick/Dropbox/web-database"

    innodb_log_group_home_dir = "C:/Users/Patrick/Dropbox/web-database" 

Step 8 – Restart the MySQL server and test. Restart the MySQL server and make sure everything is working as it was before.

Step 9 – Modify MYSQL configuration on other machines. Finally, make the same changes to the “my.ini” file on your other machines.

That should be it! A word of caution, though, is that these files should never be modified on more than one machine at a time. And more importantly, the MySQL server should only be running on one machine at a time. Conflicts from multiple active MySQL servers would likely wreak havoc.

Good luck!

Postagram a Nightmare Waiting to Happen?

I recently came across the Postagram app by Sincerely, and was eager to give it a try.  The service makes it trivially easy to send a physical postcard through the US Mail, custom printed with a photo of your choosing.  It’s a neat idea.   Unfortunately, I am worried about what appears to be a trivially easy mechanism for a stalker/predator to trick people into giving up their physical street address.

Now, I really hope I’ve missed something here. But I experimented with it and was disturbed by what I found.  I started by creating an account on the Sincerely website. I was then given a chance to build my personal address book with which to send postcards to my friends… and this is where I started to get nervous.

One of the methods for doing this was by providing email addresses for each of my friends.  They, in turn, receive an email message from Sincerely on my behalf. They don’t receive any verifiable information at all in this message that truly indicates it is coming from me on the other side of the process. The email message looks like this:

When the user on the receiving end clicks the link in the email, they are directed to the following page on the Sincerely website:

I went through this process to send a message to another email address that I own.  On the receiving end, I filled in the relevant address information on the website and pressed the “Send Securely” button.  Sure enough, the original sender gets direct access to the street address in their online “Address Book” on the Sincerely website.

Does this raise red flags for anyone else?  A stalker needs only two pieces of information — your email address and the name of a person you trust — to effectively trick you into providing them with your home address.  Very disturbing in my eyes. Are your kids savvy enough to avoid this kind of internet deception?

Facebook “Steals” Phone Contact List

And in my case, they stole voicemail passwords, too! OK, so maybe “steals” isn’t 100% accurate. We probably agreed to let Facebook do this when installing the app or clicking “Agree” for a software update. But this one definitely caught me off guard.

I saw a couple of status updates yesterday claiming “FACEBOOK HAS ALL OF YOUR CONTACT PHONE NUMBERS — EVEN THOSE WHO ARE NOT ON FACEBOOK”. I initially dismissed these as I normally do (thinking people were over-alarmist and had been duped by another status-update scam). Late in the day, though, I tried to disprove them by going through the motions, and, uhhhh… THEY WERE RIGHT! I was shocked.

Did you install a facebook app on your iPhone or Android device? From the standard web interface, click on Facebook’s “Account -> Edit Friends” menu entry. Then select “Contacts” from the far left-hand side of the page. I was quite surprised when I did this. There it was, staring back at me. *ALL* of the contact information from my smart phone.

Is this a big deal? Maybe not for some people. It is for me, though, since my contact list contains speed-dial entries with voicemail passwords. Facebook downloaded all of that. You would think Facebook would realize people might react strongly to this, and give us a major “heads up” before just doing it quietly behind the scenes.

I guess not.

Care to join me on Google+ yet? 🙂

WordPress “Most Shared Posts” Plugin

For quite some time, I have wanted a method for pulling share-counts from facebook and Google+, and using them to identify the most “highly rated” posts on my site. Unfortunately, I was not savvy enough to figure it out on my own.

Imagine my pleasure upon finding the Most Shared Posts plugin for WordPress by Tom Anthony. It does exactly what I was looking for, and the setup couldn’t be any easier. Simply install the plugin, display the “Most Shared Posts” widget on your website, and you’re done! You should be able to see it in action on the right-hand side of this page.

Writing this post was more complicated than setting up the new plugin. 🙂 Many thanks to Tom for making this available!

Dropbox (Maximizing Free Storage)

If you would like to maximize free storage on Dropbox (referral link), there are four things you need to know. First, set up your account through a friend’s referral. Second, complete five of their “Getting Started” steps. Third, link your Dropbox account to Twitter and Facebook. And finally, leverage their referral mechanism to the fullest extent possible (understanding protections against “scamming” the system)!

Dropbox is a cloud-based storage service that appears as a special folder on your computers. Whatever gets placed in that folder is automatically synced with your other computers. Change a document on one computer, and those modifications are automatically distributed to all other computers. It works with Windows, Mac, iPad, iPhone, and Android. Plus it provides web-page access to your files so you can get to them anywhere you need to! I cannot emphasize enough how clean and useful the interface is. This is, in my opinion, an absolute MUST HAVE application.


Everyone who signs up automatically gets 2GB of free storage. For a very large number of users, this will be plenty of space to share documents and photos on multiple computers (they can even be shared with other people, but that’s another topic). Need more space? Dropbox offers paid subscriptions for 50GB and 100GB folders. Most of us, though, whether we need it or not, are interested in every last drop of free space that we can possibly get. And the folks at Dropbox provide us several ways to increase our free storage! Some of these are well-publicized, while others are not. Here is what you need to know.

Initial Referral – If you have not already set up a Dropbox account, start by getting a referral link from one of your friends (or use the one here, if you have found this article useful). The business model at Dropbox leverages referrals heavily, and when you are referred by a friend, BOTH OF YOU get 256MB of additional storage added to your free account!

Getting Started – When you set up your account, Dropbox will provide a seven-item “to-do” list on their “Getting Started” page. These are simple items like “Take the Dropbox tour” and “Put files in your Dropbox folder”. Complete five of these and they reward you with another 256MB in your account.

Social Media – For some reason, this one doesn’t appear to be well publicized. Go to the page https://www.dropbox.com/free and you will be presented with an opportunity to link your Drobox account to Facebook and Twitter. Complete all items and you are rewarded with another 640 MB of space. On a side note, once you are awarded the space, you can “unlink” your accounts from Dropbox and the new space remains intact.

Provide Referrals – and back to the referrals. Now they would like you to recruit people, and for every new customer, again, you both get 256MB of additional space. You can be rewarded for up to 32 referrals, resulting in a whopping 8GB of additional free space!

… and for the “Hackers” out there …

I know full well that a lot of people immediately thought to themselves, “well, heck, I will just set up 32 new email addresses and send referrals to those!” Nice try, but they’re looking for that. Your references actually need to install the Dropbox client on their computers for you to get the credit. “No problem, you say, I will just uninstall my current client and install it again with the new email address!” Wrong, again, Dropbox is pretty good at detecting when two installations occur on the same computer… and they will mark the referral “ineligible”.

… HOWEVER …

Presumably, if you are installing Dropbox, it is because you have more than one computer to install it on. If this is the case, there is one thing you can do.  After you have finished installing Dropbox on your “primary” computer, for each additional computer you would like to install Dropbox on, DO NOT INSTALL DROPBOX WITH YOUR ORIGINAL CREDENTIALS. Instead, you can send a referral to a secondary email address, and set up that computer with the REFERRAL credentials. Once that is complete, both accounts are credited with 256MB of free space.

The problem now is that your two computers are not sharing the same Dropbox space which was the original point to all of this. Once you have installed Dropbox on your secondary computer with your secondary credentials, you should unlink the secondary installation from the secondary account, and re-link that installation to your primary account. This can be done by opening the Dropbox client on your secondary computer, selecting “Preferences”, and then “Account” from the menus.

I should point out that I don’t necessarily condone “scamming” the system with a huge number of extraneous installations. After all, Dropbox has a business to run and they are providing a wonderful service. So once you have completed getting your own account set up, if you do indeed like the service, start recruiting. And in the process, getting more free space. 🙂

If you have found this article useful at all, please consider using my referral link for Dropbox to get started.

(Sorry, gang, every time a new article is posted about Dropbox, the comments are flooded with referral links.  These will be deleted to keep it manageable.  Thanks for understanding.)

Facebook Share Button Revisited

I have been using the facebook share button on this site for some time. It provides a convenient mechanism where visitors can share a link to the current page, and it displays the number of times it has been shared. About six months ago, I posted the details of a “hack” I was using to deal with a counter-display problem. This was an annoyance where the count was only displayed after the page had been shared at least three times.

While analyzing traffic to my website recently, I came across another fix that was proposed by Stuart Gilbert, and subsequently posted to the facebook developer’s forum. His solution has a distinct advantage in that it does not require the creation of a local FB.Share file to be modified. Instead, additional javascript code is included directly in the web page.

This provided me with the motivation to start tinkering with my site’s design once again. I went back to re-trace the steps that I took when first experimenting with the share button, but as I started looking around, I found signs that facebook is no longer promoting their share button. Instead, they are pushing developers to use the “like” button instead. Why do I say this?

Well, first off, I went back to my original article and clicked on that first link that used to take people to the facebook share-button generator page. Lo-and-behold, it’s no longer there! Visitors are directed to the like-button generator instead.

OK, so I tried to search for “share button” in the facebook developer pages, but the only pages discussing the share button were older blog entries. I did come across a blurb on the search page — and for the life of me I can’t find it again — that said something along the lines of “New developers are discouraged from using the share button and should use the like button instead”. This statement appeared in the search-result excerpts, and not in the actual page it pointed to. But I have failed to find it again.

Not that it really matters. All current documentation on the facebook developer pages seem to redirect “share button” searches to the “like button” pages. Which is fine… no big deal. But it’s a sign that facebook seems to be phasing out the share button altogether.

Page 1 of 212