YouTube High Quality Video - Coming Soon

If you haven't heard Steve Chen (co-founder of YouTube) announced at the NewTeeVee Live conference that high-quality video streams are coming soon.

YouTube is reportedly testing a new player that will detect the speed of the viewers network connection and adjust the video quality and bit-rate depending on the network connection. If the player detects that the user has a fast enough connection it gives the higher quality as an option but does not force you into that (at least not at the initial roll out).

One issue may be the quality of some of the videos that are posted as they are already a pore quality, but hopefully this would encourage people to post higher quality videos on YouTube.

The new service should be available to everyone within three months

For more information check out this post from the Google Operating System Blog. Also, keep an eye on the YouTube Blog for the official announcement of the release.

Using JSON in AJAX without using Eval

JSON (JavaScript Object Notation) is a great way to return small amounts of data that is already in a usable JavaScript object format. However, one common use of JSON is to use an eval statement to execute the code. I personally try to stay away from eval whenever possible for various reasons including security concerns.

In an AJAX (I know that some would say that an application that uses JSON is not AJAX because it does not use XML, but I will still refer to it as AJAX.) application the JSON object will be returned from the server side as text through the XMLHTTPRequest object. Below is an example of what might might be sent from the server.

var myJSONObject = {"bindings": [
        {"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
        {"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
        {"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
    ]
};

Once this is returned it would often be passed into the eval statement. However I suggest that it is better to use DOM manipulation to create a script tag and place the code into that tag. Below is an example of this (codeholer is a div to hold the code, but this could be any tag that could hold the script tag).

        var JSONCode=document.createElement("script");
        JSONCode.setAttribute('type', 'text/javascript');
        document.getElementById('codeholder').appendChild(JSONCode);

Once you create the object you could insert the code via the text object (below it is this.req.responseText, but it may be different in your code) and it will then be available to your JavaScript code. Below is the above example with the added code for inserting the code.

       var JSONCode=document.createElement("script");
       JSONCode.setAttribute('type', 'text/javascript');
       JSONCode.text = this.req.responseText;
       document.getElementById('codeholder').appendChild(JSONCode);

Another option would be to pass information into the server side code using the url and not bother using the XMLHTTPRequest object. This will return the same as above but you cut out the middle man. It may be useful to use this in some instances although the above would be used more often. Below is an example of this option.

        var JSONCode=document.createElement("script");
        JSONCode.setAttribute('type', 'text/javascript');
        JSONCode.setAttribute("src", "returnsite.php?user=userid&Loggedin=0&timestamp=" + TimeStamp)
        document.getElementById('codeholder').appendChild(JSONCode);

JSON is a great option in certain situations where you want to transfer a small amount of information over the web. I would say that if you need to return a JavaScript object that would be used in some code then I would recommend using JSON over XML. If you are returning data and just want to display it I would use XML with XSLT (or even pre-formatted HTML). If cross domain is a concern JSON is a great option as you don't need a server side proxy to get the data. As with anything what you decide to use will depend on the needs of your application, but whatever you do if you use JSON please don't eval.

JSON

ET GPhone Home? - What to Expect from 'Google Phones'

Tagged:  

Alexander Wolfe at Information Week has written an article titled Inside The GPhone: What To Expect From Google's Android Alliance in which he deduces the eight key technologies that will play major roles in the Google Android Platform and subsequent GPhones.

Here's a quick rundown:

1) Less is More, especially when it comes to UI
Google has partnered with a Swedish operated called TAT(short for The Astonishing Tribe) who has worked for SonyEricsson, Samsung, TeliaSonera and Orange.

2) GPS - Can live with it, can't travel without it.
Google has partnered with SiRF Technology Inc.(a San Jose, CA based specialist in "location-awareness" technology. SiRF offers chips which enable GPS to be hard-wired into the handset without compromising the size of the overall device. Battery consumption may be an issue, but it doesn't sound like it will be any worse than the iPhone.

3) Web Browser - Surf like a butterfly, browse like a bee
Will it be WebKit(ala Safari and the iPhone) or will it be Opera Mini? Information week has a sneaking suspicion Opera might be joining the Open Handset Alliance soon and will partner with Google to get it's browser in Android.

4) Multimedia Razzle Dazzle
Texas Instruments is a member of the Open Handset Alliance, but so is Marvell Technology Group(who specializes in RF chips). What does have to do with multimedia you ask? Well TI developed OMAP, a proprietary multimedia platform, architecture, and processer family. What does OMAP offer? It offers "pretty much everything a handset maker needs to field a full range of models from bargain-basement GPhones to feature-stuffed, single-chip cellphones on steroids." For example, TI's OMAPV1035 chip is referred to as "the first fully-integrated digital baseband, RF, and applications processor." It handles audio and video playback, allowing record and streaming at 30 frames per second and has a built-in digital camera up to 3 Megapixels with shot-to-shot delay of less than a second , and onboard 2D and 3D graphics! 

OMAPV1035

