Friday, May 30, 2008

Google I/O: Flash on Android, and Wrap-Up


Running Flash on Android
At the Android Q&A, the developers said that the first release will have a webkit browser included but without the ability to have plugins installed. So there won't be Flash or Flash Lite on the Android platform to start. The follow-up release will be able to install plugins into the webkit browser, which will make Flash available assuming Adobe offer an open source version of the Flash plugin.

This should provide the iPhone with some competition. I haven't seen another phone-based web browser as good as the iPhone's yet, and Flash support will be one way to compete. Hopefully this will then lead to Flash on the iPhone.

Wrap-Up
It was interesting that the Android sessions always seemed to be the most packed. I think the Google Gears work had the next highest level of interest.

I found the Gears work the most likely to be used in projects where I work - eg. storing stock and mutual fund data in local databases to allow fast filtering of results.

It was a well put together conference from Google, giving you an introduction to the various areas of web development that they offer developer tools in, and showing how they can be used alone or together to create web applications.

Thursday, May 29, 2008

Introduction to Google's Ajax APIs

This session was also useful for seeing the workflow of how Google teams develop web applications and realizing that we're all pretty much doing the same thing.

Google Ajax developers use any editor to create their applications, the only important thing for Google client side teams is to have a good debugger around - i.e. Firebug. I (still, I know) use Visual Studio's debugger but when you inject script into the DOM it can't find the script to debug sometimes and I can see myself moving over to Firebug.

This Google team's development is done by first building the static HTML files, then by building in the script required, and then adding in the Google APIs. HTML returned by the Google APIs is then styled using CSS classes documented on code.google.com.

Creating an iGoogle widget out of an HTML app is straightforward, you create an XML description file with its height etc and copy it to a google server. iGoogle will render the widget inside an iframe to avoid the possibility of it modifying any other widgets in its script.

Client-Side Performance

Here's a screen shot of IBM Page Detailer, Steve Souders's preferred packet viewer to use. 80% of web response time is spent on the client, and it also shows where network object downloads get blocked by script execution.

Browsers block parallel downloading of script and CSS when a script is being run so be careful with online script placement as a web page will block downloads. Basically be aware that whenever script is reached it will block any further parallel downloading of network objects.

@import statements have the same effect on CSS as inline script with script tags, so use link tags instead.

Defer script that is not needed for the loading of a page with XHR injection. XHR is required as Firefox does not support the DEFER attribute. Use XHR to load the script and then place it in a created script element. This is the best way as it allows for parallel downloading and does not display the busy indicator in the browser which is distracting to a user.

Google I/O day two keynote

The keynote was given by Marissa Mayer, Google's VP of search products. A really interesting speech on the difficulties of search and how to fix some of the problems they ran into.
50% of the web is in English, 1% in Arabic. Google operates in 110 languages. Translation is done by international users not by machines, much more efficient that way. Mayer used the translation technology to do a Swedish Chef version of a Google page that still gets millions of hits.
Performance correlates with increased hits - a 30% increase in google maps page performance resulted in 30% more hits to the site due to speed and increased ease of learning through faster feedback.
A key point she made was that often an application's purpose is to grow underlying technology not the actual function of the site. The Taxi Finder application that showed GPS-tracked taxis in NYC was not about taxis as much as about learning how to track things via GPS and display them on the web.
Also she emphasized the importance of creativity and prototyping. She builds applications herself from time to time as it's essential to keep a sense of what can be developed. Prototypes are critical as a part of decision making. 50% of google apps started out as a project
in each developer's 20% of work time assigned to prototyping.
Her key points were:
Keep pages as simple as possible. Use split A/B testing to test ideas that come out of usability interviews as sometimes they will turn out to be misleading.
Know your metrics on how your application is operating and how people use it.
Don't let the urgent drown out the important.
Build prototypes, set aside time for prototyping and allow products to arise from developers' creativity.

First day at Google I/O

Keynote Speech
The keynote showed examples of how Google's technologies can enhance web site development. Google Gears extends the browser's capabilities for all web pages with features such as multi-file upload, a local database similar to HTML 5, file system access, and soon to include camera integration.

