larryaronson.com

A lot of the noise around HTML5 has been about whether or not it will replace Flash as the primary means of delivering video content over the Web. While I believe that HTML5′s simple, native video element is superior to Flash’s plugin-based mess of object, embed and param elements, Flash isn’t going away anytime soon. The noise, however, drowns out information about other interesting HTML5 features, two of which, content editable-ness and local storage, I’ll explore in this article with a simple example. Google’s Chrome browser supports both of these features; other browsers support one or the other, or neither.

Local StorageLet’s say you have a page on your website and you would like to offer your readers the ability to jot down notes related to the content of that page in some kind of input field. Furthermore, since you expect visitors to revisit the page from time to time, you’d like to store their notes somewhere so that the input field can be loaded when they next load the page. Before HTML5, you would either use a server-side process, cookies or some combination of the two to make this happen. With HTML5, there’s a third choice: the localStorage window object.

First, let’s start with the input field. We could use a textarea element but in HTML5, any element can be turned into an input element by adding the contenteditable attribute:

<ul id="notepad" contenteditable="true">
  <li></li>
</ul>

In the  CSS for this list element, we want to set its size and position:

#notepad {
 height: 20%;
 width: 20%;
 display: none;
 position: fixed;
 top: 0.5in; right: 0.5in;
 overflow: auto;
 padding: 1em;
 border: thin solid;
 list-style-type: none;
 background-color: #fffff0; /* light yellow */
}

This will place the list element 1/2 inch down and in from the top-right corner of the browser’s window. The bordered box will take up 1/5 of the window’s width and height and scrolling will be enabled if there is more content then fits. The display property is set to “none” initially. The user will be able to make the notepad list visible by clicking a button with an onclick handler.

<button id="notepad_toggle"
        onclick="$('#notepad').toggle()">Notepad</button>

I’m using jQuery for the onclick handler because it makes it easy to target elements . If you copy this code, make sure you load jQuery somewhere in the document’s head.

HTML5 extends the window object with the localStorage property and two primary methods: setItem(name, value) and getItem(name) to set and retrieve name/value pairs of data items. Any number of such items can be stored with a webpage and each page’s storage object is independent of any other page’s. Unlike cookies, local storage items are never sent by the browser to the server and thus provides a efficient means of saving page state information even for megabyte data items.

For our example, we can store the contents of the notepad element each time it is changed. We will do this with the blur method, detecting when the user leaves the notepad to do something else. Here’s some jQuery that does that nicely:

$('#notepad').blur(function () {
  localStorage.setItem('notepad', this.innerHTML);
});

How nice is that? The storage doesn’t have to be initialized; it’s just there waiting for you to throw something into it.

When the page is first loaded we need to check if the notepad contents has been saved from some previous visit by this browser and if so, use the stored value to replace the inner contents of the list. This can be done with the following JavaScript statement:

  if ( localStorage.getItem('notepad') ) {
    var notepad = document.getElementById('notepad');
    notepad.innerHTML = localStorage.getItem('notepad');
  }

Note that there’s no conflict in the three uses of ‘notepad’ in the code above. The name for the local variable can be anything as can the name of the stored data item. Neither has to be the same as the UL element’s ID. Hopefully, I’m avoiding confusion by naming everything ‘notepad’ and not adding any.

Since this is only going to work on some browsers, let’s test to see if local storage is available. If it isn’t,  we can just hide the the button that makes the notepad visible.

if (!window.localStorage) $('#notepad_toggle').hide();

or, for debugging, we can call an alert message.

All of the code can go into a script element embedded in the content body, like this blog post, for example:


Click the button above and enter anything in the light yellow notepad that opens in the top right corner of your HTML5 capable browser. Enter anything you want – I’ll never see it, nor will anyone else. What’s entered in your local storage stays in your local storage. Try dragging and dropping images, tables, links and other thingys. Notice something interesting? You can’t use HTML to markup your own typing but anything you drag or paste in retains all of its HTML formatting. Now Go Away! Come back to this page sometime later (with the same browser) and click the notepad button again. There’s your stuff!

Click here to see the code for a stand-alone demo to get you started.

