Author Archive

Facebook, OAuth, & Open Socialism (a rebuttal)

Posted on: April 23rd, 2010 by Mike

Here at Purple, we’ve been trading emails back and forth the past few days about the announcements at F8 regarding Facebook’s adoption of Open Social, as well as what it means for the future of the internet (I’m too busy to link any of this, go Google it). Today’s emails focused on Chris Messina’s blog post.

I’m not sold on his rant. Below is a quick synopsis of my personal (and contrasting) opinions on his post.

As a disclaimer, I have no beef with Chris Messina, and according to others I may be apathetic and offensive when it comes to the Open web. I’m sure plenty of other open-advocate developers out there will readily disagree with me. I may be the only one in the internet who thinks this way, so IMO it’s worth sharing.

In bold are pull-quotes from Chris’ article, with my personal opinions below (if you missed it, it’s probably worth reading his blog first)

…Oh, and anyone that wanted to be part of the Google index, well they’d have to add additional metadata to their pages so that the content graph would be spic and span…

We actually do that already, and it’s what half of our marketing business is based on. Well-researched Titles, Keywords, and Descriptions are intended to help index content and determine what any given web page is about.

…Except — shucks — there’s one problem with this model: it’s evil…

It’s not evil, at least not any more evil compared to any other business model. It’s obviously a sound idea for Facebook to seek realistic ways to monetize a web product that’s been free to end-users since day one. No one twists anyone’s arm to sign up for Facebook. Since a huge portion of the world is already connected on Facebook (rather than through only basic open protocol) it just makes sense to use this as a gateway for social graphing and (realistically) connecting trends and data.

…When all likes lead to Facebook, and liking requires a Facebook account, and Facebook gets to hoard all of the metadata and likes around the interactions between people and content, it depletes the ecosystem of potential and chaos — those attributes which make the technology industry so interesting and competitive

Just like Google hoards page rank so Yahoo and Bing are screwed? No. Google is just more widely adopted, but it has its competitors. When the (global) feds need to step in and regulate an unchecked Facebook monopoly, they will. Until then, there should be no impediment to progress.

…(and not just because that provider becomes a single point of failure)….

This late in the game, this is only analogous in the same sense that a catastrophic volcano would be a “single point of failure” for humanity. If the service is widely distributed (which Facebook is) and widely adopted (which…Facebook is), it won’t be an indefinite point of failure. Facebook is larger than many tangible nations on the face of this earth, in terms of both population and revenue.

As I and others have said before, your identity is too important to be owned by any one company.

If it’s open protocol, then it’s shared. It may be tangibly “owned” by Facebook, but that depends on your definition of ownership. At some point, everyone will have access. The only thing regulated on Facebook is their advertising platform that harvests this information, but that really doesn’t make them any different from Apple with their iPhone and iPad market, does it?

Thus I’m looking forward to what efforts like OpenLike might do to tip back the scales, and bring the potential and value of such simple and meaningful interactions to other social identity providers across the web.

The blind scales of some internet justice system? OpenLike, while egalitarian and altruistic in nature, will fall by the unchecked wayside because (chances are) the majority of humanity will not find an inherit interest in it. We as developers forget that for most citizens, everyone’s family linkage, photo albums, birthdate reminders, and favorite things are all uploaded and connected through Facebook. As useless as our development community seems to think it is, people still use it. It’s a slim chance that anyone outside of the “open web community” wants to be burdened with a clone feature that holds no inherit value to their personal lives, lives that are already catastrophically being consumed by this social media behemoth.

I’ve mentioned this in passing to some and I’ll mention it here: when both Facebook and world governments are linked through an open standard, your government will have unchecked access to your online identity, your wants, your “likes”, your ideas, your medical records (ahem, government regulations on health care) and all of your distributable digital content.

You think things are weird now? I can’t wait to see it in two years, you know, around 2012. Maybe it’s my totalitarian Roman heritage, but I for one welcome our new Facebook overlords. OpenSocialism is a wave that can only be ridden.

Digital Trends Recap

Posted on: November 17th, 2009 by Mike 1 Comment