GWT allows Java to provide a more sane interface to DHTML development, with one Google client side veteran saying she would not be hand-coding again after using it for Google Health.

Android is an OS for mobiles like Windows Mobile that should appear on some new phones shortly. It offers a universal platform for developing Java applications for mobiles by abstracting out the hardware differences of each phone. Another way to develop for Android is to develop sites that will run on its WebKit browser, which will also then run on the iPhone's browse too. We were shown Pacman running on an Android phone as well as a version of Street View that auto rotates the street view as you move your phone around by taking advantage of the phone's built-in compass. This was very cool.

Some sample web page enhancement APIs were shown that run as Javascript pulled in via script tags from google. They allow easy blog integration onto other sites, and easy integration of youtube content. They join the existing APIs offered by Google to the client to jazz up web sites with little work.

Finally, Google is now also offering free application deployment space on its servers for web applications. It's free for the first 5 million page views per year.

Demonstrations
After the keynote, I went to the area where Google's APIs were being demonstrated. The data visualization API is separate from the charting API and can take data from XML or google spreesdsheets and render charts. One advantage of a DHTML based chart is that it'll run on the iPhone.

Google analytics can be used on Blogger. I'll try this out when I get back on this blog.

The evolution of new features on the web

Alex Russell, one of Dojo's developers, gave a really interesting speech on what the most hopeful ways for the web to evolve might be. He focused on the multiplier effects of an open development system - allowing new developers to learn the web quickly and making code sharing and maintenance easier. Google's Gears was an example of an app along these lines, whereas GWT, despite its great helpfulness to Java developers, removed too much of what is good about the web to be on this track.

Alex's talk was the reason you go to conferences. Often if you mention that there are cases where tables are better than CSS for layout, or how the web standards movement sometimes holds the web back, people look at you funny and say that you're against code standardization and progress and should be sent to the salt mines.

Emilio and Ashish

What is a sheet turndown service?

Saturday, May 24, 2008

Cheap liquor

In Cambridge, the cheapest place to buy liquor is... the Wine and Cheese Cask. Actually it's probably in Somerville isn't it...

The graph was done with OpenOffice - I've been using it for a week. It's free. If you don't use word processors etc much and think Microsoft Office is too expensive, it's worth downloading.

Saturday, May 17, 2008

Restaurant safety inspection reports

Just stumbled upon the City of Cambridge's restaurant inspection reports online. It's hard not to read. It was interesting that Burger King seemed to have the fewest violations of the restaurants I looked at, while restaurants I liked seemed to have the most except for the Green St Grill which had no violations for the last few years.

Sunday, May 11, 2008

The easiest way to put a short video on a web page

The absolute easiest way is to use YouTube, or a site like it. But if you host the video yourself, the video quality will be better and you can control the look of your movie player.

I've found that the easiest way to add a video hosted on your own web server is with Adobe's free Flash Video player. It makes adding a video to a web page as easy as adding an image. Flash video is the most common video format on the web today, used by sites like YouTube and MySpace, and Adobe's player is only 15K in size and very easy to use and customize.

To get started, save your video in Flash Video format. This usually means saving it with the .flv extension. There are many video programs that can convert movies into Flash Video format, including the Flash Video Encoder program that comes with Adobe Flash.

Once you have your video in FLV format, download the Flash Video player from Adobe Labs. Unzip the files, run any of the example web pages, and you'll see the player playing a sample video. Now replace this sample video with your own video. To do this, view the web page's HTML and change the reference to the sample video's filename with your own movie's filename. The sample page should now be playing your video file.

At this point you should be done and can cut and paste the sample web page's HTML code into your web page. More detailed instructions are in the documentation that comes with the unzipped Adobe Flash Video player.

Friday, May 9, 2008

Two Minute Guide to Middle East Peace

