Monday, September 8, 2008

GAE-1

I have been working on two different projects recently and have no time to create my own GAE project. Well, one of the project i am working on is on GAE, but its not mine. :) I really wish i could have a break or holiday to take my plan step future and deploy it.

Monday, usually not very busy but since i am working on two tasks, so i didn't enjoy the cold sunny day that much. Heard a decision that the project has been "definitely" postponed. Whatever. Just as i thought before, they can't do it anyway. However, the bad or good news for us is we may still have to stay as "consultants" here for a while. But., i will go home after Xmas and the reason is twofold, i will release them later. :)

Since i have spend some quality time on GAE both personally and for my commercial project, i would like to start a series entries to demonstrate what i have done, and if possible, help people who want to join as well.

GAE wend public at May. When i was at Google Developerday in Sydney at June, it was still tested internally. At the end of June (i guess), GAE wend public testing phase and people who basically have a mobile phone, can register a GAE account. By the time of this writing, every GAE account (one mobile number can only register one account) can have 10 applications.

What an application means in GAE? It means you can have a stand-alone domain name (buy one as you want for $10/year or use Google's), "big table" which represents 100M back-end database storage and a simple Google-made python web framework to ease your pain as a web developer. Moreover, you get complete analysis of your traffic, bandwidth and usage. Sounds awesome isn't? Also, whatever in the web page is up to you. Its not like Google Apps, which you can't add/modify HTML header materials. In GAE, you have fully control of your page(s). You can include whatever meta tags you want and complete CSS+JavaScript support. It also supports several different Python Web frameworks. For me, i choose Django (its verison 1.0 now) because: one, its easy and famous; two, this is my first time to write python app, i dont have enough time to learn them all. Anyway, GAE did an excellent job on integrating Django into its freamwork. Except Django's database APIs (because it has "big table"), you can alsmot utilize all your Django gears.

Cool, you can search Google now in terms of where to register a GAE account and where to start. They have very good online documents. I wish i can write some source code here next time.

Saturday, August 30, 2008

A simple taste in GAE

GAE == Google App Engine

Like my personal web site is hosted at Google Apps, i am planing to create a new one at Google App Engine.

Some useful links before starting:
  • Their official blog: http://googleappengine.blogspot.com/2008/04/introducing-google-app-engine-our-new.html
  • Google App Engine optimizations: http://www.niallkennedy.com/blog/2008/07/app-engine-optimization.html
  • Google App Engine utilities project: http://gaeutilities.appspot.com/
  • GAE cookbook: http://appengine-cookbook.appspot.com/
I believe they are worth to have a look. BTW, heard a "rumor" that they are planing to support Perl as the next citizen in GAE, not Java, Ruby, Groovy or C++. Anyway, i dont care, got my new Python book already.

Sunday, August 24, 2008

Collaboration!?

Somebodies say: we are using Agile.
Someone says: good programmers are "LAZY".
But nobody talk about collaboration. Oh yeh, they all super-duper, they are "agile".

Of course ideally everybody will happy if all aspects of a project are described as in the textbook. However as IMHO, they are not, at least i haven't seen any. But interestingly, i do meet some "text-book" practitioners and the pain is, sometime i have to work with them.

I hate to have meaningless arguments again and again, especially with one specific person, but in reality, lets face it. Text-book man does sounds like textbook. He/she/they perform according to textbook, they talk like textbook and the worst, if you don't follow them, they "convince" you, everlastingly.

Argument of text-book man always starts with "Do you know...?". Yeh, did you see the question mark in the end of the sentence? Good, if you say Yes, they will say: "then why don't you do it?". On the other hand, if you say No, they will say: "ok, let me explain to you." What happens next -- be prepare to hear a speech or presentation in terms of how people record "the same situation" in "ideal world" and how they "did" it. Importantly, you must show your patience, otherwise they will keep going and going until they sense you are "convinced". Annoyingly they always presume everybody in the project has read the same book or has the same experience. If you don't, they will force you to do everything in their way (its in the textbook, see? Of course its the best!). Basically, they always right.

How to deal with text-book man? I don't know. I tried to ignore them, but trust me, it doesn't work and that's why i keep emphasizing "be patient". I guess the only way to do is try to get yourself be more "text-book" than they are. When they finally shut up, you can come back into reality and continue the work.

Yes i know time has been wasted in these meaningless arguments, but lets face the reality. I am glad that so far no textbook has described any "solution" for this "rubush time", otherwise there will be a infinite loop -- a really really terrible loop.

Thursday, July 31, 2008

Messy

Typically an SOA project: big, messy, massive products and locations, paper waste, single Enterprise prod vendor and etc. However, worst of worst, two departments belong to two consulting companies, and, they don't know each other! Moreover, one of them is product definition team, another is the product implementation team. What a wonderful project!

We, are in the middle, scary isn't it. We read prod definitions everyday, we use prod system everyday, and we confused everyday. We just surprised that why not those people never thought to sit together face-to-face to fight each other? Email? You kidding me. Do you know how many emails have been printed in the printing room and just left in there? Intentionally? I don't know, they probably have too many emails that yelling at each other to read, but they do remember to print them out as a physical evidence (prepare for the system crash in day two).

I don't know whether SOA defines Collaboration. It does have governance. However, does it covers collaborations as well? We heard testers complained about the crappy system again and again. And the explanation from "top" people is: we are using Agile. Fuck agile. Its a methodology, not an excise for this crappy, selfish, buggy system.

Back to our painful days: PD people release new PDs day after days to prove their productivity. Dev team creates version after versions of this buggy system. So what we have? We have defects of defects; we have new-version and old-version products running in the same system, simultaneously!! Our so-called manager(s) are still sitting in the meeting room, 8 hours a day, 5 days a week, to talk about how successful their project is.

Does SOA has anything to do with this mess? If not, then stop using this term. If its technical, then it is technical. If it is business, then it is business. If it is both, then screw you. Oh, sorry, forget to mention a funny thing: they said, they just brought a new ESB. WTF. You know what, i am gonna call day-off for the next 2 weeks to construct my first workflow. Hold on there buddy, i gonna build the world-first wooden workflow which is totally SOA applicable.

Wednesday, July 23, 2008

Cloud+SaaS+RIA = ?

All hot buzz words, huh! But think them together, if we get cloud and SaaS/PaaS and RIA together and put them all over to the Web to build a super online application, then what is it? Web 2.0? Web 3.0?

I payed lots of attentions recently on Google's "new" App Engine. I even picked up Python and start to read it. Well, to be honest, i started with Javascript first coz its more related to my current work (Action Script). Gotta lucky to say that my first project involves with Amazon EC2, so at that time i was told it was all about Cloud. But seriously, what is it? No idea.

Until recently when i saw Google App Engine, i remembered the old story about EC2 and start to do my own research on this topic. IMHO, i think cloud is more hardware-focused rather then SaaS or PaaS which are more application or software-oriented. To start my argument, first i would like to quote a famous word from Thomas J. Watson. You may not know him, but do you know IBM? Yes, he is his father:
"I think there is a world market for about five computers"
Furthermore, Professor Douglas Hartree has the same words:
"I went to see Professor Douglas Hartree, who had built the first differential analyzers in England and had more experience in using these very specialized computers than anyone else. He told me that, in his opinion, all the calculations that would ever be needed in this country could be done on the three digital computers which were then being built — one in Cambridge, one in Teddington, and one in Manchester. No one else, he said, would ever need machines of their own, or would be able to afford to buy them."
You can find them in here. From this point i start to think about Grid and distributed computing, even the Sci-Fi story: SKYNET. In theory, do skynet (exclude AI) and cloud have any difference ("physically")?

Cloud, deterministically emerged as it would be, comes to our life "all in a sudden" and changed all hardwares and infrastructures as what they used to be. On the other hand, I believe when you talk about SaaS or PaaS in general terms, it is naturally to think about software or platform, and as a matter of fact, they do represent s/w and s/w platform*. And that's the reason why we come up with the further idea of SaaWS (Software as a Web service), which is lodged in SOA world. Consequently, think about this: in the ideal world, when all software are exposed as SaaS, then where they should be (hosted) and how we can access/utilize them?

Easy, at "server side", Cloud. At "client side", RIA (i wouldn't bother to say Web browser). Why? Because Cloud promises us universal accessibility and RIA gives us native application-like look and feel.

Well as my story continues, i gotta mention RIA, which is short for Rich Internet Application, might be another misleading name as what Web service does in the past 5 or 10 years. Firstly, its not necessary to be internet as most RIAs' aim is to implement MVC at client-side and provide end users with "offline" functionalities. Secondly, why you call it Application? Why not technology, or platform? An application is more like an ERP or Websphere but our RIAs today, e.g. Ajax, Flex or Sliverlight, are more like technologies or "platforms". But anyway, as we all clear about what it actually means, as we do for Web service, its totally ok here.

OK, so, are they real? I gotta say i dont know. I do believe the story of skynet. In the future, there will be some super computers that have been connected together and people only need a "rich" client to access their data no matter where they are and what they want. You will not worry about upgrade your hardware anymore, no data lost, no synchronization. However, is there any side-effect? I think the answer is yes, Matrix.

Some "earlier" Cloud applications you might interest:
* Google App Engine
* Amazon EC2
* Apple mobileMe
* Salesforce.com
* Microsoft Live Mesh
And a lot more, go nuts...

*: Search and join the debate between Cloud Computing/SaaS/PaaS.

Sunday, July 20, 2008

When does Final Fantasy XIII available on Xb?

Get a little bit of boring of playing my GTA 4 now. However, to summarize what happened in this week: E3, oh yeah! Saw the new fantastic Resident Evil 5 trailers, so awesome. But the bad news is, probably all of you have noticed in Gamespot.com, that the release date of RE 5 has been changed from TBA 2008 to TBA 2009, damn! We gonna have to wait for at least one more half year to get this challenging game on shelf.

Most importantly, the breaking news is (oh actually was), ES changed their decision finally and planed to release FF13 on Xbox 360; and the "damn point" (probably will piss off all PS3 players) is: cross-platform copies will be released on same date. Wtf, have pity on those PS3 processors, you all screwed (no offense honestly, at least i don't have to spend another f**kin $500 bucks. So missing MG4).

All old gamers probably still remember what happened almost 10 years ago, that Final Fantasy 7 was planed to be released on SEGA's machine but finally changed to Sony's Play Station 1 (only and no ported version). It was really a drama at that time and it might be unbelievable that this game can be considered as the main reason for SEGA's later Video Game Industry failure. Well, actually SEGA doomed himself when the first DS machine released, but anyway that's another story.

Back to 1997, PS1 got all dreams: Final Fantasy, Bio Hazard, Parasite Eve, Winner Eleven, Dragon, even Ace Combat, oh and my favourite, Rodge Racer. Now what his descendant has? Compared with Xbox 360, PS3 only has Metal Gear 4. So i am really happy that less-and-less game will be released on PS3 only, and my bias here is, i hope more-and-more Xbox-only games to be released soon (come on Gears of War2, where r ya?).

Anyway, back to the topic. No official details have been released so far, so i don't know how long we have to wait to watch the wonderful FF13 opening. I always saying Xbox needs an excellent RPG. Dead Raising did a good job, but not enough tho.

Ciao, shooters.

Tuesday, July 15, 2008

Google Flash Map

Well, my flash map toy works pretty well recently till i found a tiny problem when writing my own map control.

Basically my control does a simple thing: display lat and lng values when you navigate the map. This is done simply by registering a event listener to Map Move Event, more specifically MapMoveEvent.MOVE_STEP.

For example,

public class ControlLatLng extends ControlBase {
...
public override function initControlWithMap(map:IMap):void {
var latLabel:TextField = new TextField();
...
latLabel.addEventListener(MapMoveEvent.MOVE_STEP,
function(event:MapMoveEvent):void {
latLabel.text = _map.getCenter().lat().toString();
...
}
);
...
}
...
}

Well, gotta say this is what i thought at first that my label listens to Map Event directly. Then once there is a move, label text will be updated correspondingly. However if you add and run this code, you will find it is totally wrong: the listener does not work at all.

Back and forth, forth and back, i was jumping everywhere to find the answer: why doesn't it work? I even analyzed Flex event's 3 different stages but in the end i found answer from the discussion group that i gotta use _map to register this listener instead of my "local" label. But why!?

Back to Google Flash Map official tutorial, i found this:

"The Google Maps API for Flash adds to this event model by defining custom events for objects within the API. It is important to note that the Maps API for Flash events are separate and distinct from the standard Flash events. Note that MapEvent events may bubble up from target objects to container objects, though events in the Google Maps API for Flash are generally designed with specific targets in mind."


Clearly by this, a tiny little piece of my mind reminds me: Flex events, for example, mouse events can not be utilized directly; instead, we have to use Map Events, Map Move Events etc. One thing after another, i remember in Google Developer Day, the map presenter did state that Flash Map is actually loading "an extra" swf into your client app. Meanwhile, i found Ted's blog:

"The Google Maps Flash API is the first major component to work distributed as the core logic remains on google servers and the API you program with is just a simple proxy loading the remote SWF and that SWF talks back to Google to get data and tiles as a service."

And from Francesco Rapanà that

2) Pay attention to the events: you can't use the standard Flex events but you need that ones provided by the Google SDK, such as MapMouseEvent.CLICK.


So from here, the answer might be clear: events that Google Map has are different and can not be utilized directly in our "local" flex app -- obviously they are two separated applications and utilizes "the internal API" to glue them together.

So what the architecture of Google Flash Map? Hmmm gotta say i couldn't find any answer from Google (of course, damn). But look at this from Google IO:









This might not clear enough, but this one maybe better:















1.1swf is embedded in client HTML.

OK gonna stop here but i wish they will open-source this project soon.