Thursday, August 8, 2024

Final Journal Entry

With the capstone festival just two days away, this post marks my final journal entry. Reflecting upon the past two years, I think what strikes me the most is just how fast those two years went. I remember Dr. Tao telling us at the beginning of the CS Online program that the next two years would be a busy affair, but that it would ultimately fly by. He was definitely telling the truth.

I have learned a great deal since the start of the program. At the program’s onset, my computer science knowledge amounted to basic programming, and some various skills gained from my hobbyist projects. With that in mind, the following lists some of the classes I have taken over the past two years:

  • CST 338: Software Design
  • CST 363: Database Management
  • CST 334: Operating Systems
  • CST 311: Introduction to Computer Networking
  • CST 336: Internet Programming
  • CST 370: Algorithms
  • CST 328: Digital Art and Design
  • CST 383: Introduction to Data Science
  • CST 438: Software Engineering

After reviewing this catalog, and reflecting on my initial skillset when starting the program, it is safe to say my computer science repertoire has grown tremendously.

My path going forward is somewhat undetermined. That said, I am excited to have come this far, and am looking forward to what the future brings.

Logging off,

Jake

Tuesday, August 6, 2024

Capstone Project Update 7

What project milestones did you accomplish this week?

Last week was mainly spent implementing bug fixes for issues reported during user group testing, and preparing for the capstone festival. Progress towards objectives included some refinement of search map editing, including the addition of a brush-size slider.

What is your plan for next week? 

The capstone festival takes place next week. As such, any work still taking place on the project will be confined to bug fixes. Most of my time will be spent preparing for the capstone festival.

What challenges, if any, are you currently facing in project development?

No significant challenges were encountered during the past week.

Tuesday, July 30, 2024

Capstone Project Update 6

What project milestones did you accomplish this week?

Over the past week I mainly worked on polishing existing features, and fixing bugs in anticipation for user testing. These fixes included some slowdown issues regarding the rendering of specific object types, and general edge-case fixes for the editor.

What is your plan for next week? 

Next week is the final week of development before the capstone festival. As such, I plan to continue making finishing touches, and will generally prioritize improving program stability and reliability.

What challenges, if any, are you currently facing in project development?

No significant challenges were encountered during the past week.

Tuesday, July 23, 2024

Capstone Project Update 5

What project milestones did you accomplish this week?

As anticipated, with the application's foundation completed, last week's work represented significant progress towards the completion of the project. WED / polygon editing is finished, along with much of the area editing functionality regarding actors / containers / doors / traps.

What is your plan for next week? 

I plan to finish up the application's core features next week, as well as release a pre-release version to testers to gather feedback. Development is entering its final phase, with milestone completion / polishing touches being the primary objectives.

What challenges, if any, are you currently facing in project development?

No significant challenges were encountered during the past week.

Tuesday, July 16, 2024

Capstone Project Update 4

What project milestones did you accomplish this week?

Last week primarily consisted of implementing an efficient way to handle rendering / interacting with objects in the editor's viewport. With that capability now in place, progress towards the final deliverable is anticipated to accumulate quickly moving forward.

What is your plan for next week? 

With the core capabilities necessary for area editing completed, the next couple of weeks will be dedicated to completing the remaining milestone objectives, running user tests, and polishing existing features.

What challenges, if any, are you currently facing in project development?

Last week's development time dealt with fixing weaknesses in the program's core code. Now that this aspect has been improved, work towards finalizing the project can begin.

Tuesday, July 9, 2024

Capstone Project Update 3

What project milestones did you accomplish this week?

Last week I implemented the ability to view and edit area polygons, as well as the ability to overlay / modify the positions of certain area object types, such as creatures.

What is your plan for next week? 

The goal for next week is to complete several core area editing features, such as tiled object creation, height map / light map / search map editing, etc.

What challenges, if any, are you currently facing in project development?

The implementation of area editing features has highlighted some weaknesses in the program's core code, which has caused some development time to be shifted away from implementing new features, and towards improving this core code.

Tuesday, July 2, 2024

Capstone Project Update 2

What project milestones did you accomplish this week?

Last week I completed the ability to export data ingested by the program back into file formats that the Infinity Engine can read, along with some basic editing functionality to test this capability.

What is your plan for next week? 

The goal for next week is to make progress towards implementing a number of area editing features, such as wall group editing (drawing / manipulating polygons) and tiled object creation (objects that change between two states based on player interaction).

What challenges, if any, are you currently facing in project development?

Certain features are taking longer than anticipated to complete. The hope is that these difficulties will be overcome soon, and that the rate of progress increases in the following weeks.

Tuesday, June 25, 2024

Capstone Project Update 1

What project milestones did you accomplish this week?
 
