CSS Tip: Positioning photos with floats

CSS Tip: Positioning photos with floats
In the past I’ve discussed how the use of photos can enhance a Web site, but I’ve not discussed the code one uses to incorporate them. On campus, and elsewhere, Web designers use a variety of techniques to include their photos.

bluepavilion.jpg
Night shot of one of three recently dedicated light pavilions on Superior Avenue.

In the past I’ve discussed how the use of photos can enhance a Web site, but I’ve not discussed the code one uses to incorporate them. On campus, and elsewhere, Web designers use a variety of techniques to include their photos. Some will build complex tables to get their photos positioned just right while others will add something like hspace=”5″ vspace=”5″ align=”right” into the img tag.

Neither of these is recommended by current standards (the latter is deprecated as of HTML 4.1 but is necessary in HTML e-mail) nor do these techniques give you the control you need. A better way to do this is with Cascading Style Sheets (CSS).

Create a CSS class to float your photos to the right or left of your text

An easy way to include photos is to use the CSS property “float” to float the image to the right or left of the content that follows. One can float either the image itself or a container, such as a paragraph enclosing the image. I prefer to do the latter in case I wish to include a caption with the image.

One begins by opening the page’s existing stylesheet and defining a new class to contain the image. On this blog I typically use a class I call “photoright.” The code in the stylesheet looks something like:

