Category: Digital Marketing

A marketing must: mobile-enabled sites

Having a mobile strategy and presence does not need to be a difficult proposition. Sometimes the simplest tools can add big benefit. In a recent article on the website Mobile Marketer, Dan Butcher identifies the six trends affecting mobile marketing and commerce.

The trends are:

  • increased Smartphone sales and usage
  • dramatic increase in mobile Web usage
  • mobile commerce adoption grows
  • mobile search becomes essential
  • multichannel marketing mix expands
  • market fragmentation continue

To anyone who has an iPhone or other Smartphones, these trends seem obvious as we reflect on our own behavior and map them back to consumers at large. 

Mobile strategies are multifold and depend on your business, marketing, and revenue goals. But as marketers, we must understand the need to respond to these trends and to use the platform to meet our objectives. This will not always involve the development of a ground-breaking strategy or the launch of an iPhone app that is featured in the store, but can be as simple as enabling our current sites to be useful and readable in a Smartphone’s form factor.

Strategies will evolve as we understand user behavior and must take into account how, when, and where consumers interact with their devices. Much as TV marketing strategies are different from online/web/pc-based strategies, mobile device users have different goals and must be communicated in a unique way.

Apps are a key element of mobile marketing, but are still very nascent as marketers understand how to interact with consumers.  For now, utility is the name of the game. Top apps (as is true with websites) make it easier for consumers to do something, not just to be entertained. 

The lowest hanging fruit is to launch a mobile-enabled version of your site or elements of your site. With the proliferation of Smartphones, more consumers are using their mobile devices to visit websites for commerce and information. Thus, it should be an integral part of all marketing efforts to have a web presence which allows consumers to interact with the brand in a manner specific to the smaller real-estate available on the browser. 

A great example of this is the mobile version of the VW site. This site simplifies those tasks which a mobile user would be most interested in: reviewing car models, finding a dealer, and contacting road-side assistance. This is all designed for the form-factor of the phone and offers a very unique and valuable experience to the consumer, which is a different from the experience of going to the main VW website from a Smartphone.

The trends will only continue as the adoption of mobile is ramping faster than desktop internet did and will be bigger than we think

Symfony Live Conference, Paris 2010 (Day Two)

A tour de force lasting from 9am to 7:30pm, day two of Symfony Live was packed with informative sessions and, of course, the preview release of Symfony 2.0 (which will be covered in its own separate blog post very soon).  I wrote this post based on my conference notes while on the plane back from Paris on precious little sleep, so please let me know if you find any inaccuracies. For day one of Symfony Live 2010, click here.

All of the presentation slides can be viewed online on the Symfony Live Event page on Joind.in.

Okapi and Symfony

The makers of the Okapi translation framework obtained an early copy of the Dependency Injection Container (DIC) from Sensio and undertook a migration of their product to use Symfony Components. The presentation gave some clues on the architecture of Symfony 2.0. For example, arguments will be passed explicitly to the controller (instead of the controller grabbing the request object itself). Lukas Kahwe Smith warned not to simply pass around the DIC as this defeats the purpose and nullifies performance gains. We were also given a peek into how the Dependency Injection (DI) configuration will use parameter syntax like %dsn% to avoid repetition. Symfony Events, as opppsed to the filter chain in symfony 1, can now call filters only once if necessary. They claim that migrating to the Symfony Routing component took only 2 hours to complete (plus some tweaks). After the migration, Okapi now relies more on Symfony classes than custom classes which means less code to maintain.

Optimizing PHP Code

Xavier de Cock’s presentation on performance was the most low-level in nature (from a technology stack perspective). The beginning of the talk was very Zend focused, and a bit hard to follow for a more application-focused person who is not very familiar with Zend Engine (also because of a thick French accent). Essentially, De Cock is interested in profiling an application, such as SwiftMailer, and analyzing every aspect down to the opcode in order to improve performance. In general, he discourages trying to “outsmart” the underlying opcode caching mechanism, noting that you may end up actually reducing performance. He uses Vulcan Logic Dumper to see what opcode was produced by the PHP code and employed both Xdebug and Zend Debug profilers to identify sections of code that are ripe for optimization.

