Coming to a Flex App near you: 100,000 Videos

The Fan, Comcast Interactive Media’s Flex based video application, is soon about to reach a pretty big milestone: 100,000 video clips in the library. And while sites like YouTube may boast a much bigger library, the content on The Fan is all premium content from cable TV networks. So just for kicks, I took a couple of hours on Friday and built a quick blog badge to show the number of videos on the Fan right at any point.

http://www.arpitonline.com/blog/swf/fanbadge.swf

You can embed the badge by copy+paste-ing the following html:

[html]
http://www.arpitonline.com/blog/swf/fanbadge.swf
[/html]

Clicking on the play button will launch the Fan. Unfortunately the Fan is only Comcast High Speed Cable Internet subscribers so you will be prompted to log in.
As an application, big things are happening in the Fan using some unique Flex features. More on that on a later post. And of course my shameless plug: If you are interested in working on the Flex and Flash team for Comcast Interactive media drop me a line at mathur.arpit [at] gmail dot com.

Ice cube predicts demise of Flash !

This one is funny: I followed this link off of Ryan Stewart‘s blog to NewTeeVee with a video on Ice Cube promoting UVNTV, which is being advertised as an internet TV experience complete with a channel lineup etc built on Silverlight. I love it when Ice Cube basically forecasts the demise of Flash (‘Flash is outta here’): hey man, if he says it, it must be true ;). The interview later has them saying that they got a better video quality using the windows codecs but seeing some of the really cool high def video around even before the Moviestar release of the Flash Player kind of makes me doubt that. Anyway, the video is a fun watch if nothing else than to see celebrities talk about server-side code, CDNs and of course, Silverlight ;).

http://images.video.msn.com/flash/soapbox1_1.swf
Video: Ice Cube's UVNTV.com goes live with Microsoft Silverlight

How do you pass time on a 14 hour flight ?

So I am leaving for India in a couple of weeks to visit family and friends. Its always a fun trip and the time I am least connected with programming and all things on the web, which is a good thing since almost all the other times I am waaaay too into it. However the flight to and from is long, about 14 hours or so (and thanks to the Boeing 777s, direct without stops to refuel) and as you can imagine, really boring. So this year I want to ask the blogosphere: how the heck do I pass the time? Usually I code a bit till my battery runs out (3 hours) and then I unsuccessfully try to read a book or something. This year I am thinking I should maybe buy a PSP or something.

Anyone have any good ideas?

Google Maps, the IPhone and my San Francisco Trip

I just got back from my trip to San Francisco (top secret project…shhhhhh), but a couple of things made this trip rather interesting. I have never really been a tourist or a photographer. Its something I have been meaning to change for a while since I do want to have something I can look at years from now and be like: “oh yeah I remember that..”. However my interests are so much more in the new and shiny things on the www that cataloging my travels seems like a chore.

However this trip I tried to mix the two domains a bit. I have a shiny new iPhone (well not so new now), and I have been meaning to play with Google’s new my maps + embeddable maps features, so here is my trip with photos from my iPhone with some information about my trip on custom markers. I have a vague color coding going on there with green markers being the first day, the blue, the second and pink the third day at SF.

While this was fun, it really isnt the experience I was hoping to create. Thankfully, both flickr (where my photos are hosted) and google maps have apis so I may monkey with ’em a bit and come up with something interesting.

Free AS3 package: MP3Playback

When Flex 2 came into beta, I wrote an online mp3 player application called FlexAmp. The application let you play songs from an online Box.net storage account and and used the ID3 info to load related content from Flickr, YouTube and Amazon.com. Mike Chambers later did a desktop application using AIR called Ascension that also mashed up your music with the sources mentioned(but I still want to claim first rights over the idea, plus I did remote storage 😉 ).

Just for nostalgia, here are some pics of what it looked like:

Anyway, a lot of people have asked me to release the source code for the application but the code (like the code for most of my weekend projects) is fairly messy. But I will try to release some of the core code as I get around to cleaning it up.

This blog entry links to the MP3Playback class which did all the playback for that project. I took some time to make the api pretty clean and similar to the Flex VideoDisplay class. I also wrote a quick example showing how the class can be used. The one interesting feature of this class is also the ability to fade out the song at any time. Not really rocket science, but nice to have anyway ;).

I hope this class helps someone with a project. If you find this class useful or find a bug, please leave a comment here and I’ll try to fix it.

The application can be found here. Please right click to view source.

Lets talk about UX baby …

This post is a mashup of my notes from the Adobe XD group’s session at MAX, the Apple iPhone Tech Talk with John Gelenyse, Director of Technology Evangelism & User Experience Evangelism at Apple I attended today and my personal thoughts on User Experience on applications that I see across the web (even the ones I have written 😉 ). Hopefully you will find these pointers useful in evaluating application designs before you deploy them to the masses.