Ron Egatz and I go back to the time before the Web. He is one of those all-around creatives who does writing, editing, photography, graphic design and some Web programming. He occasionally calls on me to solve some of the more technical problems he encounters. So I was pleased when he asked me to help one of his associates, Matt Hill of MAC Group, who needed a blog repaired ASAP.

Someone had started a blog for Profoto-USA using a customized theme but left it an unfinished mess. The sidebar was all screwed up, the more tag wasn’t working, there were no social-sharing functions and no control over the main menu – to name just a few of the problems. Profoto-USA is about the importance of good photographic lighting with dozens of interesting articles (some of the best authored by Ron) illustrated with beautiful photographs. Please click the screenshot below to check it out.

Screen shot of Profoto-USA home page Fixing the sidebar, installing social sharing widgets and enabling the WP 3.0 menu manager was straight forward. The real challenge was finding a way to give authors more control over the content. The more tag, mentioned above, provides the ability to place a marker in a post so that on the blog’s front page, the post is displayed up to the marker, followed by a link to the rest of the article. I got that working but it wasn’t enough to manage the huge amount of content. The beginning paragraphs of a post often do not make the best summary, especially with long magazine-style articles. WordPress provides the ability to hand-craft a article summary, called an excerpt, but this feature has to be coded into the theme. Some themes show post excerpts on their front page; some show full posts (up to the first more tag.) I decided to give Profoto-USA the choice of which to use on a per-post basis using a custom field.

The previous developer had hard-coded a modified Recent Posts sidebar widget that showed, for each post, the post title and a linked thumbnail image. The thumbnails are large: 304 x 190 pixels, and only the first two or three appeared “above the fold.” The obvious solution was to use a sideshow plugin that cycled through the thumbnail photographs. Now, I’ve used a number of such plugins before and the general problem with them is that they only do what the plugin author designed them to do plus whatever user configurable options that author cares to code in. Imho – most of them fall short. Since most of the code for fetching the post data was already working, I decided to use some jQuery to add the animation effects and navigation controls to make it into a sideshow (click for nerdy technical details.)

This took much less time than I anticipated – less time than it would have taken to find and configure a plugin to the client’s specifications. With the extra time on my hands, I decided to give Profoto-USA a feature they didn’t ask for but felt the site definitely needed: an index to all articles showing only the permalinked titles and the meta-info line with author and publication date. I added it to the footer menu without telling them about it.

onPhilanthropy.comI just finished a major project for Tom Watson, author of CauseWired, converting his website, onPhilanthropy.com, from a custom CMS to WordPress. The new site is built on the Arthemia Premium theme with modifications enabling it to carry ads from multiple sources.

This site was a blast to work on. I had done a couple of other small repair and rescue jobs for Tom. He is wonderful client; tech-savvy and patient, he pushed for solutions that stretched my skill set and forced me to learn new techniques. Some of the interesting features of onPhilanthropy.com include: customized widget headings, a revamped advertising manager, a Twitter slurp and feeds from companion sites such as, DotOrgJobs.com.

If you are in the dot-org space, please visit onPhilanthropy and check out how good technology can advance good causes. And, of course, feedback is always welcomed.

I was never a fan of the Sex Pistols, but Malcolm McLaren, who died today in Switzerland at the age of 64, changed my appreciation of music forever.

Double Dutch

a 1983 mash-up of South African Township Jive and a Harlem High School athletic contest ignited my passion for African music. After that came the mesmerizing Waltz Darling followed by Fans, which forced me to appreciate opera!

He will be missed. rip Malcolm McLaren.

Update — America Wins the Cup!

Yesterday, as the sun was setting in Valencia, America's BMW Oracle crossed the finish line more than 5 minutes ahead of Switzerland's Alinghi to reclaim the trophy for the USA.

New York Times Photo - 2/11/2010

The 33rd running of the America's Cup Race is underway in Valencia, Spain. Two boats, USA's BMW Oracle and Switzerland's Alinghi, the defending champion, go at it in a best 2 out of 3 series of races. Both boats are amazing mashups of advanced technology and corporate egos. In terms of raw power and speed, these fragile multi-hulls move at 3 times the speed of the wind that powers them.

Click to watch Live Video from the America's Cup

More Americas Cup News
Loading...
Feed courtesy of Google.

Follow the Americas Cup on Twitter.com