Suggested tips and tricks

  • Use built-in PHP functions (as opposed to your own custom functions)
  • Use opcode caching (APC, eAccelerator, etc)
  • Use data caching
  • Optimize SQL (usually the number one culprit)
  • Get your data from the 2DB in batches
  • Create a PHP extension (I doubt most of us will I’ll go this far)
  • Use other extensions like HipHop, Phc, Quercus or Roadsend PHP
  • Pre-incrementation of a counter variable inside a loop performs better
  • than post-incementation
  • While loops outperform for loops
  • Stay away from array functions like array_unique() (but they’re dang convenient)

Biggest common mistake: Creating memory leaks created by referencing objects in loops. This is only big deal in processing scripts like daemons (not typical web pages), and the cyclic garbage collection in PHP 5.3 provides vast improvement here.

Bottom line: the most interesting aspect of this talk was seeing what tools and techniques he used to identify slow code, but most developers should not worry about the majority of the techniques he demonstrated and just focus on optimizing database queries because that is where the low hanging fruit is.

Git 101

Scott Chacon is clearly a seasoned speaker, having done the Rails conference circuit, and the high quality of his presentation showed it. The graphics and animation in his slides are more than eye-candy; they genuinely help to demonstrate how Git works. Scott also gave a full-day Git training the day after Symfony Live, which I unfortunately could not attend. I reckon that this presentation was an abridged version of that training sans exercises. There were a lot of points that he did not have time to go into, but here are the high-level features:

  • Developed by Linus Torvalds
  • Used for Linux Kernel and Android
  • Fully Distributed. Each clone is a backup and is equivalent
  • No network connectivity needed to do work
  • Immutable (never removes data)
  • Based on full snapshots (not deltas)
  • Commits are hashed strings (incrementing numbers, although convenient, are not used)

Parts

There are three primary working parts to wrap your head around:

  1. Working Directory
  2. Index
  3. Repository

Workflow

In the Git workflow, there are four primary steps:

  1. Edit Files
  2. Stage your changes (git add)
  3. Review your changes (git status)
  4. Commit your changes (git commit)

Tips

If you’ve been working on a lot of different files and features simultaneously, committing a “changeset” of related edits instead of one gigantic commit is a good idea.

Random Thought by Scott

Although it is theoretically possible for two Git revision hashes to collide, it is more likely that your entire development team will be killed by wolves in separate incidents.

This presentation solidified my opinion that Git is generally better than Subversion and that it should be the SCM of choice in the future. I have been wanting to make the transition to Git as the default SCM for all of our PHP projects at SolutionSet, but existing infrastructure investments and lack of developer knowledge have been a hindrance. I hope that the use of Git for Symfony 2 will speed the adoption of Git in the PHP community and lead to SolutionSet’s transition to Git in 2010.

Writing Clean Class Interfaces with Symfony Events

Dennis Benkert, also the organizer of Symfony Day in Germany, shared his thoughts on how to reduce coupling in your classes and separate concerns. Accoring to Ted Faison, “Coupling is single greatest problem in complex system”. When different classes need to interact, a Service Layer should be used. There are two main ways to achieve decoupling (once you’ve already logically defined your classes): Depency Injection (DI) and Events. DI should be used for mandatory depencies and Events for optional dependencies. This presentation focused on Events.

Types of Event messages in Symfony

  • notify - doesn’t expect a response
  • filter - returns a value to the next filter in the chain
  • notifyUntil - similar to a filter but stops the filter chain when a certain condition is met

When Dennis put out a call on twitter for example of Event usage, he got some useful responses such as allowing someone to override the behavior of a plugin, but the most notable was a sarcastic tweet about using Events to totally obfuscate your classes so no one else can follow them.

Event Usage Pitfalls

  • Don’t use for mandatory coupling (use DI)
  • There is no order to event listeners (if you are expecting this you are doing something wrong)
  • Events make code harder to follow and debug
  • Events can be slow once you add a lot of listeners
  • Don’t use events in the model