Thanks to all who came out to support and learn from our first of many Digital Trends and Best Practices seminar series, hosted by Purple, Rock, Scissors and the Downtown Development Board. The seminars were a smash success, so much so that we even had to relocate to a larger venue to capacitate topics discussed on day 2 and day 3.

Thanks to DPAC for supporting our last-minute move into their large auditorium!

In attendance we saw some great familiar faces, a few existing clients, as well as some great new friends.

For those of you who missed out, feel free to download our keynote presentations for each individual presentation.

Also a special thanks to Ember, Urban Flats, and Virgin Olive Market for catering each of these days. Food was great, company was great, and we look forward to putting on the next series!

Orlando Shootings, Social Media, & Social Devices

Posted on: November 6th, 2009 by Mike

I’m officially coining a term: Social Device.

In practicing for our Digital Trends and Best Practices earlier this week, our CMO Alex Lirtsman accidentally spewed out a freudian slip, trying to say "mobile device" in his dry run for the Social Media presentation. I had to stop him in his tracks when he accidentally called it a "Social Device." He couldn’t have been anywhere more accurate with his twist of tongue.

With the very recent (ongoing as I author this post) shooting incident in Orlando, FL, I know for a fact that we live in a day and age where we are all connected as one hive mind. From an earlier Wall St. Journal article I read today regarding texting and cell phones, courteously tweeted by our CEO Bobby Jones, gen Y and generation i are obviously living on the horizon of a new day and age.

Lets start with a recap of my day:

11:45 PM – Bobby and I begin walking to lunch. On our way, ambulances, police cruisers, and fire trucks blaze past us in a frenzy of blue and red flashing lights. We wonder to ourselves exactly what the hell that was about.

11:50 PM – The sky opens wide and sounds of helicopters pour out. All we can do is hear the churning hum as we sit down outside to order lunch. Bobby gets a tweet that there was rumor of a shooting downtown. In the midst of the Fort Hood shooting yesterday, the timing is ridiculous. We casually discuss the safety of our city (or lackthereof) and how things could be worse compared to car bombings over in the middle east.

12:19 PM – My girlfriend calls me, frantic, explaining that right outside of our apartment are piles and piles of police vehicles and ambulances. All traffic is blocked off and she is essentially on lockdown. We then find via Twitter that the shootings were allegedly at the Sheraton, right across the street from our home. My girlfriend begins sending me photos and videos from her iPhone, right from our windows and balcony. Once I receive these, I begin tweeting them out to the world via twitpic.

12:30 – 12:45 PM – We casually hear people around us in the restaurant begin receiving phone calls from their family and friends about the shooting. The waitress finally catches wind and casually mentions it as well. Bobby and I hear word of the description of the shooter, and begin eyeballing everyone walking down the street in blue shirts and blue jeans. We hear a bang from someone emptying a nearby truck, or a car backfiring. We nearly piss our pants. We find out that the shooting occurred at an office building right next to the Sheraton.

1:00 PM – We head back to the office and begin noticing a Twitter frenzy. From the eye witness photos I’ve uploaded, now @CFNews13 is thanking me, posting pics on their site, and various news outlets begin retweeting me and following me, including the  The Today Show. CNN begins reporting on the story. I’ve included #CNN in my tweets, and my ego would like to think I’m partially responsible for helping leak this.

Every tweet meticulously includes #orlando, #orlandoshootings, #cnn, and @cfnews13. "Orlando" becomes the biggest trending topic on Twitter.

1:35 PM – First phone call comes from my father. He saw my apartment building on live television. He wants to know if we’re okay. I explain to him the situation and assure him we’re good. Throughout the next hour, I keep tweeting and retweeting out more live updates, photos, and video. People retweet these as well. This is about an hour after the first hint of news breaks the scene.

2:00 – 2:30 PM – My mother calls me back on my Social Device, letting me know she got my message, and asks that I keep her updated as well. She didn’t even know of the story until I left her a voice mail.  News posts leak the suspect ID, car make and model, and eventually say they find the abandoned car.

2:30′ish PM – Police apprehend the suspect, based on cell phone tracking technology. They triangulate his location to the nearest cell tower, within a half mile radius of his location, and overlay this with the location of his mother’s house. He was hiding there. Whether he wanted to turn himself in or not, his Social Device has given away his whereabouts.

