Pages

Thursday, November 27, 2008

Thoughts about [clean code] from famous persons

I am reading the book: "Clean code - a handbook of agile software craftsmanship" - Robert C. Martin. In the first chapter, I found some interesting thoughts about "clean code" of famous persons in Software Engineering. I post them here. Hope you like these thoughts.



Bjarne Stroustrup, inventor of C++ and author of The C++ Programming Language


I like my code to be elegant and efficient. The logic should be straightforward to make it hard for bugs to hide, the dependencies minimal to ease maintenance, error handling complete according to an articulated strategy, and performance close to optimal so as not to tempt people to make the code messy with unprincipled
optimizations. Clean code does one thing well.


Grady Booch, author of Object Oriented Analysis and Design with Applications

Clean code is simple and direct. Clean code reads like well-written prose. Clean code never obscures the designer’s intent but rather is full of crisp abstractions and straightforward lines of control.


"Big" Dave Thomas, founder of OTI, godfather of the Eclipse strategy

Clean code can be read, and enhanced by a developer other than its original author. It has unit and acceptance tests. It has meaningful names. It provides one way rather than many ways for doing one thing. It has minimal dependencies, which are explicitly defined, and provides a clear and minimal API. Code should be literate since depending on the language, not all necessary information can be expressed clearly in code alone.


Michael Feathers, author of Working Effectively with Legacy Code

I could list all of the qualities that I notice in clean code, but there is one overarching quality that leads to all of them. Clean code always looks like it was written by someone who cares. There is nothing obvious that you can do to
make it better
. All of those things were thought about by the code’s author, and if you try to imagine improvements, you’re led back to where you are, sitting in appreciation of the code someone left for you—code left by someone who cares deeply about the craft.


Ward Cunningham

Ward Cunningham, inventor of Wiki, inventor of Fit, coinventor of eXtreme Programming. Motive force behind Design Patterns. Smalltalk and OO thought leader. The godfather of all those who care about code.




You know you are working on clean code when each routine you read turns out to be pretty much what you expected. You can call it beautiful code when the code also makes it look like the language was made for the problem.



If you are a developer, I advice that you should read this book. This is a very exciting book!

My poem - kiss

I like poems and I do poetry (just in Vietnamese) sometimes. Today, I have a strange thought: why I don't try to translate one of my poems into English? I hope it is still poem in English also. Ha ha.
This is the original Vietnamese version (hope you like it). In this poem, I wrote about a kiss.

Nụ hôn
Bóng tối chập chùng em và tôi
Phập phồng hơi thở cháy bờ môi
Tóc em xõa lấp màn đêm giá
Phủ cả hồn ta kín mất rồi



Translate into English:

Kiss
Is the dark moving or
... you and I?
Hurry in breath, lips are fire
Your hair is so black, cover the dark
Cover my soul... and my life

Do you have any idea about this translation? Is the translated version a poem in English?

Tuesday, November 25, 2008

Gift for you - my favorite VN song collection

I like music, especially songs of Pham Duy, Trinh Cong Son. In VN, we called these songs "Golden songs".
I posted a lot of my favorite songs in another blog: http://baihatvang.blogspot.com
I hope you like them also.
Pham DuyImage via Wikipedia

Monday, November 24, 2008

Open source collaborative working solutions

My girl friend is working in a perfume company (an inter-continent company). The CEO of this company wanted to find a solution to help his workers work in a collaborative environment with highest efficiency. They also need a Customer relationship management system to keep track of their customers information and their business goal. He asked the IT staff to do it.
As the result, they choose 2 software: Highrise for CRM and TeamworkLive for collaborative working system.

I do not have any idea about their choosing. However, I asked myself: what are alternative open source solutions for these needs. Actually, I am interested in collaborative working model. For a long time ago, I've had an idea about creating a software solution for collaborative working, but I do not have enough time to research carefully about this idea at that time.
In this topic, I only show you some open source solutions for collaborative working model that are available on Internet. I haven't had a detail look on these solutions. I hope you can. If you have more helpful information about these solutions or other solutions, please share to me also.



MindQuarry :
Mindquarry is an Open Source collaborative software platform for file sharing (documents, images, media files, etc.), task and project management, team collaboration and Wiki editing that meshes simplicity and functionality. As a result, knowledge workers are able to connect with team members and share information from wherever they are, effectively improving team-work and increasing productivity within the company.








Teamwork

Teamwork is a proven, reliable and friendly web based software solution for managing work and communication in any field. Groupware and project management features are used in an integrated environment, from which you can coordinate and manage hundreds of projects at once. It offers us some cool features for: Project management, Issues tracking, Document managing, Work logging, Smart features (shared calendar, prioritize assignment, ...)
Teamwork has an open source version (written on Java, Database independent). I downloaded it but not deployed yet. I will update you if I have any more information.







Dimdim:
Dimdim is the leading provider of open source web meeting software.
Dimdim is a free web conferencing service where you can share your desktop, show slides, collaborate, chat, talk and broadcast via webcam with absolutely no download required for attendees. It also offers us an open source version. We can customize it as our real needs.









kablink

A single Integrated Collaboration Environment that establishes a collaborative group workspace of people, teams, functions, tasks and content all working together to drive effective teamwork to the next level.

Kaplink is built from Java with Hibernate, Liferay portal and use Lucene as the Full text search solution behind.



If you have any other open source solutions for this, please share to me!
My slogan: Share to get more. I like this.

Sunday, November 16, 2008

livemocha - a success story of social network + e-learning

Image representing LiveMocha as depicted in Cr...
Recently, social network is emerging as a new trend. You can see a lot of social networks over the world: MySpace, Facebook, ... They appear like stars after Big Bang. Each social network has its mission in the real world (not only on Internet). The strength of social network is its community. When you have a big community, that means you have a big chance to get more money!

Actually, social network is only a type of model (a social model on Internet). If you can find a good idea to apply into a social network, that means you created a new model. For a long time, I tried my best to do that (invent new thing with social network). When researching, I found some of my "new" ideas exists in the real world. One of them is: combine social network with e-learning.

This type of social network appear recently. I strongly believe that this is a good model for e-learning. One of success web site applied this model is:

http://www.livemocha.com

The idea behind is very simple: "learning new language by friends over the world".
It creates a big community who wants to learn language by communication directly.

I found a very interesting analyzing in the CEO's blog of livemocha

Based on various research reports that I have seen, this is a market that is well over $20 billion in size with over 350 million people all over the globe learning a variety of different languages. In many countries, people can double their income by learning English because they can get more attractive jobs in industry. And the need has become even stronger given increasing trends towards globalization, immigration and travel.


Currently, Livemocha secures $6 million in funding led by Maveron.
Do you think this idea is interesting?

Saturday, November 15, 2008

Google Analytic example - How business view can help you ?

Yesterday, I received a request from a customer: create a tool to track statistic data on email campaigns. We must find the solution with cheapest price and lowest development cost.

Actually, I've used a lot of statistic tracking tools like: Google Analytics, SiteMetter, ... However, I thought that these are tools for web sites (not for email) because the real mechanism behind these tools is: the client (browser) must run a piece of Javascript to send statistic data into their server.
With email client, we can not run script because of some limitations regarding security.


I get in stuck.
How to solve this issue?
The CTO told me: I see that some companies use Google Analytic to track statistic data related to their marketing email campaigns.
Oh, really? I can not believe in that.
Search on Google, and this is the result:

http://www.epikone.com/blog/2008/11/04/email-tracking-with-google-analytics/

This is just a very simple idea: adding parametters into the link we want to track in email content. When user reads the email and open the link, Google Analytics will track this.
To view statistic data, user will use the filtering parameters to select data they want to view.

Oh! my god. Great
Actually, this is not a quite 100% good solution. However, it can make use of Google Analytic in a new way.



I think this is invented by a business man, NOT from any developers or technicians.
WHY I said that?
NO developer can find this - because they always think about complete and quite 100% good solutions.
In the mind of a business man, he wants to make use of everything. So, tricks are good ways save his money and make use of everything was available.

Do you want to be a developer with good business mind? I am trying my best to be that.

Web Standards Curriculum - Good course for web developer

Web standard is fundamental knowledge that all web developers need to know. I am going to look for a course about this for training in my company. Fortunately, I found this course in Opera developer community: "Web Standards Curriculum"

Web Standards Curriculum, a course designed to give anyone a solid grounding in web design/development, no matter who they are—it is completely free to use, accessible, and assumes no previous knowledge.

You can find this course here:

http://dev.opera.com/articles/view/1-introduction-to-the-web-standards-cur


About the author of this course

Picture of the article author Chris Mills

Chris Mills is a developer relations manager for Opera—he edits and publishes articles on dev.opera.com and labs.opera.com, liaises with the community to raise awareness of Opera and collect feedback, and evangelises about Opera software wherever he can. He is also the organiser and editor of the Web Standards Curriculum.

Outside of work, he is an extremely avid music fan, enjoying playing and listening to a wide variety of music, including metal, folk, punk, electronica, prog, and more. His main band at the moment is the mighty Conquest of Steel.



I hope this course is useful to you!

Tuesday, November 11, 2008

Domain brainstorming and tools

As you known, domain brainstorming is one of first steps when you want to set up a new web site. How to choose a good domain? That's a very good question.
To do this step, you should ask your friends about keywords related to your business that they think first. The rest task is "combine keywords and choose the best name that are still available on Internet".
You can check some guidelines here for this. Actually, that's not simple!

Fortunately, there are some tools to help you check available domains and give you some good suggest names.

BustAName - gives the widest range of available options: it mixes the given keywords, gives synonyms for each one, adds prefixes and suffixes, shows both singular and plural versions, drops last vowel, checks for both hyphen- and non-hyphen versions. The tool dynamically checks for 3 top level domains: .com, .net and .org

Domize - shows information on domain names availability one-character shorter than the one specified (covers 3 TLDs: .com, .net, .org).

PickyDomains.com — PickyDomains employs actual people who suggest names for your domain. The process begins by registering with the service, providing a description of your site, keywords and your preferences. Once your account is setup, they start suggesting names and you either flag them as “Like” or “Dislike”. As soon as you find a name you want, you “pick” the name and register it. The service costs $50.00 per domain name and you are charged only if you register a domain. My experience has been spotty. They certainly can come up with great names, but there is no consistency in the quality of names. But since you are not charged if you don’t register the name, it does not hurt to try. The good thing about using this service is that it makes you think hard about what your site should be about.

Web 2.0 Name Generator: This is a fun and easy website to use, especially if you just want a cool sounding name for your soon to be media empire. Simply go to the site and click on “Generate Name” and the site generates cool names.

PsychicWhois - covers a wide variety of TLDs (.com, .net, .org, .biz, .info, .us) and provides a lot of alternative domain name suggestions based on your previous searches and related terms.

Thesaurus.com: This is probably one of the more useful ways to pick a name. I usually start by jotting down a few key words, and start entering them into the thesaurus. The thesaurus kind of helps you to think about your name from different angles because of the various synonyms it suggests. Unlike Microsoft Word, thesaurus.com suggest synonyms that are similar in meaning but are divergent enough to make you think - its a great brainstorming tool.

Ajaxwhois.com: This site allows you to search for domain name availabilty. It is fast and very easy to use.

I like bustaname.com most. However, you can try all above tools to select your best choice.
Good luck

Monday, November 10, 2008

Apply accessibility to web projects

Recently, I see there' re many persons misunderstand about Accessibility. Someone can not distinguish it with Usability. So, I post this entry to help you have a general overview about this.
I also post some ideas related to the way we apply Accessibility into web project under 2 views: Company view and Project view.


Outline of this post:

  1. What is accessibility?

    1. WCAG (Web Content Accessibility Guidelines)

    2. ATAG (Authoring Tool Accessibility Guidelines)

    3. UAAG (User Agent Accessibility Guidelines)

    4. EARL (Evaluation and Report Language)

    5. WAI-ARIA (Accessible Rich Internet Application)

  2. Why we need to support accessibility?
  3. How to apply accessibility?


What is accessibility?


This is the Web accessibility definition from W3C


Web accessibility means that people with disabilities can use the Web. More specifically, Web accessibility means that people with disabilities can perceive, understand, navigate, and interact with the Web, and that they can contribute to the Web. Web accessibility also benefits others, including older people with changing abilities due to aging.

You can find here some scenarios that People with Disabilities Using the Web

From now, when we talk about Accessibility - we're talking about the ways to support people with disabilities to use the web.
So, do not confuse this definition with Usability.

Web standards for Accessibility


W3C composed a standard for Accessibility called WAI. These are a collection of guidelines to help us create web site and tools to support Accessibility.
There are 5 standard groups in WAI

1. WCAG (Web Content Accessibility Guidelines):
These are guidelines for web content. If we are a web based solution company - we should follow this. I need to explain to you more detail about this because this is what we have to support in our web projects.
In this document, there are 14 guidelines:
Each guideline has one or many checkpoints with 3 types of priority: 1(MUST) , 2 (SHOULD), 3 (MAY).

If you can support all checkpoints with level 1, you get Conformance Level "A".
If you can support all checkpoints with level 1, 2, you get Conformance Level "Double-A".
If you can support all checkpoints with level 1, 2,3 you get Conformance Level "Triple-A".
2. ATAG (Authoring Tool Accessibility Guidelines)
These are accessibility guidelines for tool to create content. Eg: WYSIWYG Editors, media tools, ...
3. UAAG (User Agent Accessibility Guidelines)
These are accessibility guideline for Web browsers, media players, and other user agent.
4. EARL (Evaluation and Report Language)
Evaluation and Report Language (EARL) is a machine-readable format for expressing test results. The primary motivation for developing EARL is to facilitate the processing of test results, such as those generated by Web accessibility evaluation tools, using a vendor-neutral and platform-independent format.
5. WAI-ARIA (Accessible Rich Internet Application)
WAI-ARIA, the Accessible Rich Internet Applications Suite, defines a way to make Web content and Web applications more accessible to people with disabilities. It especially helps with dynamic content and advanced user interface controls developed with Ajax, HTML, JavaScript, and related technologies

Why we need to support Accessibility?



  • Provide equal access and equal opportunity to people with disabilities

  • Web accessibility is required by laws and policies in some cases. You can see here some list of relevant laws and policies around the world

  • This is a new trend in 2.0 web sites. If you can support this, it is an added value to your customer.


How to apply accessibility?


In my point of view, I think we have 2 views to apply this.

Apply under organization view


The first thing we need to do is: training for web developers about Accessibility and its importance. Your developers must understand about WHY they need to follow it.

Second, you should have HTML coding standard document. This is a guideline to help your development team can follow it and transfer to the new one. Before doing this step, you should select the conformance level that your company will support by default. Actually, I haven't seen any site get the Conformance Level "Triple-A" (except http://www.w3.org/WAI/)

Apply under project view


If you want to apply WCAG. You should create a process to support this. In my point of view, the simple process should have 3 below roles:
1. HTML designer: he/she must make sure the output HTML design follow WCAG standard.
2. Web developer: he/she must apply HTML design into the code by proper way that create the final version matching WCAG standard.
3. Content checker or QC: check the final output.
4. Content developer: when your site is deployed into production, content developer takes responsibility of creating/editing content. He must has knowledge about Accessibility to follow that.
As a process, you must have document, guidelines and checklist to support it.
Roles in process are up to you. I just raise some default roles in a simple way. You can create your customized version to follow the default support conformance level (of your company) in WCAG.
Good luck!

Sunday, November 9, 2008

Doodle4google - the way google gets creative logos

Google changes its logo frequently for happening events. Have you ever wondered that how they do to have a lot of interesting logos?

Actually, they create a competition in doodle4google. You can go there to discover more.


Doodle 4 Google is a competition where we invite K-12 students to reinvent Google's homepage logo. This year we asked U.S. kids to doodle around the theme "What if...?"

Our winning doodle, selected from over 16,000 entries, was created by Grace Moon, a 6th grader at Canyon Middle School from Castro Valley, California. Grace's lovely doodle, "Up in the Clouds," will grace our homepage, Google.com, on May 22nd, 2008.


16,000 entries - great!

Entry bonus:
Watch this video to see how Google's Chief Doodler Dennis Hwang draws a Google Doodle from scrap to finish.


Saturday, November 8, 2008

Tools for blogspot

You can see a lot of widgets and some special features on my page. You may wonder how did I do that? :)

Actually, blogspot only supplies us some basic features for blogging. To get more features, you need to search "tips and tricks" on Internet and puts it into your blog. You can ask me: "oh, you may have a lot of free time, isn't it? Why do you like that?". Actually, NO - I do not have much time but researching ideas and good features on Internet is one of my hobbies. I takes my free time to do that.

In this entry, I list some good links for you if you want to enhance your blogspot page. If you have problem with any trick, you can contact me.





10 chat widgets for your page.
Add read more feature to your blog
Templates for your blog
Add rating feature to your blog
Add tag cloud into blogspot
Add sharethis into blogspot
Add sitemap to blogspot
Show related post in blogger
Add recent comments
This entry will be updated whenever I find any more good links.

Object relation mapping - Is it a Vietnam war science?

the Vietnam war


I read this article 1,2 years ago. I think it's valuable for anyone loves Object Relation mapping. You should read it carefully and think about what you applied with ORM in your projects.
The original article is: The Vietnam of Computer Science


You can find some more interesting related articles:



+ Object-Relational Mapping is the Vietnam of Computer Science
+ Thoughts on Vietnam commentary
Actually, I am a fan of ORM. I've ever had nightmare with Hibernate (a famous ORM framework). It takes my team many weeks to optimize the performance of the whole system. However, it does not break my dream about it.
If I have free time, I will post an entry to share with you some of my experiences in Hibernate (a famous ORM framework). Wait'n see.
Reblog this post [with Zemanta]

Google and KBird blog

I am in the top position of "KBird blog" in Google. :) Do you want to buy this keyword? LoL




Top reasons that manager should write blog

Some managers told me: forget it, I do not have enough time for blogging. We should save time for other more important things!
Actually, I sympathize with them. However, blogging has a lot of advantages. It may help you manage your team efficiently. You don't believe? :) See top reasons I've listed below to understand why.
KYOTO, JAPAN - FEBRUARY 9: Ichimame, an 19-yea...


  • Blogging helps your employee understand and sympathize with you more: if you have difficulties, or something need to explain to your employee - you can use blog. If you're good at writing, you can tell them about your emotion, what you're thinking ... However, do not tell any stupid thing when you're angry. That may create side effect of your blogging. :)

  • Blogging helps you to practice the writing skill: writing skill is one of must have skills of manager. Practicing it with blogging is a good way.

  • Blogging is a very useful tool for training (if you can make use of it): I see some of my friends post some entries to train the team in his blog. He received a lot of feed backs. That's a good signal to know your team can understand what you want to transfer.

  • Blog is a good tool for communication: through blogging, you can announce some thing and explain easier to your team. Actually, people like reading blog than reading the news board/policy board in the office.

  • Blog is a good place to create relationship: a lot of people tell me that they like making friends through blog. That's the great point that you should make use of. If each employee has a blog, introducing their blogs to others is the best way to help them understand each other fast and strengthen the relationship.



Why don't we try from now?

Friday, November 7, 2008

Usability error of Microsoft in setup project with VS 2005

In the past, one developer of my team has a problem with Visual Studio 2005 setup project. He wants to change the Product name in setup project but he can not find any place to do this. He also search on Internet but there is no good solution.
One day, I found the secret behind this story :). Actually, this is a usability bug of Microsoft. Let me show you what this bug is.


First, user right clicks and chooses Property of the setup project - he/she can not see anything related to the Product name, or information of what he/she needs to setup.





How he/she have to do now?
The answer is: please select the setup project in Solution Explorer. After that, click into the Property tab. Remember this carefully!











Microsoft Product manager, please tell me how many user knows this trick?

Thursday, November 6, 2008

Product manager - who are you?

NEW YORK - MARCH 3:  (L-R) Microsoft Product M...I had a chance to work with a big customer in a web 2.0 project. From this project, I've learned a lot of things from business to techniques.
After 1 year, our client gets financial support from one big Capital venture organization (over 3 million dollars) and this project becomes one of top 100 raising web 2.0 sites this year.
(I am so sorry because I can't tell you more information about my customer , and my project business - that's my principle)
One of the most important factors help this project to be success is: product managers. They created good road map and a good product positioning for our product.
In this entry I will help you understand more about this position and how it is important.
I also share to you some experiences when we develop a product from idea.

What is Product management?


First, we have to know what Product management is.


Product management is an organizational function within a company dealing with the planning or marketing of a product or products at all stages of the product lifecycle. (wikipedia)


So, more detail - in product management, what we have to do?

Product planning




Product marketing



  • Product positioning and outbound messaging

  • Promoting the product externally with press, customers, and partners

  • Bringing new products to market

  • Monitoring the competition


So, what is product manager?

Product manager


Product manager is the person who takes responsibility of Product management in an organization.
In production companies, there are
usually 2 separate staffs takes important role in product development: sale - marketing + product management staff. Sale & marketing staff research the market, predict market trend in the future and send it to Product management staff. Product management staff will research to create product to follow market trend.

How important this position is?


As you can see above, product manager takes care of all things related to Product management. It's a very important role because:

  • This position determines the success of product and strongly affects to your business

  • It determines the development trend of a company in the future. If your company is built only one product, the product management strongly affect to the vision and mission of your company .


How to develop a product from idea?


This is a big question, so I can not write all related things in only one entry. I just give you some questions that you need to answer before deciding to develop an idea:


  • Who are end users that your product/service serves?

  • How your product/service earns money? (What is your business model?)

  • Who are your competitors?

  • What is the most important difference of your product with others? (differentiation).

  • Why users must use your product (not others)?


...
These questions are not enough. I will post a series of entry related to this question.
Wait and enjoy!
Do not hesitate to feedback me if you have any other ideas.

Wednesday, November 5, 2008

Basic course for junior web developers

While working in Pyramid Consulting, I’ve had a chance to work with Mr. Truong Lap Vi. He was one of Technical Architects of Pyramid Consulting. I’ve learned a lot of things from him. Based on his original training course, I’ve added some customizations to create a newer version of the Basic course for junior web developer.
This basic course takes only 3-4 hours. The purpose of this course is:
+ Based on the Web model to explain the vision and road map of a web developer.
+ Explain what good code is.
The original structure of this course has 2 parts:
1. Web model
2. Good code
2.1. What is good code
2.2 Good function
2.3 Good class
I’ve changed its structure a little bit and add more sections:
1. Web model
2. Good code
2.1. What is good code
2.2 Good piece of code
2.3 Good function
2.4 Good class (make the definition clearer)
3. Best practices in coding

You can find the slide for this course here:
Basic course for junior web developers

Some cool pictures for wallpaper

Today, when searching a document in my computer, I found some old pictures I used as wallpaper for a long time. I think they're very nice. So, I upload them into Google Web Picasa. You can view and download them into your computer.

They may help your desktop screen to be nicer.

Enterprise solution patterns for Microsoft .NET (Books for technical architect)


This is one of good books that any Technical architect should read.
This book is organized in 6 chapters.
+ 2 first chapters introduce to you about concepts and how patterns are organized.
+ Main content of the book in the rest (4 chapters). You can find here all of necessary patterns for:
a. Web presentation patterns
b. Deployment patterns
c. Distributed system patterns
d. Performance and reliability patterns.



As a technical architect, you always face to application design. This book is really a must-read book if you need to refer some patterns in application implemented in Microsoft technologies.

One important note: do not read this book to learn technology or tips and tricks to solve your specific problem. You should learn ideas from patterns and apply them into your real project.

One very good news: you do not need to buy this book if you do not want hard-copy. You can find the online version on MSDN here






Tuesday, November 4, 2008

CMS comparision - where you can find a place to do this?

COMSHARP CMSImage via WikipediaIn the past, I received a request from my client: implement a CMS to satisfy some of their specific requirements.
The first step I have to do is: searching on Internet all of CMS solution and compare them for pricing, features, ...
Fortunately, I found a website very useful for this: http://www.cmsmatrix.org/

After checking all famous CMS on this site with features and pricing. I found the best solution for my customer.
I hope it can help you also

What wordpress.com must be improved?

I am a SEO consultant. The first thing I like in wordpress.com is: it has some advantages may help me get a page with high Google page rank. However, there’ re a lot of things that wordpress.com need to be improved more if they want to attract more users.

I’ve read a comparison between wordpress.com and blogger of Google. You can find it here http://pulsed.blogspot.com/2007/07/blogger-wordpress-chart.html

From this article, we can see that WordPress limits a lot of things that a blogger needs to improve his site for SEO.

I do not want to repeat all things in above entry here. I just want to add some additional points and press some strong factors (in my opinion):

1. Should allow user can customize meta tags of a specific page (description, keyword, …). It is necessary for SEO

2. Should allow user post JS script or adding embed tags. I know that is risk because some hackers may make use of that to do some Cross site scripting hacks. However, why blogger allow that? It makes user feel more convenient.

3. Should allow user customize the HTML structure of the template. That help user can create creative theme page and SEO friendly whenever they need.

All of professional bloggers need their page must be SEO friendly and easy to customize. If wordpress can not improve these feature, it will be only a shadow beside the Google giant.

Wait and see what they will do in the future? who knows?


My custom answers for top difficult interview questions

I’ve read this article http://career-advice.monster.com/job-interview-practice/Prep-for-the-Top-10-Interview-Quest/home.aspx. It inspired me to write a custom version for myself

What Are Your Weaknesses?

Dear sir, as you know: the most dangerous weakness of anyone is “does not know what are his/her weaknesses”. I am very happy because I understand myself. As an IT technical person, I need to improve more knowledge and experience in software engineering. I see some common mistakes from other technical persons: they abuse their technical knowledge and apply the technical view into anything. I tried to quit that to get a broader/higher view whenever I analyze or do anything… Now I think I succeed with that. It helps me so much in life and work.

Why Should We Hire You?

With over 4 years working in software engineering, I worked for many small and big projects, from medium to big customers. That helps me get a lot of experiences in technical domain and management. I am always the key person in projects and company.

My principal in project development: the core value of a project is its business value. A good team must be a team can create more added value to the project business. I can create teams like that for your company

Beside technical experience, I also have a good business view. My team and I usually give customers good advices to help them improve their business road map in project. That’s the reason many customers satisfy with my team and the project quality.

I am confident that I can be the best addition in your company. What do you think?

Why Do You Want to Work Here?

I’ve selected key companies whose mission statements are in line with my values, where I know I could be excited about what the company does, and this company is very high on my list of desirable choices.

What Are Your Goals?

My short term goal is: contribute my best for new company and make its business success. I hope I will be one of top persons contribute most added value to the company.

My long-term goal will depend on where the company goes. I hope to eventually grow into a position of responsibility

Why Did You Leave (Or Why Are You Leaving) Your Job?

With more than 4 experienced years, I decided to find a company where offers me a good condition to contribute my best and open for my career road map.

When Were You Most Satisfied in Your Job?

Where I was most satisfied in my job?

No one can work effectively if he/she does not satisfy with his/her job. In all situations/organization, I am always happy with the job I take.

When was I most satisfied with my job?

That’s the time I find some ways to improve the my job more effectively or add more value to the company business.

What Can You Do for Us That Other Candidates Can’t?

One of my strongest points is: strong experience in technical domain and problem solving skill. There may be many persons have the same technical level as me. However, I have one more thing that a few technical people have, that’s the good view in business.

What Are Three Positive Things Your Last Boss Would Say About You?

Creative, Active and Professional!

What Salary Are You Seeking?

I think it depends on the final result of this interview meeting. We can discuss about it later. I am not hurry! I need to consider more factors before taking the final decision to join to your company.

Hmm, a small question: how do you offer for same position? Could you please send it to me by email?

Reblog this post [with Zemanta]

About me

Tran Dang Khoa's photo
My name is Tran Dang Khoa. I live in Vietnam. I love my country - a safe and beautiful country with a lot of nice people (like me). I’ve worked in software development more than 4 years. I love my job also.


This blog is a place to share my knowledge and some of my bad/cool articles to everyone. You can also find some interesting things or some very bad things here.

Do not hesitate to comment and discuss with me about wrong/cool things here. :)

My hobbies



I love fictions, science, music and … software development.

One more thing, I love everything in Open source and its community.

I like the CAN DO attitude. With me, nothing’s impossible.

My nicknames


My friends often call me “Khoa Bird” because I like birds (I used them for my avatar) .

In company, they call me by another nick name “Cool bird” or “Kool Bird”. I like the “Cool” word. Whenever I say: “that’s cool already” - mean we've completely done one thing with the best quality. They trust me whenever I say that. :)


Javascript Object Oriented Programming

Javascript is a prototype based language (not a class based language). You can read more here to understand differences between prototype based and class based language.

However, prototype has some good features that help you can implement the Object oriented programming model. Nowadays, a lot of javascript frameworks support us can implement OOP easily (like Prototype, JQuery, …). In this post, I do not want to introduce about them. I would like to help you understand about Javascript OOP without any support from other external libraries or frameworks.

Index

1. Defining a class

2. Common definitions and implementation

3. Inheritance in Javascript

1. Defining a class

To define a class in Javascript, we can use one of below ways

1. Traditional way

function className ([params] ) {

//properties and functions

}

2. Second way

className = function( [params]) {

//properties and function

}

2. Common definitions and implementation

  • private variables are declared with the ‘var’ keyword inside the object, and can only be accessed by private functions and privileged methods.Example
    function Person {
    var name = “KBird”;
    }
  • private functions are declared inline inside the object’s constructor (or alternatively may be defined via var functionName=function(){}) and may only be called by privileged methods (including the object’s constructor).Example
    function Person {
    this.name = “KBird”;
    var getName = function()
    {
    return this.name;
    }
    };
  • privileged methods:privileged methods are declared with
    this.methodName=function
    (){}
    and may invoked by code external to the object.
  • public properties are declared with this.variableName and may be read/written from outside the object.
  • public methods are defined by Classname.prototype.methodName = function(){} and may be called from outside the object.
  • prototype properties are defined by Classname.prototype.propertyName = someValue
  • static properties are defined by Classname.propertyName = someValue

3. Inheritance in Javascript

Inherit from a super class

subclassName.prototype = new subClass;

Override a function

subclassName.prototype.functionNeedToOverride =function(params) {

}

To be continue

Reblog this post [with Zemanta]

Javascript history

In this post, I just collect information from Wikipedia and some portfolios of persons who makes Javascript to be success today.
Everything has its history. Understand the history of Javascript helps you have a broader knowledge and makes you more interesting in working with this great programming language.

JavaScript was originally developed by Brendan Eich of Netscape under the name Mocha, which was later renamed to LiveScript, and finally to JavaScript. The change of name from LiveScript to JavaScript roughly coincided with Netscape adding support for Java technology in its Netscape Navigator web browser. JavaScript was first introduced and deployed in the Netscape browser version 2.0B3 in December 1995. The naming has caused confusion, giving the impression that the language is a spin-off of Java, and it has been characterized by many as a marketing ploy by Netscape to give JavaScript the cachet of what was then the hot new web-programming language.

Microsoft named its dialect of the language JScript to avoid trademark issues. JScript was first supported in Internet Explorer version 3.0, released in August 1996, and it included Y2K-compliant date functions, unlike those based on java.util.Date in JavaScript at the time. The dialects are perceived to be so similar that the terms “JavaScript” and “JScript” are often used interchangeably (including in this article). Microsoft, however, notes dozens of ways in which JScript is not ECMA compliant.

Netscape submitted JavaScript to Ecma International for standardization resulting in the standardized version named ECMAScript.

(From wikipedia: http://en.wikipedia.org/wiki/JavaScript)

Who make Javascript success?

Brendan Eich: the man invented Javascript


Brendan Eich

he created Javascript when he was in Netscape. Currently, Brendan Eich is CTO of Mozilla Corporation



...



Douglas Crockford (JSON)

Discover Javascript and JSON.

He is well known for his work in introducing JavaScript Object Notation (JSON).

You can enjoy a lot of his good articles here

http://crockford.com/

http://blog.360.yahoo.com/douglascrockford





John Resig (JQuery)

pushed Javascript forward. He is the man creates JQuery - this is one of biggest successful projects of Javascript.

Now, John Resig is a JavaScript Evangelist for the Mozilla Corporation and the author of the book Pro JavaScript Techniques.




Sam Stephenson (PROTOTYPE)

Sam Stephenson

Sam created the Prototype JavaScript framework in February of 2005 as part of the foundation for Ajax support in Ruby on Rails. He lives in Chicago, writes web applications for 37signals, and tumblelogs on Projectionist.


Javascript programming

While working with a lot of web development teams, I found a truth: most of developers (at least: Vietnamese developers) do not think Javascript is important. Most of them use javascript as tips and tricks - just google and apply every script they found to solve their problem. Parts of them try to prevent using javascript with complex technique into their project - with them Javascript is a nightmare.

I agree that writing Javascript to make the code run cross browser is complex and difficult with some developer. However, that’s not a big problem if you have a deep knowlege about Javascript. Everything has a little bit difficult starting. Right?

In this series of posts, I don’t want to dig into old knowledge about syntax, basic types, … in Javascript. If you want to know about that, you can get them with google. This series of post only focuses into these points:

1. Javascript introduction

2. Object oriented programming in Javascript

3. Unit testing with Javascript

4. Introduce some Javascript frameworks nowadays.

I am writing these parts and will post them one by one.

Wait ‘n enjoy.

Reblog this post [with Zemanta]