From OpenStreetMap Wiki
Jump to: navigation, search

Personal Profile

I am Maggie. I am from Hong Kong, but I study at UBC in Vancouver. I major in Computer Science and Mathematics. I am going to graduate in May this year. How exciting it is!!! My plan is to stay in Vancouver and look for a job because I love this city and there are wayyyy more CS opportunities in Vancouver than in Hong Kong.

I found out about OpenStreetMap from Google Summer of Code 2011. I always have a mysterious interest in map software or map tools, and a lot of OSM projects are very fascinating to me. I would like to contribute to OSM no matter if my proposal is accepted. Besides map tools, I have interests in geometry, animation and bioinformatics, and so on.

GSoC Application

I have already submitted my application through the official website, but I'd like to elaborate more in this page.

Project: Automatic Street-Sign Detection and Reading 2 (JOSM)

Why I'd like to execute on this project: Like what I said in my personal profile, I am interested in a lot of OSM projects. But I am particularly interested in this project because I believe this is one of the great tools that will benefit the OSM community significantly. People carry cameras and phones with them all the time. It will be more convenient for them to take pictures and edit OSM using the Signfinder tool than memorizing the street names and the locations of the streets to edit OSM at home. Also, image processing and extracting data from image are the trends of technology, so it will be awesome if OSM can develop this kind of technology.

Why I'm an ideal candidate: I have 4 years of Java experience and 3 years of software engineering experience. (Please see below for my academic and industry experience). I am a fast-learner. Even though I am not an expert in image processing, I can take the initiative to learn all the opportunities out there that can be used for our tool. Also, I am very responsible. After I commit to a project, I always do my very best to complete it with good quality.

Academic experience: I have taken software engineering course, computer system courses, algorithm (from introductory to advanced) courses, data mining course, and many other beneficial and interesting CS courses. Also, my Mathematics major may be handy for this project. I started Java in my first programming course, and I used Java and C++ mostly for my school projects. I worked on a marking Eclipse plug-in and music store database project with Java in a team.

Industry experience: I have worked at two companies as a coop for a total of 18 months. For my first job, I worked as a QA; I was responsible for developing and maintaining automatic testing tools, devise test plans, execute functional and performance tests, and analyze the test results. One of my biggest accomplishments was to port a C++ testing tool from Windows to Linux. For my second job, I worked as a developer in a networking company. I was responsible for writing a functional specification document, design the features, implement the features, and perform unit tests before I delivered my product to the QA team. The products I worked on was written in Java and C++.

Development methodology: I like agile development more than waterfall model because it provides more flexibility for developers. For me, a huge chuck of time for research in the beginning is crucial because this can help me narrow down the options and avoid getting into a completely wrong direction. After the research period, I like to come up with an ideal design for my product, and the design is important as well because it includes how users can interact with the tool. However, slight modifications to the design should be allowed during implementation because sometimes the developers do not know if the original design is possible or it is the best until they start coding it. Moreover, I like to perform a lot of unit tests and write some documentation during the development phase because testing and documenting constantly definitely help me fix bugs and record important comments when my memory is still fresh with my code.