Error Messages Visible During Site Upgrade

During the course of a client web site upgrade today, one of the site’s visitors informed us that the web site was displaying an error and was exposing passwords in the error message.

While a password was in the error message, that password was only valid for the session state database and does not expose any other databases to access, including those with client data.

For those who would like a little more technical detail, the targetFramework error is expected while the site and applications are in transition across the .NET framework boundaries as the site is updated. The presence of the session state password and machine keys was not intended but was a side effect of an issue that has already been addressed. Some of the values are not in use and were commented out, but still displayed in the XML exposed in the error message.

As a result of this exposure, we removed existing accounts and set up new accounts and passwords.

Mirth Connect – Not Just HL7

Mirth Connect is an open source application used for healthcare data integrations, specifically designed for HL7 interfaces. It is widely used for transfer of health data between two parties in an order to results cycle. But what happens when you need to transfer data to another party who isn’t using an HL7 interface? Limiting your inbound/outbound capabilities to only the HL7 format may prevent adding new customers. But, adding a second interface/solution may not be worth the cost of adding the new customer. The need to invest in a second solution is resolved by the different Connector Types available within Mirth Connect.

In this post, I am going to show you an example of how to interface HL7 data to a Web Service. We implemented this back in 2012 for a client. Our client had an existing HL7 interface and was receiving HL7 orders, processing the claim, and sending back HL7 results. They had a potential customer also looking for an electronic data transfer. However, they were not using HL7 formatted data. The potential customer used an application that received data via a secured SOAP request. Because this was a single client, it was unlikely that building a separate interface specifically for the integration would be the best business decision. So, we explored the possibility of using existing functionality (Mirth Connect) to send data to this web service.

Mirth has the ability to transform data between multiple formats. In this case, we were able to use the JavaScript writer to take the necessary data points (via Source Transformers) and complete the proper SOAP request. While Mirth Connect offers a Web Service Connector Type, we found the best flexibility in the JavaScript writer, where you can customize all the functionality and you are not limited by the default behaviors of the template.

Check out our example below, and find more information on Mirth Connect here: http://www.mirthcorp.com/products/mirth-connect

// open a connection to the Web Service
var url = new java.net.URL("https://testinterface.com/Document.asmx");
var conn = url.openConnection();

// set the connection Timeout
var connectTimeout = 30000;

Here we are returning the XML from our Source tab under the Transformers. This isn’t the only way to do it, but this worked best for us and our current solution.

var messageString = messageObject.getEncodedData();

You could also do something like this, where you build out the Request XML and use Transformer variables that you include as XML Node Text

var messageString = "<SOAP:Body><Patient>" + messagePatient + "</Patient><MRN>" +  messageMRN + "</MRN></SOAP:Body>"

conn.setConnectTimeout(connectTimeout);

Here we needed to use Request Headers, which we found easier to setup in the JavaScript writer than the Web Service Connector.

conn.setRequestProperty("ID", "123");
conn.setRequestProperty("USERNAME", "ALGONQUIN");
conn.setRequestProperty("PASSWORD", "PASSWORD");
conn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
conn.setDoOutput(true);

// Write our XML data to the Web Service URL
var outStream = conn.getOutputStream();
var objectStream = new java.io.OutputStreamWriter(outStream);
objectStream.write(messageString);
objectStream.flush();
objectStream.close();

var inStream = new java.io.BufferedReader(new java.io.InputStreamReader(conn.getInputStream()));

4 Questions a Software Developer Should Ask Each Day

This is my take on a lesson I was taught very early in my career.  It made sense to me right away, but after applying it for over a decade I’m convinced its one of the most important things I’ve ever learned.  I hope to do it justice in sharing it with all of you.  I’ve written this from my perspective as a custom software developer and consultant, but I believe it applies universally to software developers.  If you’re an in-house developer, just think of your clients as the folks you build software for (i.e. the users, your managers and the owners, etc).  Start by asking yourself:

Question #1: Is your client happy?

This should be the first thing on your mind at all times.  A happy client will come back for more. They’ll tell their friends about you.  They’ll promote your brand.  They’ll keep your pipeline full.  Clients are your lifeblood and keeping them happy is the only way to survive long-term.  I know… this is obvious, right?  Well, it’s not that easy to execute on all the time and a lot of developers don’t really understand what it means.  We’re not looking for short-term happiness brought on by just doing whatever they ask or by applying quick fixes in difficult situations. We’re after long-term, sustainable happiness.   How can we achieve that?

Manage Expectations:

This is huge.  You have to start managing your client’s expectations the moment you meet and continue doing so throughout the course of the relationship.  The moment you stop filling their heads with facts, they’ll start filling it with all types of other things.  Expected timelines will creep, visions of features will morph, old conversations will take on slightly skewed meaning in the light of new information that isn’t shared and wasn’t part of the original conversation. Expectation creep is not malicious… its human nature.  Small expectation gaps are like a crack in the foundation of your house.  With effort you can avoid them in the first place, but if allowed to form and grow they can be devastating to a relationship.  Communicate clearly, completely and often. And memorialize EVERYTHING in writing.

Honor your commitments:

Lots of promises are made at the beginning of the job.  Most of them will be recorded in a contract that commits you to honor them. However, not every intention, notion and promise will make it in there.  There will always be a new way to look at a deliverable later on and re-interpret its meaning. This tends to happen when the going gets rough. Maybe things are taking longer than anticipated. Maybe you’ve had staff or personal issues that distracted you from the project.  Stuff happens.  Renegotiate the terms if it’s reasonable to do so, but don’t, under any circumstances hide behind a nuance in the contract language or try to back away from the original spirit of the deal.  You know what you committed to. Honor it and get the job done. It will hurt at times, but your client’s happiness and your reputation depend on it.

Be a partner:

You’ve agreed to help your client solve a problem.  The best way to do that is to look at the issue as your own.  Do your best to see and feel the goals from your client’s perspective.  Own the problem.  Your client can tell the difference between this approach and that of the last firm who was just “doing their job”.

Be Available:

You should return calls/emails in a reasonable and consistent amount of time and you should answer the questions contained in them.  If you take long, random amounts of time to respond you’ll frustrate your clients. If your late response doesn’t answer the question, you’ll infuriate them.

Stick to your principles and do the right thing:

Your client hired you because they don’t have the time, or more likely the expertise to accomplish the task.  Even though you’ve been brought in as the expert, there will come a time where the client insists you to do something that you know will hurt them in the long-run.  It’s your duty to hold your ground in these situations. Take time to explain why this approach will be harmful. Give examples. Be steadfast. Ultimately it’s their decision, but you owe it to them to try and do the right thing.  I often liken this role to that of a personal trainer.  If your client came to the gym and told you they were tired and didn’t feel like working out, you could satisfy their short-term desires, buy them a muffin and a shake and plop them in front of the TV for a little Judge Judy, but that’s the easy way out and it won’t help them accomplish their long-term objectives. It’s your job to get them motivated and on the treadmill.  Don’t be a coward… do your job!

Be enjoyable to work with:

Make a connection with your clients on a personal level.  Ask them about their kids, their pets, their hobbies.  Be human and have a sense of humor.  Your client will like you if you help them solve their business problems.  They’ll love you if you help them have a good time doing it.

Be humble:

I’ve already stated that you’re here as an expert, but that’s probably only true for your specific role in the overall initiative.  Whether you’re building software or developing a social media strategy, you’re doing it for them.  Don’t come in acting like you’re the savior.  Do your part and do it well, but trust that they understand their business better than you do and they have the grand vision.  This is a learning opportunity for you and it’s probably the best part of being a consultant.  Listen intently, learn from them and make sure they know you’re doing it.

Question #2: Is your work correct?

If you’ve executed on the principals from #1, your client’s in a happy place.  Now it’s time to deliver and your solution better work.  It must accurately achieve the goals of the project in a meaningful and sustainable way.  It has to work today so that they can execute their business plans and begin to see some return on investment.  It has to be flexible enough that it can be modified as their business evolves.  It has to be scalable so that it will remain viable as their business grows.  Ultimately, this becomes an extension of #1.  Your product speaks for you when you aren’t around and it should continue the good work you did from the beginning.

Question #3: Is your work on time?

So you’ve got a happy client and a solution that works.  Next, you need to ensure that everything is delivered on-time.  Every project you take on becomes part of some larger business plan.  Once you commit to timelines, your client begins to plan their next steps.  Let’s say they’re planning a major product launch to coincide with the release of the new web site and online catalog you’re building for them.

They’ve got billboards going up, commercials ready to air and an army of trainees preparing to handle the expected influx of business…. and it all hinges on that end of year delivery your promised.  Now imagine its mid-December and you tell them you won’t be hitting your date.  It’s a client happiness catastrophe!  Months of planning is coming unraveled, your client cancels holiday bonuses for their staff because they need to conserve cash to pay the army of trainees with no corresponding revenue offset, they can’t cancel the billboards and commercials and they’re going to look like fools when they don’t deliver the product their hawking; oh… and your client is really starting to worry because they have a family vacation planned for the month after the project was set to be done and now that’s in jeopardy.  This may be an extreme example, but rest assured that your missed deadline will cause problems for you client that you may never even know about.  All you’ll know is that despite “everything you’ve done for them” your competitor wins the next job.

Question #4: Is your work on budget?

I bet you didn’t think it’d take this long to talk money.  Don’t get me wrong… budgets are important, but less so than client happiness, quality and timelines when it comes to your long-term success.  Simply put, you must never sacrifice #’s 1-3 to keep your budget in line.  That’s short-term thinking and it’ll eventually lead to a crippling pile of problems that will crush your business and reputation.  In a recent post titled Keeping Projects on Budget, I explained how an end-to-end project management effort is required to walk this line.  You’ll need to develop a process that works for you and execute it flawlessly.

One key topic to keep in mind along the way: Don’t do Out of Scope work for free!  I mean it… never ever ever ever. Not even small stuff.  Given the flexible nature of software, it’s easy to throw in this tweak or that additional feature.  It seems harmless at the time, but it always leads to problems.  First off, you’re mismanaging expectations.  You’ll be more likely to agree to something extra at the beginning of the project when you have lots of budget then you’ll be at the end when the budget’s winding down.  When you say yes, yes, yes then no, your client starts to feel cheated.  Why are you tightening the reigns now?  This leads to unspoken animosity where the developers think their earlier “generosity” is not appreciated and the client thinks this new strictness means the development team isn’t willing to see their “promises” through to the end. Everyone’s right and everyone’s wrong. It’s a bad situation and it damages relationships.  Secondly, now you’ll have to finish the scoped items with less than the necessary budget. You’re faced with sacrificing quality or sacrificing your profits.  That sucks.  See #2 for advice on what to do.