There were a couple of memorable quotes from this talk…

A phrase that was picked up by multiple other speakers: “Every time you use sfContext, you kill a kitten”.

And my personal favorite (on the Symfony Events component mascot): “The octopus is keeping his eye on everything. Like with his arms.”

Zend Framework and Symfony

Matthew Weier O’Phinney, project lead for Zend Framework (ZF), started by saying “I am not the enemy”, and I believe him. Given the fact that Zend invited representatives of Symfony and other PHP frameworks (Cake, Agavi and CodeIgniter) to spar at the last ZendCon and the fact that Symfony 2 heavily relies on Zend Components, it appears that ZF and Symfony headed more in the direction of cooperation than competition. That being said, O’phinney still won the best tweet of the conference for saying “I enjoy the fact that Fabien is worried about spilling secrets to me”. Expect ZF to take a few pages out of Symfony 2’s playbook in the future.

Matt explained that there is really no magic to using Zend Components within Symfony; it’s as simple as adding some code for the Zend autoloader in the ProjectConfiguration class. An example of this is given in the Jobeet tutorial, but the code has been optimized to store the autoloader instance. His theory is use the best tools to do what you need to do regardless of their source, be it PEAR, EZ Components, or anywhere else.

Zend Library Standouts

  • Feed Tools
  • Remote APIs
  • Lucene Search
  • PDF generation
  • Queuing
  • Cloud computing

It was exciting to hear Matt talking about the Service Layer concept from Domain Driven Design. With the new flexibility of Doctrine 2 and Symfony 2, it should now be possible to design a richer domain layer within a Symfony project that includes Services, Entities, Data Mappers and a Data Access Layer (DAL). The Service layer is useful for validation and filtering, permissions (ACL) and interactions between Entities. For unit testing he mentioned 80% coverage as a good target (as opposed to 90-100%). Zend libraries can be used to easily expose your service layer as an API. I am looking forward to using this technique on a current project of mine.

Debugging Symfony

Alvaro Videla shared his experience debugging and optimizing a very large German dating site with 2 million members hosted on 28 production servers. He uses the vast amount of data that is stored in Symfony logs to identify slow areas of code by using a flag in APC to turn logging on in the production environment for a short period of time on each server and store the logs in CouchDB. CouchDB was able to handle storing 15 million log records in the first week!

Debugging Tools and Technologies Used

  • AWK - for extracting log data
  • avRedisLoggerPlugin - a persistent key-value database
  • Tsung - a high performance, open source benchmarking framework
  • XHProf - code profiler
  • Graphite - a powerful data visualization tool

He uses logging to detect site outages by generating an alert if say 100 DB connection error logs happen within a minute and calls this “threshold logging”. Alvaro is also the developer of the FireSymfony Firefox plugin, which is an awesome replacement for Web Debug Toolbar except for the fact that it doesn’t work with the latest version of Firefox. Well, at least it doesn’t work for me on Snow Leopard and a lot of other people if you check the support forum.

Implementing a CMS in Symfony

When Marcos Labad set about providing a Content Management System (CMS) for his client in the publising business, he looked at the major options available in early 2009 (Sympal, Diem and Apostrophe) and decided to roll his own. Key aspects to the success of his project were great people, good communication, designating stakeholders and planning backwards.

Why Choose Symfony as base?

Active development and support Some Learning curve but good documentation Big and growing community Form framework Easy maintenance and support for the final owner Based on good practices and patterns Reusable parts Easy to integrate new engineers

Why not Drupal or Joomla? Not good for specific data models Learning curve as well May be fast to implement but are hard to maintain and extend

Tips

  • Don’t forget about 301 redirects when upgrading a site
  • Use Doctrine behaviors to save time

Symfony in the Cloud

