Archive for the 'Bizroof' Category

Is MobileMe Innovative?

If you never heard about Apple’s MobileMe, what do you think it does? Mobile… mobile phone? get connected anywhere? Me…. all about my stuff? Yes, you are absolutely right. It is a simple way to keep everything organize and sync. If you look closer, MobileMe is actually a web-based application which helps to store and manage your emails, contacts, calendars and files on both your computers and iPhones or iPod.

The idea is not new and so simple. Well… all the brilliant ideas are simple. The question is that what is the innovative stuff involved?

SproutCore, a javascript platform is being used to provide the desktop-like feel. This approach is definitely not new as there are plenty of similar platforms being used all over the place, you name it… Google Web Toolkit, Ext-js, Objective-J, YUI etc.

The business model is not new neither. Keep everything up to date and share large files with friends are well discussed and executed throughout the web industry.

Could MobileMe succeed? I think so…. The reasons are simple:

A. Apple has a good reputation building easy to use stuff.

B. Apple has a massive consumer base, among which there are plenty of evangelists.

C. MobileMe can solve problem, fairly enough :-)

Build a web app (LAMP) – build your team first

If you ask anybody in the software industry to tell you some creative ideas, most of them could give you a big list of ideas fairly easily. However, the ideas themselves won’t bring you any success but the execution of the ideas will. Any failure of delivering ideas is rooted in the bad team design, in another word, you don’t have the right person working on the project at the right time.

If you have all the same team members working on the project during the entire development stage, you are in a dangerous zone for the cost-effective sake. I would like to share my experience of building a good team for web apps:

Development stage of a web app: (Usability and infrastructure)

  • 1 full-time Graphic designer (core skills needed: css, html, usability, sense of style)
  • 2 full-time Developers (core skills needed: Object-Oriented PHP / AJAX / Javascript / MySQL / server administration)

Close to the end of the development stage: (Start public relationship)

  • 1 full-time Developer (core skills needed: OO PHP / AJAX / Javascript / MySQL / Unit test)
  • 1 full-time SEO (core skills needed: professional writing / in-depth understanding of search engine and backlinks)

Beta lauch stage: (all about PR)

  • 1 full-time SEO focus on public relation articles (core skills needed: professional writing / in-depth understanding of search engine and backlinks)
  • 1 part-time SEO focus on blog and forum (core skills needed: professional writing)
  • 1 part-time developer for ad hoc functions

Remove beta label: (PR and partnership)

  • 1 full-time SEO focus on public relation articles (core skills needed: professional writing / in-depth understanding of search engine and backlinks)
  • 1 part-time SEO focus on blog and forum (core skills needed: professional writing)
  • 1 part-time developer for ad hoc functions
  • 1 partership builder (core skills needed: building partnerships across the web app industry)

I’d be a fool if I thought I knew it all. So, please don’t hesitate to share your ideas with us. :)

Project management is all about managing exceptions

Recently, I talked with a project manager who has over 6 years project management experience in big organizations. I asked him that what is the most important skills about managing projects, and his answer was as simple as concentration on solving team members’ problems. He was absolutely right!

If a project goes on exactly as planned, there is no need for managing at all. So, management is all about managing exceptions (i.e. solve problems). Responsibility is all about solving problems, cooperating is all about solving problems, and even resource allocation is all about solving problems. Additionally, the roles themselves in a team will determine what problems the person need to solve.

Meanwhile, the overall performance of a team, in some way, can be measured as its ability to solve problems and the average time length to close them. For the small projects which normally done within 2 weeks, it is easy for the project manager to identify and extinguish problems while for medium to big sized projects, it is getting harder to find out the problems. Therefore, a good project manager has to encourage the team members to tell you all their concerns throughout the entire project life cycle. In that case, you don’t have to dig into each area to drag out the bugs yourself. Moreover, your team members are well motivated and take the ownership of their tasks as well.

It is no need to be panic if you are managing some projects which you don’t understand inside out, coz your team members can support you if you try your best to solve their problems and eliminate their concerns.

Wordpress blog upgrade practice

The bizroof blog has been upgraded to wordpress 2.5.1 which is the latest version to date. I documented what I’ve done here in case someone needs a quick guide on this:

1. BACKUP all your current files.

2. DEACTIVE all your plugins, and change the theme back to the default one.

3. DELETE all your files in the root folder.

4. DOWNLOAD the latest version wordpress.

5. COPY back your wp-config.php file to the root folder.

6. RUN the upgrade programme. simply type http://example.com/wp-admin/upgrade.php in your browser.

7. COPY back your plugins and themes to the wp-content folder and ACTIVE the plugins. Also, select your favourite theme.

8. (Optional) COPY back your robot.txt file or .htaccess file to the root folder if they are in use.

9. (Optional) LOGIN wp-admin, go to the Design section, and click edit theme, and then put your favicon back. After that, you can spend some time on update the css files to get the perfect look and feel. :)

Also, I spent some time customized the css files to give the blog a new looking and feel. Looking at the blog now, I still think it is not pretty enough, and myself, is definitely not the type of person with a sense of style. :) So, could anyone will me some suggestions on how to improve please?

Meanwhile, the plugins I am using are AddThis social bookmark (Help my visitor promote the blog) and Google Analytics to help myself monitor the site traffic. I would be really appreciate if you can suggest me some other plugins which helps SE0 and usability.

If you were the boss, and recruiting PHP developers…

If you were the boss, and recruiting PHP developers, what kind of person would be your ideal candidates?

For myself, a sincere love of programming is on top of the list. The reason is that it is much much easier for a person to learn actual programming skills than trying to change their love or hobbies.

Second of my list is the character of the candidates. If you take anybody on board, you are going to spend more time with them than with your wife and children. Therefore, if you cannot get on well with them, you just dig a big hole for yourself. :) So, don’t take anybody who lie, cheat and steal ideas.

The third item on my list is the ability to learn. In the web application developing industry, technologies change on a daily basis. It is no good to say that I spend 5 years on PHP, and I am an expert on that area now. It would be better to hear from the candidates that “you know what, I knew nothing about javascript before, spent 2 weeks on that, and got my work done properly.”

At the bottom of my list is the relevant knowledge and skills for the job itself. i.e. Ruby on Rail, AJAX, CSS, HTML, SVN, MySQL, Apache, blar, blar, blar. The reason is if you love programming, plus you are a responsible character, plus you got the ability to learn, a new technology is just a piece of cake.

Please tell me your ideas…. :)

Attitude leads to success

I’ve been doing software developing for 8 years now, and the reason I want to be in this industry is as simple as I love it. So, I enjoy my every single working day, and amazingly I never miss any deadlines for all my 31 projects throughout the 8 years. Early this year, I was promoted to the role of CTO, and then I have to do a lot of management work. To be honest, I really miss the days when I only need to concentrate on coding.

Bizroof platform is the first project I am in charge of after my promotion. We’ve got 8 people working on it full time, including 3 PHP developers, 2 javascript developers, 1 graphic designer, 1content writer and myself (project manager). Initially, I did write a project plan which states deadlines for each phase with time tolerance. Also, we’ve got daily and weekly meetings to help us understand our positions. There is no doubt that all those project management stuff helps to maintain a decent delivery speed. However, it makes most team members focusing on delivery with less creative ideas, and people get bored quite easily. So, I recently stopped using the initial plan and told my team members that they ONLY need to deliver stuff when they are comfortable with it. Also, we measure their performance based on quality rather than quantity.

Project management is all about managing exceptions. In another word, the project manager’s job is to try the best to help others solve their problems and to make your team members enjoy their work, and then your members will build their confidence and ready to contribute.

Events management module – Simple and functional

Events, from the software perspective, are business activities associated with the contacts in your network. It ranges widely from lunch meetings with your clients to your coleauges’ birthday parties. However, the nature of events is simple as they always consist of a summary (What), time and duration (When), location (Where), and a guest list (Who). This simplicity just forms the basis of the event management solutions, such as Google Calendar, Highrise and Bizroof.

But, simplicity is not enough in this modern world. We need it to be functional as well. If you grab a cell phone and click through its menu, you most likely to see features like digital camara, alarm, web browser etc. Some people blame the manufactures putting too much functions they never use onto a simply phone. In fact, I am one of them. :) But, when they pop into a shop to buy a new phone, they always ask questions the quality of its digital camara… Ridiculous? Nope, that is just a common sense of the value of money. If we buy somthing, we try to get as many as they can, and we tell ourselves that we may need them
in the future.

Both simple and functional are equally important. Therefore, the information flow within the application need to be well designed with an objective to provide best user experience. As known to all application developers, AJAX can not only help to simulate desktop-like look-n-feel but reduce the page loading time dramatically by refreshing only updated sections as well. It is a perfect solution for filerting events options, inline editing events and live search. The paragraph below descripbs a simple test and results of AJAX.

Both my coleauge and I are given a same list of tasks (e.g. create new contacts, add new events etc) to do on bizroof. My browser has javascript disabled (i.e. AJAX disabled) while his not. He finished all the tasks in 14 mins while spent 6 mins extra.

Take data sharing into consideration, softwares should be able to talk to each other, not necessarily need to synchronize. We use RSS, RTF, microformats (vcard, hcalendar, etc) to allow data easily shared with MS Outlook, google calendar, iCalendar, Address Book etc.