Summary

Software development can be a tricky business.  Most developers can handle the technology, but many struggle with managing the overall process.  Ask yourself these questions daily and align your efforts with satisfying them in priority order.   It takes time and effort, but if you persistently follow this list you’ll build great relationships, feel good about the work you do and eventually… you’ll make some money too.

I’m always looking for new tips and techniques for keeping my clients happy.  What’s worked for you?

Recommended read: While researching for this post I came across an article I liked so much I had to share.  A short, but important read: Mastering Account Management: 5 Tips for Keeping Clients Happy

Why Won’t Cross-Sectional Teams Adopt Change? The Technology Adoption Lifecycle.

By starting a fire and carefully kindling it, you can roll out a change at your firm with much less effort.

Let’s say you have a change coming up for your users. It could be something practical, like an update to your billing system. You’ve already decided that this change is worth it: decreasing missed revenue and speeding up accurate billing reports. But the update will require your users to work in a different way. Do you dread holding everyone’s hand through the roll-out? Why can’t your users just follow your instructions? Will this take more effort than it has to? How can you make this easier on everyone, not the least you?

Take a moment aside to think of your most troublesome user. How do they react when posed with a change? Now think about the user who picks up changes faster than you think is prudent. How are they different? Who else resists change or eagerly pounces on it? More than likely, your users’ perspectives on change reflect deep personality traits. Do you consider these traits when you roll out a change?

This gets at an idea called the technology adoption life-cycle. In the late 1950’s, Joe Bolen, George Beal, and Everett Rogers at Iowa State University researched how farmers adopt new ideas. They called it the diffusion process. If you think farmers are nothing like you, think again–they cultivate an investment today or go hungry tomorrow. Later, researchers identified five distinct personality profiles shared by major groups and determined that members look most strongly within their group for ideas to adopt:

  1. Innovators: Enthusiasts
  2. Early Adopters: Visionaries
  3. Early Majority: Pragmatists
  4. Late Majority: Conservatives
  5. Laggards: Skeptics

Think of a bell curve across these groups to grasp the portions. In the early 1990’s, Geoffrey A. Moore developed this idea further within startups in a book called Crossing the Chasm. It remains a useful text, even if you can’t recall the examples. He focused on discontinuous changes – those that cause people to alter their behavior, like your billing system update.

Technology-Adoption-Lifecycle

I believe that you can apply this model to shorten the time it takes to get your firm on board with changes being implemented. How? By speaking differently to the concerns of each group.

If you don’t answer my questions first, I’m not receptive to the rest of your ideas. But if you address my needs, I’ll listen further.

Imagine being each of the people below:

  • Innovators: Tech Enthusiasts
    • Volunteers to try out new tools; gives detailed feedback even if the tools aren’t ready
    • Wants: the truth with no tricks, to be the first, affirmation that their feedback is used, and support from a tech expert
    • Usually lacks buying power; price should be someone else’s concern
    • Let them play
  • Early Adopters: Visionaries
    • Driven by a dream of change: a business goal, not a tech goal
    • Driven by personal recognition; will move to the next project quickly
    • Willing to act as a visible reference on first-time projects
    • Least concerned with price, since this is just the tip of the iceberg
    • Hard to please since they’re buying a dream; manage their expectations
    • Overlooked as a source of seed funding
    • Paint a picture
  • Early Majority: Pragmatists
    • Values productivity: incremental, measurable, predictable business progress
    • In it for the long haul
    • “Pioneers are people with arrows in their back”, “let somebody else fix your change”
    • Will pay for service, quality, support, integration, standards, and reliability
    • Show how you can improve their day
  • Late Majority: Conservatives
    • Prefers tradition to progress; stick with things that work
    • Change should be simple, cheap, and not an interruption
    • Point out pragmatists who didn’t get stung
  • Laggards: Skeptics
    • Only blocks change; isolate them
    • Doubts that the change will bring the promised returns
    • Neutralize them with the big picture gain for your whole firm, not just this change
    • Fortunately, few in number

Go at them one at a time. Some groups influence others and you can use this influence to build a beachhead, getting strong adoption among innovators and then moving on to the next group, early adopters. Word of mouth from pragmatists may amplify your message to conservatives. You can build momentum and get more for your scarce time.

If it works for the person I respect, it will work for me.

So, where do you begin? Show your change to innovators at your firm, first. Let them work it out in practice. Avoid teams made of cross-sections of your entire firm, since the negative comments from laggards will sink your idea. Go in phases–form a pilot group of innovators and perfect your idea then, paint a picture of your vision to early adopters. They’re thirsty for change.

There will come a point when you’re ready to jump to the mainstream with pragmatists, but remember, they won’t value change for its own sake like the early adopters. Instead, they’ll invest in productivity gains. So focus on the early majority one small team at a time with overwhelming service. Their positive reviews will mean something to the late majority too. And just let go of the laggards, like the wisdom of the old serenity prayer. Provided you’ve done your work with the innovators, early adopters, and conservatives, the laggards will no longer have the power or influence to derail the changes you’re implementing.

Making and Using QR Codes

Originally posted on March 28, 2011 by Adrian Roselli, on evolt.org.

