← Home

Experience

Dec 2023 - Present   ·   Monash University, Casual Research Officer -> Senior Technical Officer

ABOUT THE PROJECT

I have developed, and continue to develop, an Auslan finger spelling npm web package. This package translates text to interactive 3D animations.

auslan-spell-web-package primary features include:

  • orbit controls - panning, zooming, and rotating the camera
  • playback controls - speed, play/pause, restart, clear, animation scrubber
  • themes - applies to all components (with the same auslanID), and the hands if no texture is applied
  • keyboard shortcuts - everything, excluding sophisticated camera movement, can be done with the keyboard

I have deployed a password-protected alpha on Nectar (a research cloud) using an Ubuntu VM running an nginx server.

Tech stack:

  • Three.js
  • TypeScript
  • HTML
  • CSS
  • npm
  • Nectar (a research cloud)
  • nginx
  • Linux (Ubuntu)

ABOUT ME

There are three main aspects of this project I am proud of:

1. The animation system

Our animation system precomputes the exact scheduling of each animation in a word. This sounds simple; however, due to custom transitions, the problem is quite complex.

Our solution is a sophisticated approach that creates transition actions between the key intervals (crucial frames that cannot be skipped) of sequential actions. We apply collision detection and avoidance to create maximally smooth animations, while allowing frame-perfect scrubbing. Additionally, the smoothness of the animation is configurable: developers using the package can easily adjust a single variable, smoothnessFactor.

The APIs used to interact with the animation system are extendable. A developer can create their own hands/scene controllers if they require specialised functionality, for example, supporting a niche file type.

2. The custom component library

The package includes a component library with the following:

  • A base component: this has all the generic methods every component needs.
  • A styled component: this contains a HTML style element with CSS variables for all the theme values. Additionally, this class sets up a theme subscription based on its internal auslanID, meaning any class extending this will be connected to a global theme.
  • Core components: these are the generic components most UIs need — buttons, inputs, sliders, etc.
  • Specialised components: these components interact directly with the animation system — prompt input, play button, hands container, etc.

The default usage of this package includes all specialised components neatly positioned; however, the modularity and extendability of the component suite allow for practically any use case. For example, a developer building a quiz application would choose to omit the prompt input and display, and may choose to omit the playback controls (speed, scrubbing, etc.) to increase difficulty.

The components are written using native DOM APIs. This makes the components compatible with all browser-based frameworks, which is especially important as our quiz application is being written in React.

3. High-quality documentation

The package includes a README with basic usage and examples. This will suffice for the majority of the package's users; however, for more complicated use cases, there are detailed JSDOCS that can be generated by cloning the repository and running npm run docs.


We have exciting plans for the future, mainly finger spelling recognition, and full word sign generation. I believe these projects will greatly improve web accessibility for deaf users; however, due to limited monetisation capabilities, investment in these projects will likely be limited. Therefore, to enhance web technologies for everyone, I will continue to develop, as an open-source contributor, my projects and the future Auslan projects.

Skills developed:

  • Project management
  • Time management
  • Self code review
  • Architecture design
  • Repository management (consistent commit msgs, code formatting, PRs, etc)

REFERENCES

Dr. Kalin Stefanov, ARC DECRA Fellow · Supervisor, Chief Investigator
Show email


Nov 2023 - Aug 2024   ·   iLearn Education, Frontend Developer

ABOUT THE PROJECT

Soon after I resigned from my position at Woolworths I began work on the frontend for iLearn Education. iLearn Education currently provides in-person tutoring services; however, they are expanded online to offer courses where students can practice for NAPLAN exams, and scholarship & entry tests. The website allows students to view their results and compare them to other students providing insight into where they might place for the official tests. Additionally, the website posts blogs to inform parents of the actions they can take to maximise their child's chance of success.

Tech stack:

  • Next.js
  • React
  • TypeScript
  • JSX
  • CSS
  • Digital Ocean

ABOUT ME

This project was the first where I designed (alone) the frontend architecture, in the process I made a few technical mistakes that came from an overzealous attempt to apply programming principles & patterns (dependency injection, factories, etc.). Technically, the code is more extendable; however, we refactored more than we added new features making the abstractions hindrance. I think my main takeaway from this experience is: that premature optimisation will (mostly) be a hindrance, it is better to solve the problem in the most simple way, and only add abstractions when a clear need arises.

