Skip to content

Latest commit

 

History

History
70 lines (51 loc) · 4.42 KB

fterh.adoc

File metadata and controls

70 lines (51 loc) · 4.42 KB

Fabian Terh Jun Wei - Project Portfolio

PROJECT: Infinity Machine


Overview

Infinity Machine is a source manager to be used by tech-savvy university students who are comfortable with the command line interface (CLI). It is an application for the efficient storage, management, and retrieval of research information (sources). It is privacy-focused, powerful, and flexible. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.

Summary of contributions

  • Major enhancement: added the ability to add, remove, and manage command aliases

    • What it does: allows the user to define custom aliases for commands, which persist across sessions

    • Justification: This feature improves the product significantly because a user can: (1) create custom memorable alises for any of the existing commands; (2) work more efficiently by creating shortcuts for lengthy and commonly-used commands

    • Highlights: This enhancement affects the way user input is parsed and executed, both for existing commands and commands to be added in the future. It required an extensive analysis of various design approaches. The implementation was challenging because:

      • There are different classes of commands that are parsed and handled in different ways. This enhancement must be agnostic to these various classes of commands, and must potentially work with any new future classes.

      • This enhancement must both be backward-compatible with existing commands and also transparent to implementors of future commands. In other words, this enhancement will work seamlessly with any future command implementations, even if the implementors have no knowledge of this enhancement.

  • Minor enhancement: added a panic/unpanic mode command that allows the user to quickly hide the current list of sources from display.

  • Code contributed: [Reposense][AliasManager][ConcreteAliasManager][ConcreteAliasManagerTest][AliasStorage][ConcreteAliasStorage]

  • Other contributions:

    • Project management:

      • Co-managed releases v1.1 - v1.3 (3 releases) on GitHub

    • Enhancements to existing features:

      • Updated codebase to morph from AddressBook to Infinity Machine (Pull requests #89, #93, #98)

      • Included reposense (Pull request #117)

      • Updated existing tests to include integration tests with major enhancement (Pull request #132)

    • Community:

      • PRs reviewed (with non-trivial review comments): #54, #69

      • Contributed to forum discussions (examples: 1, 2, 3, 4, 5)

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.