If you happened to spend any time at SxSW this year, then you probably were inundated with QR codes everywhere you looked. People were attaching them to everything — backpacks, street signs, business cards and probably even pets.

What is a QR Code?

Sample QR code image. If you aren’t familiar with QR codes, they are those pixelated-looking collections of black and white squares that have been popping up more and more in recent weeks and months, even though they have existed for years. The QR (Quick Response) code was first developed in 1994 in Japan to track vehicle parts but has since grown to become a handy way to encode all sorts of data, most notably web site addresses for use in traditional media campaigns.

Since the QR code is defined by an ISO standard (ISO/IEC 18004) and is free of any license, it’s a handy base for developing your own uses. With QR code readers now standard on most smartphones and available for web-cam-equipped computers, more and more people can access the information you might want to encode.

You can get more detail on the history of the QR code at my article Real World Hyperlinks at evolt.org.

How Can I Use It?

Image of QR code being scanned by a mobile phone.The simplest and most obvious use is to drive traffic to your web site, whether to a special page built specifically for that traffic, or just to the home page of your site. Less obvious uses include simple text statements, vCards data and event information.

Because I have fielded a good deal of questions lately asking the process by which I have implemented QR codes, I’m going to run through the steps of creating one — requiring very little skill, cash, or special software on your part. For this process, I am discussing developing a QR code to be used as a stand-alone (probably printed) code. As most of you reading this are probably web developers, I am going to address making a QR code with an embedded web page address. I’ll touch on dynamically-generated QR codes below.

Choosing the Format

Image of a Microsoft HCCB tag. There has been some discussion of Microsoft Tags by some of my clients, usually resulting in questions about why a QR code should be used over a Microsoft Tag. The Microsoft Tag is Microsoft’s answer to the QR code, released back in 2009. Not only has it not received wide adoption, most code readers cannot even understand a Microsoft Tag. While the Microsoft Tag can embed more data, it is also a color solution by default (although it can encode in shades of gray). This means that a full four-color print job must be run for each use, something which small budgets may not be able to support when a black-and-white QR code may be a better fit. An entire article could be written (probably by me) explaining the technical differences between the two technologies, waxing poetic about license risk, and discussing implementation concerns, but when it comes down to it, QR codes have become the de facto standard for scannable bar codes.

Choose a Destination Page

Screen shot of my QR code landing page on a mobile device. If you are using the QR code to send someone to your site, consider sending them to a special landing page. Using your home page may not be the best choice. It will be hard for you to identify what users came to your site via the QR code when analyzing your web site traffic statistics later. Instead, consider a landing page, perhaps even a different landing page for each media/campaign/ad/etc. where you use your QR code. You can even use this to perform simple A/B testing to identify which ad or t-shirt got more attention.

Given how many people will be using their mobile devices to read the QR code, make sure that destination page, and ideally the whole site, works on a mobile device. Whether you are using custom mobile templates, CSS3 media queries, or just relying on the browser’s ability to scale your page, make sure you know how it will look. Any interest you may have generated will be lost if the user cannot access, view, or use the page or the rest of the site.

Consider the Complexity

Image of complex QR code.

As you are tying to determine what web address to encode, think about your output. The more characters, the more complex the code becomes, which means the smaller those little squares get in order to pack more and more into the grid. This can be a problem if you can only print your code as a 1-inch square, or if you post it to a billboard which is seen by a smartphone from 100 yards away.

You may need to reconsider encoding your CNN-length page address because it may create far too complex a QR code for you to print at any reasonable size. This is the part where you might want to consider a URL shortening service (like bit.ly) — I recommend you do not. Since so many QR codes appear with minimal context, I have become wary of scanning a QR code without first verifying the link. When I see a bit.ly (or other shortener) link, and I am not confident enough about the source to trust the link, I am not interested in risking the health of my phone by visiting a porn-laden malware site. I tend to just abort any shortened links before going to the site.

None of this addresses the scenario where the shortening service you use ends up going away in the future (going out of business, being bought up, losing access to the ccTLD, etc.). See my post Libya’s Terror Plot: Link Rot (Linkpocalypse?) for more detail on the risks of using these services.

Instead, look at methods you have available to you to create a shorter address. Most content management systems provide a method for you to create an alias or alternate address for a page. Many organizations who utilize Twitter have already invested some effort in a method to shorten page addresses when character count is so important. You may want to come up with an internal standard to use so that you can provide unique addresses in the fewest possible characters, such as /QR1 through /QR42 and beyond.

Generate a QR Code

Image of Google's QR code generator.

Now that you have a sufficiently short address to use in your QR code you can go about creating the code itself. There are many resources on the web for generating a QR code, but I’ll focus on the one offered by Google. Google’s QR code generator allows you to set the size and border all while previewing the image. The largest it will allow is 540 pixels square, which you will want for print. Make sure you also set the margin to zero, getting rid of the white border around your QR code.

Image of Google's QR code generator configuration options.

Now stop for a minute, pull out your QR code scanning device tool thinger and point it at the QR code you’ve just generated. Make sure that it takes you where you want to go. Better to test it now than after you’ve spent time embedding it in your print documents.

If you’ve spent much time building for the web, you probably know how to save this QR code. Whether you are a right-click-saver, a drag-to-desktopper, a brute-force-screen-capper, or something else, now is the time to grab the image.

Prepare the QR Code for Print