3:00 PM – I watch live broadcast on CNN.com. They casually complain that they did not even get wind of this situation until about 30 – 45 minutes after it happens.

The events, facts, and visuals of a national attempted massacre that occured less than 1/4th mile from me – and less than 250 ft. from my home and love of my life – spread virally, in real time, all due to mobile technology. This is not only mobile technology, it is social technology.

From this point forward, if anyone ever tells you social media is a joke or a trend, feel free to completely write them off as ignorant. As we’ve mentioned in our presentation this past Wednesday on Social Media, Social Devices are not going anywhere any time soon, and our culture and society will continually be shaped by their benefits and capabilities.

Information is real time. We are all connected, and unless you’re grizzly adams going into the wild, no one can hide any longer. Oh yeah…remember that talk about Gen Y and Gen i? Well, guess who wasn’t on top of everything… the babyboomer generation (sorry Mom, Dad, and CNN). Our society is growing and connecting at a ridiculously rapid pace, and those who are on Social Devices are the ones on top. Also, my girlfriend has a scheduled eyewitness interview with CNN tomorrow. She may be broadcast around 1:00 PM or so. Stay tuned with CNN to check it out.

Our company & staff’s best wishes and deepest concerns go out to those involved in the Orlando and Fort Hood tragedies. We wish and pray for the recovery of those injured, and our hearts go out to those who have lost loved ones.

Facebook Lite: Devolution in Progress

Posted on: September 11th, 2009 by Mike

Picture 1

Recently, Facebook has publicly launched Facebook Lite, a calorie-free alternative to the behemoth pile of 3rd party integration chaos that revolutionized the way we socialize online. The internet is already being pummeled by a cacophony of articleswrite-ups, and posts regarding its public launch, including direct attacks on Facebook, criticizing its capitalization on the up-to-the-minute feedback that Twitter currently provides.

Facebook’s recent $50 million purchase of FriendFeed probably helps validate these statements, as Facebook is adopting and integrating new technology that keeps its head in the game with live updates and hive-mind search capabilities.

Facebook Lite Status Updates

Facebook Lite Status Updates

Capitalizing on realtime reciprocal information may be a large influence on many of their design decisions for Facebook Lite, but Facebook has publicly stated that FB-Lite is specifically targeting slower connections, particularly in developing nations, in order to provide a streamlined version of the core Facebook features. Based on the fact that FB-Lite is testing in India, this very well could be the case. Picture 4

Massive Hyperlink Attack

With all this in mind, there’s more beneath the surface that people haven’t picked up on. Facebook has made some strategic moves with FB-Lite that have probably been in the works for quite some time. The UI itself provides a much more usable and enjoyable experience for mobile devices, especially with those larger, fatter hit states on links and buttons. Fat navigation is not just web 2.0 gloss, it’s easier to press with your thumb. Navigation is now clear and concise, assisting with the learning curve of novice users.

The UI has also trimmed redundant body fat. On Facebook Classic, there are duplicate links that access your dashboard, namely the "Facebook" logo, as well as the "Home" link. If you check the URL it points to, it’s actually running separate analytics on each click. They’ve been studying users behaviors, and are adopting a new interface to help clean the clutter.

Picture 2 The duplicate links were probably band-aids for novice users to adapt to the latest Facebook redesign and become acquainted with its new features as of last year. Facebook can now use FB-Lite as their vehicle for implementation testing, especially since it’s marketed in new countries where users aren’t rampant Facebookers.

How a real man browses the internet

How a real man browses the internet

Outside of all this field testing and fine-tuning, FB-Lite is extremely stripped down. Almost all Javascript is practically nerfed, and almost every link is a separate page load. Reminiscent of Facebook 4 years ago, it’s right on point with the target demographic of mobile phones and dial-up. Plus it lets me personally power-browse Facebook in multiple tabs without crushing my CPU.

As technology begins to rapidly evolve, we can see noticeable patterns emerge as the mobile market plays technology catchup. Facebook Lite serves as a harmonious blend between dial-up connections in developing nations and portable media in industrialized ones.

