<!-- Content Here -->

Where content meets technology

Jul 02, 2010

Would anyone "Like" this blog?

One of my newspaper clients recently added the Facebook "Like" button to their site and saw large increases in traffic. I was thinking of doing the same thing for Content Here but then I started to wonder "would I Like Content Here?" Don't get me wrong. I LOVE writing this blog and I also find the posts tremendously useful as a resource. Re-reading old posts is a great way for me to recreate an idea that I once had in my head or re-use an explanation for one of my clients. Sometimes I catch myself sending link after link to a client.

So while I LOVE this blog, I am not sure that I LIKE it — at least not in a Facebook kinda way. I guess it all boils down to how I use Facebook: I use it for purely social purposes. I keep strict separation between my Facebook world (where I connect with friends and family, many of whom are not technical) and my professional (Twitter and LinkedIn) world. Some contacts span both worlds — mainly people who I know professionally but also hang out with outside of work. On Facebook, I don't post about anything work-related; just as I don't bore dinner guests with esoteric content management theory or programming stuff. There I talk about things that many of my friends and I are passionate about or would find amusing. On Twitter and this blog, I write about things that I find interesting professionally. I avoid personal subjects like my family, political views, and silly humor. I have a feeling that others either consciously or unconsciously maintain this kind of barrier. How many people would want to confuse their non-technical mother-in-law and the rest of their social network by "liking" the post Code moves forward. Content moves backward? Probably about as many people who want their boss to see their beach pictures which were taken on a sick day.

This probably infuriates Facebook because they want to manage the full social graph — not just half of it. But I don't think they have a great answer for people like me. Some of my friends are working around this issue by creating two Facebook accounts: one for business and one for social. My good friend Brice Dunwoodie has a Facebook profile called Brice Dunwoodie SMG for his "semi-public self." But this isn't really a good solution for Facebook because it fractures their social graph. In order to pull these social and professional aspects together, Facebook would need to get really clever about its privacy and filtering settings which are already overly complicated and controversial.

If Facebook can't have all the social graph, which half would they want? Are they be satisfied with the social side of the social graph which they already dominate? Or would they prefer the professional side (currently owned by LinkedIn)? Historically, Facebook ad revenue has been low considering their huge traffic volumes. This makes sense because general interest content (like news, entertainment, personal statuses, and other content that people might "like" in a Facebook kind of way) has notoriously low CPM rates; not like niche publications that have their audience in a buying state of mind and know what types of products they are interested in. Facebook's bet seems to be that, through their social graph, they can improve the targeting problem for general interest content. If they are successful, they will achieve that lucrative formula of high traffic volume AND high CPM. If they are not successful, they will probably need to think of some other way to monetize that large but distracted audience.

Jun 28, 2010

HTML production for CMS implementations

Most new site CMS implementations (as opposed to site migrations from one CMS to another) start off with a set of HTML mockups. This can be a convenient starting place because, in addition to showing how the pages should look and informing the content model, having the HTML gives a good head start to presentation template development. Ideally the template developer just has to replace the sample "Lorem Ipsum" text with a tagging syntax that retrieves real content from the repository. There are even some graphical tools that help a developer map regions on the mockup with content from the repository. However, often moving from HTML mockups to presentation templates isn't so smooth. Sometimes the HTML has to be re-written from the ground up.