There’s a fundamental conflict in web page design between content and clutter. We want more content to make our pages findable & provide value to visitors while maintaining visually clear layouts so as not to frighten away seekers of simple truths. The key to solving this conundrum is to stop thinking of web pages as printed page emulators. A printed page is a fixed matrix of tiny colored dots (pixels) on a two-dimensional surface. A web page is a dynamic document object composed of multiple layers of interactive elements.

My client, Kate Nasser – the people skills coach, has grown her consulting business by consistently adding content to her blog/website and by using Twitter, LinkedIn and youTube to draw traffic. A recent SEO/SEM assessment of her site recommended adding more keyword-rich content and reducing some of front page’s  clutter.  This is what the page looked liked.

Advanced Tooltips.

We had a box on the right side of the content area listing a dozen “Needs” linked to different site pages or posts. With each need there was an associated comment (technically, a definition list.) We decided to move the box to the left side of the page (ahead of the straight text content,) placing the comment parts in tooltip boxes that appear as you mouse over the topic part. Kate was free to add more content to the hidden (only from humans) comment parts.

Tooltips are the little yellow boxes that appear when your mouse hovers over a link. The content of the tooltip box is taken from the title attribute of the HTML tag that creates the link. But ordinary tooltips are boring with fixed style and color; yellow wasn’t the best choice given the site’s aqua tones.

So, I installed JQuery Tools from Flowplayer.org which has an easy to use, advanced tooltip tool. JQuery is a library of Javascript functions that make it easy to add dynamic behavior to Web page elements without having to worry about cross-browser incompatibilities. JQuery Tools is a free, lightweight tool collection that provides basic behaviors to attach to any page element. The Advanced Tooltip tool replaces the browser’s builtin tooltip and can be attached to any page element, not just links.

To make Advanced Tooltips work, you have to provide a page element with a unique id to hold the content. It doesn’t matter where it’s placed. The element, typically a division, is dynamically positioned near the moused-over element. The element is re-useable; you only need one holder element for all tooltips of a given style on a page. The tooltip is styled using Normal CSS so I was able to match the colors and typography of that section of the site’s front page.

Technical Details (Expand)

Random Quotes

Kate has a bunch of her own quotes and was updating her front page every few days with a new quote from the collection. She asked if there were some way to automate the process. I browsed the various code and plugin collections and found noting simple or suitable. I decided to write my own.

I copied her front page as a new draft page and cloned the default page template and assigned it to the new page. Thus, I was able to work on and test the new features without endangering the site’s current front page. The cloned template would contain custom code to randomly pick a quote and place it at the beginning of the content area. The quotes themselves would be stored (and editable) as custom fields for that page with the key, “quote”.

<?php
    $todaysquote = '';
    $quotes = get_post_meta('2', 'quote');
    if (!empty($quotes)) {
        $todaysquote = $quotes[rand(0, sizeof($quotes) - 1)];
    }
?>
<div class="dailyquote">&ldquo;<?php _e($todaysquote); ?>&rdquo;
<span>&mdash;Kate Nasser</span></div>

First, a PHP variable, $todaysquote, is initialized. Then the WordPress function, get_post_meta(), gets all custom fields from post number 2 (that’s the front page) with key = ‘quote’. The values are returned as an array of strings and assigned to the variable, $quotes. If it’s not empty, the built-in, PHP random number generator picks one of its array items. Finally, the last two lines define the HTML division element that will hold the quote,  enclosing it in smart quote marks and adding Kate’s signature. Note the use of the special echo function,  _e($todaysquote),  to encode any HTML characters that might be in the quote string.

One of the upsides of this technique is that a new front page is seen in most every visit to the front page including those by search engine robots. Over time, this can expand the number of keywords associated with the page. Unfortunately, there’s no easy way to measure which quotes work best. If you do add random content like this to a page, you should check to see if you have a caching plug-in active. You might want to exclude that page from the cache.

I added this feature as a template hack because my client only wanted it on one page which already had a customized template. It could be easily generalized and added as a filter to the theme’s functions file, for example, to append a random quote to post content when generating a single-post view.

 