This may be the ultimate stop-gap solution before mobile devices replace netbooks, or it may just be Facebook on training wheels running around a test track. While there will probably not be complete adoption of FB-Lite by most existing users, Kudos to Facebook for keeping the ball rolling on realtime assimilation. Worst case scenario, they’ll just implement the best features into the next version of Facebook Classic while widening their reach on an international user base.

Internet Fubar: Distracting Eliminations

Posted on: September 10th, 2009 by Mike

This Tweetie app ad was so distracting that it was blog-worthy…

The most non-distracting distraction in the world

The most non-distracting distraction in the world

How the hell do they expect me to concentrate with all these amazing offers floating around? What was that saying about selling a refrigerator to eskimos…

IX Hosting’s Virtual Sales Agent

Posted on: September 4th, 2009 by Mike

I’ve seen a lot of things, but this was borderline amazing. I’m not sure if I should feel better or more concerned at this point. I was checking out hosting specs over at IX Hosting, and when I went to close out the page, I was slapped with a nice fat JS alert, accompanied by a digital sales agent. Below is what transpired…

The most obtrusive prompt. ever.

The most obtrusive prompt. ever.

Full Transcript

Grace Says: When you are ready just say ‘Hi’ and we can get started….

You: wow that ambush was epic

Grace Says: Sorry i didn’t quite understand your question, can you rephrase it please..?

You: I was just trying to find server specs for a client who recommends you guys

You: they currently host

Grace Says: Sorry I can’t understand your question. Please can you repeat it for me?

You: are you a bot or running by a script…

Grace Says: You got me, I am a live virtual agent :-) I’m here to offer you this discount really, but I can answer most of your questions too, I hope.

Grace Says: If I can’t and you want to a speak with a live person please go to our Customer Center by Clicking Here

I’m semi-impressed by the fact that they respond properly when they’re called out. I’d just hate to actually think about the amount of time and energy invested in focus groups of irritated users who recommend methods for getting to a real sales rep.

Dev Toolkit: iPhoney

Posted on: June 18th, 2009 by Mike

Now I’m not sure how behind I am on the times, but I’ve just stumbled upon a pretty useful application for the Mac platform called iPhoney. I inadvertently found this while looking for iPhone templates to display a design comp for one of our special projects.

Produced by Market Circle, iPhoney is a simple, open-source web UI emulator for the iPhone, powered by the best browser on the world on Mac OSX. The website mentions that it works best with Safari 3 Beta, so chances are a lot of people have probably already seen (and or use) it. For noob-piles like me who haven’t, feel free to continue reading.

iPhoney on the desktop

iPhoney looking epic on an Apple desktop

The Good

iPhoney’s core purpose is to demonstrate websites nested in an iPhone interface. The features are simple and precise. The application sits as a window on the desktop in the shape of, well… you guessed it, an iPhone. The UI contains basic browser controls such as a URL bar, back, forward, and refresh. It also has various aesthetic controls that are disabled, such as bookmarks and general iPhone controls. Since the application is meant to emulate websites, it seems like this is the best way to go. Fundamentally it just feels like an iFrame, with the iPhone UI as the parent.

The application comes with some slick tricks as well. You can change the orientation between Portrait and Landscape, and the display of the website adjusts accordingly.

Viewing Mobile Youtube in Landscape

Viewing mobile Youtube in landscape mode, on my amazingly gray desktop

According to Market Circle, iPhoney is "pixel accurate", which means that though it appears larger on your desktop, it still packs in the exact same number of pixels as the iPhone, showing exactly the same web content, including where the screen fold lies, how text wraps, and how large graphics appear.

The Not So Good

Some issues (lack of features, really) impact the ability to use this as a replacement platform for developing mobile versions. Since it only simulates the window display via screen, it doesn’t correctly differentiate between appropriate style sheets for mobile. This means that any development testing through this must only parse the mobile styles. A lot of websites normally provide this via sub-domain such as m.facebook.com, or m.cnn.com.

It also doesn’t differentiate header information, so if you attempt to visit a fancier website that parses based on HTTP headers and then redirects you, such as m.nytimes.com, then you’re SOL.

Forcing Best Practice