Kris Wallsmith, release manager for symfony 1.3 and 1.4, is currently working on a startup called nebul.us which allows users to passively share what they are doing online (as opposed to actively blogging or tweeting about it). It seems like a powerful idea if they can make it easy enough to control what people see without making it an active process again. He made some very good points about deploying nebul.us (or your app) to the cloud:

  1. You don’t need to know how the could works, you just need to know how to use it, and hosting providers like Rightscale, Amazon and others make it easy
  2. There is nothing difficult about deploying to the cloud. It’s essentially the same LAMP stack you are used to.

Query Splitting

Kris put a lot of thought and into query splitting and has shared his work in the sfDoctrineMasterSlavePlugin which uses database transactions by default.

File Uploads in the Cloud

Files in the cloud will need to be:

  • Uploadable to a service (like S3)
  • Retrieved from a service in the view (with a helper)
  • Disable-able (for the dev environment)

Deployment Tips

  • Use the symlink method so you site is only down during the database migration (and not the code update)
  • When using migrations during deployment, be sure to only execute once

Symfony at Yahoo!

Dustin Whittle joined Yahoo! with the assignment of migrating Yahoo! Bookmarks to symfony. Once Bookmarks was proven as a test case, Yahoo! went about migrating several more web properties, such as Yahoo! Answers, to symfony. Yahoo! Answers is the largest collection of human knowledge on the Internet (515 million answers). Clearly, a generic ORM is not going to cut it for a data store of this size, so Yahoo! only uses symfony for the presentation layer and uses web services to retrieve the data (although for smaller projects Yahoo! still uses Doctrine). Dustin makes a good point when he says, “all PHP developers use a framework, even if they don’t think so”. In other words, your non-framework based project still makes design choices that could be considered a framework. Dustin works for Rasmus Groth (the creator of PHP), who believes that you should design your application to solve your particular problem and nothing more. It was this kind of thinking that led Sensio to create Symfony 2 with much more flexibility.

Yahoo! Symfony Plugins

Yahoo! has created and shared a handful of plugins that they use to build symfony applications. They all start with a “y”, for example:

  • ysfBuildPlugin (for deploying performant apps)
  • ysfR3Plugin (for Yahoo!’s flavor of translation)
  • ysfDimensionsPllugin (adding depth to symfony’s configuration)
  • ysfYUIPlugin (for Yahoo!’s javascript library)

Tips and Observations

  • Scalability is when you can add hardware and get a proportionate increase in performance
  • Most performance comes not from the language, but from the design -Rasmus
  • Don’t spend more time managing the cache than retrieving data from it
  • Don’t use .htaccess (use regular Apache config for better performance)
  • Aggregate and minify your CSS

Dustin encouraged developers to get to know the Yahoo! Open Stack.

MOST INTERESTING MOMENT: After plugging YUI, Dustin asked the room to raise hands to show what javascript framework they use. jQuery left all other libraries in the dust. Then he tweeted “It just clicked how many jQuery users there really are…”

Symfony 2

The preview release of Symfony 2 deserves it own post, which I will post soon.

For day one of Symfony Live 2010, click here.

Symfony Live Conference, Paris 2010 (Day One)

Today was the first day of Symfony Live, the biggest symfony conference of the year and there has been a LOT going on. For day two of Symfony Live 2010, click here.

All of the presentation slides can be viewed online on the Symfony Live Event page on Joind.in.

sfPot

I don’t know if this event was named after Fabien Potencier (the leader of the symfony project) or what, but it was a good chance to drink some locally brewed beer with other serious members of the symfony community before the actual conference at Le Frog’s pub in a charming part of Paris.  I learned that Fabian thinks “Symfony 2 isn’t really an MVC framework in the typical sense”, but I’ll just wait until Wednesday’s unveiling of Symfony 2 to get the juicy details. Note: This event coupled with jet lag induced me to miss the first presentation the following day on internationalization.

Working with the Admin Generator

