Monday, December 13, 2010

Age++

Person jon = new Person();
int prevAge = jon.getAge();
int currentAge = prevAge++;
jon.setAge(currentAge);
jon.setFelling(new Feeling('grateful'));
Time move very fast. I just realize today I am already 1/4 century. Nothing special with birthday except we are getting closer and closer to die. But I don't know why, I am very grateful today.

My mom said (like Forrest Gump phrase) I was born in small rented house exactly 25 years ago. At the rain season, my mom said too, the roof often leaked. Even we don't have personal bath room inside house because we are very poor. So we must share outdoor bath room with neighbor. My mom said again, she always bring me walk around selling something for our living. Often mom walk very far, selling imitation jewelry or puppet cloth. I am exactly don't remember how it was at that time. What I remember I always have great mom, father that I believe always love me, family that always care and friend that is everything. Human is nothing without other, so do I can not stand without other.

Now about 25 years forward. Life not as bad as previous. But I am ordinary human that never satisfy. Keep greedy and more greedy day by day. Get motorcycle want to buy car, after get car wanna get another more expensive car, again and again. Suddenly I to stop and contemplate. I already have everything. Why I am always complaining. When I see down bellow there still very many people who struggle for their life. At the street light, at the dark and dirty traditional market, etc. Life is too futile if we are always complaining. I also realize at the opposite when we see above there are many people too that looks life very happy and peaceful. Have home like a palace. Have luxury car with unimaginable price. Have money that seems never run out. They look very happy. They do? I don't think so.Stop complaining, be grateful, keep chase whatever dream we have. This is one sentece statement that I rise today. There is no restriction getting whatever we want as long with appropriate way. But stop complaining. God do not playing dice when determining human destiny. God have very complex rule but I belive the rule is very fair. No more grumble, let's move. Continue college, buy nice car, buy nice home, go to any place we want, get perfect job, open profitable business, there is no limit in this world, except artificial limit that we have created by ourself.

Happy Birthday Jon. The day you was born, God have prepared your destiny canvas. You have chance to write real destiny above that canvas. Stop complaining, be grateful, keep chase whatever dream we have.

Wednesday, December 8, 2010

Small Personal Review of Samsung Galaxy Tab P1000

Small review about another new gadget. I just have time to post this right now.

