Software Engineering Work
Table of Contents
- Full-Stack Web Apps (Spring/React Flight Reservation Service, React/Node Tech Store, Anime Quote Server, Axios Random Number Demo, React State Proof of Concept)
- Java Applications (Java Instant Messaging Program, Roomba Simulation, JPaint, StarDucks Coffee, Grading System, Mickey Moose Fibonacci, Queues and Stacks in Java)
- Python Applications (Weather App, Python Clock, Seat Reservation System)
- SQL Database Work(Introductory Database Work, Relational Database Series)
Full-Stack Web Apps
These are just a few web apps that I have made! Most of these feature Java on the back-end, and React or even just plain HTML on the front-end.
Redux Slice Proof Of Concept
This is my first foray into Redux! This miniature project was made using a combination of React.js and Redux. A user can change the color of text and enter their info in the text fields.
Wright Airways Spring API
This is a two-part entry, along with the user interface below. Using a combination of the Java Spring/Entity frameworks and a MySQL database,
I made an e-commerce application that can let an end-user reserve seats on a variety of different outgoing flights. In a nutshell, when actions are performed by the end-user
(more on that later), various Axios calls are sent to the Java Spring application. From here, the RestController (driver) class will execute SQL calls to the database through
defined Entities that connect to different tables that store data.
Wright Airways React UI
Here now is the React/Axios user interface for the Wright Airways applicaiton. With this program, combined with the above Spring API, a user can
reserve their seat on a flight. The homepage of the site features a dashboard of all upcoming flights that they can select, then enter their payment and
personal information on the next page, and finally are taken to a screen that gives them their confirmation number to check in with later.
Now, for checking in, the user can do this either right after they reserve their flight (possibly for pre-boarding? I'm a developer, not a jetsetter!), or later on.
The homepage features multiple links to select flights, as well as a button that they can click on to check in for a pre-existing flight instead of
making a new reservation. For checking in, all the user has to do is enter their confirmation number, and the number of bags they'll be travelling with.
React/Node Tech Store
This is a CRUD application/site made using React/Node.js that simulates an e-commerce application like E-Bay. Here, users can create, read in, update and delete
listings from the main page. I explain this more on my GitHub linked above, but if you want to run this on your own computer, be sure to update the MySQL information with your own;
my name/password and all that have been taken out.
React State Proof of Concept
There are two main functionalities to this project: a mini CRUD web page, and a demonstration of my understanding surrounding React's State and Effect Hooks. You can read more on the README about the app's features. For now though, be warned that you'll need to go one folder deeper than the link. The project is in the folder titled "third-reaction" in the main directory.
Axios Random Number Demo
Today I made a quick React project that demonstrates that I know how to make a call out to an API and then render the results on the final user interface. This project uses Axios to make a call to a RESTful API called Random Number API that just returns one random number through an async HTTP request.
Anime Quote Server
In the wake of finishing my first internship at Concurrency, I thought I would kick off this series of web apps by making something simple but cool nonetheless. This is a client-server program that takes some minimal input from the end-user on an HTML user interface and then returns a random quote from a popular anime series. The input from the user is sent back to our Java server, which then calls a REST API (AnimeQuotes on Rapid API) that sends back a payload of JSON to be parsed by the Java logic and shown to the end-user. Once everything is all said and done, the response from the API is serialized in a JSON file as a little added bonus.
Another great thing about this starter web app is that it can be changed around/modded to fit so many different purposes! Right now it delivers anime quotes to the end user, but with the basic model of calling a Restful API, that's all you really need to get info about the weather, movies, COVID case numbers in a given area, stock market info, the choice is yours!
Starting React Project
This is my first React web app I ever made using only the Babel Compiler and basic JSX to create React Components.
Other Java Applications
Completed Java Projects
Just an assortment of other Java projects that show off my programming prowess. Some might have a Swing user interface, or others might be simple command line applications. There's a few too that use Maven!
Java Blockchain Series
So this series of mini projects is my version of a proof-of-concept for blockchain technology! This was done as an assignment for my Distributed Systems I (CSC 435) class at DePaul University and was super duper interesting to learn about.
You can look in the README for the repository on GitHub for more about coding style, as well as downloading and running these projects. For now, I would just like to give a brief overview of my understanding surrounding blockchain technology; starting with the fact that blockchain is NOT a synonym bitcoin/cryptocurrency! This is very important to remember. Even though bitcoin is made possible through blockchain technology, it's not just used there. Blockchain is a data structure, a very complex and sophisticated data structure. It makes mining for cryptocurrency possible, but is also being used for secure encryption in healthcare, banking, government software in places like Arlington, VA, and even the automotive indsutry! In a nutshell, if you're dealing with extra sensitive data like health records, money, etc. blockchain will keep it secure for you.
Java Instant Messaging Server
Before I say anything else, I should note that this project goes with the Java Instant Messaging Client that's below. Anyway, this project is the server-side application for an instant messaging application I made over one weekend. With a front-end written in Java's Swing library, and a back-end that uses networking sockets and streams to communicate with a client, I was able to learn more about networking practices in programming that were introduced in a previous Systems Programming class I took at DePaul.
Java Instant Messaging Client
This is the Java Instant Messaging Client application that goes with the Java Instant Messaging Server. When the Java Instant Messaging Server is started, the Java Instant Messaging Client can be started on your computer's localhost address to connect to the server. From there, a networking stream will start between the specified ports (must be the same, I believe I made it port 6788 in the application) between the Client and Server.
Within this "married pair" project of the Client and Server Instant Messaging Program, the one thing that I wish had gone differently was the ability to have this run on two different computers and not just on my own machine. That's definitely a work in progress with this project at the moment.
UPDATE: You can now run this program using two different PCs as of 10.10.2022!
Roomba Simulation
I'm really excited to show this one off! This is the MVP (Minimum Viable Product) of a term-long group project that I worked on for an Agile Programming class at DePaul. It's a full-stack simulation of a Roomba robot that has been given a variety of names, Clean Sweep Robot by our professor, and "Jenny" towards the end of the term by my group and I (in reference to My Life As A Teenage Robot).
In any case, the Clean Sweep Robot features a number of things. For one, it can traverse "floors" efficiently by using a greedy search algorithm (Djikstra's) to convert them into a two-dimensional linked list. Inside these linked lists, each node contains information about the floor type it is in the simulation, as well as whether or not the node in the linked list represents an obstacle for the Clean Sweep to navigate around.
In addition, this simulated Clean Sweep Robot can also detect when it's getting low on battery and will use our greedy search algorithm to return to its charging station at node (0, 0) in every linked list.
Another thing that the Clean Sweep features is a user portal that is written in Swing. Through this user portal, owners of the Clean Sweep can create a user profile (this is always authenticated) that will be saved to a JSON file and will allow returning users to login with ease. Once users are logged in, they will be able to see the history of their Clean Sweep's floor traversal from the last session, as well as a more in-depth report on what it encountered with each part of the floor (each node in the list).
Finally, as a personal first: this project doesn't just contain source code on GitHub, there are also now JARS! These can be found in the linked repository inside the target folder. Look for main_to_jar.jar for the full project.
Java Paint
I remember working on this project like it was yesterday, it was my first "big boy" project in Java. This is an application with a front-end written in Swing and a back-end written in Java that acts as a geometric artboard, that I commonly call JPaint. In this application, the user can draw circles, triangles and ellipses of various colors and shades. They can also undo their drawings, redo them (put them back on the screen after deletion) and are able to move them around the screen. The great thing about working on this project was the fact that it has taught me about the agile development process, and how to approach a software challenge in a structured, and methodical
manner through utilization of SOLID principles that keep code clean and efficient to produce a great end result.
StarDucks Coffee Shop
This is a weekend personal project that I worked on. It's a simulated coffee shop ordering app (similar in nature to the StarBUCKS app) that lets users choose a drink and a drink size to order. From this project, I learned to not only develop a small app using Swing, but more importantly how to develop something full-stack. This has not only a front-end UI that's written in Java's Swing library, but it also has a back-end component that calculates price as well.
Work From Data Structures I and II
These are from my early days of programming that helped solidify the basics of programming (i.e. arrays, linked lists, loops, recursion, etc.).
Grading System
Here is a personal project that I coded when I had a day off of classwork. It's a simple grading system where the user can enter in their ten assignments (or labs if we're trying to be relatable for my fellow CS majors) and the program averages their total score into a final letter grade.
Mickey Moose Fibonacci
This is another program that I wrote for a Data Structures I class at DePaul University. It contains recursive methods that manipulates lists in Java, as well as a program that draws Mickey Mouse as Mickey Moose! More specifically, through Java code this program can take a picture of Mickey Mouse and turn the mouse ears into moose antlers. NOTE: The user will need DePaul University's Algs4 Java folder to make this program run.
Queues and Stacks in Java
Here is an assignment that I did for my Data Structures I class at DePaul University. In a nutshell, this program moves between a right and left stack until both sides are balanced. NOTE: The user will need DePaul University's Algs4 Java folder to make this program run.
Python Applications
In addition to programming in Java for many school and personal projects, and React for my job, I've also developed several applications in Python over the years. It's an extremely flexible language and can be really great language for making "quickstart" applications!
Python Library
This project is something of a proof-of-concept for me with Python, both for basic data structures like linked lists, as well as some of Python's more advanced features like being able to communicate with the OS and start up a mail server. Finally, as the cherry on top, I also loaded in a toy progress bar that tells the end-user when the application is being loaded up and shut down!
In addition to what I've already mentioned, one of the goals of the Python Library project is to have a driving class that interacts with another Python class it has no idea about, other than to just call the methods of the other class blindly. In the driver/user interface class, the bulk of the code here is just one big while-loop that prints out ">" and then takes input from the end-user based on 10 different 3-letter commands (add, get, del, dmp, siz, clr, svf, ldf, snd, quit). Once the end-user hits Enter after typing in a command, various methods in the library.py class will get called. I should mention too that you'll need to declare an instance of the linked list class that the Library class works with. And that's it! That's all there is to the user interface. Now, onto the Library.
Now, our library can be split up into three different parts for description sake based on different commands from the user interface.
- Part 1: add, get, del
These are your simple linked list functions to add an item to the library, to get an item's index, or to delete an item. Fairly simple to implement, and even simpler to use! Just type in get, add or del followed by a space and the item you want to work with. Add or del shouldn't have a confirmation message, only get should actually return anything as shown below. Furthermore, trying to delete or get an item that's not in the library shoudn't return any error messages.
- Part 2: dmp, siz, clr
These are probably the simplest functions in the project. For the dmp command, all that happens is the whole library gets dumped out on the command line. The command siz gets you the size of the library onto the command line. Last but not least, clr just clears out the whole library and doesn't return anything. None of these commands in Part 2 require any following argument, just type in siz, clr or dmp and hit Enter.
- Part 3: svf, ldf, snd
Well, we're now mostly done with the linked list structure that's holding all our data. Part Three shows some of Python's more advanced functionality like writing and reading files, creating mail servers that connect to the Internet, as well as communicating with the OS. The command svf saves a user-named file that contains all the content of the library thus far. When doing this, it's important to make sure to also write a quick "\n" onto the end of each entry! After a user saves a file, ldf just deals with loading the file's contents back into the library. I had to make sure to delete the extra "\n" character at the end of each entry. Finally, snd deals with setting up a mail server to email a user-saved file from one input email address to another.
This final step was a little bit tricky to implement with Google's new security rules in place. Both in the code and in the README for the project, I've included a link to a Stackoverflow article that helped me configure my own Gmail account to make this work so that messages would actually be sent, and so that they wouldn't get marked as spam. Other than that, while the mail server code may not be super original, I've still heavily commented the code to show what I'm doing.
Weather App
This is a weather application that I made using object-oriented Python. It retrieves data about current weather conditions in a location that the user enters from a weather API and then delivers the current weather conditions back to the user through a GUI interface.
Python Clock
Simply clock powered by Python, it was one of my first homework assignments for an Intro to Python class.
Seat Reservation Application
Here, we have my first ever object-oriented Python script that I wrote! This is an application that mimics a seat reservation method on the website of a transit company like Greyhound Bus or Amtrak. Here, I learned all about dunder (magic) methods and how they can add extra structure to an application. In addition, I learned how efficient object-oriented programming can be when trying to make an application that is more streamlined. In other words, coding this application with an object-oriented framework made it more user-friendly by providing more features that would be harder to add into a simple input/output function.
SQL Database Work
Some work from a SQL Databases class I took. UPDATE (November, 2022): For more complete SQL work, check out some of my web apps!
Introductory Database Work
These two SQL files in this repository are from the first homework assignment I completed for a SQL class that I took at DePaul University in the Spring Quarter of 2021. To learn more about how relational databases work, I was given data from a furniture store and performed basic SQL operations to learn more about said furniture store and their clientele.
Relational Database Series
These three SQL files in this repository were all parts of a relational database assignment that I completed. The three files deal with relational databases with joins, as well as union and minus operators to effectively query data. I should also mention that the three files in this repository deal with a restaurant review database (Part-C.sql), an employee information system (Part-B.sql), and a travel agency database (Part-A.sql), respectively.