<!-- Content Here -->

Where content meets technology

Apr 24, 2013

PL Upload: a solution for uploading really large files into a web application.

I am working on this web application project that has a requirement for users to upload REALLY big files (as in 1 gigabyte plus). Given ubiquitous broadband (do people even call it broadband anymore?), and increased usage of video, I would not be surprised if lots of developers are seeing this requirement. The problem is that the basic HTML file upload field is horrible for very large files. It does not resume if there is a momentary interruption in transfer and the server gets stuck with one very large, resource-eating request. The traditional work-around is to use a flash application to upload the files. SWFUpload seems to be the most common implementation, but if you go to the home page, you will find that the project is no longer being maintained and is starting to break with new versions of Flash.

I was feeling pretty discouraged until I discovered PL Upload by Moxiecode. If Moxiecode sounds familiar, it is because they make TinyMCE, which has practically turned into the de facto standard rich text editor (WYSIWYG) for applications like content management systems. Sorry CK Editor.

The best part of PL Upload is that it embeds multiple implementations and selects the right one based on the capabilities of the browser. Modern browsers get an HTML5 implementation. There are also Flash, Silverlight, Google Gears options. You set the order of options to try and some Javascript goes through your list until it finds one that works. Another really nice feature is that PL Upload chunks the data into bite size morsels so that your server-side code gets lots of small requests rather than one big one. This makes resource management much easier and prevents one large upload from compromising the overall performance of the site.

I think the Moxiecode team is brilliant for seeing this problem and building such a nice solution. They seem to have used the same logic as when they came up with TinyMCE. Take a pervasive, nagging problem and build a clean solution that can become a de-facto standard. Their business model is to dual-license the software: GPLv2 for websites like mine and a commercial license for embedding the component in non-GPL software applications. I expect to see PL Upload surfacing in lots of content management systems just like I see TinyMCE.

Apr 23, 2013

Now What 2013

Now What? Conference

Last week I had the honor of being the first speaker to present at the first Now What Conference. My presentation was called "Marketing Operations: How to get the bang from your bytes." The conference was an amazing experience. Here are a few reasons why.

  • The production values were amazing. Karla Santi and the rest of the Blend Creative Team obsessed over every detail from the stage lighting to the placards showing where to charge your laptop. I have never presented at such a professional conference.

  • The audience was totally locked in to every presentation. It may have been the topics, the format, or the fact that it was a one day conference. Maybe the awful weather scared away the folks who were just looking for a cubicle break. I am not sure how else to explain how engaged the audience was. The lobby outside of the theater was barren during the sessions. Everyone at the conference was in their seats and taking notes.

  • The speakers were excellent. There was a perfect balance of inspirational big ideas and practical advice. The speakers drew from years of experience and came prepared to deliver thoughtful presentations. The conference had one track and I felt like my experience as an audience member was better than I could achieve by making perfect selections at a multi-track conference. Kudos to Deane Barker for the speaker roster.

Many thanks to Deane, Karla, and the rest of the Blend Interactive team for putting on such an excellent conference. The hard work really showed and I hope it was as rewarding for them as it was for us. Hopefully there will be many more.

Apr 15, 2013

Control vs. Delegation

A couple of months ago, I fell in love with the Platform as a Service (PaaS) Heroku for a new web application that we are building. Compared to managing a farm of EC2 instances and other Amazon Web Services (AWS) products, Heroku seemed like a dream. Set up is ridiculously easy and a simple Git push command deploys your application. You don't need to think through things like failover and escalation procedures. It is just supposed to work. Then I read this article about Heroku on the Rap Genius blog and all of the sudden the dream started to sound too good to be true. This article on The Virtualization Practice nicely summarizes the different perspectives between Rap Genius, Heroku, and New Relic. To summarize even further, Heroku and New Relic were not transparent about the performance of the entire system and this prevented Rap Genius from being able to cost-effectively scale their application.

