Maxco Final Wiki
- 1 Project Progress Summary
- 2 Project Challenges
- 2.1 B1G1 World
- 2.2 B1G1 World Facebook Application
- 2.3 B1G1 World Administration Application
- 2.4 Others
- 3 Project Achievements:
- 4 Project Management
- 5 Quality of product
- 6 Our Reflections
- 7 Ending Credits
Project Progress Summary
Since the day of our mid-term presentation, the team has had a strong healthy dose of high expectations and pressure to perform from both the faculty and ourselves. The mid-term review served to highlight the team's various strengths and weaknesses, and allowed us to receive opinions of our project from people who had not seen it before. All the valuable feedback was of great importance to our team in coming up with a new game plan for the second half of the IS480 term. The content in this page will document the improvements made, our project highlights and acheivements, and difficulties faced since the mid-term review.
In this section our team will highlight the interesting parts of the project that have changed or that have been added since the time of the mid-term review.
B1G1 World Application
After the Midterm, we improved the usability of the application, and at the same time added two additional functions.
Another existing function, showing the leverage network of users is also updated. Now, the colored shapes are replaced by icons which better represent different user types and project category. Also, users can go to the location of the Business That Give or Worthy Cause Project on the map. Another feature is that double clicking on a node will focus the graph on it.
This is one of the newly added function of the application. The search function enables user to look for their company by typing their company name, or any keyword, which will generate any related Businesses That Give, Worthy Cause Projects or Worthy Cause Partners in a force directed graph. Users can also choose to search for one entity only too.
The I Recommend! idea arise one day when we were having lunch at a food court, Kopitiam opposite the school. We felt that it would be great if the Kopitiam that we patronize almost everyday is part of B1G1. Then whenever we make a spending there, we would be also be helping the needy.
Users are able to browse through the recommendations that were made by others, and the top 3 recommendation is displayed. If an user finds a recommendation made by others that he also want to recommend, he can click on it to recommend. Otherwise, he also can add a business that he thinks that would do B1G1 good.
B1G1 World Facebook Application
Since the midterm review, the layout and user interface of the Facebook Application has improved to become a lot more user friendly and intuitive. Other functions that we added include:
- Deriving the number of Facebook "Like" and "Share" of each Worthy Cause Project to gauge their popularity
- Search and filter function for the various B1G1 Worthy Cause Projects has been improved to retain the search values for more user-friendly searches.
B1G1 World Widget
The concept of the widget used to be long and rectangular, displaying the giving information of a user on top of the map that is showing the user's location.
After the midterm, the entire concept and physical appearance of the widget is changed, and it does not show the locational representation of the Business That Gives on the map. And what's more, is that now we have TWO instead on one widget!
- Generic Widget for non-BTG's and the general public to embed on their sites to spread the word about giving
- Customized Widget for BTG's to embed on their company's site to make known their giving efforts
B1G1 World Administration Application
This is a new initiative after the midterm review. As we were creating the different products under the B1G1 suite, we felt that we should also add another that would give our clients control to change the content, without having to go through the codes. The administrative module gives administrators control over our B1G1 World Application, Facebook page and Widget. We aim to provide B1G1 administrators convenience with this module.
It has mainly 3 functions:
Manage Did You Know
B1G1 World Application - Cluttering of markers
The first challenge our team met was the cluttering issue. Many of our markers on the map was overlapping each other in a specific area as shown (Left of screenshot above). Luckily for us, with help from our client and supervisor, we managed to be able to solve this challenge by implementing the Haversine formula to calculate the distance between each markers in pixels. If they were too close to each other in terms of pixels, they would be grouped together. And as you can see on the right of the screenshot above (Left screenshot above), we have grouped everything to one single marker. And by clicking on this marker, the system will display all the different information in that marker as shown on the screenshot above(Right screenshot above). With this solution in place, the challenge was resolved. It was a big milestone for us because it was through this challenge that brought the whole team together after a lot of struggles looking for an appropriate solution.
B1G1 World Application - Use of Flare, a 3rd party library
The use of Flare, a 3rd party library presented various kind of challenges to us. The purpose of using Flare was to create a Force Directed Leverage Graph to display the network of invites and leverage giving impact that a particular Business That Gives has. The screenshot above shows the evolution of the graph. From a plain looking graph for demonstration, to a working leverage graph (middle), to a final glorified version with meaningful icons. This was all possible only through editing the API of that Flare provides. This was a major challenge to us because we weren't very familiar with Actionscript. With a lot of time spent on reading and modifying the API, determination that this is possible and help from our supervisor, we were able to edit the API successfully and made the impossible possible.
B1G1 World Facebook Application
A major challenge for Facebook was that the API for Facebook was ever changing. Even though after understand the Facebook API after spending a lot of time digesting it, the fact that the API kept changing every now and then was a problem for us. Other than that, the way how Facebook reads the meta-tags of a particular PHP file is also another challenge that we faced. We weren't able to dynamically display the names of the projects when displaying it on Facebook. After much research on the internet, we found a way to overcome this and it was to do a mod-rewrite on the page so that the meta-tags could be display dynamically.
B1G1 World Administration Application
B1G1 World Administration Application - AJAX & Reverse Geocoding
Multiple AJAX was used on a single PHP page for the Administration Application we had done as shown on the screenshot on the left. This proved to be a huge challenge for us because none of our team members had prior experience with AJAX. We had to spend time studying and understand how AJAX works before we were able to leverage what AJAX offers onto the Administration Application that we had. However when we included Google Map into the page to give the Administrator a better tool to edit the geocodes of the different entities in B1G1, another problem surfaced. As Google Map was also using AJAX, there was now more AJAX script than before. More importantly, the AJAX scripts were conflicting with each other. With sheer determination, our team was finally able to resolve all the conflicts.
Others - Managing Our Schedule
It was hard for us to find a common time slot to meet because of the various time-tables that each member of the team had. In the end, we had to meet up on Sunday every week to have our weekly discussion and meeting session. A lot of commitment was required from each member of the team to manage our own individual schedule well.
- Nominated for Best IS480 Project
- Represented SMU for Youth Infocomm Day 2010 showcase
- Eligible for Lien Awards
Project Schedule (Plan Vs Actual):
|Iterations||Planned (2010)||Actual (2010)||Comments|
Construction Phase 1
|Filter: By Regions||4 Sept||Filter: By Regions||5 Sept||Debugging and Testing|
|Filter: Projects that the worthy cause member has||7 Sept||Filter: Projects that the worthy cause member has||11 Sept||Debugging and Testing|
|Filter: Members and Worthy Cause Member by Projects||9 Sept||Filter: Members and Worthy Cause Member by Projects||10 Sept||Debugging and Testing|
|Filter: Leverage of an individual member||9 Sept||Filter: Leverage of an individual member||13 Sept||Customizing Flare API for Custom Icons|
|Facebook Invite function||13 Sept||Facebook Invite function||16 Sept||Updating to new Facebook API|
|Facebook Share function||13 Sept||Facebook Share function||16 Sept||Updating to new Facebook API|
|Facebook Like function||4 Sept||Facebook Like function||6 Sept||Updating to new Facebook API|
|Causes Listing Page||15 Sept||Causes Listing Page||16 Sept||Revamping to new Facebook Layout after Mid term Review|
|Individual Cause Page||20 Sept||Individual Cause Page||20 Sept||On time|
|Wall post function||9 Sept||Wall post function||9 Sept||On time|
|Facebook Analytics - Retriving Number of Likes Cron Job||11 Sept||Facebook Analytics - Retriving Number of Likes Cron Job||11 Sept||On time|
Construction Phase 2
|Filter: Favorite Giving||1 Oct 2010||Module Dropped as functionality is incorporated into another Filter|
|B1G1 World Widget||8 Oct||B1G1 World Customized Widget||11 Oct||Renamed into Customized Widget|
|B1G1 World Generic Widget||11 Oct||New module proposed by the team|
|Filter: Keyword Search||8 Oct||Filter: Keyword Search||12 Oct||Debugging and Testing|
|Recommendation Module||17 Oct||Recommendation Module||17 Oct||On time|
|Admin Module Login/Logout||11 Oct||Admin Module Login/Logout||13 Oct||Debugging and Testing|
|Admin Module Geocoding control panel||11 Oct||Admin Module Geocoding control panel||13 Oct||Debugging and Testing|
|Facebook Did You Know function||8 Oct||Facebook Did You Know function||8 Oct||On time|
|Debugging||16 Nov||Debugging||16 Nov||On Time|
|Final Deployment (Live Server)||18 Nov||Final Deployment(Live Server)||20 Nov||Migration to Live Server from Development Server|
|Final Testing of Complete System||21 Nov||Final Testing of Complete System||21 Nov||On time|
|Prepare Presentation Slides||21 Nov||Prepare Presentation Slides||22 Nov||Adjustment to Slides after Comments|
|User Manual + Documentation||28 Nov||User Manual + Documentation||In Progress|
Planned Vs Actual Schedule since Mid-Term Presentation
For a detailed break down of the project schedule comparison throughout the project cycle please download this excel file here. Concurrently, you can view the team and project weekly progress summary here recorded.
We decided to drop Filter : By Favorite Giving since it is incorporated into part of the function Filter: Business That Give. The widgets are broken into two part, with the Generic widget an additional deliverable that we thought could be value adding extra value to the company.
There were no significant changes on our Iteration 6.
Our schedule for Iteration 5 have to be adjusted to two days later as we encountered a number of bugs and issues during our deployment to the live server. Despite the 2 days delays, we still intend to finished our last iteration by 03 December, a day after our Poster day. We will use the last day of the iteration to pull everything together and put them in place before handling our project to our client.
To have a better overview and measurement,through quantitative methods, we adopted Bug metric and Schedule metric to help us evaluate our project process. It is a good way for aligning measurements with business requirements and goals.
For a detailed explanation and how we go about calculating the Metrics, please visit the Metric section on our Team's main Wiki Page.
Iteration 4 and 5 recorded the highest level of bugs because that was where the bulk of our functions got developed. Another reason could also be that we are constantly deploying the project files up to our client's server, thus explaining the issues that was recorded after our regress testing just before the end of the iteration. Throughout the project, our team had consistently managed to bring down the BSP to the acceptable level ( < 29 BSP) before proceeding to the next iteration.
Another point to note is Iteration 6 where we recorded 2 Bugs after the UAT Test. We will ensure that the 2 bugs escalated after the UAT Test 2 are solved before handling over the project to our clients.
Our Schedule Performance Index have been fairly consistent throughout our Project cycle except for both Iteration 4 and Iteration 5. That could be explained by our initiative to deployed the working files up to our client's server and it was also where the bulk of our project's functions are being developed.
Furthermore,We encountered difficulties integrating our Facebook Application in different browsers due to its API updates. We also developed a new Generic Widget that create extra value for our client, thus explaining why our schedule encountered delays. Thankfully , the delays have not escalated to the stage where we have to make major revision to our planned schedule.
How best to leverage the best out of the different technologies used
It wasn't easy for us to achieve what we wanted. It was to obtain the "WOW!" and "SHARE" motivations that was decremental to our project. Even though we successfully combine Flash and Google Map into a single application, our team didn't just stop there. We went on to push ourselves to think of ways we could make our motivations possible with the technologies that we had. With much deliberation, we came up with a lot of the different modules and it just added on the technical complexity that our product had.
Our team studied and got ourselves familiar to all kinds of APIs out in the current market. From Google Map API, Facebook API, Actionscript, Flex Scripting Language to 3rd Party Library Flare, it was amazing how did our team manage to be able to understand and adapt to these new programming languages in just a short time of three months. We feel that we have push ourselves to a whole new frontier and we are now more comfortable whenever we need to use a new technology.
Understanding our client's database structure
Our Client, B1G1, is currently using Drupal as it's CMS. When we first had access to the database, we were lost. The amount of tables was astounding. On top of that, the relationships between each table wasn't made clear in any way to us. We had to really study and dissect the database structure to be able to retrieve the relevant information that we need.
Quality of product
|Project Management||Minutes||Maxco Minutes|
|Bug Metric||Bugs Tracking List | Bugs Metric|
|Schedule Metric||Maxco Schedule Metric|
|Requirements||Story cards||Maxco Story Cards|
|Analysis||Use case||Use case Diagram|
|Technical Overview Diagram||Technical Diagrams|
|Screen Shots||Maxco Screenshots|
|Handover Testing||UAT 1 Test Plan||UAT1 For B1G1 World | UAT1 For Facebook App|
|UAT 2 Test Plan||UAT2 Admin Module | UAT2 B1G1 World Module | UAT2 Facebook App|
|Miscellaneous||Presentation Slide||Final Presentation Slides|
|Links||B1G1 World Application||B1G1 World Application Link|
|B1G1 World Facebook Application||B1G1 World Facebook Application Link|
|B1G1 World Administration Application||B1G1 World Administration Application Link|
|B1G1 Customized Widget||B1G1 World Widget (Customized) Link|
|B1G1 Generic Application||B1G1 World Widget (Generic) Link|
We believe that the quality of our products are up to standard because of the modularized structure that we have approached developing solutions for the suite of B1G1 applications.
The diagram on the left shows a overview of the design of the whole suite of B1G1 World Applications. On the one hand, the B1G1 World Application and Widget are made possible using Flash and get access to the database through XML files created by custom-coded PHP files we have done to extract the relevant data from our client, B1G1's database. On the other hand, the B1G1 World Facebook Application and Administration Application is made possible using PHP. Both of these have direct access to the B1G1 database.
How it works? - B1G1 World Application & Widget
The diagram on the right shows the technical overview diagram of the B1G1 World Application and Widget. With a modular design planned right from the start, the B1G1 World Widget reuses a lot of the modules that was created for the B1G1 World Application. Some of these modules are the Event Actionscript Classes which supports custom events, Datacontroller.as which acts as the interface which interacts with the database, and also the ItemDisplayModule.mxml Flex class which handles all the flashy animations and tweening found in both the B1G1 World Application and Widget. This helps us as we can focus more on refining the codes rather than building things from scratch again.
How it works? - B1G1 World Facebook & Administration Application
The diagram on the left shows the technical overview diagram of the B1G1 World Facebook and Administration Application. A Database.php file is commonly shared across both applications. This is the file that provides the access to the B1G1 database. The difference between the set of files in the Facebook and Administration Applications is that one of them communicates with the Facebook API and the other with Google Map API. Other than this, another PHP file, Geocode.php is also modularized because it is used by the B1G1 giving engine and also the admin module which reduces our time spent on creating duplicate versions of codes that does the same thing and this in turn gives us more time to refine our codes to maximize the efficiency of codes that we have developed.
We have deployed the suite of B1G1 World applications to B1G1.com and the links to access them are as follow:
- B1G1 World Application
- B1G1 World Facebook Application
- B1G1 World Administration Application
- B1G1 World Widget (Customized)
- B1G1 World Widget (Generic)
- User Acceptance Test 1 & 2
The 2 User Acceptence Tests carried out over the course of this project served the main purpose of ensuring that all functionalities and requirements of our product were met with. They served the purpose of having our project get tested in a fixed and standardized way, with an impartiality that would not skew the results in any direction. Testers consisted of our client, as well as friends and schoolmates who had no prior knowledge of what our project was about. They were made to follow specific steps, and there were only pass or fail results that made it very clear to us whether all functionalities were working as they should. Testers were provided with the expected results of each functionality test, and in the event of a test failure, they were made to fill in the actual results to assist us in the problem identifying process. There were a total of 2 UAT's carried out - UAT 1 before the mid-term review and UAT 2 before the final review. Please note that there were changes made to UAT 2 to accommodate all the changes and improvements made to our project since the mid-term review. Our UAT test documents can be found above for an idea of how our testing was carried out.
- Heuristic Evaluation
From the time of our mid-term review, our team has been making an active effort to conduct vigorous heuristic tests to ascertain that our product would be of the finest standards when finally launched. As our own testers, we consciously put ourselves in the shoes of detached users to try to spot bugs and errors, as well as identify usability issues that potentially needed attention. In addition to that, we also invited our supportive clients to assist us in taking part in the heuristic evaluations, and from their results and valuable feedback, the team was able to consistently improve on all aspects of the project progressively in a steady and well planned out fashion. These heuristic evaluations, carried out by both us and our clients, took place once every fortnight, and played an important role in giving our entire project the final look and feel it now possesses.
As a team, we have definitely come a long way in this IS480 journey. With the consistent betterment of this project being the driving force, opportunities abounded for all of us to grow both as better IS professionals, as well as smarter team players. As our project requirements and scope changed as the time went past, and as our schedules became more and more packed as the semester flew by, we were forced to plan far ahead for our many meetings and self-imposed deadlines,many times forfeiting weekends and the time that could have been spent on other modules or pursuits for this project. Also, taking no less than 4CU's in addition to this FYP proved to be a major concern for all of us, but with the benefit of hindsight, we must say that this has definitely played a big part in us becoming better managers of our time. As a team, we have come to understand each of our strengths and weaknesses better and became more competent at work delegation and also with dealing with one another. The importance of the work-friendship balance also became very apparent as we all tried to maintain good relations within the team, all while not compromising on the quality of our work. Team MaxCo, as a team, and as a group of six very different individuals, have all gained invaluable experience from this very trying, albeit rewarding IS480 endeavour, and hope to bring what we have learnt wherever we go in the future.
Khang Wei's Reflection:
Going into this project, I set forth three objectives. Firstly, I wanted to do not just any project, but one that I could be proud of many many years down the road. I wanted to do something extraordinary. Something that would leave a deep impression in each and everyone of us. Secondly, I wanted to improve both my soft and hard skills through this project. I wanted to try something that I have not done before. I felt that it would be great if I could pick up some new technical skills and learn to manage stakeholders (such as our supervisor, client) through this project. Lastly, I wanted to create leaders in my team. As the project manager, I did not just want to lead the team blindly. I felt that it was important that everyone lifted themselves, their expectations, and become leaders of the team.
To say the IS480 journey was an enjoyable and fruitful one sounds too much of a cliche, but I am proud to say I have learnt a lot about my friends, my teammates, my supervisor, the project, my clients and myself.
To begin with, Buy1GIVE1 had been an awesome client. Not only had they provided constant and almost instantaneous support, they had been a great source of idea for our project. Together with Prof. Zhu who also gave brilliant ideas and support to us, I must say that our project was not only unique, but something that all of us are proud of. From scratch, we have created an amazing suite of products which clearly demonstrates our creativity, perseverance, hard work and most importantly, teamwork. I am sure this is something all of us, including our supervisor, client and reviewers will remember for a long time.
B1G1 World suite of products had many facets of pure brilliance. We have encountered unbelievable number of bugs, hiccups and roadblocks throughout the entire development phase. Flash and Facebook were very foreign to us, but we stood on our feet and overcame all odds to be where we are today. Through that, we not only picked up invaluable experience, we also forged priceless relationships with all our relevant stakeholders, including ourselves. We learnt to manage them and their expectations better. Besides the incredible 'can do' attitude that we had that brought us this far, we also learnt to manage our own expectations, time and coordination, which we believe, had been a great element to our success.
Lastly, I am honored and thrilled to say that, through this entire project, my peers and I have grown - mentally, physically (yes, physically) and of course, technically. The camaraderie, teamwork and support we shared were indispensable. Everyone was a leader who voiced their opinions, ideas whenever they had, took on additional responsibility, made sure everyone was on the same page, and went back to pick anyone who fell. It was, definitely, an experience of a lifetime.
From being on the brink of getting our project dropped before the project acceptance to developing an application that exceed what we expected, it got to be a dramatic yet fulfilling and exciting experience for me. I was exposed to many new technologies(Facebook API, Flex, Actionscript etc)that are not taught in School , and that was a big challenge for me as i have to juggle my time in learning new knowledge domains while maintaining my focus on my other academic modules. As i have no prior experience in working with these technologies,specifically ActionScript, i encountered much difficulties during the development of the B1G1 Widget. Thankfully, my team mates have been supportive and guided me along by offering me the relevant technical advice and help. I learnt how to manage expectations better by promising what i am able to deliver but also not over-promising on things that i am unable to acheived.
Our Client, B1G1 had been an awesome client to us. Giving us 200% support and coming out with ideas that lead to the creation of B1G1 World. Their support and encouragement are one of the drivers that make this project a success. Together with Professor Zhu, whose suggestions and comments were the reasons that we are constantly looking for ways to further improve and refined our project. Our team really appreciate his dedication and support given to us by making trips down on weekend to discuss our project and give pointers on the various aspects of the technical implementation and our presentations before each milestone.
The feeling of satisfaction and accomplishment after completing the entire application will always fondly be remembered for the rest of my learning journey in life. Lastly, from this project, i firmly believe that only through challenges and stretching to each's limits for this project, then i can truly be more competent technically and also improving my soft skills.
The entire journey of doing this IS480 project is indeed amazing. From nothing at all other than the objectives given from our client, we were able to come out with the entire suite of B1G1 Applications, I have learnt a lot, in terms of programming, project management. My main role while working on this project is to develop the force directed graph to show the leverage giving impact, and search. It was challenging, first from trying to adapt the force directed graph on Visuwords, then to looking for other alternatives when the graph on Visuwords could not be adapted. And when I finally found the open source flash library: Flare, quite alot of time was spent on understanding the API. Besides, I was not well versed in Flash Actionscript, and that gave me a steep learning curve. Creating the XML file using php was a feat too. I am proud to say that after this, I have grasped quite a great deal on Flash Actionscipt and I am confident with putting this to use in future projects. Lastly, I will not forget the friendship that I have forged with my wonderful team mates.
This IS480 journey has been an unbelievable one for me. It was just like a action hero movie to me - where the hero in the action movie would achieve everything from zero in a short 2 hours as I am watching the movie. This roughly sums up what I want to say about my reflections. It was just amazing how we managed to be able to achieve what we have from virtually nothing and at that time, we were also months behind other teams in terms of time spent on our project. In the action hero movie, there would also be villains and these would be the many APIS that we had to dissect and understand. As my team and I conquered each API, the more we felt satisfied with ourselves. We were invincible. And with each villain or API, it was just a stepping stone for us to ultimately achieve what we have today. The B1G1 World Suite of Applications. I am really proud of what I have achieved. As with every ending of a action hero movie, the hero would have learnt something. For me, it was the experience of working together towards a common objective, and learning from everyone else in the team that was the most valuable to me. This project also serves a very special meaning to our society. With this project, I am able to contribute to our society by increasing the valuable contributions made to projects that help the less fortunate. This is also common to the superhero in the action movie. We all put our effort and work towards a better tomorrow.
This entire IS480 journey has been a long one, and it has proved to be both a challenging and enjoyable experience for me. There was a lot of work was involved in the learning of new technologies (Facebook API, Flex, Actionscript etc) and many sleepless nights accompanied the positive progression of this project, but in hindsight, everything served the higher purpose of increasing my expertise in a particular area and in expanding my skillset. I learnt to treat my time with much more importance than i had in the past, and this has served to change my perspective in the way i spend my time and how i plan out my activities. I now set better and more realistic goals instead of over-promising, and this has also served to allow me to better set expectations for myself when attempting something new. Last but not least, the feeling of satisfaction after completing the the entire project will not be soon forgotten, and it will definitely motivate me to attempt more challenging projects in the future.
"Maxco team has dramatically transformed our thinking of what's possible. Their focus, passion, talent, determination, diligence, flexibility and great team work inspired us and encouraged us to think even bigger. Now, this wonderful addition to our system makes what we do so much more engaging and dynamic. We are thrilled to be able to share this amazing interactive tool with many others so that we can make a greater difference together."
Buy1GIVE1 - B1G1®
Changing our world one transaction at a time
“Creating the B1G1 World Suite has come to mean so much more to us than just a project.
We see it as an instrument that can be used to change the lives of millions of people around the world,
And to leave an everlasting impact on the neglected underprivileged society.
Thank you to everyone who has been there for us in a way or another."
~ Team Maxco (AY2010, Term 1)