John Cleveley gave a useful and witty presentation on working with the symfony admin generator which included tips that are not in the documentation.  I did not know that the admin generator automatically created REST routes for your modules or the best techniques to go about creating your own admin theme.  Here are his “Ten Commandments”:

  1. Understand the client’s workflow
  2. Think about security from the start
  3. Look through and understand the auto-generated, cached PHP files
  4. Change the table_method call to reduce database calls
  5. Use a custom (bespoke in U.K. english) form class for the admin if its different from your app(s)
  6. Keep form configuration in the form classes (as opposed to the generator.yml) where possible
  7. Create a theme or plugin to reuse your work
  8. Consider users with small screens
  9. Create functional tests to guard against regression
  10. Maintain good MVC and decoupling practices

He also recommended the sfAdminDashPlugin and sfAdminThemeJsRollerPlugin.

Microsoft Presentation

Two representatives from Microsoft gave a pitch on the history of supporting PHP within Microsoft, the Open Source Techonology Center (OSTC) and using Windows Azure for cloud applications.

Symfony Internals

Geoffrey Bachelet quickly walked the audience through symfony’s execution of a request in a french accent so thick you could cut it with guillotine.  This was a review for advanced developers but a very useful reminder of the relevant design patterns that symfony implements such as the Observer and Chain of Responsibility.  It was enlightening to learn that returning the “Error” template is not often used since the new form framework was introduced and that the proper way to serve ajax requests for HTML is with the “None” return value in your action.

Doctrine Migrations

Dennis Benkert, the orgnizer of Symfony Day in Germany, shared his knowledge of Doctrine migrations which are largely inspired by Rails migrations.  I was pleased to learn that Doctrine now has command line tasks that will compare your newt schema.yml file to your existing model classes and generate a “migration file” for you.  This migration file is associated with a numbered and timestamped version of the database and consists of an up() and down() method which you run on your production database at deploy time.  This will replace the risky, error-prone and annoying process of having each developer maintain a SQL file with schema changes.  It is worth noting now that rollbacks don’t often work if a failure occurs during the migration and that Doctrine 2 will use a totally new migration technique.

Doctrine 2

The most exciting presentation of the day was given by Jon Wage on Doctrine 2.  With all of the talk recently about the Propel project being reinvigorated of late, this was Jon’s chance to show that Doctrine is still in the leading spot as far as PHP ORMs (Object Relational Mappers) go.  Given the features that Jon showed and that Fabien and Sensio are currently supporting Doctrine, I would agree that Doctrine is definitely the ORM to choose when starting a new symfony project or choose which one to learn.

The codebase has been completely rewritten to take advantage of PHP 5.3 and performs a LOT faster according to the benchmarks reported. Fabien requested that they “Remove the magic”, so there will be a bit more work for developers to do, but a better understanding of what is really happening and more control for advanced queries. A key feature is the separation of the ORM and the DBAL (Database Abstraction Layer). This will allow for the DBAL to used as a standalone component if desired and will allow for schema-to-database comparisons and improved migrations.  DQL (Doctrine Query Language) will be a true language with a recursive parser that builds queries and throws useful, informative exceptions.  A more explicit relationship between your model classes (based on PHP comments) will vastly improve entity inheritance, performance and the ability to write raw SQL and still get hydrated objects back as a result.

Worst case timeline for a stable release is six to twelve months.

Offline Admin Generator with HTML5 and Gears

Thomas Parisot’s offline admin generator is a peek into the future of running web applications offline.  Neither HTML5 nor Google Gears (which is discontinued) is supported enough to make this a reality for a consumer application yet…perhaps if you can force people to use a particular browser.  He did make some interesting observations about how it is possible make a javascript listener on every form that posts to the server to generically capture and locally store all of the transactions in the local SQLite database.  There are two models to choose from when designing an offline app.  The simpler approach is to have the user explicitly request to switch to “offline” mode before they lose connectivity.  The preferable, yet more complex approach is to always store transactions locally and then check if the connection is still up when moving from the local copy to the database.  Admittedly, the sample offline admin generator was more of a proof-of-concept than anything we can expect to actually use in the near future.

The Symfony Community

