Hello there! My name is

Tivinia Tonga

Front End Engineer

I enjoy turning creative ideas into clean, accessible user interfaces that provide wonderful user experiences.

Hire Me

About Me

Hello! I'm Tivinia, a software engineer that enjoys breaking things and developing robust software with user experience in mind. Most of my experience is in Desktop Applications but through side projects I've found a passion for Web Applications.

During my Computer Science program at the University of Utah I interned and then was employed in the Cybersecurity department of Intermountain Healthcare. While there, I worked on a wide variety of substantial projects on a daily basis.

Technologies I have worked with recently:

  • Java
  • HTML & CSS
  • C#
  • JavaScript
  • MySQL
  • jQuery
  • Node.js
  • Express

Portfolio

Scheduler

A Java Desktop App that uses MySQL to store and verify user data (logins, changes, new entries, appointments). Utilized the MVC architecture in order to separate the internal information and allow for code reuse.
  • Java
  • SQL
  • MVC

Inventory

A Java Application with a requested user interface and UML diagram. Abstract classes were used because of the commonality of the other classes. MVC architecture separated components for future updates.
  • Java
  • OOP
  • UML
  • MVC

AgCubio Game

A game of "eat or be eaten" where players login to a server where their playing states are saved so they can logout and return to finish up their game.
  • C#
  • JSON
  • TCP Server
  • MVC

Personal Website V1

First attempt at a personal website to display my portfolio. I was familiar with HTML/CSS so I wanted to try using Bootstrap. Kept it very short and simple.
  • Bootstrap
  • HTML
  • CSS

Contact

Please feel free to contact me with any questions or opportunities, or just to say hello!

Scheduling Desktop Application

Appointment Screen

Appointment summary screen with navigation buttons

Introduction

My Software II course for my Computer Science degree required a final project where I had to come up with the design and implementation of a scheduling desktop user interface application for a business that had very specific requirements. There were no templates or GUI recommendations, so the research and planning phases were very important. The IDE I used was Netbeans v8.2.

Requirements

The business is a global organization with main offices in Phoenix, Arizona; New York, New York; and London, England. The organization uses a MySQL database for all their data, so its structure must be maintained. There must be a login form that can detect the user's location and translate according to the associated language of the location. Customer records and appointments must be able to be added, updated and deleted in the database.

Appointments must link to the specific customer. Appointments must have ability to display by week or month. Appointment times must adjust to user's time zone and daylight saving time. Appointments must be scheduled for business hours, cannot overlap another appointment, and must refer to customer data already in the database.

Features

Database and SQL

I used MySQL as the database to hold all the user data and appointments.

Geolocation

The application uses the user's system's location to determine time zones and language. The three supported languages in the application are English, French and Spanish.

Conclusion

I really enjoyed the freedom I had with this project. There were so many details required in the functionality, so I focused more on coding the functions than on the design of the user interface. I will eventually go back and work more on the GUI and some minor bugs, but I'm very happy with the overall functionality of the app.

Inventory Desktop Application

Inventory Screen

Add Product Screen for Inventory Application

Introduction

My Software I course for my Computer Science degree required a final project where I had to create a design document from an organization's needs and requirements and then develop the system based on the design document. I was given a scenario and needed to develop something to solve the problems in the scenario.

Requirements

In the scenario, a small manufacturing organization outgrew its current inventory system. Previously, the organization used a spreadsheet program to manually enter any additions, deletions, or changes. The organization provided me with a mock-up of the interface and a UML Class Diagram to use in the design and development of the system.

The preferred IDE for the JavaFX application was Netbeans v8.2. The specified User Interface provided in the mockup was required with little to no variations. The application must be able to add, modify, and delete Parts and Products (products are made up of parts). Add, Modify, and Delete Parts and Products each need a separate screen. The Parts screens must be able to toggle between an "In-House" view and "Outsourced" view. The Products screens must be able to associate existing parts with a product.

Exception controls with custom error messages were required in the implementation. The exceptions included: restrictions to min/max values for parts/products, products must always have at least one part in order to exist, confirmation dialogs for deletions and cancellations, the price of a product must be greater than the cost of the parts, and all fields must be filled in when creating a part/product.

Features

Object Oriented Principles (inheritance, encapsulation, abstraction)