Either way, the not-so-good can be seen as a gift, since it will force you to develop for best practices. A lot of Blackberry devices can’t differentiate between Screen and Mobile either (at least not by default), so providing a sub-domain that parses only the mobile style sheet is definitely the way to go. iPhoney works great in testing this scenario.

Conclusions

If you haven’t tried it, try it. Especially if you don’t have access to an iPhone. It’s great for quick mobile demonstrations to clients, stakeholders, and fellow employees.

Internet Fubar: Round 1

Posted on: June 3rd, 2009 by Mike

Overview:

A semi-weekly (probably not) installment of everything amazing found on the internet that seems to explode on my browser in an epic lightshow of failure.

This week’s site: Yerzies.com

Spawned by clicking on a hint link for assistance in creating garments  

Full Screen

Full Screen

The most useful modal hint in the world

The most useful modal hint in the world

Thanks application developers, I would have never assumed your intentions. Almost everything clickable on this website throws a fatal JS error.

Please add a Beta label to your site so I know how forgiving I should feel, and so you don’t wind up as the ass-end joke of a blog post.

Scope Creep, a formal definition

Posted on: June 2nd, 2009 by Mike

If you ever interview a project manager, ask them to define Scope Creep. I’ve compiled a formal definition to reference and compare, which is actually now hanging on my office wall.

If they fail to provide either definition, I would recommend that you continue your search…

Scope Creep

- noun

  1. Opportunity to secure additional revenue and improve the quality and overall outcome of a development project
  2. Unintentional interjection of an outside party causing temporary internal aggravation, characterized by lack of education for due process

Synonyms: focus creep, requirement creep, feature creep, function creep, kitchen sink syndrome

Related Forms: creep-ing-ly, adverb

…Patience is a virtue learned through the course and practice of life.

Development Blocks, Waiting In Line

Posted on: March 17th, 2009 by Mike

After developing CSS for so long, it’s rare that one would encounter anything during development that is new and practical, nonetheless life-changing. When dealing with mad scientists such as graphic designers, whose focus is not in semantic markup, document flow, or helping to make the life easy on a development team, there are times where you need to be creative and experiment with new techniques. Carving out the style-sheet for our own website would be one of those times.

In viewing our website, I’m sure you’ve come across the slideshow interface at the top of various pages, with the 1, 2, 3 navigation in switching between slides:

bshot_05

Horizontal navigation through unordered lists is nothing out of the ordinary, and is used at least once or twice every time we develop an interface, which is presumably the same situation for most authors of CSS. Our primary issue is that based on design. the navigation requires a couple factors:

  • The navigation is inline
  • The numbers are positioned on top of the content
  • The navigation is right-aligned

Let’s start with some basic HTML markup for the unordered list navigation:

<ul class="moneyshot_tabs">
    <li><a title="Click to View" href="#moneyshot_01"></a></li>
    <li><a title="Click to View" href="#moneyshot_02"></a></li>
    <li><a title="Click to View" href="#moneyshot_03"></a></li>
</ul>

Normally, my CSS declarations for basic inline navigation would look like the following:

.moneyshot_tabs {
    list-style: none;
    width: 670px;
}
.moneyshot_tabs li {
    display: inline;
}
.moneyshot_tabs li a {
    background: url(images/bg_numbers.png) top left no-repeat;
    color: #FFF;
    display: block;
    float: left;
    padding: 2px 0 0 0;
}

Pretty simple. This sets all the list elements inline, appearing horizontal, rather than vertical. The width on the UL is for the constraints our particular layout, and the anchors have some additional styles applied for graphics. That takes care of our first requirement:

  • The navigation is inline
  • The numbers are positioned on top of the content
  • The navigation is right-aligned

Positioning the navigation around the content isn’t too much of a challenge either. Let’s assume the navigation falls below the content inside of the markup, and appears at the bottom:

.moneyshot_tabs {
    list-style: none;
    margin: -30px 0 0 -10px;
    position: relative;
    width: 670px;
}