In my case, I stuck with Heroku for a while and may have continued with it but I ran into an issue where I could not easily install a Python library and that hassle, combined with the seeds of doubt already sowed, sent me back to hosting directly on AWS. I still think that Heroku offers tremendous practicality and value to many different types of applications. But like with any choice, there are trade-offs. The big one with a PaaS like Heroku seems to be Control vs. Delegation. You can't really have both. If you want complete control over something, there is no way to avoid responsibility for it. With Heroku, if there is an incident or the site is slow, I would just have to say "Heroku is having a bad day," and get on with my own good day. I wouldn't be frantically trying to resolve the problem because my lack of control would render me powerless. Of course, that wouldn't protect me from blame. Blame would be applied retroactively for making the decision to host on Heroku in the first place (back when I had control).

With AWS, I have a little more control. I can design an architecture that spans different availability zones and regions. I can even create a mirror site on another hosting provider. But that means more effort and money. If I wanted even more control, I could host the sites on our own servers in some colocation facility. But every step towards full control doesn't necessarily reduce risk. It just shifts it. When I have more control, the sources of risk are my own failures in design and planning. And in my case, I just don't trust my knowledge of network and server administration to be better than the specialists. Like with any decision, you need to find a balance: you need enough control to fulfill your responsibilities but not so much that you exceed your capability to handle it.

Apr 11, 2013

Portfolio Rot


Image Source: There I Fixed It.

Jake Dimare, over at The CMS Myth, has a great post that speaks to the frustration that agencies feel after turning over websites to the incapable hands of their clients. Back in my agency days I used to call this phenomenon "Portfolio Rot." It was so bad that we used to take screen captures of new sites before they started to look like something you would see on There I Fixed It.

As bad as portfolio rot is for agencies, it is even more embarrassing customers. The discomfort builds over time as the site degrades until it ultimately reaches a tipping point that triggers urgency and budget for an expensive overhaul project. Tragically, the only thing that the project does not fix is the underlying problem: lack of operational capacity. At Lionbridge, we call the work of maintaining a site Global Marketing Operations. and I will be talking about all that goes into marketing operations at the upcoming Now What Conference. I hope to see you there!

Mar 25, 2013

Predictive Analytics for Marketing

As a consumer, the article "Predictive Analytics: The Power Behind Next-Gen Marketing"  sounds very encouraging.  To date, most marketing technology has focused on increasing the capacity of marketing departments: more marketing emails, automated interactions ..., which leads to a marketing strategy of throwing more at the consumer and looking for response.   Unfortunately, the most likely response a marketing organization is going to see is disengagement. After all, it is much easier to see an unsubscription than a conversion - particularly in a traditional business where details about purchase information are difficult to get.

At first this is going to feel invasive.  We hate the industry examples that the author presents (particularly credit scoring and health insurance); but I am hoping that predictive analytics will help marketers target their message to receptive customers who can genuinely benefit from the product or service.  Maybe this science will even help companies discontinue programs that nobody would want.

Mar 21, 2013

Localizing the Long Tail

Choosing the first few markets to localize your website for is relatively easy: look for the ones with the most obvious market potential. A U.S.-based company may start with U.S. Spanish and Canadian French and then expand into some of the larger European and Asian markets. A company that has some history as a global business, may already have a physical presence in those high-potential markets. Subsequent waves of expansion, however, create some trickier choices. Should your next market be Poland or Brazil? Maybe the Korea holds the most promise. The thing is that you just don't know true market potential until you try and it may take a while to realize whatever potential exists.

At Lionbridge, we recommend grouping your markets into three tiers:

  • Tier 1: Highest Revenue

  • Tier 2: Fastest Growing

  • Tier 3: Everyone Else

Tier 3 represents the greatest strategic challenge. You want to have a good quality presence in as many markets as possible. After all, outside of your home market, every market starts out as a Tier 3. If you enter a market, you need to do it right with an effort that is worthy of your brand. You also need to commit to maintaining that site into the future, otherwise you will fall into the "time capsule syndrome" where your local market sites look like they were frozen in time ages ago. But you have limited resources and you don't want to divert spending away from markets where you are succeeding.