AirSafetyAndLawAir Safety And Law is intended to serve as a forum for the legal community to discuss air travel safety and liability issues. The blog is a project of Kreindler & Kreindler, the law firm that handles most of the major aviation accidents. I originally worked on this in late 2007 with my graphics designer friend, David Schiffer, who provided the header image and selected the theme from several sample templates I presented. We put up a demo version on WordPress.com, but not until recently have they decided to bring it live.  I moved the content to David’s managed server so that we’d be able to do robust search engine optimization and accommodate some modifications that would not be possible on WordPress.com.

As with another law firm blog I recently built, the Air Safety And Law authors wanted thumbnail versions of their portrait photos to appear with the articles they published.  Instead of hacking the template files as I had done with the previous site, however, I formalized the technique and wrote a WordPress filter. Read my recent article on how this works.

your_photo_hereThe request was simple enough. I had just built a WordPress blog for a law firm and now they wanted to have their thumbnail photos in the articles they write. I had done this for another website (also a law firm) a year ago, modifying each of the theme's templates that displayed posts but, when I went back and looked at that code, I thought, "Too messy, there's got to be a better way."

A plug-in search turned up nothing. No surprise—Wordpress does not support user profile pictures natively. There's no field in the database for an user's image file name. Then I remembered reading an article in Smashing Magazine about filters a couple of months ago. They had an example where a subscribe request was appended to the end of each post's content. Maybe that technique would work to prepend a photo.

In WordPress, a filter is like a plug-in except for two important distinctions: It's not packaged for distribution and it's associated with the theme. That is, you can't manage the filter from the dashboard's plug-in manager and, if you change themes, it disappears. That was all right for my purposes. The clients were quite happy with the theme we'd chosen – Mistylook, by Sadish Bala – and I could provide instructions on how to remove the filter from the theme's functions file should they ever want to "deactivate" the feature.

I got the images from the client for the four lawyer/authors—a wallet-sized image and a thumbnail for each. The larger image would appear on the author's profile page and the thumbnails would be placed at the beginning of their posts, floated left of the text. For the larger image, I modified the author's template (author.php) as I had with the previous website. For the thumbnails, I would use the filter approach since post content is accessed in several templates and I wanted a unified solution. For the sake of brevity, I'll skip the part about the author template mods in this article. If you're interested in that piece, leave a comment and I'll write another article.

I created a new directory, /wp-content/authors for the larger images and a sub-directory, /wp-content/authors/thumbs for the smaller versions. In each, I renamed the images files to match the corresponding login usernames. If, for example, there was a user with the login username of 'bobama', then the two images files would be: /wp-content/authors/bobama.jpg and  /wp-content/authors/thumbs/bobama.jpg . I did this with an ftp program but you can use the dashboard's Media manager, in which case, the image files will be somewhere in your /wp-content/uploads directory with your other media files. All of the other work described in this article can be done through the dashboard's theme editor by an admin user but I highly recommend using a good code editor with color syntax highlighting. BBEdit is my favorite.

A WordPress filter goes into the theme's functions file (functions.php) and consists of two parts: A function definition and a call to add that function to a named WordPress "hook". I called my function: add_author_photo() and  added it to the 'the_content' hook. You can think of this hook as the point in the page building process when WordPress gets the page or post content from the database and starts to get it in shape for the web page it's building. WordPress passes the content to the function as a string and expects it back in return. Roughly, the outline of the process looks like this:

<?php
     function add_author_photo($content) {
         ...
         return $content;
     }
     add_filter('the_content', 'add_author_photo');
?>

Note how the entire filter is enclosed in a PHP container. This is important!  Now, all we need to do is fill in the "dots".

First, we need to make sure that our function does its work in the right place since it will be called anytime WordPress fetches the content from the database. We want the thumbnail photo to appear in posts on the home page and on single post pages, but not on static pages (which are, in a sense, "authorless") nor on the archive and search result pages and especially not in RSS feeds. The following if statement does what we want:

if (is_home() || is_single()) {
    ...
}

Next, the code needs to check that the image file we want for the current post author actually exists. The client may add more authors and contributors before their photos are available and we don't want an ugly, empty missing-image square to appear where a nice photo is expected. This is a bit tricky. There's a PHP function, file_exists(), for checking whether a file exists or not but it takes, as its argument, the full Unix path to the file, as opposed to a URL fragment. WordPress provides a function for doing this: get_theme_root() which returns a string that, depending on your hosting company's site configuration, might look like this:

/var/web/clients/abc.com/htdocs/wp-content/themes

Since my 'authors' directory is at the same level in /wp-content as the themes directory, all I have to do is replace the 'themes' part in the string above with 'authors/thumbs/' and append the image's file name. The following two lines of code will assign the username to a variable and do the replacement using  PHP's  str_replace() function.

$author_uname = get_the_author_meta('user_login');
$author_photo = str_replace(
                    'themes',
                    'authors/thumbs/' . $author_uname . '.jpg',
                    get_theme_root() );

We can check whether the file exists with another if statement:

if (file_exists($author_photo)) {
    ...
}

Now we are ready to add the image tag to the beginning of the post content. I'll add a CSS class, 'authorImage', to the image tag which I'll use to make the image float left and set appropriate margins and padding (see below.) I'll also enclose the image in an anchor tag that links the image to the author's profile page. I've laid this out here in several lines for readability. The dot at the end of each line is the PHP concatenation operator.

$image_src = '/wp-content/authors/thumbs/' .
             $author_uname . '.jpg';

$content =  '<a href="/author/' .
            $author_uname .
            '"><img class="authorImage" src="' .
            $image_src .
            '" alt="' .
            get_the_author() .
            '" /></a>' .
            $content;

Here's a screenshot of the final code I pasted into the theme's functions file. Because I'm a nice guy, I added  /* comments */ to explain what was going on. Click on the image to open a text division with the actual code you can copy.

Click for text version

The final version took a bit of debugging to fix some stupid typing errors but it worked as I wanted it to. A look at the source code for the home page shows the generated image tag and link:

<a href="/author/larryaronson"><img class="authorImage"
   src="/wp-content/authors/thumbs/larryaronson.jpg"
   alt="Larry Aronson" /></a>

All that remained was adding some simple CSS to the style sheet to float the image to the left of the post text. The rules shown below does that and sets appropriate margins.  The images already incorporated a border so I removed the border set elsewhere in the CSS and removed the drop shadow background that Mistylook adds to images as a matter of taste.

img.authorImage {
   float: left;
   margin: 0 1em 0 0;
   border: 0;
   padding: 0;
   background-image: none;
 }

That's it. I hope you found this article useful. Suggestions for improvements are welcome.

Gregory Poe's Federal Criminal Practice BlogI just completed another WordPress blog for a client of my good friend and associate, David Schiffer, of DLS Design. David built a beautiful, static site for Gregory Poe, a lawyer in federal criminal law practice, and trusted me to copy his look and feel for the dynamic blog section. The static part of the site featured variable-width left and right margins with an image mapped navigation bar, so I selected my favorite variable-width theme, Minimal, and reconfigured his menu as a WordPress style list so that any new pages Gregory created in WordPress would be automatically added to the navigation elements.

Once Gregory started posting on blog.gpoelaw.com, we realized that his style of writing detailed legalese needed some additional typographic punch so we darkened the text and block justified the paragraphs for additional readability. Under the hood, I added my standard mix of plugins for SEO, Google Analytics and advanced editing.

President Obama gave a great speech to Congress a week ago, following up with a with even a stronger defense of his health care ideas yesterday in a speech to the AFL-CIO. Great arguments, great passion and a great show of resolve. Not much change, however; not even close to the kind of change I voted for. Don’t get me wrong. I strongly support health insurance reform, but the president and congress will bring no sanity to a needlessly complex, expensive and cruel system.

I was disappointed that the president ducked the opportunity to define American Health Care and instead left us with a mish-mash of fixes to the current system. Reform is not in the details, Mr. Obama; it requires rethinking of the issue; seeing the big picture. By failing to set a defining base of what health care can and should be, the president has played right into the hands of those who profit most from preserving the status quo.

Alternative Visions of Health Care

Health care can be thought of as infrastructure. Like our interstate highway system, it promotes our defense and progress as a nation. We need healthy people to defend our land and to provide the spirit and energy that promotes innovation and competition. That provides a great practical argument for expanding existing insurance programs to cover everyone. There are a number of different ways to structure this. The basic idea is that your health is a vital national interest; not just something useful to a full-time employer.

