Project: Health Research Council eGrants System

Website: https://secure.hrc.govt.nz

Involvement: learn the software from very little documentation, solve production issues & write documentation.

Technologies: PHP/CodeIgniter, jQuery & MySQL.

A website that takes the funding applications and displays status of the progress. Open to all researchers in NZ and used by related government agencies.

This also has a parameters setting system, eg. an administrator can set up dates, forms, permissions for each funding round s.t. it can run from year to year without getting the developer to change source code.

It was my job was to maintain and tidy up this code. Even though the design is brilliant, the implementation is rushed and the documentation is next to nothing. My first step was to understand the system and to document them s.t. the knowledge stays in the organisation instead of in the developers’ heads. This is on top of general everyday production issues.

All my documentation includes dates, symptoms, and source code changes. This turned out to be very time-saving, as one symptom is usually linked to another so some preventive measures can be done before it occurs. Here’s a copy of the example bug report.

After one year HRC could already get on to plan new systems – the dream system of allowing research results to be shared amongst all researchers and/or making it viewable by the general public. I was involved as the sole developer for the technical design.

 

Leave a comment

Filed under Uncategorized

Project: Electrical Engineering Part4 Projects

Involvement: all aspects from from requirements gathering (meeting directly with users), to database design, GUI design, implementation, testing, and finally to production.

Technologies: PHP/PostgreSQL/jQuery/CSS/LaTeX, MVC, design patterns, Subversion.

Sample code: jQuery functions to display a floating edit form on top of a large table – keeping actions on the same screen s.t. no unnecessary page refresh happens.

A website that enables collaboration between the staff, students and the coordinator with everything regarding to year 4 projects. Each project involves 6 different assessments, 12 different assessors and peer assessments. Each assessment runs like a small project such as open seminar, open exhibition, research reports, etc.

Seminar timetable. Each entry is Ajax enabled to quickly validate the data as user enter the data.

Seminar timetable. Each entry is Ajax enabled to quickly validate the data as user enter the data.


Exhibition Day timetable - again with cross-checking functionalities.

Exhibition Day timetable – again with cross-checking functionalities.

Allocating duties to TA

Allocating duties to TA

TA timesheets overview. Using jQuery library to collaspe/uncollaspe each category to see the details of each timesheet. Totaling on the side keeping track of how much time was spent on each category.

TA timesheets overview. Using jQuery library to collaspe/uncollaspe each category to see the details of each timesheet. Totaling on the side keeping track of how much time was spent on each category.

This was where I learnt to analyse requirements and to listen to users. It is actually more difficult to translate what users want into the actual software. Even more difficult is when the requirements are sometimes unknown – as not all users are familiar with departmental processes. This requires design flexibility, eg. to make the code easy to change at a latter date if requirements change.

This software is now used by Civil Engineering in both Auckland University and Canterbury University. They both heard of how easy and painless Electrical Engineering manages the Part4 Projects. So they now use the same process and the same software. To me that is the best design – that it can be adopted and reused easily to many situations.

Coordinator of Part4 Projects manages all students and supervisors

Coordinator of Part4 Projects manages all students and supervisors

Giant table listing of all students and grades. One can mouse-over the grade to see who was the assessor to doubly verify. It can also be downloaded as a spreadsheet to do all kinds of data manipulation.

Giant table listing of all students and grades. One can mouse-over the grade to see who was the assessor to doubly verify. It can also be downloaded as a spreadsheet to do all kinds of data manipulation.

Leave a comment

Filed under Uncategorized

Project: SMC Tests

Involvement: completely rewrite old DOS/Pascal program to Delphi/Windows-based application. Adding a modern database to hold gathered data. Set up source code/version control. Develop test procedures.

As the sole developer for the monstrous “Sensory-Motor & Cognition Test Suite” software when working for Brain Research Institute (www.nzbri.org). It tests various brain and eye functions and was written in Delphi/SQL/DirectX. It is now a production-grade software which is used by researchers, physiotherapists, and psychologists (one of the papers used SMC Test).

I’m particularly happy with the fact that I learnt not only to maintain a large scale software, but also to manage all aspects of software development. For example version control, change control, bug tracking, documentation, and quality assurance. Now instead of a giant, obscure piece of software, it has become a modulized, controlled, cleanly written and documented software. It makes it easy to modify and extend in many years to come.

Leave a comment

Filed under Uncategorized

Sample code (PHP/MVC)

Written in 2011, following MVC design pattern. Used a Singleton/Factory pattern for database connection.

This is the controller, which filters and lists the IT assets in the Engineering Faculty.

assets_reports.php (PDF format)

Leave a comment

Filed under Uncategorized

Sample code (Django)

It is a web application for managing capital expenditure for a new finance year. Used by all staffs, IT Director, Head of Departments & Dean in the Engineering Faculty.

Written in Django, jQuery, HTML, PostgreSQL.

webpage (PDF file)

code (PDF file)

Leave a comment

Filed under Uncategorized