To get into as many markets as possible without breaking the bank, you need to manage your localized sites extremely efficiently. The best way to meet that challenge is to use a translation proxy in a pattern that I call "International Mini-Site."

When you use a translation proxy, untranslated content is going to show through in the source language. In an earlier post (Preventing Source Language Bleed-Through), I talked about preventing this from happening. But that assumes that you want to pay to translate everything into all of your languages — and your Tier 3 sites may not justify that expense (not yet, at least).

The international mini-site pattern is like the "international snapshot" pattern but, instead of translating the full site, you proxy a much smaller site that is designed to have just enough information to get traffic and build business. Brevity, efficiency, and quality are key themes here. The international site should be cleanly branded (adjusted for culture, of course), search engine optimized, and ruthlessly edited to remove content that has organically grown over the years on your main site. If your main site (with all of its press releases, careers section, case studies, etc.) is 1,000 pages, your international site could be as little as five pages. Just explain what business you are in, describe your products, and direct customers where to buy. I often see this pattern in conjunction with using a platform like Marketo for marketing campaign landing pages (which can also be translated with a proxy).

Once you have your international mini-site, you can easily manage your translation spend. You can make choices about whether to make a global edit that you will have to translate into all languages, or do some locale specific rewording to improve search result placement in a local market search. Most importantly, you can manage your Tier 1 and Tier 2 sites without worrying about the cost implications of having to translate new content into all of your Tier 3 languages.

Just because the international site is small, it doesn't mean it is not important and you don't have to manage it. On the contrary, you need to pay as much or more attention to it. Because you have less content to work with, every word needs to count. This is where many companies go wrong. They treat their international sites as redheaded stepchildren rather than strategic assets with potential to uncover new growth opportunities.  By staying small, you can be more agile and responsive.  You can focus more on each page to optimize the impression it gives.  You might even find that your main sites would be better served by a major Spring Cleaning.

Mar 18, 2013

How to have success with technical freelancers

Over the past year, I have had the opportunity to work with some excellent technical freelancers. These relationships have been both professionally and personally rewarding. However, I also understand that for every one freelancer success story, there are many disasters. In fact, as a consultant, I have made a living out of cleaning up freelancer messes. Here are five tips to help you be more successful with your freelancers.

  1. Don't use a freelancer to bring in a skill that you don't' already have in your organization

    If you hire a freelancer to do work that your team doesn't understand, you are setting yourself up for trouble. First, you will have no way to evaluate his/her level of skill and the quality of work he/she produces. Second, you will not be able to maintain the code or systems that the freelancer builds when the project is done and she moves onto other projects.

  2. Use a publicly hosted distributed source control system (DVCS)

    Host your project on an externally hosted Git or Mercurial repository. This will allow you to try out freelancers with minimal risk. They can fork your repository and take on some development tasks and you can review their work before merging it into your own repository. If a new freelancer doesn't work out, just disable access.

  3. Cast the net wide and filter

    The only way to really get a sense of skill and compatibility is to start working with someone. People who look great on paper and can talk a good game are not always as competent as they appear. It is also easy to dismiss diamonds in the rough. Some of my favorite freelancers were very shy when I started working with them and would have been easy to overlook. With a DVCS and the ability to review work, you can assign development tasks to several developers and see who rises to the top. Just be sure to assign meaningful work and pay freelancers for their time.

  4. Connect

    Respect, trust, and communication are all critical to any relationship (personal and professional). Even though your working relationship with them may be shorter, treat freelancers with the same respect that you would give to a full time colleague. If the freelancer comes from another country, you have a great opportunity to learn a little about his/her culture and make a friend in a far away place. From my work with freelancers, I have seen a side of international current events that I would never see on CNN or the BBC. When you have these strong bonds, you get better commitment, better product, and a more enjoyable working environment.

  5. Learn comfort zones

    Everyone has their strengths and weaknesses. In a new working relationship, it is natural for anyone to underplay their weaknesses. Who starts a job interview by listing all the things that they stink at? The only way to understand someone's strengths and weaknesses is to assign a variety of tasks and see what comes back. Usually, people will start with the work that they feel most comfortable doing. Once you have recognized a few strengths and built a level of mutual trust, you can have more candid conversations about comfort zones. Some people like to focus on work they have the greatest confidence in doing. Others like the challenge of learning new things. The greater understanding you have about personality and comfort zones, the better you will be able to assign work and also evaluate work product. For example, if one particular developer likes to stay inside his comfort zone, you should just assign tasks within that skill area and you can be confident that the work will be done well. If a developer likes to learn new things, you can assign him challenging problems but you better have more rigorous quality controls.

