27 Aug
Posted by admin as General, Information, News, Technology
There has been a lot of speculation recently about an impending update to iTunes. Version 8.0, among other things, is supposed to finally bring a recommendation engine to the digital media player application. While that's interesting from a music discovery perspective, it is even more interesting to consider what this could mean in terms of an iTunes+iPhone based social networking experience.
digg_url = 'http://digg.com/apple/The_Case_for_an_Apple_iNetwork_Welcome_to_the_Social';digg_bgcolor = '#ffffff';digg_skin = 'normal';iTunes (launched 2001) and the iTunes music store (launched 2003) have come a long way since they were first launched. The application has gone through various iterations, gaining significant features such as podcasts (2005), videos (2007), games, and applications (2008) along the way. In the process, selling billions of songs, millions of movies, and over 10 million applications in the first week of the app store's launch. Needless to say Apple has built an experience that with all it's parts combined is unparalleled in both its features and the breadth of its catalog of content.
While most of that is common knowledge, what most people overlook is the glaring lack of any community aspect to iTunes. There are millions of people, many of them with similar tastes, flocking to the same destination every day, yet they never interact with each other... because they can't. If Kevin Rose is to be believed, however, (as discussed on TWiT 157) that all is about to change with iTunes 8.0.
He says, '... the one thing I hear about iTunes 8.0 is that it's gonna do something along the lines of, um, looking at your music, and, uh, kind of recommendations based on certain things.' In other words, the next version of iTunes will monitor your media purchasing and consuming habits and correlate them with everyone else using the system to figure out which songs you will probably like but haven't bought/listened to. If you're a fan of collaborative filtering systems or internet radio (Pandora, Last.fm, etc), you're probably familiar with the idea already and that iTunes may be considering implementing this doesn't come as a surprise (I found myself wondering why this wasn't introduced 2-3 years ago).
While this feature itself isn't social and can be implemented entirely on the back end, the implementation required for that functionality is so close to a networked experience (monitoring of habits and correlation across users) that they might as well take a small next step and add a visible social layer with which those users can interact. In fact, if you look at the results from a 2006 iTunes survey, you will see the people want to be able to see what people with similar interests and tastes (i.e. friends) are purchasing and consuming, so they can experiment with and pick from the same selection. More specifically, consumers want:
What's also interesting about this approach is that it reaches the exact opposite conclusions of EMR's UK social networking study [PDF]. The study implies that social networks will be the content distribution channels of tomorrow, but the relationship may actually work better in the other direction. With the addition of networking and recommendation features to iTunes, the application could become the most efficient, most engaging, stickiest (always-on), and most profitable social network almost overnight.
But Apple's social networking potential doesn't end there. Remember Microsoft's 'welcome to the social' campaign that centered around the launch of its Zune digital media player? If you don't, you're not alone. The goal behind the campaign, 'to create a shared, social experience that will be shaped by the collective imagination of consumers and will inspire discovery of new music and artists,' was actually a formidable one. Unfortunately an inferior device, coupled with disasterous software integration made the campaign a $100 million failure.
Enter Apple.
With a formidable install base, great hardware and one of the most versatile mobile operating systems around, the iPhone is ready to herald in the future of mobile social networking. Furthermore, with 3G/EDGE/WiFi/GPS capabilities, the iPhone is a great tool for both networking as well as wirelessly sharing digital media like the Zune promised (but failed miserably at). Not only does the device work seamlessly with the iTunes software, but Apple's DRM is more consistent and perhaps more forgiving that Microsoft's (which was partly responsible for crippling the Zune's ambitions).
With a firm grasp on the software side with iTunes and on the hardware side with the iPhone, Apple is in good shape. Their killer app, however, could end up being the cloud. Apple already operates MobileMe (previously .Mac) which faciliates the management of contacts, calendars (events), email, photos, and any other files or digital media. Admittedly the service has been an utter failure since launch, but Apple has acknowledge the failure and is on the path to fix its shortcomings.
The previously discussed iTunes social networking and collaborative filtering (recommendations) system, coupled with the iPhone's versatile wireless communication and media sharing capabilities, topped off with media and information management (and sharing) in the cloud, the combo is no doubt ready to be our digital life (and relationship) manager. The only limitation of the network, however, (and it will be a deal breaker for many) is that unlike every other social network today, the experience will come at a steep cost. Knowing Apple though, I have no doubt it will be an experience worth the cost (especially considering what they had to deal with at the MobileMe launch).
This is a guest post by Muhammad Saleem, a social media consultant and a top-ranked community member on multiple social news sites. You can follow Muhammad on Twitter.
The battle lines have been drawn today. You’re with us or you’re against us. You’re cool and hip or lame and square. No, I’m not talking about political lines (for once), I’m talking about the early adopters versus the mainstream, or as Robert Scoble framed it: the passionates versus the non-passionates.
What, though, is a passionate (sometimes referred to as an ‘evangelist’)? What is the definition of an early-adopter?
Quite simply, and perhaps obviously, it’s a person who embraces new technology before most other people do. Early adopters tend to buy or try out new hardware items and programs, and new versions of existing programs, sooner than most of their peers.
Remember, I’m Describing the Stereotype…
Early adopters in the Web punditry sector, though, have a particularly precise stereotype. Just like all stereotypes, it’s not perfectly accurate across all examples, but it exists for a reason.
What is the stereotype then? Well, your typical Web early adopter has more logins and passwords than they could possibly ever keep track of. They’re in a constant race to have the most followers of any kid on their block on the website du jour (even while they may proclaim how against the idea of follower-collection they may be). Their patron saints are Robert Scoble and increasingly Louis Gray.
They voted Democrat in the last election (assuming they were old enough to vote), and are filled so full of party unity that every fifth message for the last three months has been something concerning Barack Obama. They currently have a manga avatar on at least one website they visit regularly. They love FriendFeed, and publicly denounce Twitter while secretly loving it. They hate Facebook, because it’s sooo six months ago. The dividing hot-button political issue for this group of folks isn’t abortion, homosexual marriage or the war on terrorism (or any other petty Red/Blue issue that affects the real world) - it’s whether or not they support Loren Feldman or Shel Israel.
Most importantly, though, they gravitate towards whatever tool suits their hyper-connected, always-on lifestyle (rather than the tools that fit into the everyday lives of the regular folks of the world).
How Is This Good For The Company?
Remember that wonderful movie Office Space, and that scene with Luhmberg and the Bob’s where they asked everyone at Innetech to ask themselves: “…for every decision you make, is this good for the company? Am I helping with the company’s strategic vision?”
Early adopters should be asking themselves a similar question as they try out new technologies and stay on the bleeding edge of the pretty, shiny tools we talk about every day here at Mashable. Failure to do so can result in being considered largely irrelevant, both in the calibre of advice and review the early adopter provides, as well as in general as a person (at least in the view of the average, mainstream Internet reader).
For instance, ask yourself why you take to tools like Twitter and Friendfeed. Is it because it suits your always on lifestyle and constant need to be in communication with other early adopters like yourself? Or is it because the tool has a genuine ability to make a normal person’s life easier, and you see the value in that.
Some Quick Question to Help You not be a New Media Douchebag
Will your mom use it? Think less about whether your other early adopter friends will like the product or service - think about your mom. This is obvious - your mom doesn’t need another way to gossip about politics and the neighbors online. Your great-uncle doesn’t need another way to share jokes. They both have email for that. They probably won’t enjoy lifestreaming the way FriendFeed works. They will, however, get into lifestreaming if it means there’s an effortless way to maintain a website that showcases their likes and dislikes on the web. Consider introducing them to Tumblr, MyBlogLog or FriendFeed as a way to effortlessly update their home page. Call it “low-impact blogging.”
Is it truly a time-sink or a time-saver. Most professionals don’t need distractions from their daily routine. The only way you can sell addicting tools like Twitter or Facebook to someone who actually works for a living is to show them how they can add to their productivity with them. Saying “this is the most fun thing in the world - I spend all day chatting there” makes it look as pathetic and useless as a subscription to World of Warcraft.
Is the tool an intrusion or an integration? Similar to the last question, ask yourself if this tool is a “configure-once and forget” or the type of tool you have to constantly maintain, tweak and engage with. The beauty of automation and technology is that tools (think I Want Sandy) can be set up once and can run as background processes. People are looking for ways to offload mundane tasks from their plate, not add to them.
Will it increase their bottom line? We like to get excited about new distribution technologies quite a bit in our world. YouTube, RSS, podcasting, and blogging… these things are great, as we’ve learned, but it’s taken quite a bit of development and innovation after these concepts have been in existence for them to become seamless parts of our daily lives. Tools like Utterz, UStream and Qik make creating video and audio a snap. How long did embedded video, RSS and podcasting exist before it was so easy a six year old could do it? Quite a while. Likewise, when you come across a bleeding edge technology - it’s important to recognize the potential but be careful in your evangelism. Chances are the mainstream might take your advice, try it out, and wonder what you were smoking when you thought it was a good idea.
---
Related Articles at Mashable! - The Social Networking Blog:
The Early Adopter vs. The Harsh Reviewer
BugLabs To Slash Prices at CES
TotSpot Adds New Features, Still Making Your Kids True Early Adopters
Will Aggregation Ever Go Mainstream?
Woman Sues Apple For $1 Million - Over $200 Price Cut
Zune Marketplace to Accept Podcast Submissions
Mosio Launches Mobile Q&A
27 Aug
Posted by admin as Information, Life, Tips
I’ve wanted to redesign the Highrise sidebars for a long time. They’ve felt cluttered and messy to me, and as we add more features to Highrise the mess will only multiply. So I was glad to have the chance this week to redesign the sidebar modules. The visual side of the redesign was straightforward, but implementing the design in code required a few tricks. Here’s a look behind the scenes at the coding decisions we made for the new Highrise sidebars.
“Subjects” in Highrise
Which sidebar modules am I talking about? In Highrise you can keep track of People, Companies, and Cases. These all have the same basic code and UI. You can keep notes about them, set tasks for the future, and manage some common types of metadata. Since People, Companies and Cases share so much plumbing, we’ve abstracted them as subjects. A subject is anything in Highrise that you can attach notes and tasks to. When you look at a subject’s page, you see a sidebar with some modules for adding or editing metadata such as contact information, background information (a kind of static text description), dates to remember for that subject, and more. The screenshot below shows a subject page with the sidebar modules highlighted.

Redesigning the modules
Each module has a header like “Contact Bob” or “Dates to remember” and data below. In the original design, modules can be either “active” or “empty” based on whether they have any data in them. Empty modules have a grey header and an “add” link floated right. Active modules have a light blue header and an “edit” link on the right. We made this distinction so your eye would more easily catch active modules when you’re looking for information. The idea was good, but the original implementation looked messy with its mix of grey and blue, scattered red action links, and lack of separation between modules.


For the first redesign (above) we cleaned up the modules. Active modules are now wrapped entirely in a light grey box with a tiny drop shadow. We killed the blue header style, relying instead on the space between modules to separate them. Empty modules no longer have a header. They are grey boxes collapsed down to a single link to add the content relevant to that module. Finally we replaced all the red links with grey links in order to put the focus on the data within active modules rather than all the possible actions. One last tweak: we changed the text for “About [subject’s name]” to “Add background information.” We’ve gone back and forth a number of times on the language for this feature, and at this stage we decided to try “background info” on for size again.

The first redesign was a big improvement. But we didn’t like the way active and empty modules looked mixed together. The dim bar in between those two active modules creates a kind of striped look that we want to avoid. The problem was worse on subjects with more sidebar modules, like companies or cases. So we decided to group all the active modules together on the top, and then group the empty modules on the bottom. The result is much cleaner, and it’s easier to scan when you load up a subject in order to quickly grab some info like an email address or birthday.
The re-ordered sidebar was a winner. But it came at a price. We couldn’t just change the CSS and call it a day. Now we also had to write code to re-order the sidebar modules dynamically based on whether they were empty or active. Ruby’s power and flexibility really came in handy for this job.
The code
I said earlier that people, companies, and cases are handled by the same plumbing because we abstracted them as subjects. The result of this abstraction is that whether you are looking at a person, a company or a case, the sidebar is rendered by the same template: subjects/_sidebar.rhtml.
(This kind of “view polymorphism” has been subject to a lot of internal debate since we first released the app. It makes maintenance both easier and harder because the code has less repetition on one hand but on the other it is less intention-revealing due to the abstractions and indirection.)
This is what the original template code looked like to render the subject sidebars:
in app/views/subjects/_sidebar.rhtml:
<% if @subject.is_a?(Party) %>
<%= render(:partial => 'parties/contact_info') %>
<% end %>
<% if show_company_contact_info?(@subject) %>
<%= render(:partial => 'parties/contact_info', :object => @subject.company) %>
<% end %>
<%= render :partial => 'backgrounds/show' %>
<%= render :partial => 'contact_dates/index' %>
<% if @subject.is_a?(Kase) %>
<%= render :partial => 'kases/parties' %>
<% end %>
<% if @subject.is_a?(Company) %>
<%= render :partial => 'companies/people' %>
<% end %>
Don’t worry too much about the individual partials and conditions. The key point is that each partial is a sidebar module, and each module is conditioned based on the particular subject we are rendering. A different mixture of partials will be rendered depending on whether the subject is a person, a company or a case, but they’ll always render in the same order.
We want to re-order these partials dynamically based on whether each module is active or empty. That means we need to represent the possible partials, the conditions for displaying them, and also the conditions for determining whether they are active or empty within some kind of data structure. So we popped open our Rails subjects_helper.rb and represented this information in an array.
in app/views/helpers/subjects_helper.rb:
def sidebar_modules_to_sort
returning [] do |m|
# partial to render module_is_active? options render the module for this subject?
m << ['parties/contact_info' , show_contact_info_module_on_top?, {} ] if @subject.is_a?(Party)
m << ['parties/contact_info' , true , {:object => @subject.company} ] if show_company_contact_info?(@subject)
#necessarily true per the condition at right
m << ['backgrounds/show' , !@subject.background.blank? , {} ]
m << ['contact_dates/index' , @contact_dates.any? , {} ]
m << ['collections/parties' , @subject.parties.any? , {} ] if looking_at_collection?
m << ['companies/people' , @subject.people.any? , {} ] if @subject.is_a?(Company)
end
end
The helper method sidebar_modules_to_sort returns a parent array full of child arrays, one for each module with an element for the template path, a true/false value to show if it is active, and an options hash for the render method. The conditions that used to determine whether each partial should be rendered now determine whether each child array should be included in the parent array. Thanks to that boolean in the second element of each child array, we can partition the parent array into two groups: those where the second element which represents that the module is ‘active’ are true, and those were that element is false. We use another helper method to partition and reassemble the array into groups.
in app/views/helpers/subjects_helper.rb:
def sidebar_modules_in_order
active_group, empty_group = sidebar_modules_to_sort.partition {|m| m[1]}
active_group.concat empty_group
end
Finally we return to our sidebar template to do the actual rendering.
in app/views/subjects/_sidebar.rhtml:
<%= sidebar_modules_in_order.map {|m| render sidebar_module_partial(m)}.join %>
This line in the template takes the sorted array of sidebar modules and replaces each element in the array with the rendered partial. Then the join method converts each element to a string and concatenates them. sidebar_module_partial is a call to one more helper. This helper assembles the arguments for render out of the elements provided in the array. It looks like this:
in app/helpers/subjects_helper.rb:
def sidebar_module_partial(m)
m[2].merge({:partial => m[0]})
end
In the snippet above, sidebar_module_partial takes the third element of each module array, which is either an empty hash or some special options for render, and merges a key specifying the template path onto that hash.
We definitely could’ve hidden these rendering gymnastics behind a helper, perhaps called render_sidebar_modules or something similar. However we’ve decided for style reasons to avoid calling render from within our helpers. Therefore we decided to use a helper to merely fill in the arguments to the call to render within the template itself.
In the end, we have a new sidebar design and some clean and intention-revealing code. This was a fun chance for me to expand my Ruby knowledge by dipping into the nuts and bolts of arrays and hashes. Thanks to Jamis for reviews and advice when I knew there had to be “a better way.” We hope you enjoy the new sidebar modules in Highrise.
Related: What belongs in a helper method?
27 Aug
Posted by admin as Information, News, Web 2.0

Editor’s Note: This post is part of an ongoing series at Mashable - The Startup Review, Sponsored by Sun Microsystems Startup Essentials. If you would like to have your startup considered for inclusion, please see the details here.
STARTUP DETAILS:
Company Name: Oriango
20 word description: Oriango is a Dictionary Style Search Engine. With Oriango you can perform searches, add and share the Web alphabetically.
CEO’s Pitch: Oriango was created to present a new search tool, making the users its only concern. The user chooses the content, and the editor makes it relevant throughout the quality of its content description.
All the information added to Oriango is arranged alphabetically, as in a dictionary, this way it is certain that only the name or the title will matter, allowing independence on their choices. Therefore it’s the user that chooses what is cool, not a group selection, votes or PageRank. The search is performed only on the information added by the users, not showing irrelevant or external content.

Mashable’s Take: Does it make sense to organize the Web in alphabetical order? A new site called Oriango seems to think so. Such an organizational strategy has been set forth by Oriango in order to put control back into the hands of the consumers when it comes to search results. I know what you’re thinking… no, it doesn’t make sense. Especially in this day and age where a website name may have little indication as to the site’s function, and may not even be a real word.
But Oriango hasn’t exactly organized the Web in alphabetical order by the site name - the actual site results are broken down by alphabetical order, and can be filtered by media type. Say you do a search for “wedding.” The search results, which span blog posts about The Knot, home loan advice, design agency websites and funny clips from Metacafe are organized according to alphabetical order, based on the name of each URL. From there, user interaction determines the relevance of each search result to a certain extent, by sending the search result to a bookmarking site or a friend, as well as sending a message to Oriango or reporting the link.
This still resolves most of the search results’ relevance to the hands of the Oriango editor, and may not be the most conducive way for you to search the Web. Additionally, Oriango is relying on user-submitted links to make up the bulk of its search results, meaning that the amount and quality of the links you’ll receive for a given search will be minimal until Oriango gains some traction. For the time being, there’s little incentive for users to submit websites to be included in Oriango’s Web “dictionary,” though bookmarking integration by way of user accounts could help on this front.
Sponsored by Sun Startup Essentials