Finally, Stefan Koopmanschap, the current symfony community manager, gave a talk about how to properly get involved in the symfony community.  There are the Google Groups (symfony-userssymfony-docssymfony-devs and symfony-community).  If you can’t find what you want there, then there are the IRC channels or sending out a tweet with the #symfony hashtag.  There are many local groups as well.  For example, the San Francisco Symfony Meetup group where I’ll be giving a recap of Symfony Live in the near future.  He stressed that if no one contributes, then there is nothing to be gained from the community, so please submit bugs to Trac if you find them, answer people’s questions, speak at a meetup or conference and introduce yourselves to your fellow developers!

For day two of Symfony Live 2010, click here.

Testimonials in advertising: new rules

In direct marketing we’re big proponents of using customer testimonials to help close the sale. We’ve posted about best practices, the merits of using testimonials in print vs. on the web, and bloggers as product endorsers.

It seems only fitting then, to remind our readers that the FTC has issued new guidelines on using testimonials and endorsements in advertising. These new guidelines take effect on December 1st.

The fine folks over at MarketingSherpa have summarized the 6 key areas to be aware of with the new rules, as well as other useful links on this topic. If you’re a straight-up marketer who treats your prospects like they are intelligent beings, then these new regs won’t likely impact your marketing plan. If you’re not, well, you can view this as a chance to improve.

Unite to Win

In yesterday’s Forrester newsletter, they referenced one of their research studies, “Profiling The Multichannel Consumer”. On its own, this sounds like a rich study, with one of the big conclusions is that some online shoppers are simply “window shopping”. Implication being: growth potential lies in converting these window shoppers using techniques and offers specifically aimed at lowering the barriers to purchasing amongst this segment.

But wait, there’s more!  Listed within the related research documents, there is another little gem: “Coordinated MultiChannel Campaigns”. The executive summary for this report states that less than half of online advertisers coordinate web design and search with their advertising creative. 

One of the reasons we brought all of our companies together under one umbrella called SolutionSet is to answer this challenge for Multichannel marketers. We’re calling for an end to silos, of disconnected marketing efforts, of disparate strategies and fragmented executions. These pitfalls only serve to confuse the intended recipient of your marketing, and ultimately supress sales. In this economic environment, we marketers must do everything we can to strip away barriers to purchase.  Sometimes that begins at the top  - with unification of strategy, messaging, creative, execution and measurement across all channels in order to cause a focused, consistent message that drives transactions.  

Marketing a Recession

With unemployment rates reported at 8.5% in March (the highest it’s been since 1983), it’s a sobering time for business and a back-to-basics time for marketing. Everywhere I turn, experts are touting a return to simplicity in order to weather the recession-storm.

Jello ad

Several months ago, when some of us may have still somewhat been in denial about whether we were even actually in a recession, I came across a great banner ad for JELL-O on a consumer magazine website. The ad messaging made no bones about times being tough:

Even when you’re on a budget
You can still feel rich
and chocolatey too.

While consumers are watching their food budgets and heading back to basics (NPR reports that cooking lessons are on the rise, with more people trying to prepare meals at home), businesses also need to spend smarter by focusing on fundamentals like ROI. And there’s no better way to watch the numbers than to focus marketing dollars on digital, where click-throughs, test pages, and conversions are clearly quantifiable.

It’s true that necessity breeds ingenuity, and SolutionSet has the right blend of digital marketing experience and creative design to do a lot with a little. It’s what the Haggin Marketing family calls “BrandActional.”

One of our clients wanted to update their site in an effort to drive more conversions, but needed to justify the cost of making site enhancements. We engaged with them and installed user tracking software (ClickTale) to be able to quickly (and at low-cost to the client) track and understand how users were interacting with their site. This exploration coupled with reviewing and analyzing their site analytics allowed us to come forth with recommendations that were based on data and user behavior, making it easy for our client to prove the need for these optimizations. The end result was that we were able to suggest straightforward site enhancements that would lead to the client’s end goal of more conversions and ultimately positively impacting the bottom line.

[Thanks to Paige Kobert for providing the above ClickTale success story.]

Breaking News! Read all about it…