Photoshop Bitmap Conversation dialog box. I suggested getting the largest possible QR code (540 pixels square) so that you can more easily drop it into your page layout application without the software scaling it for print, possibly muddying the detail on the edges. This image can work as-is, but if you have access to Adobe Photoshop or a similar tool, you may want to take an extra step for print. At the very least this reduces the risk of errors when your layout goes to a RIP on its way to the press.

Photoshop Image Size dialog box. Open the document in Photoshop and convert it to bitmap mode (by converting it to grayscale first, then to bitmap with a 50% threshold). This reduces the document to only black or white pixels, no shades of gray. From here I suggest scaling it to match the final dimensions you want the image to be when printed, increasing the resolution as well. Because this is a bitmap image, the scaling won’t introduce fuzzy edges, but you may want to use the “Nearest Neighbor” method when scaling (it’s on the scaling dialog box) instead of “Bicubic Interpolation.” Save the document as a TIFF and you should be good to drop it into your page layout software. The rest is up to your normal printing process.

Alternate Uses

This is just one example of QR code use and output, but there are many more things you can do. For example, perhaps you sell food and offer recipes to users — consider embedding a grocery list in a QR code. Embed your vCard information on your business card or resume. If your band landed a sweet gig, embed the event details in a QR code on your posters.

Printed Web Pages

Image of a printed web page with a QR code.

While you may build print styles into your sites as a matter of course, you can take those printed pages a little bit further with minimal extra effort. Using the same Google QR code generator I mention above, you can see that below the generated QR code is a box that allows you to paste a link to the image into an email. If you take a moment and look at it you can skip reading the documentation to see that all you have to do is append any address to the end and, with appropriate sizing information, you can dynamically generate QR codes:

http://chart.apis.google.com/chart?chs=200x200&cht=qr&chl=http%3A%2F%2FYourSite.com%2FServices%2FSomeServiceYouOffer%2FOthers

Make sure you choose a QR code size that when printed is large enough to encode the full page address without being too complex for the average printer. I have been using 200 pixel squares with success, but my page addresses aren’t as long as some sites.

In your standard page CSS, hide the image. In your print styles, display the image. Now when people see the printed pages of your site, going to the original page on the web is as simple as a quick scan. No longer do you have to worry about the page address being cut off in the printed page footer.

Embroidery

Hat embroidered with a QR code.

Yes, it is possible to embroider a QR code. I have been sporting my own QR code hats and shirts for some time now, confounding some and amusing others. Complexity is important here, too. Embedding your vCard, while novel, is impractical. Getting a short web address into a roughly 2 inch square, however, is possible. Depending on your contract embroiderer, the cost can be pretty low. When you add this to the cost of a nice coat, some luggage, or shirts for conferences, then it’s not much extra cost.

If you do go down this path, your embroiderer may ask for a vector file from which to work. I’m a little old-school, so I still have a copy of Macromedia Freehand on my machine and it has a great trace tool (far better than my even older Adobe Streamline). Whatever software you have, the trace tool can save you valuable time from drawing all those squares. Make sure you set the trace tool to be highly precise and angular.

Before you submit it to your embroiderer, scan it with your QR code reader. Make sure it works. After your embroiderer gets it, ask to see a “sew-out” — the embroidered image on a piece of scrap cloth. Make sure to scan that as well. If it takes very long for your QR code scanner to recognize the image, then consider asking the embroiderer to enlarge the image and try again.

In the end, having an embroidered QR code probably won’t generate any more interest in your product or service, but it is a novel use and can be a conversation starter. Or killer if the other person in the conversation doesn’t care. Use it wisely.

Letterpress

Book of poetry done in hand-letterpressed QR codes.

Yes, good old-fashioned printing, just like you would do with blocks of type. Having recently held a hand-printed book of poetry all embedded in QR codes, feeling the texture of the ink on the page, I can tell you that it is a novel experience.

This particular example was conceived and constructed by Chris Fritton, printed at the Western New York Book Arts Collaborative, and premiered at the Western New York Small Press Book Fair. Each page in the book must be read with a QR code scanner, creating an interesting pairing of old and new technologies. More images of the book are available at his Etsy shop (disclaimer: I met him once, I get no kickbacks from this).

Related Links

Recent(ish) News on Google, Bing, SEO/SEM

Originally posted on March 3, 2011 by Adrian Roselli, on his personal blog.

Google LogoI have written many times here about SEO/SEM and how so much of it is sold to organizations by scam artists (though I recoil at the thought of calling them “artists”). Too often it includes demonstrably false claims, like how meta keywords and descriptions will help your site and that you should invest in the SEO vendor to do just that.

I also try hard not to spend too much time addressing the ever-changing landscape of the search engines, let alone focusing on just one of them. However, sometimes it’s worth wrapping up some of the more interesting developments because they can genuinely affect my clients who aren’t trying to game the search engines.

Content Farms and Site Scrapers

If you’ve spent any time searching through Google you may notice that sometimes you get multiple results on your search phrase that look the same in the results, but when visiting the site you find they are just ad-laden monstrosities with no value. Sometimes one of these spam sites would appear higher in the Google search results than the site from which the content was stolen.

Google has now taken steps to not only push those sites back down to the bowels where they belong, but also to penalize those sites. These changes started in late January and went through some more revisions at the end of last month.

