Feed on
Posts
Comments

How to organize my iPhone

My front page After using my iPhone 3G for some time now, I find my self confused when it comes to organizing all my applications. At first glance the look & and feel of the iPhone was great, but now I tend to think that Apple sure has forgotten something important. When you estimate to sell billions of applications it should be clear that the average user will have a lot of them on their phone, and along comes the issue.

How well is the user interface when the user has 55 apps (as I have at the time this post is written)?. There are some factors to take into account:

  • Native iPhone apps
  • Third party apps
  • Your own apps (could go as third party)
  • Native apps in regular use
  • Third party apps in regular use
  • Third party apps for testing purpose
  • Different categories like games, travel, office etc
  • … (and more)

My experience is that if you put 16 applications in one page it’s a mess everytime you are looking for one; It’s impossible to find it. And if the application is not on the front page… where is it? On page 4…5? By using some of the factores above I have organized my iPhone to some extent, but sure would like to see Apple develop some great and innovative user interface that will work better than it does today. After organizing all my applications I found my self often slide over to the last page. Suddenly I was using the games more regular than first thought. If you know how to move an entire page at a time, please let me know (without using the jailbreaked Categories app). This is actually an extremely time-consuming process.

So, here is how I organized my iPhone:

  1. What I did was to put Native and third party applications that I use often on my front page limiting them to 12.
  2. On my second page I put all the native and third party apps that I use by regular basis.
  3. On my third page is all my applications that supports me when I’m out traveling.
  4. On my forth page is all my games.
  5. On my fifth page I have the applications rarely in use
  6. And the last one is for temporarily testing purpose.

Googe So, yesterday, Google launched several new languages for their online translator, including the Scandinavian languages (Google Translate Becomes the Best Free Online Translator).

Testing it for the Norwegian language with my own blog was cool and it seems that the translation module is very good. Try out the following (if you understand my natural language) : One of my posts in norwegian

The new languages supported are:

  • Bulgarian, Croatian, Czech, Hindi, Polish
  • Danish, Finnish, Norwegian, Swedish

But, it seems that it is not so easy to see the translation module integrated within the Google search result. If your google search is set up with local language you will get the [translate this] for each result in the search page (if the language is within the translate package). At the Google front page just click on the Preferences link. There it is possible to choose your desired language. Doing so you will have the translating tool integrated smoothly within the search result. By the way; I am not able to get this translation function to work with IE 6.0 (29) !

A couple of weeks ago Google launched their javascript-based API, enabling the translation of block of text within web pages on the fly, making it easy to develop some pretty nice and elegant user-friendly functionality related to text translation.

So, I finally got my hand on a HDTV decoder from my local television provider (Get) today. The box handles digital signals from the cable or television provider and supports HDTV, enabling higher TV quality and services.

The decoder supports the following signals: 576p, 576i , 720p and 1080i

The manual tells me to set the output signals from the decoder to 720p if I have a television that can handle HD-signals, but not able to handle 1080i. If I have a television that is HD-ready and that supports 1080i, I should set it to this format. Is it so simple?..

Let’s first look at some of the basics. HDTV is is the broadcast of television signals with higher resolutions than the traditional television signals that we traditionally have received (HDTV also gives us much better sound). There are three important aspects that defines the format that HDTV is encoded by:

  • Number of lines (720, 1080)
  • Display method (progressive, interlaced)
  • Display rate (60, 50, 30, 24)

Reading about HDTV at Wikipedia above (follow the link), gives me headache. How can a person with regular insight into video format, native resolution, pixels, frame rates, the scanning system (progressive, interlaced) understand anything about this? It is a nightmare.

So the next thing I look into is what technical specification the HD decoder from my television provider has. The box is well tested in several of the leading media related to media and technology in Norway. But no one of them considers the display rate. It is not possible to find anything about the display rate at the web-pages to my provider or within the tests that has been done. It seems that also by people that should know this stuff pretty well, they just focus on the number of lines (720, 1080) and the display method (progressive vs interlaced).