Not long ago, new stories broke with the morning headlines. Each story from the major media outlets had a big impact and carried the conversation for the day. Then, people would wait for the next update from the evening news or through the follow on stories from the next day.

Today’s stories are broken in real time. Updates and opinions pile in from the thousands of alternative new sources online every minute. I’d argue that each new story carries less weight. This new media landscape balances major news outlets with bloggers and other media outlets that were created with the new digital world.

There are positives and negatives to all of this, however:

1. Everyone Steals the Thunder - In the past, if there was a leak, it would be hard for the leak to spread to quickly. Nowadays, it’s just a quick post and away we goooo….

2. Information Viability - With more and more incidents of bad information being spread…it’s hard to tell if a news story is real or made up. Who and what do you trust…. (see United Airlines old news story posted resulting in a 75% sell of the stock).

3. Polarizing of News - In the past, you saw fewer informational outlets who were all more or less unbiased. Now, I find there are significantly more news sources but they are more polarized and biased. I find myself attracted to those I personally find digestable.

4. False Facts Have Greater Impact - With so much information online and no methodical way to fact-check everything put online, false stories carry farther especially when it is something people “want to believe.” This causes untrue facts to spread long before it is debunked.

I am of course a true believer of the benefits that the digital web has brought to bear when it concerns information. We hear more and learn more quicker and faster. Common everyday people can now command an audience without having to go to a media giant. It’s makes the world smaller. We can learn about any story around the world anytime at the touch of our fingertips.

However, it is just as frustrating with some of the unsettling ways media is growing online. It will be interesting to see how this matures over the next few years.

Building Dream Teams

As I watched the amazing opening ceremony to the Beijing games, I could not help but feel this was, in effect, China’s “brand launch” to the world. Visually stunning, rich in storyline and content, almost unthinkable choreography… perhaps the perfect ceremony. It was almost like the bizarro-Superman equivalent of the 1984 Olympic closing when the US trotted out breakdancers and Lionel Ritchie. Party, fiesta, forever… more like forever an embarrassment to the US brand.

I am excited for the Olympic basketball events. I am confident the US Women will once again triumph. I’m hopeful the Men’s team has finally woken up to the urgent need to rebuild the team in a more international image. As I thought about the team selection process, I started seeing parallels between a well-constructed web project team and a well-constructed basketball team.

POINT GUARD = PROJECT MANAGER
The ideal point guard is someone who can execute the playbook and get all players involved and contributing. Project managers play a similar role defining tasks and promoting collaboration. Without a strong PG/PM, you are dead in the water.

SHOOTING GUARD = CREATIVE LEAD
The shooting guard gets all the glory. Slam dunks from the free throw line, three-point bombs, and spectacular drives to the hoop. These players are the ones most likely to appear on SportsCenter highlights. Similarly, all of the creative lead’s hard work is seen, appreciated, and most likely to garner awards.

SMALL FORWARD = FRONT-END DEVELOPER
The small forward is an inglorious position. They consistently draw the toughest defensive assignment and never quite get the credit deserved for doing the little things… chasing down loose balls, moving the ball, chasing perimeter players, etc. While the creative lead gets the credit for the visual concept, you never see a Webby going to the person who sweated to make that design come alive and work across obscure browser/OS combinations. The small forward only gets noticed when they make a defensive mistake… the front-end developer only gets noticed when a link shows up broken in IE 3.2 running on a Commodore 64.

POWER FORWARD = BACK-END DEVELOPER
The power forward historically has been the hardest worker on the floor. Probably the most physically demanding position, the power forward is responsible for setting hard picks, grabbing rebounds, and fighting for inside position with the biggest players on the floor. The back-end developer spends an absurd amount of time behind their monitor, solving complex technical challenges, hunting down bugs, and wrestling with unruly APIs.

CENTER = TECHNICAL LEAD
The center is the first person you see, standing in the middle for the opening tip. The center does a bit of everything… scoring, rebounds, blocked shots. Similarly, the technical lead is there from the first meetings defining the solution, helping choose platforms and architectures, and even pinch-hitting on complicated technical issues. In the case of Jive team, Adam Trissel is our very own lumberjack version of Shaq.

