google

What it’s really hapenning when you search on google


People form LifeHacker (http://lifehacker.com/5577813/remains-of-the-day-wireless-itunes-syncing-and-streaming?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+lifehacker%2Ffull+%28Lifehacker%29&utm_content=Google+Reader) mentioned about the Google’s workflow when a search is performed.
If you are curious, you can check it at:

http://ppcblog.com/how-google-works/

Herber

Google Apps Engine: Thinking in the Cloud


Hi,

I still working on learning Google Application Engine (w/ Python) and understanding how the cloud differ from the “normal” web app.

There is no such as a server for your application, so your app will be hosted in many (virtual or physical.. not sure yet) different servers.

There is no server: It’s a cloud!

I think planning is the key for the success of an Cloud Application. Certainly you already know the speech about the importance of planning and designing your application. The fact is that the design and architecture for cloud applications is quite different from a regular applications, for example Google App have restrictions about response time for (web) requests, or the amount of data that can be fetch from the data storage per query. These practices are in favor of creating scalable applications, but they change the playground.

The tight relation between performance and price

The second aspect about the Cloud application is about the performance. Certainly developers do their best for creating well-performed applications. However, not all the applications are thought in this way, and the Cloud is going to charge you for your resource consumption. This means that if you can do all your work with less resources it might cost less in long term.

One cloud for each need: Read the fine print

Other important aspect is the “kind of cloud‘ that you are buying. For example, Amazon offers services for storage, so they might charge you for bandwidth and the storage, I think this service is S3 from AWS. ( see http://aws.amazon.com/s3/ ).  Also, Amazon offers EC2, which is based on processing, and their charge you for CPU time consumption http://aws.amazon.com/ec2/. In this quick sample both services are easy to set up, but they are oriented to different needs. If your application exceeds your quota Amazon services are able to auto upgrade your plan. It’s important to notices that Amazon is capable of charging you in two different plans, your regular plan and the the exceeded quota  in a different plan.

On the other hand, Google’s Cloud (http://code.google.com/appengine/) sets a quotas for different services based on a plan, for example a plan defines a limit for storage, CPU, etc. The Google’s could does not increase your quota automatically; If you reach your quota, then the system will deny the additional requests until the next period starts.

Just because of I’m a Microsoft Developer I’ll mention that Microsoft also has its Cloud services. Sadly, I haven’t done anything on it yet, so you can check their capabilities at http://www.microsoft.com/windowsazure/

NoSQL, and scalable databases: Think in bigger things!

This is other interesting thing about data storage in the cloud. Developers are very used to ER Databases (http://en.wikipedia.org/wiki/Entity-relationship_model), however in the Cloud you might find other kind data storage. It’s a model called NoSQL (http://en.wikipedia.org/wiki/NoSQL), and it’s used for some Clouds such as Google and Amazon clouds. These NoSQL implementations can vary among clouds. Sadly, I’m not sure if Microsoft has implemented this NoSQL model yet. (BTW, thanks to David Mora for the talks about NoSQL).

Does the cloud  speak any language?: The language of the Cloud

This might not be a critical point. It’s important to notice that depending of the cloud you would like to use, this might define a set of tools (or languages)  to be used for development in your application. For example Google application engine is currently targeting Java (www.java.com/)  and python (www.python.org/). Even though it normal to think that both languages should be equivalent, they’re not!.  So, Googlers are trying to keep both with the same capabilities, but from time to time you might be able to do things in one language easier than the other language.

While (true) {Print this.Read(CloudCollection)}

This so far represents some basic thoughts about the Cloud versus the traditional server-hosted applications. My best advice is to check the capabilities of each platform to see if it fits your needs (and budget 😉 ).

Regards,
Herberth

Google Apps Engine: Python’s Way


Hi

As part of my welcome pack for developing in Google Application Engine (aka GAE), I had to chose between two languages: Java or Python. Because of my most recent work involves C# most of the time, the most obvious option wasJava. However, the client has their systems in Pyhon… so? I’m mastering Python in 3 days ;-).

THE LANGUAGE

My first approach was reading the language specification (it wasn’t a very smart option). So, my second attempt was using Wikipedia (aka wiki) to know more Python. Luckily Wiki has a good idea of how to define Python‘s language.

http://en.wikipedia.org/wiki/Python_(programming_language)

It might emphasize some points:

  • Python is a high-level programming language ( It means, that you don’t have to think as if you were coding for assembler)
  • It supports many programming paradigms (imperative, functional and object oriented). IMHO it’s a really strong functional programming language.
  • The syntax is simple to read, however I think if you aren’t familiar with functional languages, it would be good to start reading the tutorial instead of getting directly into the code. If you need to check some functional programming concepts you can take a look to http://en.wikipedia.org/wiki/Functional_programming
  • The language has a set of implementations (or flavors). So the main concepts are shared among implementations, however there might be particular details in some specific flavors. BTW, some popular flavors are CPhyton, IronPython, Python, and JPhython.

THE PLATFORM

First of all, you’ll need to get Python at www.python.org/. Then, you can decide if you want to use an IDE or just a text editor. I strongly recommend to read the Pythons official tutorial at http://docs.python.org/tutorial/,  (and sadly I cannot explain python in a post, and it will be impossible for being a novice on this language ).

ADDITIONAL SDKs

Then if you want to install Google’s App Engine, it might be a good moment for doing it.  ;-), it can be downloaded at http://code.google.com/appengine/. Certainly you might need to add additional packages to your python installation depending on what need to do.

THE DEVELOPMENT ENVIRONMENT

Another important aspect of learning a new language is selecting the right tool. Ok, here there are some purists that suggest to learn by using simple text editors instead of an advance IDE for developing. It’s up to you whether or not to use an IDE.

Now, let’s talk about the tool. The best free tool I’ve found it’s Eclipse (http://eclipse.org/downloads/)and you can use a plugin called Pydev (www.pydev.org/) in order to support pythons develelopment.  At this time pydev offers a really nice set of tools, such as:

  • debugging
  • code coverage
  • code snippets
  • refactoring
  • code auto-completion
  • And all the other steroids that are already included in Eclipse (such as projects structure, the chance to integrate to a source control tool… etc)

I can suggest to see the following link in order to get quick getting started about how to set up eclipse and python.  The video might be outdated, however this guy goes direct to the point in how to set up your environment and take advantage of the pydev plugin see at http://blog.vlku.com/index.php/2009/06/10/djangoeclipse-with-code-complete-screencast/

If you wan to know more about pydev and it can do for you, you can check http://www.pydev.org/manual_adv_complctx.html

I’m running out of time, so this is it for today. Unfortunately, I haven’t became the Pythons expert that I wanted… however I’ve spent only 3 days reading about python ;-).  It’s a good start for me (considering that python is not the only thing that I’m learning …. sigh ….)

Anyway, happy coding!

Herberht

Google App Engine


Hi,

Today, I’ve started a new assignment, it’s about learning the Google Application Engine (aka GAE), and BTW I’ll have to write Python Code.

At most of the newbies guys, I’ve started following the Getting Started Project at GAE’s home page (see http://code.google.com/appengine/)

The Getting Started is a good way for knowing the most basic capabilities of the Google’s Cloud. I would like to mention some of the features of the Google’s cloud:

  • Storing Data.
    My college David Mora from Schematic mentioned that Google has adopted an implemented of  NoSql model (see http://en.wikipedia.org/wiki/NoSQL ) instead of the traditional Relational Model. The particular implementation is known as BigTable. Because of It’s a cloud environment there are concepts such as Load balancing are redundancy handled  by the Database framework.
  • Support for Python and Java.
    Applications can be  developed using Python and Java. Additionally, it’s possible to take advance of frameworks that are currently installed in the Google’s servers.
  • Eclipse and Google App Engine:
    There isn’t a official tool for development, except for the Google App Engine Launcher (aka GAEL). GAEL lets users develop locally in a sandbox, and prepare everything for a easy deployment to the Google’s cloud. Besides, It’s possible to use Eclipse and plug ins for a more robust (and free) developing environment.  (see http://code.google.com/appengine/downloads.html)
  • Services: There are a lot of services available for developers. Users can take advantage of these service to create more colorful applications. For example, it’s possible to use Google Account service, Memcache, XMPP, among others.

Currently, all Google users can open a free account, and create their own content. The GAE’s home provides a lot of documentation , which makes difficult to select where to start :-S.

Well, that’s my first step in the Google’s Cloud, and the Google’s Application Engine. I hope to post more detailed information in future posts.

Herberth