But we can do better. I believe that good health should be declared a constitutional right. Like privacy, it is a necessary condition for “life, liberty and the pursuit of happiness.” In order to protect that right, the government has a responsibility to insure that all of its citizens have access to good health care.

No one should die because they cannot afford health care, no one should go broke because they get sick, and no one’s child should miss a doctor’s appointment because it costs too much.

Let’s add that everyone should get good preventive care to prevent disease before expensive treatment becomes necessary. I’m talking about free, regular medical checkups for everyone! Then a combination of public and reformed private insurance to cover the costs of hospital stays, surgeries, therapy and long term disability.

Can we afford this? Yes! Of course we can. Done right, cost savings and productivity gains will be huge. But even so, what’s so wrong with raising some taxes; or perhaps, ending one of our very expensive wars.

Thinking of starting a Website to publish your thoughts, promote your business, provide a service, or connect with friends? “It’s easy,” uh-huh, “It’s free; No HTML necessary!” Yeah, right.

Well…, yes, that is right. Easy because services exists that create usable websites using templates and wizards friendly enough for the Internet illiterate.  And free – or at least it’s free in the sense of approaching zero initial software cost. But, in order for your website to grow, you’re going to need that technical knowledge, HTML, to keep your content publishing costs under control.

How amazing it is that we can create and globally distribute content, on zillions of Web pages, to inform and entertain ourselves without moving physical stuff anywhere! The Web page is irrevocably becoming the World’s most common form of communication. It’s the lowest cost replacement for articles, pamphlets, brochures, manuals, directories, flyers, commercials, letters, announcements—almost any kind of document you can think of. The Web does this instantly, adding interactivity, links and searching as a bonus!!

But here’s the problem: By doing so much for so many, the Web has become irreducibly complex. It’s also rapidly evolving. The learning curve never gets any less steep and climbing it is not easy. There just is so much to know about and we all know that even just knowing about what to know ain’t easy.

Content Is Kingdom

Keys to the KingdomFor many small website owners, creating and maintaining their own content is paramount. So Web editing tools are the keys to the content kingdom. There are two choices: using a wysiwyg editor on a local PC, downloading and uploading files; or using a Web-based editor to edit content directly on a webserver. The former approch allows you to create Web pages rich in structure and interactivity. The latter is easier by far and can be done anywhere you browse the Web. Unfortunately Web-based wysiwyg editors are rather puny and often frustrating to use when the content has any structure or is already marked up with HTML from another source like Microsoft Word. Knowing HTML helps you avoid many of problems and resolve others before they frustrate, no matter which editing method is used.

When Tim Berners-Lee invented the Web about twenty years ago, he thought that most HTML would be written by software programs. How did that work out? You might ask. Not very well, actually. One of the Web’s great strengths – a dictate that browsers must gracefully tolerate crappy code – is also a weakness. The early browsers; Mosaic, Netscape, AOL and Internet Explorer, went to war competing for market share by introducing new elements into the HTML language. The people writing wysiwyg editors couldn’t keep up with the rapid pace of HTML development, delivering mediocre products that generated bad code, while competition among Web designers to create unique and compelling pages encouraged  advanced HTML techniques beyond the capabilities of the wysiwyg editors.

The Rise Of The Robots

It’s 2009 and although they look much like their counterparts of a dozen years ago, Web pages are coded quite differently in this century. For one thing, good cross-browser support for Cascading Style Sheets (CSS) make it possible to code Web pages with far less HTML markup. Also, a large proportion of Web pages are dynamically generated using HTML templates. These templates are bits of code that may be reused millions of times a day so there’s high value in using the cleanest, leanest HTML markup possible.

RobotsBy far the biggest change is the rise of search technologies and the role that today’s search platforms: Google, Yahoo, Bing and others, play in our experience of the Web. A modern Website seeks to increase its find-ability and raise its search engine ranking. These requirements has spawned a new business practice called Search Engine Optimization (SEO). Companies providing SEO services specialize in writing HTML that’s very easy for the search engines’ automated scripts (the robots) to understand.

This is Web 2.0, where websites continually exchange information with other websites and where what other websites “know” and “think” about your website can be as important as your site’s content. Knowing the basics of HTML, how it works to add semantic information to page elements and how that information is gathered and used by robots will give you an edge in meeting your online goals.