I think it’s fair to expect Google to keep tweaking these rules. Given all the sites that offer RSS feeds of their content (along with other syndication methods), it’s likely that many sites integrate content from external sites into their own. The trick here will be for Google to recognize a site that has a original content that also syndicates third-party content from a site that has nothing but content taken from elsewhere. If you do syndicate content, then you should be sure to what you site stats and your ranking in the search results to see if you are affected at all.

Additional reading:

Page Titles

Perhaps you have spent a great deal of time carefully crafting your page titles (specifically the text that appears in the title and which displays in your browser title bar). Perhaps you have noticed that in Google the title you entered is not what appears on the search results page. This isn’t a bug, doesn’t mean your site was indexed improperly, and doesn’t necessarily mean your page title had some other affect on your page rank. This is done intentionally by Google.

This does imply, however, that your titles are unwieldy. Google does this when titles are too short, when they used repeatedly throughout a site, or when they are stuffed with keywords. If you find that your title is being cut off (implying it’s too long) then you may want to limit your title to 66 characters, or at least put the most important information in those first 66 characters.

Additional reading:

Social Media

It wasn’t that long ago that Google and Bing said that links in social media (think Facebook and Twitter) will affect a site’s position in search results (PageRank for Google). Some people may even be tempted to run out and post links to every social media outlet they can find, hoping that the more inbound links, the better for their site. Thankfully it’s not that simple.

Both Google and Bing look at the social standing of a user when calculating the value of an inbound link. This can include number of followers (fans/friends on Facebook), number followed, what other content is posted, how much a user gets retweeted or mentioned and a few other factors. In short, those Twitter accounts that come and go in a matter of hours that tweet a thousand links into the ether aren’t doing any good. A good social media strategy that is garnering success, however, should also give a boost to the sites it links.

What is not clear, however, is how URL shorteners (and which ones) affect the weight of those links.

Additional reading:

Random Bits

These are some random articles I collected for posts that never happened. I still think there’s good stuff in these and warrant a few minutes to read.

Google: Bing Is Cheating, Copying Our Search Results and Bing: Why Google’s Wrong In Its Accusations should be read together. The accusation from Google that Bing is stealing its search results is fascinating on its own, but reading Bing’s response demonstrates a host of things Bing also does differently. For me it was an entertaining battle, but that’s about it.

HuffPo’s Achilles Heel discusses how Huffington Post relies on questionable SEO techniques, which I equate to spamming, and wonders how long the site will be viable if AOL isn’t willing to keep up the SEO game as the rules change. It could be a great purchase for AOL, or a dead site full of brief article stubs.

Is SEO Dead? 1997 Prediction, Meet 2009 Reality is a two-year-old article dealing with a twelve-year-old argument. And still relevant.

When A Stranger Calls: The Effect Of Agency Pitches On In-House SEO Programs should be particularly interesting to people who are charged with some form of SEO within an organization. Too often the unsolicited call or email comes in making grandiose promises and citing questionable data and results. This article provides a good position from which to push back and make sure you and your employer aren’t taken to the cleaners.

A 3-Step SEO Copywriting Confession almost sounds like an admission of wrongdoing, but instead talks about how to structure your content for SEO without completely destroying it.

Additional reading (that I wrote):

Time to Update Your Web Site Copyright Date

Originally posted on January 12, 2011 by Adrian Roselli, on the QuantumCMS Community Site.

It’s that time of the year where you should take a few minutes to log in to QuantumCMS and update the copyright date on your web site. If you don’t remember where it is, for most of our clients it’s a Site Property that you can edit. If you don’t remember how to edit that property or don’t have your documentation handy, this tutorial can help: Adding a Site Property (it also works if you just want to edit the existing property).

Why is it on your site?

Perhaps you only have a copyright statement on your site because we included it in our design, perhaps you have it because your legal counsel suggested it, perhaps you only have it because you’ve seen it everywhere else. Since I am not a lawyer, doling out legal advice isn’t in the scope of this post. You can ask your own legal counsel about how declaring a copyright protects your content.

I am writing this from the perspective of U.S. companies, although I know some of you reading this are not U.S. companies. In that case, I suggest you check your own country’s laws on copyright.

If you are more inclined to track this information down on your own, you may want to take a look at the U.S. government Copyright.gov site, specifically the page “What Does Copyright Protect?” which links to a PDF file (“What Works Are Protected?“) containing the following statement:

No publication or registration or other action in the Copyright Office is required to secure copyright.

If you are adamant about registering your web site with the U.S. Copyright Office you should grab a copy of “Copyright Registration for Online Works” (provided as a PDF file).

How else is the copyright date used?

I’m glad you asked.

Many web site users see the copyright date as a quick cue to how fresh the content is, even telling them if the site is stale. If you are visiting a site with a date of 2009 (and it is now 2011) in the footer, you might think that nobody has touched the site in two years. And you might be right.

Many sites use the copyright with a year span (1998-2011, for example) to demonstrate how long a site or organization has been in existence. This may not impart any added benefit if you are pursuing somebody who has stolen your content, but it does at least indicate to users that you have been around for a while, are current, and probably know a good attorney.

Don’t wait too long to update copyright date on your site. If your site claims to be from 2010 then it is at least over a year old, and at most only a couple weeks old. Remove that confusion by taking a few minutes to update it.

As always, if you need any help just give us a call or send us a note.

You Get What You Pay For

Originally posted on December 17, 2010 by Adrian Roselli, on his personal blog.