Samsung Galaxy Tab try to follow Apple iPad success in Table PC business. When iPad is using IOS, Galaxy Tab using Android. When iPad have 10' screen size, Galaxy Tab provide 7' (next galaxy tab will available with 10' screen). There is no absolute answer deciding better size. Smaller will be easier for mobility. But larger screen make more enjoyable watching movie, browsing or playing game.

This post is not intended to make comparassion Galaxy Tab vs iPad. A lot of people have do that. Let me share my personal feeling after about more than 1 month playing the Galaxy Tab.

I was buying Galaxy Tab at its launch date in Indonesia on 30th October 2010. Samsung have very good pre-marketing strategy before product launch to make so many people curios to this tablet. It can be seen at launch date in Plaza Senayan Jakarta Samsung sold about 1000 Galaxy Tab in one day. For my self, to get this tab, I have to queque from about 10 AM till 4 PM spent almost 6 hours. Other reason that make so many people enthusiast for the Tab because promo price plus accesory bonus that is offered by Samsung at launch date. Normal price is at 7.000.000 IDR but at launch date buyer can get 1.000.000 IDR discount. I am never regreting for such long queuing time for getting great device plus good promo package.

Let's start talk about the device itself. Tablet actually already exist since long time ago. But only after iPad was born the hype is coming. Tablet positioning is between laptop and smartphone. The functionality of tablet that often used are internet browsing, e-reader and multimedia. Galaxy Tab almost perfect filling those needs. Galaxy Tab come with 7' screen size, about 4000mAh baterry capacity, the weight is good enough and the body design very solid.

Screen size is appropriate enough for me. Bigger screen size will sacrifice portability. For now 7' is very very perpect size for me. Great for internet browsing and e-reading also still nice for gaming or watch movie. Next is about battery life. With normal use, some time for browsing, little time play Angry Birds, another time litle music, several sms and email, also one or two phone call, galaxy tab will stand for 24 hours. I never try to see how long it will life for continously playing video. But again the power is enough for me. One note about battery, galaxy tab baterry is not user replacable. We cannot open baterry case. So when it is needed to change baterry we have to go to service center.

Next is about it operating system. Galaxy Tab use newest Android version at its launch time, Android 2.2 Froyo. There are so many critics about this choice because google itself state that Froyo is not optimized for Tablet size. But as far as now there is no big issue around this. I must admit there are several application that looks ugly. Several of them is blur because have to stretch following screen size. Some of the other looks bad because remain black screen around because application don't stretch at all. But there are still a lot of compatible application. Further more, right now Android 2.3 is already launched. If the update come, there will complete fix about this issue.

Next is about Telephony. Please never think to use galaxy tab as your main phone tools. Even though telephony is one of biggest galaxy tab advantage over iPad, I will consider to use phone call too often. First the tab is too big to put side of our ear and of course we will look stupid. Second, galaxy tab doesn't have ear piece, the voice will heard very loud from its streo speaker. Third, even though we can use handsfree and bluetooth headset it will less practical compare with smaller phone. Galaxy tab sim card is placed on the side just beside micro sd slot. So we can both replace micro sd and sim card easily. But when poping out sim card galaxy tab will automatically restarted.

Next is about messaging. No to much feature to talk around text messaging. I myself still prefer use third party sms message handcent sms. But integrated email client provided is very good. I use that.

Next is multimedia. I don't want to describe too much. Conclusion in this feature is, I am very satisfied. Galaxy tab includes 3.2 Mega pixel camera with led flash. Don't expect to much from this. But I still have to proud that the picture quality still acceptable for share to internet. Don't forget, galaxy tab also have front camera. I don't know how to take picture using this camera. The only one application up to now that utilize this front camera is Fring. I will waiting until skype will update its version for galaxy tab. Must be will be very great.

Last is about personal use. One think that I have to admit there still some laggy when I use the tablet. For example when I swype in image galery or menu. Some time when I do heavy internet browsing the galaxy tab will freeze. In some case I have to do force restart. But that seldom happen. The final conclusion I am very satisfied with this gadget. Probably galaxy tab is the most advanced gadget I have ever bought. Of course there is no perfect devices. But up to now I really hapy using this tablet and recomend this for every of you that have plan to buy an e-reader or tablet.

Wednesday, October 13, 2010

Google DevFest 2010 Live Report

At friday 8th October 2010 I was attending first Google developer event in Indonesia, Google Developer Festival 2010 that was held in Bina Nusantara (Binus), at Anggrek Campus Jakarta. The event itself is aim to introduce new technology usefll for developer most of them relate to use of Google technologies. If I can say personally, Google DevFest is miniature version of annual Google I/O. Sadly even though participant have to pay to attend Google I/O, they get HTC Evo and Nexus One. In DevFest at least I get Android puppet and several T-Shirt.



Google DevFest Jakarta bring several good session. At first there is keynote session that discuss general about current status of the web, about HTML5, about Cloud Computing and of course about Android. The session was brought by Alan Nobble. Unfortunately I forgot about his role at Google.


Second session is about Introduction to Android and Key Froyo Features. Froyo is code name for Android 2.2 version. This session was brought by Tony Chang (CMIIW because the name tag that consist the schedule is left in my home). The speaker is great informing the topic. The main information of course about android. But the speaker also emphasize about the future of internet is mobile internet. Its mean a lot of opportunity to entrepreneur in mobile platform. A lot of opportunity to monetize and make money. Second part of the session is talk about Key Feature of Froyo. I hate myself for this topic because, till this time my s*ck Xperia X10 gear still at Dhonut version (Dhonut is code name for Android 1.6). Sony Ericsson promise to give Eclair (Android 2.1) update this September is bullshit. Very loose hope to talk about Froyo update. Without describing too much, Froyo bring significance improvement over older version of Android. The main improvement is for speed processing that can be available by implementation of JIT compiler in Dalvik Virtual Machine. Google claim speed of processing is improve about 3 to 5 times faster. Other speed improvement of Froyo is on its JavaScript engine. Eventhough not shown on DevFest, last Google I/O Froyo JavaScript Engine has compared against Eclair JavaScript engine and iPad JavaScript engine. The result is Froyo JavaScript processing faster versus Eclair processing and much much much more faster against iPad safari JavaScript processing. For summary Tony description of the session topic is good. I got one Android puppet by answering the world population when he overview about the opportunity of mobile market in the world.

Third session was about HTML5 chrome. The session was brought by Arne Roomann-Kurrik. One impression about Kurrik he is very awesome speaker. I don't bored listening all whole of his session. He speak about HTML5 especially in Chrome. Kurrik made a lot of demo most of it relate of the use of canvas feature in HTML5. At the end he also made a demo how even HTML5 application can take input from hardware sensor. Kurrik moving his laptop up down and turning it little bit to show how the HTML5 application can respond to that input. Other great thing, even his good presentation is made full by HTML5.

Fourth session was held after break time. The session is brought by Shawn Sheng. I think he is the the oldest speaker among other speaker at DevFest. Shawn speak about Maps API on mobile. He talk a lot around map implementation on iPhone and Android. At fast the implementation of map API on those mobile device is done in native way. The map is rendered in native widget of Android and iPhone. This approach have some inflexibility because native widget have some limited access to full feature of Maps API. The other approach is using mobile browser when application need to access Maps. This approach can fix flexibility problem but make application looks unnatural. Then Shawn offer to use hybrid approach by using web widget either on Android and iPhone. So the Maps interface still integrated on its own application widget without need to open browser but the application can access full feature of maps API.


Fifth session is one of my favorite speaker on DevFest. Timothy Jordan Jordan brought topic about Social Web. If you see this person, you maybe will think he is more like rock band vocalist rather than software engineer speaker. He bring the presentation with very awesome. He also make a lot of joke around the session that make the audience feel comfort attending the session. Timothy speak a lot about social web and some open standard relate to that. He speak about oAuth, Atom, salmon-protocol, etc.

The next after four session is parallel session. I little bit lost at that evening because the schedulle little bit mess up. There are some session about Android UI pattern and Android Demo. There are also session about Web Entrepreneur panel, with Andrew Darwis from kaskus, Selina Liman from Urbanesia (I made some small talk with her before she go to the stage and the person from Koprol (I don't know his name). Beside that session evening schedule is about lab session practical session from theory of morning session like chrome, social web and Geo API. I myself took Geo API lab session. In that session participant try litle code guided by the speaker. The intention of lab session fundamentally is good. But the problem is because the time so limited, the result is not too optimal. Beside lab session there is also "office hour" the term that aim time for participant to discuss straightly to the speaker about particular specific topic or problem.

Last session that act as closing is panel discussion. At the afternoon the committee give chance to participant to write question to the all of speakers. The best question then answered in that last session. A lot of good question and answered with good too. The one of I really remember is when someone questioning: "Why Google evangelist use competitor product?" (competitor here is refer to Apple because most of the speaker use MacBook). But this question can be answered with very elegant.




For summary, the event is very great. I have learn many things and have more motivation to learn more, to code more and to innovate more. IT especially relate to web and internet is technology that inseparable from our daily life. There are a lot of opportunities for us to improve that. There are a lot of opportunities to make life from there. Make good application that can be useful also make money from that by monetize it with good entrepreneurial concept.

Wednesday, August 18, 2010

IT Recruitment in Indonesia

In one of episode of temanmacet podcast there was discussion about working abroad. The discussion revealed that currently many IT resource from Indonesia that go to abroad instead develop domestic IT power. The main reason is very reasonable, there is no appreciation from their own country for their professional skill.

One of that dis-appreciation can be seen from vacancy for IT resource in many job vacancy website in Indonesia like jobsdb and jobstreet. Many company who search resource don't favor specialization. They have mind set to take most advantage with less salary over for the candidate  that will be recruited. Many of vacancies posted state very much requirement for single position

This some artificial example that condition:

..URGENTLY REQUIRED..
We are a growing company bla bla ....;
We are growth and expansion, we are looking for talented professionals to join our team.

Java Programmer
Requirements:
    * Java, Linux & Oracle is a must.
    * S1 Degree from related background and reputable university.
    * Experience in using Java Web Programming Language.
    * Experience in using Linux & Windows Server Operating System.
    * Experience in C#, C++ and Visual Studio .NET.
    * Understanding Design Patterns.
    * Understanding Model-View-Controller Architecture.
    * Understanding Refactoring.
    * Good attitude, commitment to work and good team player.
    * Adaptive to new environment.
    * At least 5-7 years of working experience in software development.
    * Good problem solving, analytical, and leadership skills.
    * Deep understanding on database design, application design and architecture.
    * Can fix Air condition system
    * Can be office boy replacement
    * Can washing car and employer personal pet

The last three of the requirements is my joke. I just only want to describe how naive some of IT company in Indonesia. There is something natural when someone want to get economic value in recruiting employee. Pay as low as they can and pretend get someone that understand more than 4 programming language, fluent in more than 3 database, have good habit in more than three framework. Even superman cannot fulfill such requirement.

Of course there are reason why most of IT company do this (most but not all). IT industry in Indonesia can be considered still in infancy. Most company stand less than 5 years. So most of it still search appropriate form. The big mistake of most that company is, company tends to fulfill whatever clients need. Also from discussion in temanmacet podcast most IT company in Indonesia apply rule PALU GADA (apa lo mau gw ada , English: we can provide whatever you want). By applying this rule the company push developer as the main actor in producing their product. If client need application that will be built using PHP, the developer can build. When the client need other application that will be built using Java, same developer can code that. At the end the developer is dead.

If we consider carefully, applying Palu Gada approach at long term is destructive. This rule favor generalization instead of specialization. I don't too understand about business, but I believe good business is selling something that specific. With more focusing like that, company can provide something with good quality assurance instead of buggy software or late development project because developer to stress buy unrealistic requirement and time constraint.

So what can we do to fix this problem? From employer point of view, is stop Palu Gada approach. Be more specific. By doing this company can produce more stable software with no late delivery. If client offer project that unrealistic with current human resource and time line reject that. Many IT company that make big mistake by forcing itself accepting such unrealistic project.

From employee point of view we can fix the problem to more specialized in one skill instead of to be too generalist with many skill. The most obvious thing that can employee candidate do is stop put too many buzzword on CV. Moreover of you put the buzzword just to make your CV looks cool without actually understand what the buzzword mean. Only put skill on CV that really represent your main skill. If we put too much, when we start work, employer also expect to much that mostly outside our capability to handle that.

Probably the post is getting to long. I will continue the topic later on. I realize many problem analysis and how to solve it is little bit to shallow. But that is roughly problem that happen in IT recruitment in Indonesia.

Image from: http://ileadjobs.co.za

Sunday, August 15, 2010

Java Must Have Book for Beginner

This post is pasted from my previous blog written 4 January 2008.

I am delving in learn Java programming language in this last 2 or three year previous. My interest in Java, perhaps is caused by my previous programming language I learn before, C language. We all know, although there is so much difference between them, Java inherit many fundamental syntax from C and C++.

Java is easy. Many people say that. Maybe it is true if we compare to the complicated C++. But, more than that, Java is not merely programming language. Java now is a complete huge framework that consist programming language itself, Application Programming Interface (API, a.k.a library that is in enormous amount), Java Virtual Machine which run byte code over operating system, etc. It seem clear now, learn Java demand our great focus and intention. Because it is not as easy as we imagine.

Thanks for Java’s book writer around the world and complete Java documentation and tutorial from Sun, there are always path for whom want to learn. Spare time for reading good stuff and continuous practice make Java acquaintance is really possible.

From many Java’s book around, I found several that is must have. First thing to read in learning this language is Java Tutorial from Sun website. But for the first read the tutorial is about too heavy. For experienced learner, tutorial is important reference in learning and developing code. Of course Java API’s reference also have to always exist in the directory for main reference.

The first book that I recommend is Java How to Program written by Deitel. Really complete book with enjoyable colored text that good enough against boring in reading. The books consist all of fundamental material to mid advance material such as basic of thread, GUI and servlet. Enormous code sample is spread around the book that can be tried for learning and doing approach. The next book is Advanced Java How to Program that is consisted advance material continuing the former book.

Although Java How to Program is enough for learning about syntax and the characteristic of Java API, there is no more explanation about build real software. I found two book that accomplish those necessity. Beginning Java Object by Jacquie Barker from Apress and Object-Oriented Analysis and Design written by Mike O’Dochery from Wiley. Barker book explain Java from software development point of view. In that book, reader is guided to build real Java software step by step. O’Docherty more focus in Object-Oriented approach mainly discuss about UML although it is really intended for reader who want develop Java application. Same as Barker, O’Docherty book also consist real software development as example.

Actually there are so many other book in Java Development theme. Some from them are easy to read while the other is little bit heavy. I hope four recommendation for Java Application Development Book will useful to you. Yup it is Java. And it is really phenomenon.

Idea Management

There many think that is interested to discus relate to management topic especially in field of software development. The point that is raised by the topic is, there many of software development process that really take concern in issue management. Bug and problem in application take most of attention. Of course that is something natural. Every software development company eager to produce software without issue and problem.

Moreover, responding this necessity there are so many tool that make issue management easier to do. There are Jira, Trac, Bugzilla and other kind of system that intended to use as issue management tool. By using that system software development team can manage issue that is found. Manage in here mean resolving and fixing issue. The interesting point is even though issue management is very important, most of software development team forget about idea management. Idea management is very important to manage too. There must be very much idea that lost because not managed well. Actually manage in here is just listing the idea and then at some time discussing in group. The question is if there so many issue management software exist is there any idea management software out there? I believe there must be exist. But the most importance is our awareness that beside issue, idea is important to manage.

Samsung Bada Osp::Xml Build Problems

Pasted from my previous blog on 2 August 2010.

Since one last month I discover new mobile platform from Samsung, Bada. With basic skill as amateur Java Programmer I just have very basic skill in c/c++ programming that is used as lingua franca of Bada. Perhaps I know little bit knowledge about pointer. But I lost when need to discover build, link related problem.

One time I need to build application that have parse xml. I put the xml code in OnInitializing method that is extends from Osp::Ui::Controls::Form and I also not forget to include FXml.h at my header file and using namespace Osp::Xml in my cpp file. Here is snapshot of the code:

result MyXmlForm::OnInitializing(void) {
xmlDoc* doc = null;
xmlXPathContextPtr xpathCtx;
xmlXPathObjectPtr xpathObj;

doc = xmlReadFile(“/Home/test.xml”, null, 0); // error here
if (doc == NULL) {
AppLog(“Failed to load xml doc!”);
}

xpathCtx = xmlXPathNewContext(doc); // error
if (xpathCtx == NULL) {
AppLog(“Error: unable to create new XPATH context”);
xmlFreeDoc(doc); //error
return (E_IO);
}

xpathObj = xmlXPathEvalExpression((xmlChar*) “//title”, xpathCtx); //error
if (xpathObj == NULL) {
AppLog(“Error: unable to evaluate xpath expression”);
xmlXPathFreeContext(xpathCtx);
xmlFreeDoc(doc);
return (E_IO);
}

get_xpath_titles(xpathObj->nodesetval);

xmlFreeDoc(doc); // error
xmlCleanupParser(); // error

return E_SUCCESS;
}



Here are the errors:
undefined reference to `xmlReadFile'
undefined reference to `xmlFreeDoc’
undefined reference to `xmlXPathNewContext’
undefined reference to `xmlXPathEvalExpression’
undefined reference to `xmlXPathFreeContext’
undefined reference to `xmlCleanupParser’

This evening I spent about two hour to make above code work. Like I have said, Bada itself actually has provide xml library with namespace Osp::Xml which is subset from libxml2. When I finish type the code I stuck when have to face undefined reference to bla bla bla error relate to method call from Osp::Xml. I already make sure that I have include FXml.h in my header declaration and also state using namespace Osp::Xml in my source code. After spending sometime researching with very minimum information from Bada Documentation and also all internet site I found I need to link FXml library in project properties. Then build problem dissapear and my code can run smooth now. Yippie.

Saturday, August 14, 2010

Facebook: Why It Gains Momentum

Pasted from my previous blog posted 20 March 2009.

Social networking site becomes trend after dot com booming ruins many dot com company around year 2000. The new term Web 2.0 appear as a new way to use internet as interaction point. Web 2.0 bear some familiar stuff to us currently like social networking site and weblog. Those two stuffs offer common thing. Interaction between user from everywhere is linked by internet. We can communicate and find friends in social networking site. We can publish something, either writing, picture, video on weblog. From there, internet is never same as before. This post will try to discuss about social networking site and its impact to our daily life.

First social networking site that I know is friendster. I became member at 2005. At that time, I really astonished about interaction possibility that is offered by friendster. The possibility to find friends, whether we have knows, or not recognize at all. See friend profile, browse their foto album and give testimonial to our friend profile. For several years friendster become most visited site, at least in Indonesia. A lot people being connected and find new friend use friendster.

Not long after, several new term in internet technology is appearing. Most famous in web developer point of view is Ajax, something that is often related to Web 2.0. In easy way, Ajax can be interpreted as a technology that make user and website interaction more natural. User can click something on site and immediately got response without have to wait whole page rendered like Web 1.0 has done. Many Ajax application then was born use Ajax technology. We know Gmail, Google Earth, Plurk and Facebook.

Currently, after friendster booming, it seems Facebook try to replace friendster position as the most favourite social networking site at least in south east Asia, my region. Several power feature offered by facebook are rich applications and more dynamic interaction. At 2007 Facebook has launched Facebook developer platform and then open posibility to many developer to develop custom application which can be used by facebook user. This offer make Facebook really rich of application from simple pet game, racing game, etc. Dynamic interaction is presented by facebook use a lot of comment can be put by user to another user. Comment to photo, video, etc. We also can put something on other user wall. Wall is something that belong to user where another user can put many things on it. The most favorite for many user is status update. We can put whatever activity we do, whatever thing in our mind on status update. Interestingly, many other user will have same interest and put some comment.

Beside those 2 reasons, the other factor which make facebook more gain momentum is mobile web that become more common today. Recently we can browse website from everywhere. We can post blog content, send email and even chatting use whatever chatting protocol. Updating or see other user update on social networking site seems to be an interesting activity for us. When we on train, we can check other friend status, respond on it. We can browse their photo and maybe make online chat use facebook messenger. So, for other social networking site, it is your time to make new innovation, otherwise, facebook flood will ruins all of you.

Programming Language whose write JVM

This post is pasted from my previous blog posted 15 June 2008.

One of interesting point that is considered as the advantage of Java programming language is its portability. The jargon for that ability is really famous. Write once run anywhere (WORA). Although it will be needed hard work to write code which is really portable, I think the statement is not too exaggerate. Since it design phase, Java is prepared to be much portable. We can see the fact surround us. There are so many Java. In our computer desktop, laptop, expensive server, standard mobile phone, PDA, set top boxes and many more.

For who has read several first chapter of Java introductory book will know how that portability will be achieved. Different than former programming language, Java offer different approach in developing code. Running code in Java is consist of two phases which are, compiling source code and interpreting it’s result. Compiling phases use javac tool which change java source code with .java extension into intermediate code named bytecode with .class extension. Later this bytecode will be interpreted by java tool so we get the software run.

Different than other programming language, bytecode is not run straight above operating system or platform. Bytecode run over stuff called Java Virtual Machine (JVM). At that stuff .class file is interpreted a.k.a run by java.exe (in windoze) tool . Various platform has it’s own JVM. Windoze has its JVM, so that Linux, Solaris and other operating system. Also mobile phone, PDA, set top boxes has JVM. That’s why bytecode can run in various place and the portability is really approachable.

The question is, who act as a tittle of this post, what programming language has written that JVM. I believe rarely introductory java book will discuss much about inner mechanism of JVM. Several complex hardware level or compiler construction book perhaps will have wide portion for this topic. But I will prefer go to cinema and watch fun movie rather make my head dizzy reading such book.

So what the answer? This post will be useless by asking without answering. Ok here you go. After reading one of Good rarely Introductory Java book like I said above (the title is Java in 60 minutes A Day by Rich Rapossa from Willey) I found that JVM is written by C++. After all of advantage is offered by Java it still have to admit superiority of old complex difficult of C++. Yeah when reach the necessity of speed and hardware accessing such as needed by JVM, C++ is always needed.

My mind then imagine, if later there will be new programming language is founded. Let’s call that Sumatera programming language (Sumatera is another island in Indonesia such Java). Sumatera run above Virtual machine called Sumatera Virtual Machine (SVM). SVM abruptly coded by Java. And JVM coded with C++. I thing only crazy people will create that.

Just joke.