Last week I completed:
  1. Game asset importation supporting all Infinity Engine games (classic and enhanced); reading game data to build an index of all files present in the game, and decompressing proprietary game archives to read said data.
  2. Background area art rendering (classic and enhanced); taking the tile-based image data and stitching it back together using relevant game data to assemble the final image.

What is your plan for next week? 

Next week’s goal is to get initial support for area editing functional. This will focus on the ability to export the data ingested by the program back into a format that the Infinity Engine can read.

What challenges, if any, are you currently facing in project development?

JavaFX is proving to be a somewhat cumbersome graphical framework to work with. While it is sufficient for Infinity Areas’ scope, I believe I will research alternatives for future projects.

Friday, April 19, 2024

CST438 Week 8

List the 5 most important things that you learned in the course, and why you chose them.

Agile vs Waterfall – Learning about these software development processes provides important context to software development work, and will no doubt help in my future endeavors.

REST Web Services – The ability to create API-style endpoints is an important skill, especially in the realm of websites / web apps.

React Frontends – Similarly, I anticipate that the ability to create frontends using a highly versatile and powerful framework such as React will prove useful in the future. While we have explored other frameworks in the CS Online program, I find React to be the easiest to work with / develop for.

Software Requirements Specifications – SRS documents are a vital part of the Waterfall process, and having experience writing an, albeit brief, SRS document will prove valuable going forward.

Amazon Web Services – While our interaction with AWS was brief, I believe this is one of the most important topics covered by the class. With cloud computing becoming an industry standard, the ability to manage, and deploy applications to such a cloud computing platform is essential.

I enjoyed CST 438; onwards to the next slate of classes!

Tuesday, April 16, 2024

CST438 Week 7

Describe some of the differences between using an Agile process and using a Plan and Document (or Waterfall) process.

The Waterfall process, as compared to the Agile process, is a more traditional form of software development. As the name suggests, in a “Plan and Document” (Waterfall) process, a comprehensive set of documentation is created before any software development starts. It is from this rigorous documentation that the project’s goal, scope, required functionalities, etc. are defined. This documentation is then referenced during the development process to judge the project’s overall completion, and to what extent the client’s specifications are satisfied.

Agile, on the other hand, implements an approach that is much more flexible. In place of the rigid “documentation, analysis, development” pipeline of Waterfall, Agile maintains a sort of loop between the development process, and client feedback. Indeed, a core philosophy behind Agile is the belief that it is simply impossible to create a comprehensive set of documentation upfront. Thus, Agile breaks the development process up into short sections, called sprints. Sprints often take place over a week; and every time a sprint is completed, the project, along with the newly made progress, is reevaluated. If questions arise from this retrospective, the client is reconsulted, and the trajectory of the project is adjusted.

Tuesday, April 9, 2024

CST438 Week 6

Write a weekly entry describing important things you learned this week.

This week we learned about Service Oriented Architecture. In this model, instead of deploying one monolithic service that handles all tasks of the system, many smaller services are deployed that each handle a subset of the system. For example, in our project for this class, we have been developing a set of services that model a system an academic institution might use. It includes several common features relating to this purpose – including user profiles, course enrollment, assignment tracking / grading, etc.

So far this project has been developed using an architecture that tends towards being monolithic, with each REST endpoint being served by a single Spring Boot instance. This week we experimented with breaking up our monolithic project into two smaller services – including a registrar service, and a gradebook service. While there are advantages to a non-monolithic, or microservice architecture – such as the ability to scale certain high-demand services independent from the rest of the system – there are also some challenges. In particular, it can be difficult to synchronize state, whether internal or external, between service instances. For example, in order to break up our monolithic project, it was necessary to implement a sort of database mirroring, so that each Spring Boot instance could access a (nearly) identical shared state.

Tuesday, April 2, 2024

CST438 Week 5

Summarize in a few sentences what you have learned this week.

In this week’s readings we learned about some of the differences between the Waterfall and Agile development philosophies, and in particular, how each has a unique perspective on how documentation should be used.

The Waterfall model tends to view the software development cycle in a rigid manner – the client produces a specifications document that details what they want out of a system; the developers interpret this specification document to determine which features are desired, why they are desired, and if they are feasible; and then a requirements specification document is created to more formally define the system-to-be-built.

The Agile model, on the other hand, interprets this sequence of client specifications → developer analysis → requirements specification within a looser framework. One of the core ideas of Agile is that it is impossible to define every aspect of what a system should do upfront. In this way, Agile focuses much more on an iterative process, where progress is made towards building the system, and this progress is reevaluated periodically to ensure that all the desired outcomes are being achieved, and that said outcomes truly satisfy the requirements of the client.