The European Broadcasting Union recommends that its members use 720p50 with the possibility of 1080i50 on a programme-by-programme basis and 1080p50 as a future option. (In the USA, 720p is used by ABC, Fox Broadcasting Company and ESPN because the smoother image is desirable for fast-action sports telecasts, whereas 1080i is used by CBS, NBC, HBO, Showtime and Discovery HD due to the crisper picture particularly in non-moving shots. The BBC is one of the EBU members transmitting in HDTV. It has not yet made a final decision on picture scanning format. Sveriges television in Sweden and Cyfra+ in Poland broadcast in 720p50. All other commercial European HDTV services so far use 1080i50.)

So, the more I digg into this topic the more jungle it gets. I must assume that following the EBU the signals from my decoder is 720p50 and 1080i50. From the EBU statements it is obvious that the signals should be changeable on a programme-by-programme basis based on what format the program was shot in and what kind of program it is (sport, nature and so on). This means that all signals that is not HDTV must be “transformed” or “upscaled” to this format (720p or 1080i).

Assuming the 720p50 and 1080i50 lets look at the picture:

720p50 = 921,600 pixels multiplied by 50 (frames pr seconds) = 46.080.000 pixels pr second

1080i50 = 2,073,600 pixels multiplied by 50 divided by 2 = 51.840.000 pixels pr second

This gives me 12,5% more pixels with the 1080i versus 720p. Not very much, and is this possible to see within my distance to the television? Probably not. The interlaced vs progressive method is well documented and discussed, and the progressive method is better regarding moving pictures.

So far I have got an overview of the different sources of HDTV, what scanning formats exists, the difference between the interlaced and progressive, upscaling basics, native resolution and so on.

Now let me take a closer look at my Plasma television (I have a Panasonic Viera TH-42PV70). With my Plasma and my decoder what signals should I choose? I almost always read the same; Choose 720p not 1080i, and the argument is the progressive vs interlaced element. As I calculated above, I get 12,5% more pixels pr second with 1080i, but with normal distance to the television it’s hard to see the difference, but the artifacts with the interlaced display method I will do (in some occasions). From the Panasonic presentation of my plasma comes: The processor converts signals of present TV broadcasts and DVD software to 1080p high-definition video signals. It up-converts the video signals without causing any loss in the signal or image details. It also applies progressive conversion to upgrade 1080i high-definition video signals to 1080p signals. This allows VIERA to render pictures that are more beautiful than the original.

So it seems that I should use 1080i from my decoder. My plasma will then convert the interlaced signals to progressive. I then looked at the native resolution.. it is 1024 X 768…. that means the television has to scale the 1080i source, that is now converted to 1080p to fit the native resolution. Doing so, the processor has to skip out a lot of information (pixels). The native resolution regarding the display related to HDTV signals is making this topic even more complex.

If this HDTV mess was not complex before taken the native resolution into account, it sure is now

I am happy that I am not a seller of HDTV displays.. this is sure not a simple task!

So, yesterday I installed an upgrade of iTunes and QuickTime (7.6.1.9) for Windows. When I upgrade a software I usually do not read carefully the instructions and often I just click the “install” button without any glimpse. But this time I did stop one moment before I pressed the install button. What is that? Safari?? What has Safari to do with this upgrade. One thing is that Apple have bundled QuickTime and iTunes..thats old stuff and discussed a lot. But now Apple just goes on with this bundle-strategy and use their upgrade mechanism to also install other products. This time it is Safari!

I was actually taken by surprise. Apple has bundled their browser with the iTunes and QuickTime upgrade. Can you believe this? And best of all Safari is prechecked for installation, so if you do not wan’t the Safari browser installed on your computer, you must take action and remove the checked value for Safari to be sure not to install the software.  How many regular users will do that?.. My bet is not many.

My opinion is that Apple has done some major mistakes her. First of all I do not like this bundle, as I do not see what the users that upgrade their iTunes can benefit from the Safari installation. Second, this is an upgrade. So what does Safari do inside the iTunes + QuickTime upgrade? It is not difficult to see why Apple bundles their browser, but is it fair? And do we like it? We have seen this strategy earlier by big players, I am surprised to see Apple do the same.

Well.. the Apple bundling strategy works. I have to install Safari now, just to play with it and test it against my regular browser (read FireFox) ;)

Just got back from London, with an overwelming cinema experience in my bag; The U2 3D Film. The British Film Institute (BFI) IMAX is home to the UK’s biggest cinema screen - more than 20 metres high and 26 metres wide, 12.000 watts of digital surround sound and the most sophisticated motion picture projection system in the world. It gave me the most ultimate experience that I can remember - The first live-action 3D concert movie - featuring u2!

