Apr 8 2008

Google App Engine

Google has just made available a preview release of Google App Engine. Google App Engine is an application programing environment built with the same scalable technology and infrastructure that runs some of Google’s applications. App Engine is available as a Software Development Kit (SDK). Once an application is developed for App Engine, it can them be uploaded and hosted by Google. A application written for App Engine will run for free on Google’s bandwidth and computing power.

The initial preview release of Google App Engine is only available for 10,000 developer, and as of this writing their are no more available slots. At this time, App Engine applications are limited to 500MB of storage, 200M megacycles of CPU per day, and 10GB bandwidth per day. This configuration is expected to serve up to 5 million page views per month.

App Engine hides a lot of the mundane technical challenges a web developer worries about, such as coding, debugging, configure Apache web servers, setting up a SQL database, creating database tables, sharding the database, running scripts, pushing out new versions, monitoring performance, scaling, and version control you system. App Engine is a simple alternative to the LAMP stack. Google App Engine will facilitate and simplify web application development to the masses.

For the initial release, the App Engine Stack includes a scalable serving infrastructure, Python runtime, SDK, web-based admin console, and datastore. The Google App Engine environment is based on many of the same technologies that make Google work, such as Python, Google File System, Bigtable, Google Accounts, and Google Apps. It is also worth noting that Python is only the first language with App Engine support, expect Google to make an SDK available for other languages such as Java.

Google engineers have stated that App Engine will not make any restrictions on code, modules, and frameworks. You should be able to run any JavaScript, HTML, CSS, and Python framework. In fact, there are tutorials for running Django on App Engine.

Features that might be available in future releases of App Engine is support for large upload/downloads, support for other languages, offline processing and the availability of additional capacity for a fee.

Here are additional links, resources, and tutorials to help you get started with Google App Engine.

Google App Engine
Google Code: App Engine
Google Groups: App Engine
Google App Engine Blog
What Is Google App Engine?
Google App Engine: Getting Started
Running Django on Google App Engine
Bigtable: A Distributed Storage System for Structured Data
The Google File System
App Engine App Gallery

Here is a video presentation of Google AppEngine from Google Campfire One. The video has a live development demo and a lot of technical information.

Technorati Tags: , , , , , , ,


Apr 3 2008

YouTube and Picasa Web API Hackathon

Last week I had the pleasure of attending the YouTube / Picasa Web API Hackathon at Googleplex. Google is always a great host and they provided food, t-shirts, and even raffled a pass to Google I/O.

The hackathon started out with presentations by folks on the Google Data (GData) team. All of Google application make their data available through the GData API. GData is available in different formats including RSS or Atom. Every data point of Google’s applications are made available through GData, for example YouTube user profiles, video data, play lists, subscriptions, and video views can be accessed via GData feeds. The GData API does allow application developers to read and write data to Google Applications, but write operations require authentication. For example, uploading a new video, modifying video metadata, or writing comments requires authentication. For web applications or services that need to be authenticated by GData API they need to use AuthSub. AuthSub redirects the end user to a Google site for the end user to log into Google and then Google forwards back to the requesting site with a valid authenticated token. The GData team strongly discourages (or disallows depending on who you ask) for third party application, services, or developer from collecting Google user credentials. Since AuthSub requires the user to login at a Google site, third-party applications don’t need to collect Google credentials.

As I mentioned earlier, GData can be delivered via RSS or Atom. Because YouTube and Picasa describe media files such as videos and images, those APIs also use Media RSS.

Geoff Stearns, Flash hacker on the YouTube team, talked about the YouTube Player API. The embeddable YouTube player can be customized and configured with parameters in the video url. Parameters include rel, autoplay, loop, border, and others. Rel is a boolean value that indicates if you want related videos to be displayed in the ‘genie menu’. Autoplay indicates is a boolean value that indicates if the video should play once loaded. In addition to player parameters, the YouTube player can be manipulated via JavaScript. The YouTube player can be made to play, pause, stop, mute/unmute, get/get volume, and seek ahead in the player. It is incredible easy to manipulate a video through the YouTube Player API, you can build your own video controls with JavaScript. Since the YouTube player can be manipulated entirely via JavaScipt, developer have an option to building their own video player with their own custom controls with the YouTube Chromeless Player.

Geoff has a kewl mashup example between YouTube JavaScript API and Google Maps. The mashup is a on board video of a race in San Francisco. As the video proceeds it updates the Google map as of the location of the camera, in essence you get a street view of the race and a aerial view of the race track.

Technorati Tags: , , , , , , , , , , , ,


Mar 23 2008

Running with Shoes – Tasty Text

The Shoes toolkit has a nice rich text format support. At first sight it might seem that Shoes text support borrows a lot from HTML, for example the most commonly used text block is para. In addition to the paragraph text block, you can use banner, title, subtitle, tagline, caption, and inscription.

[source:ruby]
Shoes.app do
stack do
banner “banner”
title “title”
subtitle “subtitle”
tagline “tagline”
caption “caption”
para “paragraph”
inscription “inscritpion”
end
end
[/source]