I honestly feel like this is the future way of working. Through strategic and effective use of freelancers, you can make your organization more nimble and responsive. Companies that are not able to use freelancers will be slow to start new initiatives or avoid doing them altogether. On a personal level, you can learn so much by working with a diverse set of freelancers with different experience and styles. It is also nice to build new friendships — it's even more fun than having a pen pal.

Mar 14, 2013

What to do when that Wordpress welcome email doesn't get to the new user

When inviting a new user to a Wordpress site, the default behavior is for the system to put that user into a pending state and only activate her when she clicks through on an invitation email. However, if that user never receives the email, you are kind of stuck. You can't activate her because she doesn't show up on the users list. You can't re-create her because she is in that limbo state. I am told that the invitation expires and you can re-invite after that point. But who wants to wait?

The work around that I use is to simply delete the record from the wp_signups table:

delete from wp_signups where user_login = 'username';

Where username is the username you set when you tried to invite the user.

If you don't have direct database access, I would recommend ticking the box that says "Skip Confirmation Email." After that, you can manually set the password and send it through a secure service like Lockify, or you can send instructions to the user to use the password recovery system to set their own password.

Mar 12, 2013

Never use cost savings to justify spending more on a CMS

Replatforming your website to a new web content management system is an expensive proposition. In fact, a CMS migration can be so expensive and risky, that I advised many of my CMS selection clients against doing it. That is not to say that there are not perfectly legitimate reasons to replace a CMS. The wrong CMS can hold you back and prevent you from seizing valuable opportunities. But one sure fire way to spot a foolish CMS replacement project is when it is justified by a return on investment (ROI) calculation that relies on future labor cost savings to offset the price of an expensive CMS.

The truth is, if you make a big CMS investment, you will probably spend more time managing your content and optimizing the experience for your visitors. Why? Because advanced (expensive) web content management systems allow you to do more sophisticated things like personalization, multivariate testing, and advanced analytics. If your CMS has these features, you better actively manage them because neglecting advanced engagement functionality is worse than not having it in the first place. Buying an expensive CMS to avoid the human effort of managing a website is about as silly as buying an expensive car because you want to spend less time driving.

If you must show an ROI projection to justify the cost of a new web content management system, focus on the top line. Talk about the value (or potential value) of your content. Talk about the opportunity to reach new markets or connect with potential customers in new ways. And make sure to set aside plenty of budget for people to operate and get the most out of that CMS. To learn about all that goes into effective an marketing operations program, see me present at the Now What Conference next month.

If you want to treat your website like a project where you "do the website" and then forget it about it for a few years, I would seriously consider ripping out your CMS entirely and build a nice static brochure website that you can cheaply host. If you just need to make occasional updates, there are lots of cheap and free web content management products available. Many of these products can take you pretty far as you increase the intensity of your digital marketing program. But if you want to go high end, your initiative will fail unless you build a competent marketing operations program that gets the most out of the technology.

Mar 06, 2013

Growing Importance of Citations in SEO

Here is a short and interesting video about the growing importance of citations to SEO. It is cool to see how Google's relevance algorithms are getting more sophisticated at understanding the meaning in content and identifying authority. Of course, the pessimist in me sees SEO bottom feeders interpreting this trend as justification for anti-social behavior like comment spam.

In the arms race between Google and the people who try to manipulate it, always side with Google. If you create great content and build an audience of influencers, you are Google's ally. Take short cuts and play tricks and you are one algorithm change away from total obscurity.

← Previous Next → Page 7 of 75