The effect that this technology from 3ality Digital LLC is able to do with a live stadium concert is not possible to describe. Eye position of a stereoscopic camera in real time, high resolution 3D systems with zoom lenses, and integrated digital processing gives us tomorrows film concerts - today!

The film was shot at the Vertigo Tour back in 2005. I had the pleasure of seeing them during this tour in Oslo in the summer of 2005. But seeing the crowed at the huge stadium in Buenos Aires, feeling their heartbeat, smelling their tears and sweat singing to Sunday Bloody Sunday, Pride, With Or Without You and One among all the great songs on this tour was a breathtaking, astonishing and a fantastic experience.

Sitting on top of Larry Mullen Jr. watching him at work, throws me directly to the event, I am not any longer at a cinema in London I am there! When Bono steps towards you it’s like you are able to scratch his nose. When you are in the crowd you are really among them, watching the girl in front of you filming with her cell-phone camera, is so real that all you can do is sit back and laugh.

It is actually a bit scary but this awesome film gives us a glimpse of the future of cinema.

After publishing this post I found a great article/post at Silicon Republic named Even better than the real thing

AirPort Express At the end of 2007 I found my old AirPort Express. Looking down on it I remembered why I put it away; Audio Drop Out. What a big mistake buying that thing. Well, I desided that I had to use some time to solve the problem and start using this fantastic nice gadget.

The first thing I did was to look into the information at Apple’s own site to see if they had written anything about this issue. And yes, they have. a firmware update should solve the issue (firmware update)… BUT it did not.

So I had to search the net to look for help. Whow, it seems that a lot of people is experiencing this problem. There is a lot of fancy and odd solutions and I tried everything I ever came over:

  • Firmware Update
  • Changing wlan channel
  • Using network robustness
  • Moving microwaves and wireless phones around
  • Upgraded the network from 802.11b to 802.11g
  • Using multiple speakers
  • and more…

Here are some links:

Nothing helped. So I then had to figure out what actually happend with my computer during the drop out. I looked at 2 things; Network traffic and CPU usage. What I found out whas that the network traffic was ok, nothing odd with it. But, when I looked at CPU usage, I found one correlation with the drop out. Whenever my computer was working or had a CPU usage that was more than typically a couple of %, I got a drop out.

So, what did I do?

When streaming music to my AirPort Express I shut down all other applications, typically MSN, Firefox, Word etc. This solved the problem. No drop outs.

My conclusion is that there is no problem with the AirPort Express, the problem is related to the client that streams.  AirPort Express drop out is not a problem for me anymore I just have to focus on the music not doing a lot of things at the same time :)

So, after fowa and 90k+ developers in mind, I just had to go ahead and implement a Facebook application. Here is the code and how I implemented it.

First of all my goal was to use an existing web application, write a facebook integration module that communicates with the Facebook APIs, extracting some information/data and presenting them inside the existing web application. The web application I used is based on a j2ee framework (jsp, java). The architecture is much like Struts The first thing to do was to get the Developer Application to my existing Facebook account. Then I had to download the Client Library. I choosed the Java Library since my development environment was Java. When I extracted the Client Library, only the source files where included. So what I had to do first (besides looking into the source code), was to compile the java-files. I actually wrote an ant-task for this purpose, but a more easier way is just to use javac without using ant-framework. The next step was to take the output from the compile process and put it into an archived file (.jar). This is not necessary but I like to do it this way and the facebook.jar file I now had is easily dropped into my existing web application library. In my Facebook profile I had to create (set up) a new application. This is done by clicking the developer application that was installed earlier. Its some steps including getting a key (API key and secret key) that I used in my java-code but this process is straight forward.

Ok, now lets start the coding process. Here is the java code controlling the session and authentication:

String apiKey = “something”;
String secretKey = “something”;

FacebookRestClient frc = null;
HttpSession session = request.getSession();
String sessionKey = (String) session.getAttribute(”facebookSession”);
String token = request.getParameter(”auth_token”);