Palestine During World Wars 1 and 2
A hundred years ago, the Ottoman Empire ruled Palestine, which was then a large area including present-day Jordan, Lebanon and Israel. After the Ottoman Empire was defeated in World War 1 by the Allies, Great Britain was given stewardship of Palestine by the League of Nations. Britain gradually gave the region of Palestine south of the river Jordan more and more autonomy, and it became known as Transjordan. Only the area to the north of the river was now called Palestine.

Between World Wars 1 and 2, Jewish immigration to Palestine increased because of persecution in Europe. At the end of World War 2, 30% of Palestinians were Jews, and 10% of Palestinian land had become owned by Jews.

This increase angered the Palestinian Arabs, who during WW2 had successfully pressured the British government to limit Jewish immigration into Palestine, even from Axis countries. The Jews in turn were pressuring the British to allow more immigration, and Jewish terrorists attacked many government and military institutions, including assassinating the British Governor Lord Moyne in 1948. In 1947, Britain decided it could not control the region, and asked the United Nations to decide what should happen.

The Creation Of Israel
In 1947, a United Nations committee of neutral countries decided that Palestine should be split into a Palestinian and a Jewish state, except for Jerusalem which was to be governed by the UN as an open city. The Jewish community and leaders accepted this, but the Arabs did not. Indeed, Arab representatives refused to discuss plans for Palestine with the UN. The Palestinian Arabs couldn't understand why half their country should be taken away from them to solve a problem that Europeans had created for themselves through their persecution of the Jews.

Once the U.N. committee's decision was public and had successfully passed a vote in the UN General Assembly, the Arab countries tried to appeal to the International Court of Human Rights, but they did not get enough votes for their case to be heard.

The proposed borders gave the Jewish state 55% of Palestinian land - a generous allocation as only 30% of the Palestinian population was Jewish. The UN committee deciding the borders was initially tending towards recommending a unified Palestinian state, but was impressed by how well existing Jews were already using their Palestinian land.

As the British handover neared, clashes between Arabs and Jews in Palestine escalated and hundreds of people died on both sides. All of the countries neighboring Palestine publicly declared that they would resist the creation of an Israeli state, and it became clear that Israel should expect to be attacked as soon as the British completed their withdrawal.

To make their new country easier to defend, Israeli military forces and gangs attacked Israel's Palestinians to scare them out of their new state's borders, and most Palestinians living in Israel fled to the surrounding areas and Jordan. Hundreds were killed in artillery attacks on their homes and 700,000 were forced to flee. As soon as the British officially completed their pullout in May of 1948, all Arabic countries surrounding Israel attacked it.

The 1948 War
Israel won the war, holding off Egypt, Syria, Jordan, Lebanon, and Iraq. It lost 1% of its 500,000 population as casualties. It grew its UN-determined borders by 20% as a result of the war and also seized Jerusalem. The remainder of Palestine was seized by Egypt (the Gaza Strip) and Jordan (the West Bank).

The Six-Day War and Yom Kippur War
In 1967 and 1973, Israel's Arab neighbors again attacked it in two separate attacks. Israel won both these wars as well. After the Six-Day War it again increased its borders by seizing the Gaza Strip from Egypt, the West Bank from Jordan, and the Golan Heights from Syria. 

Today
Today the 700,000 Palestinian refugees displaced out of Israel in 1948 have grown to 4 million in number. They still want to return to their land and houses in Israeli territory.

Arab countries have started to recognize the legitimacy of Israel, including Egypt in the 1980s and the PLO in the Oslo accords. Yet this is a controversial act in the Arab world, leading to the assassination of Sadat and dissatisfaction with the PLO.

Current peace efforts are concentrating on the creation of an Arab Palestinian state from the West Bank, Gaza Strip, and some of the Israeli territory. Many Arab Palestinians see this as just the first step towards regaining all the land that they use to own.

Israel too wants a separate Palestinian state, because a merged state would lead to the Arab population growing to outnumber the Jewish population over time. But it does not want to give up much of its land that it either won in war or has built settlements on.

The UN's original 1947 plan for division is not acceptable to either side. Both sides want Jerusalem, as well as much more land than the other side is prepared to give.