.photoright {float: right; padding:2px 0px 8px 10px; margin: 0; font-size:90%; color: #7F8E29; font-style:italic; width: 200px;}

blades.jpg
Close-up of different pavilion in daylight.
This picture uses a class without the
width defined. I can add line breaks
(with varying results) or let some of the comment
push past the edge. Note how this moves the photo in.

  • .photoright is the name of the class. Usually class names don’t include things like location and color (in case one wants to change those attributes in the future) but I typically include a .photoright and a .photoleft in all of my stylesheets just to offer some flexibility, and in this case the literal naming convention seems practical.
  • float: right; indicates that the paragraph (or other entity such as a div) will float to the right of whatever content follows.
  • padding:2px 0px 8px 10px; sets the padding for the paragraph. Padding is listed in clockwise order from top to the left, thus this class would have 2 pixels of padding on top, 0 to the right, 8 below and 10 to the left. Given the existing line-height of my regular paragraphs the 2 pixels on top allow me to line up the top of my photo with the top of uppercase letters in the main text. 0 on the right lets me float the picture as far to the right as the text will allow, 8 on the bottom gives me some space for text that wraps below the photo and the 10 to the left gives me some space between the photo and the text.
  • margin: 0; specifies that I have 0 pixels of margin on all sides. I’m using padding to set my spacing rather than margins so that my captions will begin at the same left edge as my photos and because Internet Explorer may interpret margins differently than other browsers.
  • font-size:90% indicates that my caption text should be 90% the size of my normal text. Some users may prefer .9em. (I’ll leave the merits of various font-sizing methods for a later discussion.)
  • color: #7F8E29; indicates that the caption should be lime. In the Case stylesheets this would typically be the same color that one would use for h3’s. Because the text is small I’ve made this slightly darker than the usual lime color.
  • font-style:italic; specifies that the caption will be italic.
  • width: 200px; is an optional measurement specifying the width of the floated content. This number should match the width of your image and will insure that long captions wrap, rather than extend past the picture. If you plan to always use the same size image, I would recommend setting this width. If you use different sized images, you could establish separate css classes for each image size. Some users may prefer to simply keep their captions shorter than the width of their images or to use
    ’s to break the caption to fit. Note: manual line breaks will look fine on your own computer, but not necessarily on everyone else’s. Users who have adjusted the font size of their browser/user agent may still see captions jutting past the image, or line breaks that seem to occur in illogical places.
Apply the .photoright (or .photoleft) class to your page

Once the class has been added to your stylesheet you can begin to incorporate it into your pages. As the image will float to the right of any content that follows, you will want to start a paragraph, using the new style, immediately before the accompanying text. For example, in this blog entry I’ve put this at the very beginning of my entry:

Blue Pavilion
Night shot of one of three recently dedicated light pavilions on Superior Avenue.

metalgrass.jpg
Close-up of first pavilion, floated left.

In this example I’ve used a class that defines a width of 200 pixels, the same width as the photograph. Note that I’ve included a line break immediately before the caption. This ensures that the caption starts below the image. Without a break (or a space), some browsers might ignore the width and have the caption begin to the right of the image. The other two pictures are placed farther down in the copy, again preceding the adjacent text. (View source to see exact placement.) The middle image uses a different class that doesn’t define the width. I’ve left some of the caption hanging out so you can see how that works.

Using photoright and photoleft with Case templates

I’ve included the classes .photoleft and .photoright in the Case template files. These are in the current, and some past, versions. If you are using an older version that doesn’t include the classes, simply copy them from the appropriate color stylesheet. Not knowing what size photos one might wish to include, the templates do not include the width measurement, but you may add it in based on the sample above.

That is pretty much all there is to it. If you have any questions, comments or other ideas, please submit them in the comments below.

The state of functional programming in PHP
With the rise of Javascript, and languages like Python and Ruby, functional programming is becoming more mainstream. Even Java seems to be getting closures in the next version, so does this leave PHP lacking behind or is there an unrealised potential hidden within? Dynamic dispatch What exactly defines a functional programming language, is perhaps an open question, […]

With the rise of Javascript, and languages like Python and Ruby, functional programming is becoming more mainstream. Even Java seems to be getting closures in the next version, so does this leave PHP lacking behind or is there an unrealised potential hidden within?

Dynamic dispatch

What exactly defines a functional programming language, is perhaps an open question, but one key element is functions as data. As it happens, PHP kind-of-supports this concept; The syntax permits you to use variables as function-names, making the following possible:

  function add($a, $b) {    return $a + $b;  }  $add = "add";  $add(2, 8); // return 10  

Unlike languages with first class functions support, the variable $add isn’t a special type — It’s merely a string, which is evaluated in the context. It may just be a wrapped up eval, but superficially it works similar, once the function has been declared.

It is also possible to explicitly call a function reference with call_user_func. This is interesting, because it accepts different types of arguments, which makes it possible to call a method on an object. More on this in a moment.

Binding state

Another prerequisite for functional programming, is the ability to bind a variable to a function. This bound function serves essentially the same purpose as objects do in object oriented programming, but is usually more fine grained and more flexible.

In languages, which are traditionally associated with functional programming, functions are usually bound with variables, through something called a closure. This is a side effect of the scoping rules of those languages.

Since PHP doesn’t have lexical scope, we can’t use closures, but we can use currying to achieve the same goal. In Wikipedia’s words, currying is the technique of transforming a function that takes multiple arguments into a function that takes a single argument. If that sounds abstract, assume the following:

  $add2 = curry($add, 2); // returns a new function reference, to add(), bound with 2 as the first argument  $add2(8); // return 10  

Before you try that out, hold your horses — it won’t work, because curry isn’t a PHP function. As it turns out though, it’s possible to create it. Sort of.

Implementing curry

Without going into great details, there are two ways, currying can be implemented in PHP.

For a more detailed explanation, have a look at Partial function application in PHP.

Weighing the options

Looking at the syntax, variable-variables have a much more functional “feel” to them, than a command object. The callback pseudotype does allow one to reference an object + method-name, but even though this is supported by PHP’s internal functions, it get’s bulky in user land code. If a command object feels like functional programming with OOP syntax, then call_user_func feels like functional programming with procedural syntax.

When it comes to performance, the run-time evaluated approach has some serious shortcomings. Currying must be done by creating new static code each time and this can’t be reclaimed until the end of the process. Furthermore, the only way to bind state, using this pattern, is to rely on a global container of some sort, generating a new, unique symbol each time. Since it’s impossible to know, when the callback isn’t referred anymore, it follows, that it’s impossible to safely remove the variable from the global container. Thus, any state bound this way, will be impossible to reclaim for PHP’s memory management system, furthering the risk of the script running out of memory.

In conclusion

So, if the offset for this post was to assert the current options for functional programming in PHP, the only practical solution is currying, using command objects. The awkwardness can be somewhat smoothed out, with a library of utility classes. phunctional is an attempt at this and we might also see some of these ideas emerge into more general purpose frameworks.

Another idea, could be a language level addition to PHP. What we need, is a way to make all callbacks callable with the variable-variable syntax. I’m thinking this could be supported with a magic-method. If an object was to be used as a function, and it implemented said magic method, the method would be called. From a design perspective, it would fit fine with the other magic methods, such as __call and friends.

Declaring functions

Another limitation, which could be addressed at the language level, is the matter of declaring functions in the first place. Currently, functions must be declared in the global scope or through the use of the hideous create_function. There have been some stabs at improving this, on the php-internals team, so maybe we should be as lucky as to see this in PHP 6?

This article provided by sitepoint.com.


IE8 Passes Acid2 Test, Web Standards Project Dies of Shock
Although he goes out of its way to downplay the significance of the event, there is no missing the sense of achievement in the words of Microsoft’s Dean Hachamovitch on the IEBlog today: I’m delighted to tell you that on Wednesday, December 12, Internet Explorer correctly rendered the Acid2 page in IE8 standards mode. The Acid2 test […]

Although he goes out of its way to downplay the significance of the event, there is no missing the sense of achievement in the words of Microsoft’s Dean Hachamovitch on the IEBlog today:

I’m delighted to tell you that on Wednesday, December 12, Internet Explorer correctly rendered the Acid2 page in IE8 standards mode.

IEAcidTest2.PNG

The Acid2 test was developed by the Web Standards Project (WaSP) as a challenge to browser developers. In a single page, the test makes use of a broad range of features from several different web standards that developers have wanted to have in browsers for some time, and it uses them to display a deceptively simple smiley face.

The first browser to support the Acid2 test was Safari 2.0.2, back in November 2005. Since then, iCab and Konqueror have announced their own support. The current beta of Firefox 3 comes close, but isn’t there just yet. With this announcement, it looks like Internet Explorer may actually beat it to the punch!

At the time this post was published, the Web Standards Project’s web server had collapsed under the strain of traffic generated by this announcement, but thanks to the Internet Archive I was able to collect this list of new features that we can now infer will be supported in IE8:

  • displaying images with the tag, which enables you to include richer alternate content than the tag
  • CSS tables, which let you use table-based layout techniques without misusing HTML table markup
  • generated content, which lets you insert extra content before and after elements using CSS
  • These are all incredibly useful features that the other major browsers have supported for some time, but which have not been available for real-world use because of the lack of support for them in Internet Explorer. That’s all about to change. Support for CSS tables alone will be enough to drastically change real-world CSS page layout techniques, making them much easier to learn and use.

    Microsoft is promising to release a beta of Internet Explorer 8 in the first half of 2008. The big question for web designers who will be hoping for swift adoption of the new browser: will it run on Windows XP, or require an upgrade to Vista?

    As Dave Shea of the CSS Zen Garden put it, “Better bundle up, it’s a cold one in hell today.”

    Microsoft has published a fascinating video record of the rendering of the Acid2 test in internal builds of IE8 over the past six months. The video also includes an in depth interview with Dean Hachamovitch and Chris Wilson. Recommended viewing with a few holiday warm-and-fuzzys from Microsoft.

    This article provided by sitepoint.com.


    Don’t build your Web site in a vacuum
    This is the fifth in a series of posts that discuss Search Engine Optimization (SEO) and other Web marketing strategies. This week we’ll go beyond the Web.

    Thursdays in the Park T-Shirts

    Thursdays in the Park Web site
    T-shirts, the Web site and other strategies featured
    common visual elements. These examples were
    produced prior to the 2004 branding initiative.
    While this plan used a logo, you do not need a
    department or project logo to create a
    consistent message.

    This is the fifth in a series of posts that discuss Search Engine Optimization (SEO) and other Web marketing strategies. This week we’ll go beyond the Web.

    Coordinate your online presence with your other marketing strategies

    Today at lunch I saw a post on Pownce from a fellow looking for someone to design a t-shirt. I’ve designed t-shirts in the past, and while I wasn’t volunteering, I did suggest that he provide more information—so any designers might get a better sense of the project. He wrote back that he wanted something that would be eye-catching, abstract (perhaps like graffiti), highly readable, and that his company colors were white, green and dark gray/black. I wrote back asking more questions about goals, target markets, how the t-shirts would be distributed, quantities, printing methods, PMS colors, his other marketing strategies, etc.

    As a marketer I wanted to know how the t-shirts would fit into his overall marketing plan, something the designer would need to know as well. As it turns out many of the questions I asked were similar to questions one should address when building a Web site. As those who’ve read my Planning your Web site tutorial know, I feel the first steps in planning a Web site involve establishing clear goals and defining one’s target audience. What I haven’t yet discussed is how your Web site fits into your other marketing strategies.

    Marketing Goals

    Whether your site showcases your research in advanced robotics or is meant to sell dog-shaped robotic toys, you have marketing goals. Such goals could include:

    • Establishing your personal or organizational brand
    • Getting invited to speak at conferences
    • Having your book published
    • Acquiring research funding
    • Attracting an audience for your lecture/symposium
    • Selling your product or service
    • Recruiting students or faculty
    • Driving traffic to your Web site in order to share information, disseminate knowledge, and of course, to further those other goals!
    Marketing Strategies

    When we think of marketing we often think of things like advertising, junk direct mail, telemarketing, e-mail (opt-in and/or spam) and the Web. In addition to these common techniques, a well-thought out marketing campaign may also include: media relations, trade shows/conferences, newsletters, flyers, posters, sidewalk chalk, promotional items (t-shirts, pens, etc.), social media networking, viral marketing (word of mouth 2.0), promotional videos, etc. Which techniques one uses will depend on goals, target audience and budgets, but in most cases a combination of strategies will be more effective than just one. Naturally one of those strategies will involve a Web site.

    For most of us, our Web site is our most visible and prominent marketing strategy. It’s available online 24/7 for anyone who wants to visit. While it takes time to plan and build, it can be edited, expanded and delivered in it’s new improved state without the high cost of things like printing, video, buying advertising space and mailing. In an age when we are trying to reduce paper consumption and cost, the Web is ideal.

    But our audience isn’t surfing the Web all day. They’re often out in the real world driving past billboards, reading magazines, chatting with friends and so forth. If we want to reach them, we have to reach out to them, not just wait for them to come to us. Just as we use e-vites and printed cards to invite people to our parties, so can we use other strategies to promote our goals in conjunction with our site.

    Marketing Plan Example: Thursdays in the Park

    In the summers of 2002 and 2003, Case held a series of concerts in the Turning Point Garden called Thursdays in the Park. Our goal was to provide an activity where faculty, staff and students could come together and to bring members of the Greater Cleveland community to campus. University Circle, Inc. (UCI) later expanded on this idea with Wade Oval Wednesdays.

    In an effort to reach out to both the on- and off-campus communities we put together a marketing plan that included:

    • Listings on the Case Web Event Calendar and UCI online and printed calendars
    • Space ads (print and online banner ads) in the Free Times and Scene Magazine (local entertainment weeklies)
    • Announcements on WRUW (Case’s radio station)
    • Street banners along Euclid Avenue
    • Posters and flyers on kiosks and bulletin boards across campus
    • T-shirts (worn by staff, available for sale, and thrown out to the audience by the performers)
    • Listings on the Web sites of the various bands
    • News releases sent to local media outlets such as The Plain Dealer (who then featured us in the events section of their Friday Magazine
    • Audience surveys to determine how they heard about the concerts
    • E-mail to select audiences, such as local alumni, and those who had signed up for our mailing list
    • Word of mouth
    • Thursdays in the Park Web site

    Our media plan focused on outlets that Clevelanders regularly use to learn about concerts, as well as those typically used to reach the university audience. Having a plan in place also meant that we could choose visual elements and colors that would provide a consistent image across our print and online presence.

    Later as each concert series progressed we learned from our surveys that attendees discovered the concerts through a wide variety of our marketing channels. This in turn helped us to fine-tune our strategy in the second year. And while some channels, such as space ads, couldn’t hold all of the information about the concert series, all of them (except the banners) did have room to list the Web site. By publicizing the event in these different ways we were able to reach a wider audience, draw a respectful crowd and also direct them to the site—where they could get directions, see photos from past performances and find other pertinent information.

    Conclusion

    While your Web site is likely the backbone of your marketing strategy, there are many methods you can use to augment it. These efforts will be most effective if they can be coordinated to focus on a common goal and deliver a consistent message. In future entries I’ll review some of these strategies in greater detail and discuss how members of your team can work together and/or with University Marketing and Communications to coordinate how these strategies can fit together.

    Future of web standards (my take)
    Stuart Landridge sums up the ongoing debate about the future of CSS. My thoughts on this are that we should: 1. Let browser makers run loose with implementing new features, based on feedback from web developers. 2. Have a standard body (or some other group) that look at those existing features and see how they can be […]

    Manipulating innerHTML removes events
    Others have written about this before, but I thought I’d mention it again, just so you don’t miss it. Aleksandar Vacić found it while playing with tables and their cells. I found it when Robert and I played with nested lists. It works the same across browers. Let me show a quick example: You have a […]

    Spotify is a lot like…
    Hi. Today I want to tell you about a music player called Spotify, that I like. What does that have to do with web development? Nothing, that’s why it’s in the “other” category :) Anyway. Spotify is a lot like Pandora, you know that music player that runs as a flash applet and suggests music based […]

    Visual Studio 2008 Review
    I know it’s a bit late, but as promised here’s a review of Visual Studio 2008. I’ve had it for a while now, but I wanted to wait until I’d worked on a few projects with it before I offered my opinion. Overall, it’s a solid improvement over 2005. The guys at Microsoft have made some good changes that actually improved the development experience rather than just adding a bunch of fluff.

    I know it’s a bit late, but as promised here’s a review of Visual Studio 2008. I’ve had it for a while now, but I wanted to wait until I’d worked on a few projects with it before I offered my opinion.

    Overall, it’s a solid improvement over 2005. The guys at Microsoft have made some good changes that actually improved the development experience rather than just adding a bunch of fluff. Unlike 2005, you’re not required to upgrade to the newest framework to use it, so you don’t have to upgrade to .NET 3.5 just yet. The IDE is generally a bit faster than 2005 and several of the features that were a headache for my team in 2005 have been made useful. The 2 most notable improvements were support for nested master pages in design view and a huge performance improvement in the table adapter editing interface.

    One of the first things I noticed about the interface is the influence from Expression Web. There is a new split view for the designer and several new CSS helper tools. The split view has been in other products, like Dreamweaver, for ages and I have generally not found it very useful and initially, I felt the same way about the split view in Visual Studio. It really doesn’t help much when laying out your pages, but when writing code-behinds, it provides a much quick method for reviewing the layout and server control properties. The CSS tools, much like Expression, seem like they may be useful to those inexperienced with CSS, but for me they were more of a hindrance than help.

    The biggest improvement is the javascript support. The support for the ASP.NET AJAX extensions is much improved, but that’s pretty much expected. What surprised me is the extensive intellisense support for javascript. It not only picks up the built-in javascript functions, it provides intellisense for any of your custom functions and variables. While my javascript skills are about average, our dedicated AJAX guy just wouldn’t shut up about how good the new javascript support is, which tells me it’s pretty solid. The new javascript debugging support is nice too, but it requires that you turn on the script debugger in IE, which makes any browsing outside of debugging your apps a pain.

    Visual Studio 2008 is a nice step forward for Visual Studio. While some people were hoping for more features, the features that made it in are solid and the overall performance in improved. The javascript intellisense and debugging alone will make it worth getting for anybody working heavily with AJAX and the performance tweaks will satisfy impatient coders like me. There are a few shortcomings (it’s still a memory hog) but the improvements are well worth the upgrade.

    This article provided by sitepoint.com.


    Happy Holidays from SitePoint!
    As I write this, most of Team SitePoint is up on the 3rd floor partying down in style. It’s the end of a big year for us, and we’ve got a lot to celebrate … but of course there’s also plenty to look forward to in the year ahead! In 2008, you can expect the following […]

    As I write this, most of Team SitePoint is up on the 3rd floor partying down in style. It’s the end of a big year for us, and we’ve got a lot to celebrate … but of course there’s also plenty to look forward to in the year ahead!

    In 2008, you can expect the following from SitePoint:

    • 99designs

      The new incarnation of SitePoint Design Contests that we launched this year has been so successful that we feel it’s time it was set free to make its own way in the world. This active design community will be split off onto its own site and renamed to ‘99designs’.

      Of course, this rebranding will come with a whole new visual design for the site. Watch for us to run a contest in the SitePoint Design Contests community to design the 99designs logo!

    • The SitePoint Reference

      Our CSS Reference site is already in closed beta, and we’re getting loads of great feedback from the SitePoint forum community. Early in 2008, this ‘reference to end all CSS references’ will open its doors to the world, and will be closely followed by references for HTML and JavaScript … each written by some of the foremost authorities on each technology.

    • More great books

      Our first title for 2008 will be The Art & Science of JavaScript, brought to you by a star-studded team of JavaScript experts.

    • …and lots more!

    SitePoint HQ is shutting its doors as we all take some time off over the holiday season. We’ve got some great articles queued up to go live while we’re away, and a few of our regular bloggers will no doubt chime in with any breaking news, but otherwise it may be a bit quiet around here for the next week. Rest assured, we’re just saving up some energy for the exciting year ahead!

    See you in 2008…

    This article provided by sitepoint.com.


    Media attribute - what have you done for me lately?
    I’ve been thinking for a while about the media attribute on link tags. Some people might find that thinking deep thoughts about HTML attributes is kind of strange, but I know you, my dear readers, know the feeling ;) An example, just so I know we’re on the same page: This […]

    Quick Accessibility Testing
    A recent project of mine required me to do a quick review of the accessibility level of a site. Nothing serious, just to show what was possible to test and where the site scored right now. I managed to assemble a small list of tools that I believe did a rather good job. This article […]

    Safari now available on Windows
    Hi, this is just a short post to let you know that Safari is now available on windows. It’s was unveiled at the World Wide Developer Conference 2007 by Steve jobs himself. I can’t stress enough how important this is for all Safari users. Most developers still use Windows when developing web sites (it’s changing, […]

    Java 6 for Mac OS X Back on the Radar
    Nearly two months on from the release of Mac OS X 10.5 (Leopard) and the resulting uproar from Java developers over Apple’s silent removal of preview builds of Java 6 for Mac, Apple has just as quietly released Java SE 6 Developer Preview 8, the first developer preview of Java 6 that runs on Leopard. Many […]

    Nearly two months on from the release of Mac OS X 10.5 (Leopard) and the resulting uproar from Java developers over Apple’s silent removal of preview builds of Java 6 for Mac, Apple has just as quietly released Java SE 6 Developer Preview 8, the first developer preview of Java 6 that runs on Leopard.

    Many developers had feared that the removal of the previous preview signalled an intent from Apple to ignore Java 6 in favour of continued minor tweaks to Java 5. It seems now that the optimists were right: Apple just needed more time to get Java 6 right, so it took a step back and made some improvements to Java 5 for the Leopard release before pressing on with its work on Java 6.

    The fact remains that if Apple were only to communicate with its closest allies—software developers—in a meaningful way, we wouldn’t be left playing these guessing games over the company’s intentions.

    This article provided by sitepoint.com.


    Lexical scope to appear in PHP?
    I mentioned briefly, in my last post, that Wez Furlong made a patch back in March, that allows a native syntax for creating anonymous functions. This could replace the heinous create_function. Since then, I brought up Wez’ original patch again on the php-internals lists. This has prompted some hefty debate over the last week. The main […]

    I mentioned briefly, in my last post, that Wez Furlong made a patch back in March, that allows a native syntax for creating anonymous functions. This could replace the heinous create_function.

    Since then, I brought up Wez’ original patch again on the php-internals lists. This has prompted some hefty debate over the last week. The main argument against approving the patch, seems to be, that one would expect static scoping rules to apply to the anonymous function. After all, this is the case in similar languages, which support anonymous functions. One could only assume, that changing PHP to support this, would be a major undertaking.

    One would be wrong, it seems.

    Today, Christian Seiler posted a patch to allow lexical scope for anonymous functions. There are a few loose ends, but it appears to work in general. Instead of making all variables follow the static scoping rules, a new keyword (lexical) is introduced. It works similar to global, in that it must be explicitly declared, which variables are lexically scoped. This is how it looks in action:

      function getAdder($x) {    return function ($y) {      lexical $x;      return $x + $y;    };  }  $add2 = getAdder(2);  $add2(8); // return 10  

    It’s probably a bit early to tell if this will find its way into the language. It’s still just a proposal and it would take some further work to get it right, but at least it appears to be technically possible. We’ll have to wait and see.

    Otherwise, there’s just left to wish you all a merry Christmas.

    This article provided by sitepoint.com.


    Facebook Opens Up, But You Still Have To Add Friends Manually
    Over a year ago two competing photo sharing services stumbled upon some thorny issues surrounding the openness of their data: Flickr initially denied Zooomr access to its API on the grounds that it was too similar a competitor, but eventually agreed to open up only if the stream was to be a two-way channel. The social […]

    Over a year ago two competing photo sharing services stumbled upon some thorny issues surrounding the openness of their data: Flickr initially denied Zooomr access to its API on the grounds that it was too similar a competitor, but eventually agreed to open up only if the stream was to be a two-way channel.

    The social networking space is presently going through a similar stage of evolution and thrashing out similar issues — first Google announced OpenSocial, an open standard to which developers of applications for social networks could adhere to so that they ran on any network, and Facebook have recently made moves to shrug off their perception of being a walled garden by with a similar (not unexpected) announcement. Developers are faced with a choice: one option that exists but only has two players, and another option with lots of partners but has yet to be released.

    And this is all fine. I hate repeating code and wasted effort, so the fact that Bebo users can now play Scrabulous with their friends without the Scrabulous team having to write a Bebo version of their Facebook app is all well and good.

    But what about those users and their connections?

    All of this openness and talk of API parity and open standards does nothing for the fact that the biggest complaint by anyone who uses more than one social network is that they have to re-enter their data every freaking time they sign up. Sure there are hack ways to get most of your data out, but the resulting data doesn’t exist in any kind of standard format that you can then reuse with a different network, and the contact information you can retrieve is restricted anyway.

    Besides, what format would it take? XFN? Ha! Brian Suda wrote recently about how Microformats could be the answer to this problem, but not enough social networks support them yet, so this is not yet practical.

    Am I naive to think that, if we fast forward a few years to when everybody is using OpenID and OAuth, we’ll return once again to the concept that there is no social network other than the Web?

    This article provided by sitepoint.com.


    Voice and Tone: Writing to reflect your personality as well as your message (Part 1)
    Last week someone posted a question to the WordNerds group regarding the importance of voice and tone in writing. In particular she wanted to know how to convey the importance of voice and tone to colleagues who aren’t professional writers. Not having covered this topic previously I thought I’d give it a go.

    scale.jpg
    Scale of tone? Or is there more to it?

    Last week someone posted a question to the WordNerds group regarding the importance of voice and tone in writing. In particular she wanted to know how to convey the importance of voice and tone to colleagues who aren’t professional writers. Not having covered this topic previously I thought I’d give it a go.

    Voice and Tone, is there a difference?

    After prowling the Web looking for various references on the subject I’ve found that opinions differ on this. Some treat the terms interchangeably, while others see key distinctions. For the purpose of this blog, I will define voice to represent the personality and/or style of the writer and tone to reflect the mood or attitude of the writing in relation to its audience and goal. Today I’ll focus on tone.

    Tone and formality

    Writers often think of tone as a measure of formality, striking a more serious mood and style for an academic paper, a not-as-serious mood (the equivalent of business casual clothing) for an informative blog entry and a light mood and casual style for an e-mail to a friend. They do this in regard to their audience and publication as though there were a corresponding scale that shows that serious, matter-of-fact writing is taken more seriously by peer-reviewed journals and professors, while a laid-back tone is more welcomed by friends.

    While this makes sense to a degree, I’m not sure that such a scale is accurate. When deciding whether a writer is well-informed and making a good case, I’m more likely to consider how the information is organized, the logic of the arguments made, and any related sources, than I am the seriousness of tone. Where I will consider the tone is when it comes to readability. Is the piece so dry that I’m asleep before I finish? Does it match the subject matter? Is it appropriate to the message or does it make the writer seem disingenuous? Some writers will strike a serious tone to seem more authoritative, when in fact that tone seems false, making us question—rather than trust—the authority.

    When matching seriousness of tone to audience it’s equally important to match the tone to our goals. Are we writing to inform? To persuade? To warn? To amuse? To console?

    If I were writing guidelines for the safe-handling of sodium, my first instinct might be to take a very serious tone. Sodium is dangerous, it shouldn’t be touched by human hands, mixed with water, bla bla bla. Yet, if I’m giving these guidelines to students, I want them to pay attention, both to keep them safe and to keep them interested. While I want to make sure they don’t hurt themselves, I also don’t want to scare them away from the study of chemistry. Rather than just giving them somber warnings about explosions, perhaps it would be appropriate to follow the example of Theodore Gray—who documented his sodium party experiments in text and video. Gray’s tone is moderately serious with a hint of humor, clearly demonstrates the dangers of sodium, yet still makes one want to learn more about it. Had he kept his tone too serious or dry no one would have paid much attention, but by striking the right balance, his story was passed along and mentioned in Slashdot and other media.

    Tone and attitude

    To be serious, or not, is but one measure of tone. Plenty of people stop there, but I think there is much more to it. Humorous writing may be sarcastic, flippant, silly or ironic (among others). Complaints can be angry, bitter, sad, cautious, polite, intense, etc. Tone comes in a wide range of attitudes, some of which may overlap. This is where things get tricky. It’s (relatively) easy to write something that sounds serious and professional. That’s the tone I’ve used so far today. But have I struck the right mood? In taking a straightforward approach to the topic, am I sounding condescending or collegial? Pedantic or informative? Have I so bored you that you’re now asleep—dreaming that your lobster ice-cream franchise failed because you just couldn’t compete with your rival’s spicy crab cones?

    These are the questions I must ask myself. When I re-read something, I’ll question the mood. Is it too dry? Too goofy? Too dark? Does it suit the topic? Will it engage the reader? Today the fight has been to avoid being too dry or condescending. My goal is to offer some friendly advice, not to come off as some authoritarian know-it-all. To capture the right mood, I’ll need to keep tweaking things. I’ll replace sentences like:

    “Writers are often confounded by such nuances.” (Man, that sounds pompous.) with “This is where things get tricky.”

    Then I’ll make sure that I’ve used contractions and added a few quirky ideas—such as the bit about the lobster ice-cream. Perhaps I’ll also switch perspective. Notice how the bits I’ve written in first person seem more friendly than those in third person? Vocabulary, perspective and punctuation can all color the tone of the text. With that in mind I’ll keep reading and tweaking until it sounds good enough to post. Good enough depends on your objective—given my time restraints I’ll spend less time polishing a blog entry than I might an article for print publication. (That’s my disclaimer in case I still didn’t get the mood spot on!)

    Recommendations

    Choosing a tone, writing, then editing to reflect that tone seems to be what works best for me. It also helps to let someone else read your work. They may notice an attitude that you didn’t. When they suggest a change to a word or phrase, take it under consideration. As writers we’re often protective of our work, but if we’re writing to be read, then we need to listen to our readers. They won’t always be right, but they won’t always be wrong either. Viewing your work through their eyes, will give you a new perspective, and often some very good ideas.

    Also remember, you don’t always have to sound serious to be taken seriously.

    Voice and Tone Resources

    To learn more, read Part 2: Voice

    Leave a Reply

    You must be logged in to post a comment.