try {

if (sessionKey != null && sessionKey.length() > 0) {

frc = new FacebookRestClient(apiKey, secretKey, sessionKey);
this.doTheThing(request, response, frc);
} else if (token != null) {
frc = new FacebookRestClient(apiKey, secretKey);
session.setAttribute(”facebookSession”, sessionKey);
sessionKey = frc.auth_getSession(token);
session.setAttribute(”facebookSession”, sessionKey);
this.doTheThing(request, response, frc);

} else {
response.sendRedirect(”http://www.facebook.com/login.php?api_key=” + apiKey + “&v=1.0″);
}
} catch (FacebookException fe) {
} catch (IOException ioe) {

The doTheThing method is extracting the information and looks like this:

int myid = frc.users_getLoggedInUser();
EnumSet<ProfileField> fields = EnumSet.of(com.facebook.api.ProfileField.NAME, com.facebook.api.ProfileField.PIC, com.facebook.api.ProfileField.PIC_BIG, com.facebook.api.ProfileField.PIC_SMALL);
Collection<Integer> users = new ArrayList();
users.add(myid);

// Get my information
Document d = frc.users_getInfo(users, fields);
String myname = d.getElementsByTagName(”name”).item(0).getTextContent();
String mypicture = d.getElementsByTagName(”pic”).item(0).getTextContent();

// Get my friends id
Document d2 = frc.friends_get();
String s = d2.toString();
NodeList userIDNodes = d2.getElementsByTagName(”uid”);
int fcount = userIDNodes.getLength();

Collection<Integer> friends = new ArrayList<Integer>();
for (int i = 0; i < fcount; i++) {
Node node = userIDNodes.item(i);
String idText = node.getTextContent();
Integer id = Integer.valueOf(idText);
friends.add(id);
}

List l = new ArrayList();
Map m = new HashMap();
Document d3 = frc.users_getInfo(friends, fields);

// Get my friends information
for (int j = 0; j < fcount; j++) {
String name2 = d3.getElementsByTagName(”name”).item(j).getTextContent();
String picture2 = d3.getElementsByTagName(”pic”).item(j).getTextContent();
String picture3 = d3.getElementsByTagName(”pic_small”).item(j).getTextContent();
String picture4 = d3.getElementsByTagName(”pic_big”).item(j).getTextContent();

m.put(”name”, name2);
m.put(”picture”, picture2);
m.put(”picture_small”, picture3);
m.put(”picture_big”, picture4);

l .add(m);
m = new HashMap();

}
request.setAttribute(”friends”, l);
request.setAttribute(”myname”, myname);
request.setAttribute(”mypicture”, mypicture);
request.setAttribute(”numFriends”, new Integer(fcount));

So all the information from Facebook is now added to the request and can be displayed in a JSP. The code above is not very elegant and is not optimized(!). Its just a pice of code done after half an hour of work and my goal was to implement an integration module for testing purpose.

Hope this blog post can help others looking for hints when getting started with Facebook application development/integration.

Google buys Jaiku

Google operates orkut a social network service similar to Facebook. Today they bought Jaiku so it seems that Google is really focusing on the competition they get from Facebook and other social networking sites, and I look forward to see what Google will do with orkut and jaiku related to the amazing success that Facebook has achieved. Twitter and other social networking sites should definitively wath out for some hard competition.

 

Future Of Web Apps

Just got back from the Future of Web Apps conference in London. My impressions from this event and also some other events I have attended the last couple of months is that the focus are upon open api’s, open data and open authentication giving a foundation for the internet to become a network of different services loosely joined. Almost all start-ups are built on this foundation and this is not a surprise. More interesting is it to see what strategical positions the already big web companies will take in this landscape.

At the event Dave Morin talked about The Story Behind The Facebook Platform, and the figures he gave was amazing(!). Since the launch of the Facebook Platform on the 24th of may 2007 (kick-off video with Mark Zuckerberg) they have reached:

  • 90.000 + developers
  • 5000 + apps total
  • 100 + new apps a day

Facebook is now the 6th most-trafficked site in the US. They are bigger than eBay, and will (I suppose) soon pass Google(!).

On oct 2, the San Dimas Project launched the public beta of its application and finally renamed it “eBay Desktop”. I’m still trying to figure out how this product will affect the regular users of ebay and why eBay is using this amount of resources in building a desktop application. I do not buy the general arguments for building desktop applications .

Older Posts »