Skip to content

Latest commit

 

History

History
110 lines (79 loc) · 5.63 KB

tiuweehan.adoc

File metadata and controls

110 lines (79 loc) · 5.63 KB

Tiu Wee Han - Project Portfolio

PROJECT: AlgoBase


Overview

AlgoBase is a desktop algorithmic problem manager. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 20 kLoC.

Summary of contributions

  • Code contributed: Code contributed

  • Major enhancement: Implemented features for the Graphical User Interface

    • What it does: allows the user to open problems & plans in their own separate tabs, where they can edit and delete said items in the GUI in a user-friendly manner.

    • Justifications: As our target users are Computer Science students preparing for technical interviews, they would likely want to manage multiple plans and problems concurrently. We decided to introduce tabbing to address this need, as it is a convenient, intuitive and user-friendly solution. Furthermore, while the command line is fast for typing short commands, it might not be ideal in certain cases. For example, it would be extremely tedious and time consuming to edit large amounts of text from the command line. Hence, I implemented the ability to edit a problem or plan from within the tabs. Not having to deal with cumbersome details tremendously improves the overall user experience our user – it reduces their frustration and maximises the time they spend practicing for their interviews

    • Highlights:

      • This enhancement introduces a new high level component UiLogic, which handle events, or UiActions, triggered by the user in the GUI. It was challenging as logic of the Command line is primarily synchronous while the GUI is event-driven. Integrating the 2 architectural styles cleanly required an in-depth evaluation of design alternatives.

      • Furthermore, this feature transcends across all 5 components of AlgoBase: UI, Logic, UiLogic, Model and Storage, making it a full-stack development consisting of more than 4000 lines of functional code and more than 1500 lines of tests.

    • Relevant pull requests: #37 #85 #215 #200 #224

  • Minor enhancement: Command Line Tab management.

    • What it does: allows the user to manage (i.e. switch, open and close) tabs from the Command Line.

    • Justification: While a GUI would make sense for tedious actions like editing, the command line is arguably faster for simpler actions like switching tabs. Furthermore, our target users are Computer Science students who are used to command line window / tab management (through vim and emacs). Hence, I decided to implement a command line version for tab management to optimize for these users, which will help improve their user experience.

    • Relevant pull requests: #66 #106 #147

  • Other contributions:

    • Project management:

      • Managed releases v1.2 - v1.2.1 (2 releases) on GitHub

    • Enhancements to existing features:

      • Enhanced GUI color scheme: Pull request #85

      • Wrote additional tests for existing features to increase coverage from 33% to 40%: Pull request #200

    • Documentation:

      • Added images to the User Guide that serves as visual aids. #200 #224

    • Community:

      • PRs reviewed (with non-trivial review comments): #24 #34 #90 #116 #117

      • Contributed to forum discussions:

        • Guide on image and caption formatting in asciidoc: #168

      • Reported bugs and suggestions for other teams in the class: Reported 18 bugs in PED

    • Tools:

      • Integrated a new Github plugin (Travis-CI) to the team repo

Contributions to the User Guide

Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users.

Contributions to the Developer Guide

Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project.