The most common source of problems is when the HTML is too specific. This usually occurs when the designer/developer who produces the mockups is accustomed building static HTML websites where she has full control over everything. HTML and CSS for an CMS implementation has to account for the fact that control is shared between the template and the content contributor. While the template controls the overall layout, the control contributor controls the navigation, text, images, and (with the help of a rich text editor) can even style body content. HTML code that is rigid and brittle breaks when stretched by unanticipated content. Here are some things to look out for.

  • Hard coded height and width dimensions on image tags. Most content contributors don't know the first thing about aspect ratios. They upload a picture and don't understand why it is squished on the page. While most CMS these can automatically scale images (and even if they can't the browser will), they can't all reshape them. While some CMS support cropping functionality for thumbnails, few content contributors know how to use it to precisely shape an image. I usually recommend setting only one dimension (usually width) and then letting the other dimension (usually the height) do what it needs to do. If you really need to control both, you can use this little background image trick:


    <div class="picture" style="background: url(<<horizontally scaled image path>>) no-repeat; height:150px;"></div>

    This uses the image CMS's image scaling to set the width and vertically crops the image after 150 pixels by making it a background image.

  • Overusing element ids. When you are only building a few pages and you want very direct control over elements, there is a temptation to code CSS to reference specific element ids rather than classes. In some cases, this makes sense. For example, when there is only one global left navigation component. However, it makes less sense for anything that a content contributor might have control over — like items in that navigational menu or anything else that repeats. I haven't used DreamWeaver (DreadWeaver, as I like to say) in years but I suspect that the HTML/CSS auto-generation generation prefers using IDs over classes because that is where I see it the most. The worst case I have seen was a sample search result page with every search result individually styled with element ids.

  • Over-complicated HTML. HTML is only going to get more complicated when it is infused with template syntax. It is best to start with HTML code that is as simple and terse as it can be. If a designer is still using nested tables to position things, have him work in photoshop. The more styling you can do in CSS the better. This will make templates cleaner, more efficient, and easier to manage. Plus, your CSS will survive a migration to another CMS better than your template code will.

  • Using images rather than text headings. While the font control afforded by images is nice, avoid using images for anything dealing with the navigation or page names. Otherwise content contributors will not be able to create new pages or re-organize the navigation without a designer to produce images. If you have a top level navigation that is unlikely to change, you can compromise by building images just for the top level page names. A decent strategy is to code the HTML like


    <h1 class="section-heading <<dynamic section name in lowercase >>"><<sectionname>></h1>

    for example:


    <h1 class="section-heading about">About</h1>

    This way, if a content contributor introduces a new section that doesn't have an image or style yet, there is a decent fallback of styled text.

  • Too many layouts. Most web content management systems prefer you to have an overall page layout template (also known as a master page) that is used for nearly all of the pages of the site and then content-type-specific templates that render in the "content area" in the center of the page. Things like the header, footer and global navigation components go in the page layout template. In many systems these two templates are not very much aware of each other because they are rendered at different times within the page generation process. The trick is to determine what portions of the page to put in the global template and what to put in the content-type specific templates. The more you put in the content-specific templates, the more flexibility you have but you also wind up having redundant code that adds management overhead. You also want to make sure that the design does not specify too many options for content presentation templates. In addition to adding to maintenance overhead, this also confuses the user. When lots of variability is required, it is a good technique to design the implementation to allow contributors to build pages with blocks of content. This way, the presentation template just has to define "slots" that contributors can fill (or not fill) with content.

Most of these tips will come more naturally to an advanced HTML that really knows his stuff than a pure designer with design tools that can create HTML. However, even the best HTML developers can have mental lapses when they get into a production groove. It is a good idea to understand the HTML producer's skill-set before assigning the task of HTML production and set expectations. Otherwise, you will probably get a rude awakening when template development is scheduled to start. If this type of HTML production is new to your team and you would like them to learn it, account for this learning by holding frequent reviews of the HTML code as it being produced. Start with the most simple content type (like a generic page) so you can focus on the global page layout and get alignment on static vs. variable components. Over time, your team will instinctively notice HTML code that works for the mockup but will be problematic in a presentation template.

Apr 26, 2010

World Plone Day 2010

Mark your calendars, World Plone Day is on April 28th. World Plone Day is a free, annual, international event designed to introduce the Plone content management system to people outside of the Plone community. This year it is being held in 36 locations in 29 countries. The agenda usually contains a balance of business and technical topics. I just had a look at the Boston World Plone Day agenda and it looks particularly good.

If you have not looked at Plone recently, you should. With the official release of version 4.0 right around the corner, a lot of changes have happened. The architecture leverages more of the new Zope 3 technologies, performance has improved, and development techniques have evolved. A considerable amount of work is being done to make theming easier using tools like Deliverance. Also, the NoSQL movement hype may make the underlying object database (ZODB) less intimidating to architects. From a user perspective, the team has focused on some subtle improvements such as switching the default rich text editor to TinyMCE and creating a new default theme.

Mar 24, 2010

How Many Microblogging Services Does the World Really Need?

After hearing all this news about status.net, I took a few moments to connect my Identi.ca account with my Twitter account. I am not at all sure what good that did but I figured it couldn't hurt. While I was there, I got to thinking what is so special about a microblog? And I came to the conclusion — nothing. You can think of a microblog as a title-only blog (entries with no bodies). What is new there? Subscriptions have already been handled quite well by RSS. What makes Twitter (and Facebook) so important is not the ability to post 140 character messages. It's not even really the API or mobile integration. What makes Twitter/Facebook important is that they are used by so many of the people that you want to reach. There are plenty of failed status-oriented services that have had the technology but, either through bad timing or other missteps, failed to build an audience.

I wonder how attempts at internal microblogs are working out. I haven't heard any success stories and I doubt if any survive past the initial novelty phase. If there are urges to microblog within the enterprise, employees could satisfy them with the internal blogging infrastructure that has been idle in most organizations. If there is any internal application for the microblog it is aggregating what employees are tweeting out on Twitter. But, depending on the staff, I don't know how interesting that would be either.

I think that the microblog is going to fail as a category of software. There just isn't a big enough market of buyers that can build a sustainable microblogging community. I can't think of existing sites with large audiences investing to buy or build a microblogging capability. If you were CNN, would you rather have a reader tweet a story link on Twitter (where it could be re-tweeted by millions of users) or on your CNN own microblog community? The only purpose I see for status.net is just in case Twitter kills itself (by running out of money or ruining the service). I seem to remember a lot of people threatening to defect to Identi.ca and FriendFeed when Twitter was going through its problems. But that didn't happen. How long can the status.net's and Identi.ca's of the world sustain the energy and motivation to be an understudy behind a healthy actor?

I know the argument that suggests that distributed communication services will eventually win like how the open, distributed web was destined to eventually beat out then popular online services like AOL, Compuserve, and Prodigy. But I don't think this is the same. If I am missing the point here, please enlighten me. I would love to see competition in this sector if it makes sense. I just don't see it.

Feb 15, 2010

How I use Twitter for Work





Publishing Decision Tree V2

Originally uploaded by sggottlieb

I just read Philippe Parker's thoughtful response to Janus Boye's provocative post "How I use Twitter for Work". Both these articles, plus my recent experience at PodCamp Western Mass, made me a little more conscious of my strategy and techniques for social media. As you can see from this geeky flow chart, I have put some thought into what I publish where. But I had thought less about who to follow.

My official Twitter policy was to only follow people that "inform and/or entertain me." Because I use Twitter mainly for work, my bias certainly leans toward the "inform" side. Although, I do appreciate a good snark once in while, I have un-followed people who fill the timeline with mostly personal stuff. If I found myself automatically skipping over someone's tweets because I was expecting something mundane, I un-followed him/her. If a Facebook friend re-published their Twitter stream into Facebook, I un-followed him/her on Twitter. These tactics kept my following count to a manageable number of 150. When I say manageable, I mean I am not overwhelmed by the volume of updates but I don't go back and read every tweet when I am away from Twitter for an extended period of time.

At PodCamp, I finally learned the value of lists. By using private lists for work, friends, fun, and news, I can follow more people but handle the traffic differently. When I am really busy, I just track my work list and my @replies. I glance at my friends and fun lists when I have more time but I never go back more than a few hours in the timeline. My news list takes the place of personal portals for the day's highlights. Since sorting this stuff out, my following count has grown to 164 with no real impact on time consumption.

The biggest change is in how I use RSS. With my new Twitter strategy, I check my reader less frequently and am able to skip over posts that I already found on Twitter. At this point, Twitter brings me timely (either because it is news or because everyone is talking about it) posts quicker. The un-tweeted RSS entries are still important to me for general learning and background knowledge. I expect that, over time, people will promote everything they write on Twitter. This has already happened with sites like CMSWire. Now FeedBurner gives you the option to automatically tweet every entry in your RSS feed. When a Twitter feed becomes identical to the RSS feed, I tend to un-follow/unsubscribe to one depending on how timely the information tends to be.

This system is working well for me now but I am sure that it will continue to change as the medium evolves. I am interested in learning other people's techniques. The tag #howiusetwitter seems appropriate and free.


Jul 31, 2009

Social media, where you can stick it





Social Media Publishing Decision Tree

Originally uploaded by sggottlieb

As I mentioned before, I use many different social media services for different purposes. I realized that I have been unconsciously operating an elaborate decision tree of what to post where. On a whim, I tried to map it out and I found the results interesting.

A couple of notes...

  • The FriendFeed (ff) icons shows what services are aggregated into FriendFeed.

  • I am just starting to use Tumblr again as a sort of personal blog. This exercise helped me realize a use of Tumblr. For a while, I was posting things directly into FriendFeed.

  • Flickr contains work and personal items. I use it for personal pictures (mostly public) and also screen captures of software that I review (kept private).

I am wondering if anyone else operates a similar decision tree and how conscious they are of it.