Monthly Archives: August 2019

Magic Item Generator – An Update

Gosh it has been a while since I’ve given an update on this project. My last post about this was almost two years ago now… Well, not entirely, as there was an update post a while back, but it got lost when I moved the site’s host around. Regardless, there has been changes!

First and foremost, the original C# project got scrapped. I was only writing it in C# as that was the only GUI language I knew at the time. Since then I’ve grown familiar in other areas, and decided that this kind of project would be better suited to be on the web than a stand-alone program. From a usability standpoint, users wouldn’t take the time to download a piece of software just to roll some dice for them, I know I wouldn’t. It’s key to be able to load up the program, enter a few numbers, and have your answers there. No downloads, no setup, just quick and easy. So, I’ve moved this project over to the web, which wasn’t that bad since all I had originally was a UI. It also allows me to practice my web development skills, something that I’m a bit rusty on anyways.

As for the projects current state, it’s pretty much at the same point… Just a simple UI with some fields the user can type in. It’s not much, but it’s like no progress was lost! I also made a small document attached to it to keep future features listed in, as I’d probably forget them by the time I got around to developing them…

While there hasn’t been too much progress on the development side of things, there has been in the project’s scope. When it comes to actual Dungeons and Dragons, I wouldn’t consider myself an expert in the slightest. While I run a campaign for my friends, I’m not very well-versed in what would be considered “fair” and “just” in terms of enchantments. So, I’ve turned to a few friends of mine who have been playing and running campaigns for years. I explained to them what the project was about, and asked them if they were to use this tool, what would they what as features? Man am I glad I asked them, for they had some ideas that I haven’t even considered, but made complete sense (like enchantment “levels”, how strong is the enchantment/curse). It actually gives this project some complexity, rather than a couple random numbers, which makes all that more excited to begin working on this project again!

As for the next steps, I’m planning to give it some tables of data to load from, so that when a random number is generated, it is able to select an enchantment to present. How I’m going to go about doing that I’m not quite sure, but once I begin developing it again an answer should come to light then. If you want to see the current state of the program, you can view it from here. It won’t be the most “up-to-date” version, but when I get to stable parts of development, the page there will be updated.

Until next time!
-Michael

PC2 Contest Data Package Tester

Language Used: Java

Skills Used:

  • Development with JavaFX and other third-party libraries
  • Communicating with our client and meeting their requirements
  • Working with a team of programmers on the same project and dividing up the work evenly.

Project Overview:

This project was my final project as an undergraduate in college. My team had about twenty weeks to develop a piece of software from start to finish. The projects available were presented to us within the first week, which were real projects requested by people or companies. My project is know as a Contest Data Package Tester, requested by the developers of the Programming Contest Control (PC2) system from California State University, Sacramento. We communicated with the lead developer on their team, and received a project overview for what this parser actually was.

The PC2 system is a collection of software used to host programming contests. Different teams use a client to connect to a central server, and will be given a collection of programming problems to develop under a certain amount of time. When judges are preparing the contest, they have a large collection of input data for problems and need to ensure the output of that input is what’s expected. They’d do this by running a mock contest and test these problems one at a time. This was an incredibly tedious and time-consuming process. That’s the problem our software aimed to solve, where we would provide the user with a method to select problems to test, and visually see the results from testing, simplifying and speeding the process.

Project Status: Complete

Despite our short time frame, we managed to complete the entire software on schedule. I’m incredibly proud of this software, since so much time and effort went into it, along with our client being pleased with the end result. There was a lot that I could take away from this project, but there were some key aspects that I could take away from it.

When we began the project, we spent about a month designing and fleshing out the entire program before writing a line of code. We put a ton of time into the design phase, creating our user interface and our software’s architecture, that when it came time to begin coding, we knew exact what had to be done. This was incredibly helpful, as we were able to solve a lot of the problems of our design before getting to deep into it’s implementation and spending too much time refactoring. Before this project, I never took as much time into the design phase as here. Most of my design was just create a list of features that I wanted to implement and go from there. However, this taught me that by creating a good design beforehand, a lot of the problems can be resolved before even encountering them.

On a more technical level, I’ve become confident in my abilities to work with JavaFX. Before starting this project, I knew nothing about JavaFX, as all my GUI programming was either web-based or in C#. After going through some tutorials and trial and error, I got familiar with the technology. I began to recognize reoccurring issues and how to solve them, how to work with multiple threads alongside the UI thread, and even creating custom FX components to extend the functionality of the pre-existing components. This technology went from one I knew nothing about, to being the one I’m most confident in, which just goes to show how much can be learned about a technology the more you work with it.

Overall, this project was fantastic to work on, and by far one that I’ve learned a ton from. I find myself going back to this code for reference, as a lot of the issues I’m encountering in other projects I’ve already solved here. Sadly, I cannot share the source code for this project, contracts and such, but the knowledge that I was able to take away from developing it is something that will definitely help in the future.

-Michael