We're just shutting down delicious, not selling your children to gypsies. Get the f-ck over it.

First off, let me apologize for ending the title of this post with a preposition. I am playing off an idiom, so I think I have some leeway. Besides, “You get that for which you pay” just doesn’t roll off the tongue.

In the last week I have watched two free web services I use announce (in some fashion) that they are going away. This has caused a good deal of frustration and anger on behalf of users. And it’s all just a repeat of things I have seen on the web for 15 years now.

I have watched the Brightkite blog, Facebook page and Brightkite/Twitter accounts get hammered with angry and abusive comments from users (Brightkite Yields to Foursquare, Gowalla, Etc.).

I have watched on Twitter as people have derided Yahoo’s decision to shut down del.icio.us, the place where they have shared and stored bookmarks for years (Leaked Slide Shows Yahoo Is Killing Delicious & Other Web Apps at Mashable).

I felt vindicated when Google decided to pull the plug on Google Wave, partly owing to the fact that nobody could quite figure out how to wield something that was a floor wax and a dessert topping all in one (Google Wave is Dead at ReadWriteWeb).

I have watched as some of the URL shorteners on which we have come to rely for services like Twitter have announced that they are going away, or have just disappeared (List of URL Shorteners Grows Shortener).

I, and perhaps the entire web, breathed a sigh of relief when Geocities announced it was going to take a dirt nap — and finally did (Wait – GeoCities Still Exists?).

I remember when both Hotmail and Yahoo decided it was time to start charging for access to some of the more enhanced features of the free email they offered users (Say Goodbye to Free Email).

I saw people panic when they might lose access to all sorts of free video, photos, and even text content from CNN, Salon, and others (End of the Free Content Ride?).

We Get It; You’ve Been There, What’s Your Point?

These services all have a couple key things in common:

  1. Users have put a lot of time, energy, and apparently emotion into these services.
  2. They are free.

The second point, in my opinion, should mitigate the first point. If you as a user are not paying to use a service, then is it a wise decision to build your social life or your business around it? Do you as a user not realize that these organizations owe you nothing?

As Brightkite announced the shuttering of its core service with only a week heads-up, they were kind enough to allow users to grab their data via RSS feeds. Yahoo hasn’t even formalized the future of del.icio.us, but already fans have found a way to grab the data. But in both of these cases, if you as a user aren’t backing up your data, keeping an archive, or storing it elsewhere, whose fault is it really that you might lose it all?

Is it wise to build a social media marketing campaign on Facebook, a platform notorious for changing the rules (features, privacy controls, layout, etc.) on a whim? Is relying on a free URL shortener service a good idea as the only method to present links to your highly developed web marketing campaigns? Should you really run your entire business on the features offered by Gmail, Google Calendar, Google Docs, etc? If you have to alert staff/friends/partners to something important in a timely fashion, can you really trust Twitter to do what you need?

The culture of the web (nee Internet) has always been one of an open and sharing environment, where people and organizations post information that they understand will be shared/borrowed/stolen/derided. Somehow users of the web have come to expect that everything is, or should be, free. Look at the proliferation of sites to steal movies and music as an example on one end of the spectrum. On the other end is the reliance on Wikipedia by every school kid across the country instead of a purchased encyclopedia.

Let’s all take some time to evaluate our plans and what we are doing. When that vendor who builds Facebook campaigns comes back to tell you that what he/she built last year won’t work this year due to a Facebook change, there is your cost. When you have to take time from your real work to download all your bookmarks just so you can try to find a way to share them again or even get them into your browser, there is your cost. When you build a business on the back of a Twitter API and have to retool your entire platform due to an arbitrary change in how you call the service, there is your cost. When your Google Doc is sitting in “the cloud” and you’re sitting in a meeting without wifi just before you have to present it, there is your cost.

This cost, however, ignores something that can’t be measured on your end with dollars. The cost of sharing your personal information, your activities, your habits, are all your daily cost for using many of these services.

You may be under the impression that I have something against these free services. The use of this very blog should tell you otherwise. Instead I have something against users who have an expectation of free, top-notch service from organizations who are really only around as far as their cash flow can sustain them.

I keep my bookmarks on my local machine and just share the files between computers. I have been archiving my Brightkite photos since I started using the service, and archiving the posts to Twitter and Facebook, all the while backing up my Twitter stream. I use locally-installed software (MS Word, OpenOffice) writing to generic formats (RTF, etc.) and keep the files I need where I can access them (file vault on my site). I pay for a personal email service in addition to maintaining a free one. Other than Twitter, with its character limits, I avoid URL shorteners (and have no interest in rolling my own). I signed up for Diaspora in the hopes that I can funnel all my social media chaos to the one place I can take it with me. I keep a landline in my house so when the power goes out I can still make a phone call to 911.

I don’t tweet my disgust when Facebook changes its layout. I don’t post angry comments on Brightkite’s wall when they kill a service. I don’t try to organize people to take their time to rebuild Google Wave when I cannot. I don’t punch my co-worker when he buys me a sandwich and the deli failed to exclude the mayo.

Let’s all take some personal responsibility and stop relying solely on something simply because it’s free. Your favorite free thing is different or gone (or will be). Suck it up and move on.

Negative Reviews Can Now Affect Site Rank Downward

Panel from New York Times cartoon from the article.