Setting the UL to be relative to the elements around it allows it to move more freely across browsers, eliminating rendering issues that deal with quirks mode. Applying a top negative margin positions the list on top of the content, since it appears below it in the navigation. A negative left margin pulls it into the content, as opposed to being on the right-most edge. At this point, we’ve accomplished two requirements:

  • The navigation is inline 
  • The numbers are positioned on top of the content
  • The navigation is right-aligned

The real challenge is consistently aligning the numbers right. Let’s look at a couple options:

  • Floats
  • Margin / Padding
  • Text Alignment

Floating: If we were to float the LI’s or the A tags, we would run into some issues. Based on document flow, the browser will float the elements in reverse order if they are floated right, forcing the numbers to appear in reverse order:

3, 2, 1

In reality, this can then be solved by rendering the pagination in reverse order:

    <li><a title="Click to View" href="#moneyshot_03"></a></li>
    <li><a title="Click to View" href="#moneyshot_02"></a></li>
    <li><a title="Click to View" href="#moneyshot_01"></a></li>

This wouldn’t be semantic at all, and cause some issues with accessibility and indexing. Floating these elements also causes some rendering issues with the z-indexing of the content. It looks like floats won’t cut it.

bshot_02

Margins / Padding: Since the UL is the containing element, we could apply a left margin or left padding to push the numbers to the right. This would prove to be more of a pain than it’s worth, since the numbers can vary.

Assume you have 3 numbers total. In order to push the 3rd and final number all the way to the right, we would have to apply a left margin of 500 px or more. Say a different version of the UI has only 2 numbers, at this point we have to apply more margin to push the numbers further, since the 3 is not there, leaving a gap:

bshot_03

Sure we would do some math and count the amount of number elements, and apply dynamic margins, though that’s extra development time and processing power that just doesn’t need to happen. Looks like margins and padding are ruled out.

Text-Alignment: The remaining viable option appear to be text alignment. This would make sense in terms of practicality since the text is, well, aligned to the right. Why force floats and display properties on something that should make such simple sense. Let’s try it out:

.moneyshot_tabs {
    list-style: none;
    margin: -30px 0 0 -10px;
    position: relative;
    text-align: right;
    width: 670px;
}

Text-align is pretty odd at times. It only works if you apply it to the block level parent, since it affects the text and elements found within the element you apply it against. Should you apply text-align to an inline element (such as the LI’s), nothing will occur, since there is no box-model boundary for the text-alignment to reference.

Seems to work, except for the anchor hit states. The anchors by default are inline elements. Much like the text-align issue, inline elements cannot have width and height properties properly applied to them. Since we want fat hit states and nice graphics on our navigation, there has to be a way to make them larger. Let’s assume we turn them into block-level elements. This will provide them the ability to have boundaries and display properties such as a width and height. Though once we do this, they stack, and no longer respect the text-align property set on their parent:

bshot_01

Well there’s actually a way to cure this: “inline-block.” According to quirksmode.org:

An inline block is placed inline (ie. on the same line as adjacent content), but it behaves as a block.

This helps us in more ways than we can imagine. It allows us to provide dimension properties to the anchor tags, but they will not stack, and will still respect the text-align property applied previously. Let’s modify our markup, setting this property and giving the anchors some dimension:

.moneyshot_tabs li a {
    background: url(images/bg_numbers.png) top left no-repeat;
    color: #FFF !important;
    width: 20px;
    height: 18px;
    display: inline-block;
    padding: 2px 0 0 0;
    text-align: center;
}

The width, height, and padding settings are based on the background image being used to produce the rounded corner effect. Text-align: center allows the numbers to be positioned perfectly in the center of the rounded box. Check out the final result:

bshot_051

Revising our list of requirements, it looks like we now accomplished everything from the original design…

  • The navigation is inline 
  • The numbers are positioned on top of the content 
  • The navigation is right-aligned

Before using this technique, one should be aware of a couple known circumstances, from QuirksMode.org:

In IE 6 and 7 inline-block works only on elements that have a natural display: inline. Firefox 2 and lower don’t support this value. You can use -moz-inline-box, but be aware that it’s not the same as inline-block, and it may not work as you expect in some situations.

You can see this element in action by visiting our homepage, and can read more about inline-block at the following URL:

http://www.quirksmode.org/css/display.html