5) Real Speech Recognition - remember KIT from Knight Rider?
Open Handset Alliance member Nuance Communications Incsays it's VoCon Mobile speech-interface solution handles standard voice dialing as well has menu navigation in response to verbal commands. VoCon is currently used by Motorola, NEC, LG, and Samsung. Nuance is also focused on simplifying text messaging through new text-input software, like its main product called T9.

6) iPhone Hustle - You can look, but you can touch to.
Open Handset Alliance member Synapticsand its clear capacitive technology will most likely be contributing to the GPhone hardware display. If you don't think they have what it takes to play ball with Apple, check out this photo from Synaptics for the Onyx concept (which can play music and video)
Onyx Concept
7) What's a Google Product without Targeted Content?
Alliance partner PacketVideo Corp, who created the multimedia software behind the Verizon VCAST video and music service, could be contributing MediaFusion - a single portal for music, ringtones, and video targeted to the user based on their purchase history. 

8) Gaming - and no, we're not talking about Snake (Nokia reference)
Look out, because Open Handset Alliance member NVidia is expected to contribute its chips to Gphones, which means we could have a Google handheld gaming system! Nvidia chips are also in LG, Samsung, and Kyocera phones.

Click here to read the full article at Information Week

Javascript Diff Algorithm

Tagged:  

Another tool for your javascript toolbelt!

John Resig implemented a diff algorithm in javascript that includes two functions, one of which is recommended for use:

diffString( String oldFile, String newFile ) This method takes two strings and calculates the differences in each. The final result is the 'newFile' marked up with HTML (to signify both deletions from the oldFile and additions to the newFile).

Sample Code

document.body.innerHTML = diffString(
"The red brown fox jumped over the rolling log.",
"The brown spotted fox leaped over the rolling log"
);

Sample Output

The red brown spotted fox jumped leaped over the rolling log.

Click here to visit the site and download the code!

Google Misses the Mark?

Tagged:  

In a recent article titled "Father of web 2.0 slams Google OpenSocial", Tim O'Reilly - the father of the term 'web 2.0', calls Google's Open Social API "boring" and a "full blown disappointment".

Google OpenSocial

OpenSocial provides a common set of APIs for social applications across multiple websites. Those sites include Engage.com, Friendster, hi5, Hyves, imeem, LinkedIn, MySpace, Ning, Oracle, orkut, Plaxo, Salesforce.com, Six Apart, Tianji, Viadeo, and XING.

O'Reilly described the lack of data sharing as a "fundamental failure " to understand two key principles of web 2.0: open data and loosely coupled applications or services.

"If all OpenSocial does is allow developers to port their applications more easily from one social network to another, that's a big win for the developer as they get to shop their application to users of every participating social network," wrote O'Reilly.

"But it provides little incremental value to the user [who is] the real target. We do not want to have the same application on multiple social networks. We want applications that can use data from multiple social networks."

If Google had taken the OpenSocial approach with Google Maps, it would have created a service that allowed developers to create mapping applications across Microsoft, Yahoo and Google. O'Reilly summarised such a service as "boring".

Read the full article here

Post your comments! We'd love to hear what you think of Google OpenSocial, whether or not you agree with Tim O'Reilly.

PHP Rants and Server Side Language Benchmarks

I was looking into writing an article about what server side language is fastest. In the process I found quite a few good articles.

The first interesting article is a rant about how good a language PHP is. Read the article here.

I personally am a pro PHP and Ruby guy so I love pro PHP articles. I also think that PHP performance is pretty fast and that is why I was looking into benchmarks and I got some interesting results.

The next is an article with some links to tools that are for benchmarking server side language performance (some are free). Click here to read.

The below articles are of various benchmarks and opinions on the server languages which are fascinating.

Looking at these articles has got me wanting to setup a server running the various languages to run my own benchmarks. Once I do it I'll post the results.

In my next post I'll get back to writing about sessions from the connections conference last week.

Mr. Data from Star Trek?

Tagged:  

No! Not that Android! This is Google Android- the first complete, open, and free mobile platform! Rumors have been circulating that Google would be developing a GPhone, but that rumor turned out to be false. What Google is doing, is trying to revolutionize the mobile device platform by rolling out an open-source, reusable, extensible, customizable, "integratable" operating system for mobile phones.

Why this platform is automatic
It's systematic
It's hydromatic
Why it's grease lightning!

Watch this quick intro to Android and its SDK from the Sergey Brin:

[youtube=http://youtube.com/watch?v=1FJHYqE0RDg]

Here's some specs on Android in-case you're interested:

Kernel
Android is based on the Linux 2.6 Kernel as its Hardware Abstraction Layer. Its Native Libraries are written in C/C++.

Graphics
It uses OpenGL/ES as its 3D Library and SGL for 2D graphics. However, Android allows you to use both 3D and 2D in harmony within your application.

Media
Android's Media Framework includes codecs for MPEG4, h.264, MP3, AAC

Data Storage
SQLite for Data Storage

Web Browser
WebKit - Open Source browser engine, same browser that powers Safari.

Java Runtime / Virtual Machine
Android Runtime - Dalvik Virtual Machine (DEX Files - Bytecode generated by compiling .class and .jar files)

Core Libraries - written in JAVA (collections, utilities, I/O, etc...)

Application Building Blocks
Activity - UI component typically corresponding to one screen
IntentReceiver - Responds to notifications or status changes. Can wake up your process.
Service - Faceless task that runs in the background (like how you'd expect a music player to work)
ContentProvider - Enable applications to share data

For more information, here's a three part series from Google explaining:

1) Android System Architecture
[youtube=http://youtube.com/watch?v=Mm6Ju0xhUW8]

2) Application Lifecycle
[youtube=http://youtube.com/watch?v=ITfRuRkf2TM]

3) APIs
[youtube=http://youtube.com/watch?v=iiD4fGjjXcc]

And here's a first hand look at building an Android application:

[youtube=http://youtube.com/watch?v=I6ObTqIiYfE]

Now that you're ready to start building Android Apps, here's a link to the SDK to get you going!
(Did I mention Google is holding an Android Developer Challenge, which will provide $10 million in awards -- no strings attached -- for great mobile apps built on the Android platform? What are you waiting for? Start coding.)

Microsoft's Connections Conference - Share Point Governance and Information Architecture

Last week I attended Microsoft's Connections Conference in Las Vegas Nevada. This is the second of my posts of information from the conference. This post is about Share Point Governance which was given by Shane Young of sharepoint911.com.

Governance is very important to how you setup your Share Point site especially now that Share Point is trying to position itself as an enterprise portal solution. Governance is related to Taxonomy (simplest description of taxonomy that I know of is that it is the classification of content). Shane emphasized setting up a governance committee when you are first starting to implement a Share Point solution. It was also stressed that one should make sure to have site owners so that content in each branch of your portal will stay up-to-date to encourage adoption of the Share Point.

Some great tools that were suggested at the session can be found at http://codeplex.com/governance/. These tools include a site recovery toll, a life cycle management tool and a usage reporting tool. It was also mentioned that the Share Point Asset Inventory Toolkit will be released soon as this promises to be a useful set of tools.

Governance and Taxonomy are a huge topics and this session was a quick high level overview on some practical ways to accomplish governance and taxonomy on your Share Point portal. For more detailed information on governance read Joel Oleson's blog on the subject by clicking here.

connections conference

Ajax Chat & IM Libraries

Tagged:  

Ever wanted to add a chatroom or instant messenger to your site, but just couldn't find one that did just what you needed? Unwieldy Studios has built a few ajax tools that might do the trick.

First, they have developed an ajax based instant messager  named "ajax im" that is compatible with all major browsers. Installing the script is fairly straight-forward and once setup, it will display a buddy list style messenger in a floating div on your page. The messenger is movable, resizable, as well as minimizable. Most of what you would expect is included, but no over-the-top bells & whistles. If you're interested take a look at the Ajax IM project homepage.

Second is their ajax chatroom, which I think is very useful in a variety of applications. The chatroom has most of the core features provided in Ajax IM, like the fluid and flexible UI. But the major advantage of the chatroom is that you can include it on multiple pages of your site and it will follow your users from page to page, retaining their information and chats. Here's a demo to see Ajax Chat in action.

Microsoft's Connections Conference - Keynote

This last week I attended Microsoft's Connections Conference in Las Vegas, NV (I managed to spend the week in Vegas and not loose any money in the casinos). This post will be about the conference keynote given by Steve Guggenheimer with posts on other sessions that I attended coming soon.

The big information that was presented was about the upcoming releases of Visual Studio 2008, Windows Server 2008 and SQL Server 2008. It was announced that the launch party for the products will be February of 2008 (the actually release dates are Visual Studio 2008 - Q4 2007, Windows Server 2008 - Q1 2008 and SQL Server 2008 - Q2 2008.

The first product demonstrated was Windows Server 2008. Below are some of the promised improvements or features:

  • Easier system management
  • Presentation virtualization
  • Ability to run applications remotely (they don't have to be web based)

The next product demonstrated was SQL Server 2008 and it looks like it is getting closer to being able to compete with Oracle in the enterprise space (although it is still limited by operating system issues) . Some of the promised improvements and features are:

  • Easy to use report designer (designed for business users)
  • Geography data type stores latitude and longitude coordinates (can you say Google Maps mash-up).
  • Policy based management framework
  • Ability to define limits on resources

The final demonstration was of Silverlight (the Microsoft framework for Rich Internet Applications). Silverlight appears to be based on using Visual Studio 2008, Expression Designer, Expression Blend and Expression Encoder. Visual Studio is used to create the Ajax applications (both JavaScript and ASP.NET). Expression Designer is used to create Vector Graphics (similar to those created in Adobe's Flash). Expression Designer saves the images as XAML files which are imported into Expression Blend (which I found odd as I would prefer to have these two tools packaged into on application so that the export was not needed). Expression Encoder is used to incorporate video into applications and seemed to do something similar to the Flash FLV file.

I thought the new products where very good and are great for a .NET developer. If you don't develop in .NET then I would suggest using different existing applications. Look for my next post which will be on Share Point Governance and Information Architecture Guidance.

Syndicate content