shoes toolkit text block

As you can see banner is the largest text block, followed by tittle, etc. The default size for banner, title, subtitle, tagline, caption, para, and inscription is 48, 34, 26, 18, 14, 12, 10 pixels respectively. You can also change the default size of a text block by using the optional size parameter.

[source:ruby]
Shoes.app do
stack do
banner “banner”, :size => 20
end
end
[/source]

Most often you will use the paragraph text block. If you have to display a great amount of text on a paragraph you pass in variable number of strings parameters.

[source:ruby]
Shoes.app do
stack do
para “Lorem ipsum dolor sit amet, “,
“consectetur adipisicing elit”
end
end
[/source]

In addition to text blocks, Shoes supports text formats such as strong, em, code, ins, span, sub, and sup. Here is an example of using a paragraph block with all of the text formats.

[source:ruby]
Shoes.app do
stack do
para “Normal. “,
strong(“Bold. “),
em(“Italics. “),
code(“Code. “),
ins(“Inscription. “),
span(“Span. “),
sub(“Sub. “),
sup(“Sup. “)
end
end
[/source]

shoes toolkit text format

In addition to simple text blocks and text formatting methods, you can create hyper links. Just like the hyper web, links can execute some event or code.

[source:ruby]
Shoes.app do
hyper_link = link “hyper link” do
puts “link pressed”
end
stack do
para hyper_link
end
end
[/source]

The above code creates a link and assigns it to the hyper_link variable. The link is later passed on to the paragraph block for display. If you click on the link ‘link pressed’ will be printed on the terminal console.

In addition to executing custom code when a link is pressed, you can also launch the default browser if you use the click parameter. The code below displays a link and when pressed it will launch the Firefox or your default browser to the given URL.