Abstract classes were utilized because of the different types of Parts that existed. In-house Parts and Outsourced Parts shared many things in common with the exception of a few subtle differences, so they inherited from the abstract class and implemented a few of their own methods. Encapsulation was used to bundle the data and hide the instance variables of Parts and Products.

Exception Handling

Instead of crashing when a user does something the application does not support, exceptions are handled in a graceful way. There are popups, alerts, and resets in order to prevent actions that will cause the application to crash. Edge cases are tested in order to ensure all exceptions are caught and handled.

User Interface Development

Along with Netbeans, I used SceneBuilder to create the GUI. SceneBuilder provided a user interface where I could drag and drop items exactly where I needed them. Buttons, fields, and all the other components could be sized, colored, and given an ID. I used the respective ID's in my code to give specific functions to each part of the GUI.

Conclusion

I have used Java extensively throughout my college years, so I am very comfortable with the language. Developing this application helped me to solidify what I already know about Object Oriented Programming. The application was built for a small organization, so the use of arrays to store data worked just fine. If the application needs to be scaled up, a database will definitely need to be used instead of the arrays.

AgCubio Game

AgCubio

AgCubio login screen

Introduction

One of my programming courses for my Computer Science degree had a major pair programming assignment. The objective was to build the AgCubio game from scratch. The objective of the game is to "eat" or move over as many other cubes as possible before someone moves over you. As a player moves over other cubes, their cube grows in size and their velocity slows down a bit. Thus, the bigger the player's cube is the slower their cube moves. Players can only consume cubes that are smaller than their own cube.

Requirements

The project required the use of servers and sockets in order to allow multiple players to play the game simultaneously. Also, the state of each player's progress needed to be saved so the player could logout and log back in at a later time to finish their game. The user interface must be user-friendly and provide the main graphics of the gameplay (users start as small cubes and as they move over other cubes, they grow in size).

Features

TCP Server

The state of the game was passed between socket methods. Data was sent and received as byets. Server communication was done through Port 1100, where sockets were connected to the server. Threading was used to allow multiple states of the game to occur at the same time.

MVC Architecture

The Model-View-Controller architecture was used in this project to separate the different components of the game. Model consisted of the Cube and the World. The Cube was the player's cube used during gameplay. The World consisted of the main functions of the rest of the game where "food" and "other players" reside. The View consisted of the user interface components, such as window, title, buttons, etc. The Controller was how the Model and View interacted with one another as far as functionality. The network settings resided in the Controller because it was a key component of data passing and interaction.

Graphical User Interface

The user interface was made with Java Drawing, Font, and Form. Threading was used to render the correct positions of the cubes and food when necessary to avoid lagging.

Conclusion

This project was completed with partner programming, which helped me a lot with learning the new material. My partner was very knowledgeable with servers and sockets, so he was able to walk me through that part of the project. Together, we figured out how to draw the graphics for the user interface and incorporate JSON into our application. Overall, I learned so much from this project and I still use and build upon many of the principles I learned.

Personal Website V1

Personal Website Verson 1

Header section of my personal website v1

Introduction

I needed a way to showcase my portfolio, so I decided to create a personal website. The first thing I did was purchase my domain name and then I quickly put together a website design and started coding away.

Requirements

I needed a navigation bar to allow visitors to jump to different locations of the page. I also needed a header, about me, portfolio, and contact section. I wanted everything to be put together and deployed within the first day I started.

Features

HTML & CSS

I have always been comfortable with HTML/CSS thanks to many previous projects I've worked on. When it came time to code this part, it was quick and easy. There were not too many details in the design I put together because I wanted to get something up very quick.

Bootstrap 4

I was somewhat familiar with Bootstrap's capabilities but I never worked with it on any of my own projects. This project allowed me to really dive into Bootstrap's Docs and try different things. I became very comfortable with Bootstrap 4 by the end of this project.

Responsive

Even though I just wanted something quickly put together, I wanted to account for different screen sizes. With Bootstrap, it was very easy to incorporate responsive designs into my website. The screen sizes I accounted for was mobile (xs - sm) and desktop (md and up).

Conclusion

I learned a lot about Bootstrap 4 and responsive designs with this project. With Desktop Applications I did not really have to worry about accounting for different screen sizes because the applications are used on laptops and desktops. It was interesting to work on something that is actually live and out on the web. This project really gave me a new excitement and passion for Web Applications.

Mobile Device: Turn phone to landscape view.

(tap to close)