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.
-
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, orUiActions
, 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
andStorage
, making it a full-stack development consisting of more than 4000 lines of functional code and more than 1500 lines of tests.
-
-
-
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.
-
-
Other contributions:
-
Project management:
-
Managed releases
v1.2
-v1.2.1
(2 releases) on GitHub
-
-
Enhancements to existing features:
-
Documentation:
-
Community:
-
Tools:
-
Integrated a new Github plugin (Travis-CI) to the team repo
-
-
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users. |
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. |