Identify the problem:
A no-brainer, right? But you will be surprised how often applications start looking at features without identifying the core problem they are trying to solve. Just as often, the problem statement is formed incorrectly. For example, for a video aggregator like say, the Adobe Media Player, is the goal isnt to aggregate videos but enable easy discoverability of video content. The fact that this is done via aggregation is a secondary thing.

Whats the point?
This is the most important question that you SHOULD be able to answer in one or two sentences. Apple calls this the product definition statement. In his talk, John gave the example of Apple Aperture. While Aperture has a huge number of features, the product definition is simple and strong: “An online image management solution for professional photographers”. The product definition statement must include the function and the target audience.

Think Task First
Identify what the task is. The interface must make that task really easy. You should even break the tasks down by order of importance and make the ones at top really easy to accomplish. Again, dont design for the task that a minority will do. Identify and define:

  • primary and secondary tasks
    eg: organize, purchase and approve
  • primary and secondary objects:
    eg: people, movies, books

Keep it simple
Again, fairly obvious but I know some of my own applications suffer from this. As a developer, I know exactly what actions the various nuts and bolts on my application trigger but how obvious is that. How many actions are you trying to promote on that one application? Dont overthink the problem or optimize the design for the edge case. John exact words were :Simple and straightforward is best. Make it dead easy to use!

useful -> useable -> desirable
Andrew from XD talked about the progress of the application as it approaches completion. First and foremost, the application should be useful. Once you have that part worked out, make it usable so that an average user doesnt have a steep learning curve to your application. Finally, it should be desirable and this is where you tweak the designs, colors etc. A lot of applications seem to go the other way

Content is king
Remember the application design is to promote the content. In the case of the Adobe Media Player, the original designs were beautiful but reduced the video content area to a small window in the corner. The one released has the video as the primary focus and the chrome is completely secondary.

Create an experience, not an interface
Sounds like another slogan doesnt it 😉 ? But keep the user experience as the priority. While the buttons and knobs may result in a working application, if its not an enjoyable experience for the end user, its to no point. At this point, I think Andrew brought up the Apple IPhone and talked about how people forgive the mediocre phone capabilities of the device just cause the experience is so good (as an iphoner myself, I completely agree 😉

Choreograph sequence and flow
Transitions and animations arent just eye candy. They help keep the users oriented as the application interface changes as the user tasks change (for example, the Adobe Media Player starts out giving the user the ability to browse through content, but at some point the user finds a video to watch and now browsing is a secondary action with the watching being the primary. The transition of the browse area to a list on the right keeps the user aware that the browse capabilities are still there but are not taking up the main focus space)

Trust your instincts and later have it validated by usability tests:
If you have a seasoned design team, there is a good chance that they intuitively understand how users interact with applications. They may even come up with a paradigm that hasnt been established yet but may be a great idea (for example, a lot of sites now offer tag clouds that I prefer to get to the more interesting parts faster, but who came up with that ?). Dont be afraid to try something different. But validate the paradigm through usability.

Prototype, prototype, prototype

Nothing beats a prototype.

Share Everything
The XD team has an internal wiki where all the designers upload their work everyday. They then work off of each other’s ideas.

Passing of Mark Belsterling, distinguished member of the Flex community.

I was shocked to hear today of the passing of Mark Belsterling, one of the main voices of the Flex community in Philadelphia and indeed the world. Mark was the manager of the Philadelphia Flex User Group.

Mark passed on this Saturday, Sept the 8th.

I met mark a few months back when he came over to interview with us at CIM. I was struck by how much Mark knew of all things technology related. Mark had a very unassuming nature but had the experience to humble many veterans in the online domain. And it was really obvious how passionate he was about Flex. He started the Philadelphia Flex User group in June filling a need a lot of us were feeling. He had been having heath issues over summer but still found the energy to organize the meetings for the groups. I met him last at the Air bus tour event at Philadelphia.

I offer my condolences to his family and friends. His presence will be sorely missed.

New Flex Component: ScrollImage

ScrollImage is kind of like Flash ScrollPane component. The component takes any image url and loads the image putting scrollbars around it to allow the image to be scrolled. While the same effect can be created by using the Image inside a Canvas container, this implementation is much more efficient since its not creating a heavier container object.

I wrote the ScrollImage container as I was trying to understand the basic ScrollControlBase class that all controls that have scrollable content use. If you are a Flex developer, the source of the code should be very instructional. I have commented it out a bit and most of the code is self explanatory. Check the component out here and view the source here.

[Video] DiggGraphr Desktop 1.0: My entry for the Air Derby

DiggGraphr is finally mature enough for me to give it 1.0 status. I finally got around to implementing the features I have been meaning to for a while, including auto update and inline browsing using the HTML control in AIR. The code for it wasnt difficult but the change in user experience is pretty phenomenal. You can read more about it and grab the latest version from http://www.arpitonline.com/blog/?page_id=63.

I captured a quick video of the application in action so take a look. Its grainy but you get the idea. You’ll have to download the app to check it out.