[source:ruby]
Shoes.app do
stack do
para(link “Juixe TechKnow”, :click => “http://www.juixe.com/techknow”)
end
end
[/source]

All the text formatting methods also accept an option stroke parameter to sent the color. Here is a simple example of using color with your text.

[source:ruby]
Shoes.app do
stack do
para em(“Hello, “, :stroke => green),
strong(“World!”, :stroke => blue)
end
end
[/source]

Here is a recap of the available methods for working with text with the Shoes toolkit.

Text Blocks:
para, banner, title, subtitle, tagline, caption, inscription

text formats:
strong, em, del, ins, link, span, sub, sup

There are more Shoes GUI tutorials and code samples here.

Technorati Tags: , , , , , ,


Mar 17 2008

Peopleware

I am going to cunningly place a copy of Peopleware: Productive Projects and Teams by Tom DeMarco and Timothy Lister on my boss’ desk. Peopleware is an insightful book on software project management and many of the advice on Peopleware resonated well with me. The undertone of the book is aligned with eXtreme Programming (XP), even though the book was written well before XP became a popular methodology. The books explores many elements that are required to manage a successful software development team. For one, the team needs to feel as part of a community, as part of an elite group doing something truly special. For me, the big watershed moment reading this book was when I realized that software development is a social endeavor. We might all romanticize with the idea of the lone hacker working late in to the night, but in practice every software product needs a large community to truly flourish. Even those Open Source developers working on the source code on their own need a community of users.

Peopleware also talks about organization learning. Within an organization, it might seem obvious to have people learn new technologies and skills. But it is equally important, and perhaps not so obvious, it is important to retain those people with new skills. The greatest investment a company has is its human capital, the greatest challenge a company has is to know how to invest it.

Here are some of my favorite quotes from the book.

People and Performance

The business we’re in is more sociological then technological, more dependent on workers’ abilities to communicate with each other than their abilities to communicate with machines.

Someone who can help a project to jell is worth two people who just do work.

Two people from the same organization tend to perform alike.

The people who write the Methodology are smart. The people who carry it out can be dumb.

People under time pressure don’t work better, they just work faster.

Count on the best people outperforming the worst by about 10:1. Count on the best performer being about 2.5 times better than the median performer.

People who had ten years of experience did not outperform those with two years of experience.

There was a very weak relationship between salary and performance.

The total cost of replacing each person is the equivalent of four-and-a-half to five months of employee cost or about twenty percent of the cost of keeping that employee for the full two years on the job.

Productivity and Quality

Productivity within the software industry has improved by three to five percent a year, only marginally better than the steel or automobile industry.

Productivity ought to mean achieving more in an hour of work, but all too often it has come to mean extracting more for an hour of pay.

Throughout the effort there will be more or less an hour of undertime for every hour of overtime.

The trade-off between price and quality does not exist in Japan. Rather, the idea that high quality brings on cost reduction is widely accepted.

Quality is free, but only to those who are willing to pay heavily for it.

We all tend to tie our self-esteem strongly to the quality of the product we produce – not the quantity o product, but the quality.

While machines have changed enormously, the business of software development has been rather static. We still spend most of our time working n requirements and specification, the low-tech part of our work.

If you are charged with getting a task done, what proportion of your time ought to be dedicated to actually doing the task? Not one hundred percent. There ought to be some provision for brainstorming, investigating new methods, figuring out how to avoid doing some of the subtasks, reading, training, and just goofing off.

Managment

Most managers give themselves excellent grades on knowing when to trust their people and when not to. But in our experience too many managers err on the side of mistrust.

The manager’s function is not to make people work, but to make it possible for people to work.

Second Thermodynamic Law of Management: Entropy is always increasing in the organization.

Technorati Tags: , , , , , ,


Mar 16 2008

How To Be Creative

Just finished reading Hugh MacLeod gapingvoid manifesto, How To Be Creative. I broke down his manifesto to the following quotes.

The more original your idea is, the less good advice other people will be able to give you.

It was so liberating to be doing something that didn’t have to impress anybody, for a change.

Your idea doesn’t have to be big. It just has to be yours alone. The more the idea is yours alone, the more freedom you have to do something really amazing.

90% of what separates successful people and failed people is time, effort, and stamina.

Nor can you bully a subordinate into becoming a genius.

A fancy tool just gives the second-rater one more pillar to hide behind. Which is why there are so many second-rate art directors with state-of-the-art Macintosh computers.

Don’t try to stand out from the crowd; avoid crowds altogether.

Never compare your inside with somebody else’s outside.

Art suffers the moment other people start paying for it. The more you need the money, the more people will tell you what to do.

Technorati Tags: , , , ,


Mar 15 2008

Favorite Google Applications

Google is perpetually busy at work developing a growing number of online applications. Some Google applications found immediate and global success while others have simply not. Since online applications don’t have the same release cycle that shrink wrap software does, all of Google’s applications are labeled beta. This simply means that the application is live, continually being updated from week to week with minimal end user disruption. The anatomy of a Google application is sheer simplicity, great user interface and experience, accessible data API, and instant scalability.

Google is always updating and adding new applications. If you like to discover the latest offerings from Google you may want to log into your Google account. With that, here is a short list of Google applications that I have found useful and use on a daily basis.

Google (REUTERS/Erin Siegal)

Google Search
Google was founded on search and the Google Search is the most widely recognized web page. But in addition to the web search, Google has invested in niche search engines such as Blog Search, Book Search, Patent Search, Product Search, and custom search.

Google Docs
Google Docs is not a Microsoft Word killer, but it is a valid replacement in many instances. I regularly use Google Docs to create online documents that I am later going to collaborate and share with friends, family, or colleague. Again, Google Docs does not replace every feature in Microsoft Word, but it doesn’t have to. I does basic text formating just fine. In addition to creating documents, Google Docs can also create online spreadsheets and presentations. Once saved, Google documents can be exported into a variety of formats. I use Google Docs to share files between office and home and to share documents with other folks.

Google Notebook
Think of Google Notebook as a scrapbook for quite notes or text. You can create different notebooks for different subjects and in each notebook you can write notes. Notes have similar text formating that you will see in Google Docs such as bold, italics, bullets, etc. You can promote a notebook to Google Docs by converting it to a document. Like with many of Google’s online applications, you can share notebooks with colleagues, friends, and to the general public or keep them them private. For the layperson Google Notebook’s functionality will seem to overlap with Google Docs for some situations, but I have found it useful for keeping track of quick notes. The feature that I like most about Google Notebook is that it is available from Google Search.

Google Calendar
Google Calendar best features is its online collaboration capabilities. Google Calendar makes it easy to create different calendars, each with its own privacy levels. You can share a calender with select people or with everyone. Another great feature is that there are a lot of publicly available calendars that you can import and add to you calender.

Google Apps for your Domain
Google Mail really did revolutionize online mail systems. Now your users can use GMail too with Google Apps for you Domain. Google Apps for your Domain allows you to have all of Google applications such as GMail, Google Docs, Google Calendar, etc for your own domain.

Google Alerts
Instead of going to Google for search results, let Google Alerts send you periodic emails with the most current search results for given search terms. You can manage a multile search terms and restrict results to blogs, groups, news, video, or web. You may receive updates everyday, once a week, or as they happen.

Google Analytics
If you have a website of any sort, weather it be a blog, forum, or just static HTML files you need to add Google Analytics to it. To add Google Analytics to any page you simple add a bit of JavaScript and that is all that Google needs to track the traffic to your site. Google Analytics can be used to track your visitors by geographical location, language, browser, referrer, etc.

Google Maps
We’ve all used Google Maps and there isn’t much to say other that it is perhaps the best online map application online. Google Maps has a ton of features such as different views (map, satellite, terrain, street view). Like much of Google’s other applications, Google made it incredibly easy to search a location. Prior to Google Maps, online map applications asked you to enter the street address, city, zip code in separate fields. Google Maps uses a single text field to search a location. That kind of simplicity is what makes Google applications so useful and intuitive for end users.

Technorati Tags: , , , , , , , , ,