Humintell Launches

HumintellHumintell.com is a website project I worked on this past Spring for the Landsman Communications Group on behalf of their client, David Matsumoto, a pioneering researcher in the field of Microexpression Analysis—understanding the underlying emotions of people by looking for universal facial expressions that flick on and off in less than a second. Humintell seeks to provide online training in these skills and the website serves a the marketing vehicle for the business, a blog for discussing related issues, and a gateway to the custom training modules for subscribers.

I built the Humintell.com website in WordPress on top of Minimal, a free theme from The WordPress Theme Shop that features variable width columns and other nice enhancements. The wonderful graphic design, typography and layout is from Dean Meyers, who added some of the playful visual effects used on the site. Dean Landsman of the Landsman Communications Group integrated the various online pieces into a coherent whole, creating/editing much of the initial content.

Congratulations, Humintell! And thanks to Howard Greenstein of The Harbrooke Group for referring me to Landsman.

AP_logoReading Friday’s NY Times article: A.P. Cracks Down on Unpaid Use of Articles on Web, made me laugh. In the era of Twitter and the age of instant messaging, the Associated Press says it’s in the business of selling headlines and has a right to license their every use in any context including—especially including—search engines such as: Google, Yahoo and Bing. Unquoted in the NY Times article is any mention of what this 1,400 member, non-profit association does best: aggregating and editing news sourced by a global network of reporters and editors.

CBS_News_logoIn the 1980s, when I worked at the CBS News Election and Survey Unit, there was an A.P. ticker near my desk. At the time, the A.P. had the contract to collect election results from their county reporting points, summarize those results and provide them by teletype to members and subscribers. Most of the time, however, it carried the feed of breaking news and followup stories. Postings were not signed, they just had an originating station but, after watching for a while, the personalities of different stations around the World emerged. Mistakes were common and pranks were occasionally pulled. In today’s parlance, this was a very successful social media network with many of the characteristics found in today’s Internet mix of chatting, tweeting and blogging. It just wasn’t free and it wasn’t open. It was built on expensive phone lines leased from Ma Bell and you had to be an accredited member to post stories.

Informed_sources_coverThe A.P. has a great heritage that goes back many decades before my encounter at CBS. I have a novel that I bought at The Strand Bookstore on my first visit there upon moving to NYC after collage:  Informed Sources (Day East Received) by Willard S. Bain. The novel is a visual work in teletype-ese, printed in an ALL-CAPS typewriter font. Written in 1967, it was given away for free in mimeograph format by The Communication Company, an underground press, before being published by Doubleday and Company in this softcover edition that I’ll have to stop reading soon if I want to finish this post.

Informed Sources tells the story of a terrorist plot coinciding with the reported death of a pop culture idol from the perspective of the station staffers at Informed Sources (IS), an A.P. like network:

INFORMED SOURCES BULLETIN
    BERKELEY, NOW (IS) -- A PLAN TO BLOW UP GOLDEN
GATE BRIDGE IN HONOR OF ROBIN THE COCK, WHOSE
ALLEGED LIFE REPORTEDLY HAS ENDED IN RUMORED
DEATH, WAS ABANDONED TODAY.
                                          VC807PPS

Except that this is 1967 and everyone is more or less stoned. Yet, here too, you can hear voices like those of today’s Internet. Take this quote from the beginning:

BOSTON, NOW (IS) -- WHAT'S HAPPENING?
     IN SCORES OF SCATTERED BASEMENT BASES ACROSS
THE LAND THE QUESTION GATHERED ITSELF AND THEN
HOVERED IN THE ANSWERING ECHO.
     CYNICS SNEERED IT WAS ALL A BIG PIPE DREAM, BUT
ONE OVEREXTENDED PIONEER OF THE NEW LEISURE SAID
"THAT'S WAY BESIDE THE POINT."

The more thing change… Right? The novel remains an unknown classic of the underground literary world at that time when the beat poets were experimenting with LSD and cultural revolution. It’s not on-line, as far as I know. There are only four used copies of the softbound edition for sale on Amazon and only one of the mimeograph copies.

WHIMSY SEIZES SYNAPSE TRAPEZES