One of the ongoing truths about search engine optimization (SEO) has been that inbound links are usually a good thing. This has caused SEO scammers to abuse the practice by creating and using “link farms,” sites that exist solely to link back to client sites. This “spamdexing” technique is based on having many of these sites (hundreds, thousands) with nothing but links. Quite some time ago Google, Yahoo, and other search engines from the mists of history all recognized this bad practice and started penalizing sites listed on those indices.

When you get SEO spam email claiming that the spammer will list your site in 300 (or some other large number) search engines, this is often what they mean. If you can name more than three search engines, you are already ahead of most Internet users and you recognize that 50, 100, 300, etc are all untenable numbers. If you get an email from someone saying he or she likes your site, has linked to it, and wants you to link back, it’s probably just another link farm.

Sadly, with the proliferation of community and social media sites that allow users to post comments and rate organizations, we see a repeat of the comment-spamming model that has caused blogs (among others) to implement CAPTCHA and other Draconian measures to try and hold back the tide of comment spam. As the adage “all press is good press” has led us to believe, coverage of any sort is good for business. That also means that sites that track comments about business, such as Epinions, Get Satisfaction and others like them, can end up boosting an organization’s rank in the search engines even when customers complain about the organization. Let me restate — if people had anything to say about you, including bad things, they were giving you a bump in search engine results.

Cue an article in the New York Times, A Bully Finds a Pulpit on the Web, which tells the story of a woman who purchased a pair of glasses from a company that appeared at the top of the Google search results. Not only did she not get the product she wanted, it took a decidedly Single White Female turn and became a real life game of harassment from the vendor. The motivation for the vendor to behave this way is pretty clear from a comment on Get Satisfaction, posted by the very person harassing the customer.

Hello, My name is Stanley with DecorMyEyes.com. I just wanted to let you guys know that the more replies you people post, the more business and the more hits and sales I get. My goal is NEGATIVE advertisement.

When you see comments like these from “Michael” on Get Satisfaction, you can see how Michael’s constant “complaints” are really doing nothing more than acting as link machines back to the offender’s site. You decide if Michael is a real person or just part of the link spamming.

While this is an extreme case, it was enough for Google to take notice. On December 1 Google announced that it has made changes to its search algorithm (Being bad to your customers is bad for business):

[W]e developed an algorithmic solution which detects the merchant from the Times article along with hundreds of other merchants that, in our opinion, provide an extremely poor user experience. The algorithm we incorporated into our search rankings represents an initial solution to this issue[…]

Google makes some fair points about blocking (or lowering the rank of) an organization’s site outright that has negative commentary associated with the organization. In that scenario, many politician sites would fare poorly. Competing organizations can engage in a war of defamation on third party sites. And so on.

What’s key about Google’s statement is the phrase “extremely poor user experience.” This goes beyond just poor customer service and defective products, and can now capture sites where people complain about the design or the usability. I am one of those people who has reached out to a site to complain about a technical or implementation problem (yes, I am that jerk) and, when faced with no response, have taken to the critique sites to restate my case (complaint, whining, whatever). If you get enough user experience (UX) designers to complain about a site’s ability to confound, or enough disabled users to complain about a site’s inaccessibility, those can now impact a site’s overall Google rank.

As you read the Times article, remember that even if your organization would never behave that way, if your site is impossible to use and people say so on opinion sites, then you could fall into the same bucket.

While you’re considering that, make sure your site loads quickly, too (see the last link below).

Related

Your Site Speed to Affect Its Google Rank

Originally posted on April 12, 2010 by Adrian Roselli, on his personal blog.

Google LogoIf you’ve been paying attention to the world of SEO and the intersection with Google, then you may have heard a few months back that Google was considering using the speed of a site to affect a site’s rankings. Google has already factored in the speed of a site when considering its AdWords quality score.

On Friday, Google announced that it is now implementing site speed as a factor in organic search rankings. What this means is that if your site is an extremely heavy download or just takes too long to draw, then it may be penalized in the organic search listings.

While Google doesn’t explicitly define site speed, it’s safe to assume that it is a combination of overall page size (including files) and render time (including server response and time to draw the page). For those developers who seem incapable of posting anything smaller than a 1Mb image in the banner, or slimming down their HTML be removing all the extraneous cruft, this is motivation to start working on those optimization skills, even if their sites don’t feel the wrath of the penalty.

Some things to keep in mind:

  • Currently only 1% of search queries are affected by the site speed.
  • There are over 200 hundred factors used in determining page rank, and this one isn’t being weighted to high that it kicks out the major ones.
  • It currently only applies to visitors searching in English (although you can expect to see them change that over time).
  • It launched a few weeks back, so if your site hasn’t changed in its search engine rankings, you are probably safe.
  • Google links to a number of tools to test the speed if your site. Check out the links at code.google.com/speed/tools.html.
  • Nealry four months old now, Google Site Performance is an experimental Google Webmaster Tools Labs feature that shows you latency information about your site.

Hopefully few of you are concerned by this. If you are following best practices, you are already striving to have your public-facing sites draw quickly. Not only does this do things like reduce the load on your servers, it also cuts down on your overall bandwidth costs. An additional advantage is that you don’t have to rely on your end user having a fast computer, lots of RAM (or swap space on the drive), and a fast connection. Given how many people surf in corporate environments that aren’t exactly cutting edge, this is just good practice.

Related Articles: