Author Archives: crystalkoo

About crystalkoo

Fourth year UBC student who is majoring in Computer Science. I usually spend time playing ultimate frisbee or working on assignments or personal projects!

Status Report

Mark Striemer


* Implemented the models and first few views for the OAuth support

* Did a lot more reading on how OAuth works
Next Steps

* Continue implementing OAuth support

* Write an OAuth client for testing the OAuth server

* The JavaScript OAuth client that I was using to test the server

appears to be version 1.0 and will no longer work for testing

Steve Sutcliffe


* corrected critiques on fill-database script

* added password option

* chose next project (an unfinished project from last year)

Next Steps:

* review code in unfinished project

* figure out what needs to be done & where to start

* get the code itself (we don’t have access to original project, Christian is

looking into this)


* unfamiliar territory on this new project, looks like lots of alterations to

various parts of reviewboard.



Crystal Koo



* Fixed this annoying bug with quick search that took me forever. It turned out I was searching for a private review request and so it was returning stuff that was undefined.

* Post reviewed and David has given some feedback. I have fixed those and updated it.

* Had some trouble with grabbing Mike’s code of issue tracking but Christian helped me on that. I started looking into it and played around with it for a bit.

Next Steps:

* Waiting on feedback for quick search

* Tried playing around with issue tracking but I’m getting an error so I didn’t get a chance to use it

* Making the inline of issue tracking prettier

* Start working on screencast?


* Need to figure out how issue tracking works exactly and figure out why I’m running into an error

* I have 3 midterms and a project due next week and going to Texas on Friday. Super time management is key

Mengyun Kong


* Implement context menu for spell checking on diffviewer

* make ‘ignore once’ and ‘add to dictionary’ work for the feature

Next Steps:

* clean up code

* improve and add functions

* maybe it’s time to think about improving the performance for highlighting errors


* not sure if I’m on the right way..



Teresa Hume



* Working through review comments (fixing problems).

* Re-working templates (found some places where the smaller components had more than they should to be easily extendable).

* Wrote up instructions on how to extend a template along with a simple example.

* Wrote up a blog post for UCOSP.

* Probably ready to start thinking about a new project (or possibly try some bug fixes).

Next Steps:

* Finish up the fixes from the review.

* Try some bug fixes/look into screencast software.


* Nothing right now


Kahlil Amlani


* Completed most of screen shots into XML transformation

* Received some advice on how to handle code diffs and have been trying to figure it out

Next Steps:

* Complete the code diffs part


* After taking ChipX86’s advice, I spent a lot of time trying to implement various pieces in order to get the diff. I am getting the results back, but I don’t know how to handle the data so that it is produced in the format I need it.




Meeting Minutes Mar 13

– Mike is running the meeting. Christian could not attend meeting.
– 4 weeks left till this term ends
– Start thinking of screencast
– A very good idea to download and try out the application for your screencast now
– Script something out for the screencast
– Length wise: prefer short and snappy, show rather than tell. Long doesn’t mean better
– People looking for new projects: Crystal

Rough Timeline

Now that the term is half way over, so I should really make another timeline to see where I’m at for this project. I’ve been working on the quick search feature mostly so far. Even though the feature might be simple, the learning curve has given me lots of challenge. I actually haven’t written that many lines of code but for every little part I’ve been doing, it has taken a lot of research and questions asked in order to accomplish my task. So far,  I have written a SearchResource and polished it a couple of times to get the data that I want. It seems to work the way I want so far. For my javascript wrapper function for autocomplete, I have managed to have it autocomplete users, groups and review requests so far. Next up, the remaining tasks are:

Post review so Christian/David/Mike can see what I am up to and if my code could use some changes and provide screenshots for it. (This week)

Make it look nicer. I assume this is done with css. (This week)

Have another features such as:

Clicking on the suggestion takes you directly to the suggestion’s url. (Ex: suggestion of a specific user takes you the user’s url) (in 2 weeks)

Pressing something like tab can help you automatically autocomplete (in 3 weeks)

These are some ideas for my autocomplete. I guess there are more features I can add to the autocomplete.


One of the best parts about programming is when I make progress at what I’m trying to do. I would be lying if I didn’t say at some point I had a panic attack over if I was ever going to complete my quick search feature. Learning this ReviewBoard has been challenging, since I know nothing about Python and the whole Django framework before I started. Luckily, I have some awesome mentors and they are really willing to help me out even when I am asking a lot of questions. Even though this term so far has been extremely challenging trying to balance myself between school, ReviewBoard (I don’t count it as school work!) and Ultimate, I find joining UCOSP and working on this project have been extremely rewarding. This is nothing like what you learn in school. I haven’t done much in web development at all so learning Django has been very interesting. This is something completely different from what I would be learning at school with languages like C++, Java etc…

It’s been 2 weeks since the code sprint and I am really hoping to pick up the pace of my project especially I don’t have any midterms right now and reading week is upcoming! Lately, I’ve been working with the Web API resource to filter objects from models. After a bunch of trial and error, I’m able to display the list of users, review groups and review requests through my new resource. The search is mostly working for now. This is my first time writing code in Python so progress has been slow. At the same time, I’m happy to finally be accomplish part 1 of many for my project. In the mean time, I’ll keep pushing hard to make more progress. Hopefully my next blog post will be more interesting! 🙂