Sorry, but I don’t wish the A.P. well in their headline selling business. Not if it means a full court press against fair-use under copyright that will saddle the Internet with last century’s digital rights concepts. There is a big difference between atoms and bits and the bits of information that seach engines gather and maintain about other online content (links) is not that content — it is the conversation about that content. The A.P. did social media right for so many years but now they don’t seem to get it at all. Paid headlines, like paid speech must eventually lose market share to free variety.

Google announced their plan to introduce the Google Chrome OS into the market for PC operating systems. Google Chrome OS is an expansion of the capabilities Google introduced with their Chrome browser just 9 months ago. It will essentially be a Web OS that intelligently integrates on-line and local device resources to provide a slick interface for managing all the content consumption, creation and sharing we routinely do. Netbooks running the new Chrome OS should be available in about a year.

This is important news. Not because it challenges Microsoft’s dominance of the PC operating system market, as stressed in the New York Times article on the announcement, but because it’s a sign that we are heading to another sweet spot in the information technology revolution. A sweet spot is where hardware, software and cultural trends come together to make complex tasks much easier and cheaper to accomplish. The effect transforms society enabling new ways for people to interact. For example, in 1994, reliable, dial-up Internet service met the graphical Web browser, Mosaic, just as Al Gore re-invented the Internet as an open platform for business, entertainment and the free, global exchange of information and ideas.

Here are the important trends today: A new generation of high-speed WiFi based on freed up broadcast spectrum from the conversion to digital TV is on its way and will meet up with new portable devices that are fun to use and cheap to own. After Google Chrome OS goes open-source, there should be versions available for everything from X-Boxes to old TiVo machines.

Speaking of Tivo, the recent Supreme Court decision to deny the appeal in the Cablevision DVR case highlights another trend. Cablevision wanted to provide DVR services upstream on their servers. The broadcast networks held that this was making copies for redistribution and, thus, they should pay royalties. The Appeals Court ruling, which the Supremes let stand, held that, once the consumer paid a license for a piece of content, it didn’t matter where it was stored on the consumer’s behalf—on a local hard drive or somewhere in the cloud.  This decision lays the groundwork for challenging all the restrictions that the telco, broadcast and cable monopolies, place on how, where and when we do anything.

Here’s my last trend to watch: A month ago, the state of Vermont OK’d the formation of virtual corporations by a change in its tax laws. This means that corporations (LLCs) in Vermont no longer need to have a physical mailing address and can conduct online board meetings.

An important conclusion was missed in the Vermont reporting – a corporation can have bank accounts and credit cards. This is a privilege hitherto granted by our government only to corporations and individuals and denied to such entities as: MeetUp groups and SecondLife communities. The effect of this, as Clay Shirky points out in Here Comes Everybody, limits our ability to leverage the Internet, with social media tools, to organize and engage in collective actions other than protest movements.

How will society change in the next two or three years when all of us are connected to a World Wide Web of rich media, all the time, in devices on us and around us; with fast, friendly software that knows about us, our friends and the tribes we associate with; when the last geographic and cost barriers to collaborative action for the common good are gone?

The Easy Office

The EasyOffice is an exciting new entry in the world of Cloud Computing and software as a service (SaaS) for small and medium sized businesses. The CEO, Philip Meese, and I belonged to a small collective of freelance APL programmers in the early ’80s, and shared an interest in sailing and flying. He was even my upstairs neighbor for a few years. We recently reconnected at a reunion. He had a problem.

The website for his new business–low cost outsourcing of office systems, networks and applications—was unfinished; stalled. The content and visual assets were on a designer’s development server and communications with that vendor had broken down. I offered to rescue the site for a fixed fee; rebuild it in WordPress, duplicating the page hierarchy and site navigation; slapping a blog on the side to provide Philip with the tools to communicate with his customers and market.

The Easy Office

I had fun with this one. The visual design was easy to implement so it was mostly organizing the content within WordPress’ CMS. We built the basic site in a couple of days then customized the elements and added new features over the last few weeks. The navigation bar’s drop-menus didn’t work in Internet Explorer, so that had to be redone and I had to modify the templates to show a smaller header image on the inside pages.

The site is optimized for Search Engines using the All-In-One SEO Pack plugin and features cool sliding content effects using the MooTools javascript framework.

Older Posts »