6th MAN = USER EXPERIENCE LEAD
The 6th man is responsible to partially fulfilling the role of a range of different people. Sometimes a PG, sometimes an SG, sometimes a SF. The User Experience has a specific role (designing the UI), but realistically fills a ton of gaps in terms of requirements definition, page design, expression of back-end features in the UI, etc.

CRUNCH TIME SPECIALIST = QUALITY ASSURANCE
The crunch time specialist typically comes in at the end of the game, often with the specific role of shooting free throws down the stretch. While this player logs less minutes, there role is crucial and games often swing on their performance. The QA lead comes in at the end of the project and are responsible for bringing the project live with flawless performance. If the QA lead does not deliver, the project loses.

CLOSING THOUGHTS
Okay, I’m sure this is a bit off topic but since this is a blog about branding and technology, I’m going to take some liberties to rant at NBA commissioner David Stern. The NBA championship has faced a dwindling audience for the past several years despite some of the most exciting matchups in league history. I’d argue they have a serious branding problem.

MLB has the “World Series”. The NHL has the “Stanley Cup”. The NFL has the “SuperBowl” (and college football has a whole series of events like the Schmaztech.com Peach Bowl.) Heck, even college basketball has “March Madness” and the “Final Four.”

Where is the NBA’s branding? The “NBA Championship”? To paraphrase the film Usual Suspects, “Really, did you put that together yourself, Einstein? Got a team of monkeys working around the clock on this? ” Maybe the commish can take a lesson from the other leagues (and really any book on branding), and work on something a little more catchy and inspirational. If he needs help, I know a firm who can help.

Project Governance - Or Methodology by another name

SolutionSet believes in a collaborative approach to conceiving, designing and developing solutions. It is imperative to develop the proposed solution with the client team as they know their business best and it is SolutionSet’s role to blend its expertise with those of the client. SolutionSet pursues a blended Waterfall and Agile Methodology to Define, Design and Develop for Project the solution. This combined Methodology drives the SolutionSet Project Governance Processes.

The blended Waterfall and Agile Methodologies ensures a dynamic approach to delivering a solution against business requirements. The value in the Waterfall approach is emphasized in the Define and Design Phases where it is imperative to document in a detailed and iterative manner “what” you are trying to build (the Requirements) and “how” you are going to build (Design Document) the desired solution. In the Development Phase, SolutionSet adopts a more collaborative Agile approach to developing the application. The value in this approach is that requirements are realized in components and individual issues are worked out while the larger application is built. This allows for dynamic reaction to requirements which may need to be realized in a fashion other than originally conceived.

In each case, a clear and concise project process is documented for both internal and client teams ensuring that all parties on are on the same page. Finally, it is imperative for a successful engagement to embrace the client throughout the process and delivering iterative versions of all deliverables to that the teams collaboratively build the solution. In this way, the client is part of the development of the solution.

Online Rake In: Lindsay Lohan style

On February 25th, New York Magazine introduced an issue baring Lindsay Lohan mimicking poses from a famous photo shoot at the Bel Air Hotel in LA as Marilyn Monroe. It was photographed by the same gentleman, Bert Stern, who photographed Marilyn. There was some controversy and good taste backlash - which was probably to the benefit of the publisher.

Smartly, the publisher decided to include the photos free online via their slideshow feature that appeared in the actual magazine. The numbers are staggering…In the first TWO days after the release, which included a server outage due to traffic. They experienced 34 Million page views. It is estimated that ad sales for those two days at an estimated $15 CPM that the New York Magazine earned $500,000 on online ad sales (IN TWO DAYS without the overhead costs of paper and printing). The amazing part is that the slideshow can reside virtually forever with $$ coming in with each impression. Consider that actual magazine sales are short lived and restricted by the numbers that are printed in the run and that they get replaced with the next issue - the online medium’s ceiling is less limiting.

Anyway, granted Sex sells but this is a great example of the power of the online medium and the power of how more accessible content is online to drive such volume of viewership.