Status Reports



  • I’ve been working on fixing git patches so that they can be
    properly applied properly.
  • I have the patches working for new, updated and deleted files, but
    files with mode changes are a special case that doesn’t work yet.

Next Steps

  • I will probably need to talk to ChipX86 to figure out why this
    error is happening.
  • I will hopefully start on a bigger project Monday!


  • array[i]; i++ != i++; array[i] =\
  • Mode changes are really weird, they don’t seem to belong to a
    certain revision, at least when git creates the patch, and ReviewBoard
    is not happy with changes that don’t belong to a revision.



  • Completed a sample program that uses XML and Python to write out a XML File
  • Started to learn about Reviewboard Web API, and how this can help me with my extension
  • Got some more clarification on my extension
  • Decided a little bit more on how the extension will work (I.E use the configurable button under the administrator page to set the specifications of what fields the XML button in the review will export)

Next Steps

  • Learn about the Web API within my ReviewBoard. I have been told it is a little bit complicated, so I anticipate this not being a very simple task.
  • After that is completed, I need to connect that to my extension so I can get a hold of the review information.


  • I am still struggling a bit with the Review Board Web API and how it works and how to use it.


  • Made some great progress on the database script
  • Able to add users and profile information through the database script just by specifying the number of users
  • Discovered a bug in the code that David was able to fix which prevented adding new users through the interface
  • Added a customizable password to the users that are to be generated
Next Steps
  • Understand relationship between review-requests and users
  • Understand roll of review-requests
  • Determine the database requirements to populate review-requests
  • Finding all the dependencies of for review-requests (looks like there may be various types of requests


  • Wrote a new Web API Resource for quick search call SearchResource
  • After a ton of trial and error and reading after other resources, I managed to be about to list out all the users, groups, and review requests through /api/search
  • Through /api/search/?q=<keyword>, it is able to list user’s username/first name/last name, group’s display name, and review request’s ID
Next Steps
  • Although what I have done with the SearchResource works so far, I am not sure if it is the best way to do it. I need a little help for this.
  • See if I’m on the right track for SearchResource
  • Need to clean up the code as well in terms of variable naming, and styling
  • Need to implement to search and filter for group name, and review request summary
  • Start thinking/researching on how the javascript that builds the URL to use the SearchResource works and how it takes the output as well if what I’m doing with SearchResource is going in the right direction
  • Lots of questions to ask about WebApi (I had trouble finding online tutorial/resources for it)
  • A bit unsure where to move on after completing SearchResource


  • decide to use GNU Aspell for spell checking and find two libraries as python wrapper(different pros&cons)
  • able to run a simple checker with suggestion outputs (not elegant and no relation with rb)
  • read the django book to have a general idea of the framework
  • try to connect rb db with my ugly checker.(know from Crystal about WebAPI. not sure whether it can work for my future?)
  • (write a post as a 2-week report for UCOSP)
Next Steps
  • have a clearer idea of my feature (turn to Chipx86 for guidance)
  • get data from db for the checker
  • figure out where the checker should be
  • found that the development plan needs to be modified..


  • Figuring out the templates (wasn’t able to get much done this week with other assignments and interviews going on)
Next Steps
  • think of places where users may want to add in their own custom components
  • go through the templates for review board (see if any can be separated out)
    • certain pieces that would be common to require customization
  • test out extending some of the existing templates with customized templates
  • other classes (was a bad week for this)
  • interviews
  • turns out my idea of themes was very different from the themes that I will be working on

Meeting Minutes Jan. 30, 2011

First Meeting after sprint:

  • Team photo: Karen has it and Mike has emailed her about it
  • Steve’s presentation. A course requirement for him. He talked mostly about the scalability testing.
  • Our mentors (Chris, David, Kevin and Mike) do the technical bits of RB but not so much about the University/course requirements.
  • Mentors love to hear about what we are doing. Keep up with postings on the blog about your progress
  • Do not commit code to ‘master’ or ‘extensions’ branch. Always create a branch for each review request. If you do make a mistake in committing to master or extension, go get help to reverse it.
  • Send emails or post on blog about your project development plan if you haven’t done so.
  • Meet Minutes: Post the highlights of the meeting
  • UCOSP folks would like more posts on their blog about our project. So bi-weekly, they would like some high-level progress reports of what has been done. By high-leveling, it means screenshots, language for people who’ve never used RB, etc… These posts should be interesting, not just status reports. Ex: personal observations on project, problem encountered and how to resolve, issue that hasn’t been solved but the rest of community can help with, description of a feature/tool, victory dance when a feature is completed.
  • Mike will be adding names to “Who’s Doing What” for this bi-weekly posts about updates. Stay tune (thru email + blog) for who’s doing on which days/weeks
  • Chris will be doing the first post. The blog is inaccessible to us and so we have to email our blog to for them to update the blog for us.
  • Keep blogging!