I was able to take these learnings to my next role as a Casual Research Officer, which helped me circumnavigate many of the problems I encountered in this project; however, it is worth noting that this project had a greater scope, and thus it was much harder to keep the code clean and organised.

Skills developed:

  • Client communication
  • Requirements gathering
  • Time constrained development
  • SEO
  • UX design
  • Code collaboration (PRs, code review, consistent code formatting, etc)

REFERENCES

Devang Krishna · Client
Show email

Feb 2023 - Oct 2023   ·   Monash University, Software Industry Experience Studio Project (FIT4002)

ABOUT THE PROJECT

FIT4002 is Monash University's Industry Experience unit, essentially, you join a team and then are assigned a project and client. It is up to the team how they want to organise everything - roles, version control, tech stack (to an extent), etc. I ended up choosing a team that was a subset of a larger team from a previous unit, I knew everyone in this team would contribute and work well together. We were assigned a project managed by Jonny Low, the project was a cross-platform mental health triage (prototype) application. The application included roles for admins, nurses, and nurse leaders; each role had different requirements, and thus different features and UI. I won't bore you with a detailed explanation, instead, I recommend watching the demo video here (same as the embedded video), you can also watch a condensed version here; Mr. Low has his own publication of the application here if you would like to read more.

Tech stack:

  • React Native
  • Firebase
  • TypeScript
  • JSX

ABOUT ME

I learned a lot from the team on this project, specifically the other lead developer (who ended up getting dux); I believe this was the first time I recognised the code written by another developer was much better than what I could accomplish (with my current knowledge). I actually use very similar (de) serialisation logic in most of my projects now because it works so well. What I took away from this (other than specific code ideas) is: to read other people's code, especially people who are better at programming than me.

As lead developers, Andre and I were responsible for the codebase, early on we had to deny some PRs because of React mistakes, this was understandable as most had not worked with the framework before; instead of reproaching the team, I suggested we hold a 2-3 hour workshop, in which, I would go over React basics and teach the team how to avoid some of the mistakes we had observed. This workshop worked well, the code noticeably improved, and the team said they found it useful.

Most of my experience has been on solo projects, or on projects where the teams are very siloed, this was the first proper project where I worked with a team of this size. I found the experience of working with other developers to be very enjoyable, it allowed me to focus more on architecture design and implementation rather than specific features. I think I enjoy this more as I find designing architecture allows me to express my understanding in more interesting ways.

Skills developed:

  • Architecture design
  • Teamwork
  • Presenting
  • Leadership
  • Code collaboration (PRs, code review, consistent code formatting, etc)

REFERENCES

Nabeeb Yusuf · Team member
Show email

Feb 2022 - Jan 2023   ·   CosyWrap, Freelance Developer

ABOUT THE JOB

I developed a prototype Site Inspection application for my parents' business (CosyWrap).

Tech stack:

  • React Native
  • Firebase
  • TypeScript
  • JSX

ABOUT ME

This was the first application I had ever built, honestly, I had no idea what I was doing; thus, I was incredibly fortunate to have this opportunity to learn. Through this project I was introduced to, designing UIs, implementing APIs, creating databases, and much more. This experience provided me with the foundation I required to develop and refine these skills over time. I truly don't believe I would be where I am today without this first application.

REFERENCES

Graham Loose · CosyWrap Owner
Show email

Oct 2018 - Nov 2023   ·   Woolworths, Night Filler & Deli Clerk

ABOUT THE JOB

There's really not much to say about this one; I worked for five years stacking shelves and serving in the deli.

ABOUT ME

If there's one thing I learned from this job, it is that I never want to work in a deli again. On a more serious note, this was my first job, so it was very helpful for building my soft skills - communication, teamwork, time management, etc. I worked at Woolworths while studying, this improved my time management and organisational skills - it taught me how to balance a social life (living on campus), with studies, and work, a skill I'm sure I'll be using for the rest of my life.

REFERENCES

Kristian Siviloglou · Fresh Convenience Manager
Show phone number