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 internalauslanID
, 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