Posts

Learning Journal Final Entry...

     Well, this is the toughest journal entry I've had to write so far as I am excited to be moving forward but sad to finish this journey I have been on for so many years. I am 39 years old and have wanted to be a Software Developer since I was a kid. I had big plans while attending Jr College but life had a different plan in mind where I started a family at the age of 19 and I decided to put my goals of software development on hold. 17 years later, I was married to my wife raising 3 children, and working at the High School I graduated from while also coaching Football and Wrestling. I loved what I was doing but I felt like I missed out on my goals.      Covid hit and everything shut down. No more coaching and most of my job duties were diminished. It was at that time that I decided I would go back and finish my degree and make my career in Software Development a priority. Now here I am 4 years later and I'm finally finishing what I started out to do. I fi...

Capstone Project - Week 15

    This week, I finished all requested changes for the User Pull Request (PR) and it has been officially merged into the OED development branch. This development branch will eventually become the release of OED v2.0. The final changes included altering the install script to create a user with username test as well as the old username with test@example.com. I also updated the command line API to accept usernames through either the existing email parameter or the new username parameter. This allowed for backward compatibility for at least one version to allow people to use the latest method or to continue to use the old method.      For the CSV PR, I am still working on more requested changes which also include backward compatibility changes to allow users to use the existing method of using the meterName to update meters or readings and also allow them to use the new method of using the meterIdentifier to update meters or readings. I also have updated the API to...

Capstone Project - Week 14

     This week, I have been fixing small requested changes and working to finish the Pull Request to have it accepted into the development branch, which will eventually become OED v2.0. I reworked the userDetails state inside the user components to be more concise and utilize checks for password matching and length. I also implemented a database migration that alters the user table to rename the email field to username as requested by our Project Manager.     I also worked on the CSV meter/readings upload components some more. I rolled back my changes to send back meter data from the server as my Project Manager decided he would rather just have the front-end re-fetch all the meters at this point in time. He feels this is best at this point because this significant change alters the documentation a lot and it broke some of the testing. He commented that we could look at this in a future PR and discuss it at a later time.     My plan for next week is to...

Capstone Project - Week 13

This week, I merged the development branches into our CSV and user-forked branches.  For the User branch, this was trivial and didn't take a long time.  However, the CSV branch had many conflicts that took a few hours to go through and make sure the correct code from both branches made it into the merged branch. The two branches both had some automated tests fail as they were designed for the previous versions of the code that myself and my team had altered. I worked to fix the CSV tests that failed to have them test properly against our new versions and pushed the code. Our Project Manager has now reviewed the code again and has some additional requested changes so I will work to get these completed and have it reviewed once more.  The main challenges are the Pull Requests I am working on are quite large and major pieces of the codebase, so they are scrutinized more and our Project Manager has specific requirements, so there is a lot of code to continually review, alter,...

Capstone Project - Week 12

This week, I made changes to the CSV pipeline and altered the API to return the meters that were created or altered and send them into Redux to update the global state. I also worked on the users' components to allow the user to update the email and added a note field which is also stored in the database.  In regards to the users' components, I also altered the create and edit components to use userDetails state to encapsulate all the data into one object state. My plan for next week is to merge the development branch back into the PRs as 120+ commits have happened since we initially forked from the upstream branch.  So there will mostly likely be some merge conflicts that I will need to deal with in order for our PR to be merged into the upstream development branch. Some of the challenges I have face recently are trying not to overstep when my team members are working on the same PRs. Some of them struggle so I want to help but then I don't want to do too much, while at ...

Capstone Project - Week 11

I worked on the User Components this week and updated the API to allow password changes. I also helped alter the User Components code layout to use the project formatting specifications. This makes the codebase easier to understand if you work on one set of components and then switch to another. I then worked on the CSV components to add validation to the input forms. My plan for next week is to make the requested changes by Steve and hopefully, he will accept the PR. Then I plan to continue to help on additional issues as needed or jump into a new issue if Steve has suggestions. The only ongoing challenge is continuing to learn as I go, keep a positive mindset and not let any frustration get me down. I will continue to research when needed and not be afraid to put in my best effort and fail, then try again.

Capsone Project - Week 10

This week, I worked to make a lot of requested fixes and changes by our Project Manager Steve after he reviewed the Pull Request. One of the big changes was the data upload user needed access to the meter names to make the current changes function as is and he preferred they not get that data.  They did have access to the meter identifiers so I had to change the data pipeline to use the meter identifier which was a very long process to track down everywhere the meter name was used and alter it to work with the identifier. My plan for next week is to complete any finishing changes that our Project Manager wants completed and then I have offered to help in their application security audit they are having done. I will also plan to get involved with any other issues I believe would be good for me to help with. Currently, the main challenges are troubleshooting issues and continuing to gather knowledge of the codebase. I am progressively gaining a better understanding of the codebase an...

Capstone Project - Week 9

This week, I submitted a Pull Request for my portion of the code changes. My changes include removing the two CSV components from the container that contained both components. I then updated the formatting and the CSV Readings component to utilize Redux. I also added the create meter component to work on this page. Next week, I plan to make any changes that our Project Manager, Steve, requests I make in the Pull Request. I will also tackle some more issues on the issues page in GitHub for the project. The only issues I have faced are troubleshooting my changes in the large codebase, but I have worked my way through these learning the code as I go so I can understand how everything works overall. I have not had to get help from my Project Manager yet, but I will reach out to him if I get to a place where I feel stuck.

Software Engineering - Week 8

This is the final week of my Software Engineering class and I thoroughly enjoyed working on the projects I was presented with.  The five most important things I learned in the class are Selenium automated testing, Spring Boot Framework, Authentication, Stories and Epics, and React. I chose these because they have the most real-world applications and interest me. I have seen these things listed in job descriptions and knew they were used in many applications. Using Selenium to automate testing is a nice skill to have as it allows you to automate web browser interactions, making it easier to test web applications and have repeatable tests when updates are released. Spring Boot framework allows you to build web applications more quickly and with less code and is fairly simple to implement. Learning Authentication using JWT (JSON Web Tokens) is a very good skill because so many web applications use authentication. Learning about the Agile methodology and how it works with epics and sto...

Software Engineering - Week 7

Using Agile is like the title suggests, flexible and requirements can be changing. Feedback is given during the project which allows for adaptability and normally leads to an application that the stakeholders are happier with. Agile teams work in sprints, usually 2 weeks to complete a set of tasks and then teams can adjust priorities as needed. Stakeholders can see progress and give feedback while the project is underway. Using Waterfall, a project is planned in detail at the beginning and changes are much harder to implement during the process. Feedback is usually given after testing and everything has been completed. This can lead to unepected results or an application that isn't what the stakeholders envisioned. Waterfall could be good if you don't have access to stakeholders on a regular basis and/or if requirements are very defined and changes are not foreseen. Overall, Agile seems to be the method used by most development teams but there are cases where waterfall might be...

Software Engineering - Week 6

This week in Software Engineering, we learned about Service Oriented Architecture (SOA).  We branched off of our Backend for the Academic Management System with 2 branches naming them SOA Registrar and SOA Gradebook.   For the Registrar branch, we removed the entities and repositories for Assignments and Grades.  We did this because we were setting up services using RabbitMQ and Erlang so the servers could talk to each other and handle a separate portion of the System.  The Registrar Service now sends a message to the Gradebook Service asking to add/update/remove an assignment or a grade and the Gradebook Service responds with a confirmation or an exception message. For the Gradebook branch, we removed many of the methods and controllers that controlled things for users, courses, sections, and students.  The Registrar service is handling it all and then just sends a message to duplicate that info into the Gradebook's database. This project was very informat...

Software Engineering - Week 5

This week in our Software Engineering Class we worked to create a Software Requirements Specification Document for our Academic Management System.  I learned how to create UML Use Case Diagrams for our SRS document to help explain how the AMS would function in a more precise way to the Software Developers. I also learned to create use case functions for each function to list out how the functions should operate.  I also got to get more practice creating a Database ER Diagram to show the database table relationships and the info stored in each table. Overall, I enjoyed the experience of learning more about Software Engineering and look forward to learning more next week.

Software Engineering - Week 4

This week in my Software Engineering Class, I learned about Selenium System Testing and using the Chrome Driver to create automated tests. I wrote 5 unit tests this week using SpringBootTest and the MockMVC framework.  I learned a lot about how tests should be laid out and testing one method at a time so everything is contained and other methods don't affect each other and the tests don't affect each other. Using Selenium and the Chrome Web Driver was something new that I hadn't had experience with before and I enjoyed learning about creating automated tests. I have loved learning a lot of new things every week and look forward to learning more in the coming weeks.

Software Engineering - Week 3

This week we worked on the front end of our College Enrollment System.  We used React to create the front-end pages that dealt with the back-end API we worked on last week.  React to me has a much higher learning curve than other things I've worked to learn and understand.  I have started to understand how React Hooks work so that you can have React update the state when you change it.  That is pretty slick and I really like components that can be reused as needed which makes a lot of sense to me. Overall I feel that Web Development is the area I would like to continue in and have a career in so I have really enjoyed this class so far and look forward to continue learning.

Software Engineering - Week 2

Week 2 has been a lot of coding and teamwork with our software development assignment. The project entails making a functioning REST Backend with Spring Boot Java and JPA project that acts as a University System for enrollments, assignments, and grades. The majority of our time this week went into Assignment 2. Figuring out the RESTful backend using Spring Boot Java and JPA was a formidable yet rewarding task. Working with the team and keeping communication was a major factor in us making everything work well together as a team. Testing everything with Postman was tough and very time-consuming but it showed that everything was working properly or if we had to work out bugs, which we had many.  I learned a lot and am excited to get into React next week! A Mock object, in unit testing with JUnit, is a simulated version of a real object. It allows for controlled and predictable behavior during testing. The primary purpose of using mocks in unit testing is to isolate the code under tes...

Software Engineering - Week 1

We started off focusing on JUnit testing.  Writing test cases to ensure the functionality of the example code taught me a better understanding of how to approach software development with testing as a must-have. We learned about Behavior-Driven Development (BDD) principles and Pivotal Tracker. This taught me to think more about user needs, system functionalities, and acceptance criteria. By using BDD, I learned how to articulate requirements, ensuring alignment between stakeholders and development teams. As I reflect on the concepts learned and the skills acquired, I am ready to apply them to our future challenges and projects. I thought we would be doing more coding to start but it looks like we will be doing more of that this upcoming weeks and I'm looking forward to it.

Service Learning Class Final Reflection

This concludes my Service Learning Class Race, Gender & Class in the Digital World. I have been involved in community service since High School for the last 25 years or so, helping with service groups such as Leos and Green Machine, as well as helping coach many youth sports teams and helping run those same programs to stay viable. In this class, I helped a Non-Profit: The Life of Kai, which helps dogs find their forever homes. I loved helping Julie and her non-profit continue to make good on their mission. My job was to help add functionality and clean things up as Julie told me what things she wanted to see improved.  I used Jira to track every request and to keep details in one place.  This helped me to stay on target and complete tasks on priority.  I also would make recommendations as to how I could make things better and I was able to help with multiple things.  A few things I accomplished was creating a bootstrap Carousel to make a slideshow work on the we...

Computer Networks - Week 8

This is the final week of my computer networking class, and it's been a journey of learning and discovery. This week, we focused on some security implementation, learning about firewalls and intrusion detection systems. I learned about the fundamentals of firewalls, which act as a protective barrier between internal networks and the outside world. Firewalls help with filtering network traffic and preventing unauthorized access. We also learned about intrusion detection systems (IDS), which are designed to detect and respond to potential threats or attacks within a network.  At the link layer, we focused on wireless security, recognizing the importance of protecting wireless networks from unauthorized access. I learned about encryption methods, authentication mechanisms, and best practices for securing wireless networks. Lastly, we have been working on finishing our team project and it has been a great learning experience.  This class has been an enlightening experience learnin...

Computer Networks - Week 7

     Week 7 of my Networking class has been fun and challenging as I learned more about the link layer and took the Final Exam.  We started by focusing on understanding the principles behind link layer services. I learned that an important role of the link layer is providing reliable communication between adjacent nodes.  One of the key topics we covered was error detection and error correction. We explored different algorithms and techniques used to detect and correct errors that may occur during data transmission. From simple parity checks to more advanced cyclic redundancy checks (CRC), we gained insights into how these methods help ensure data integrity across the network.    I finished the week  by studying for and taking the Final Exam. It was a comprehensive assessment that tested our knowledge of the topics covered throughout the course. While it was challenging, I felt well-prepared thanks to the video lectures, practice final, and the ex...

Computer Networks - Week 6

     This week in my Networks class, I learned about the principles behind the network control plane, gaining a better understanding of how networks are managed and controlled. It was fascinating to learn about traditional routing algorithms and their practical applications in different network scenarios. I also learned about Software-Defined Networking (SDN).  Another thing I learned this week was the Internet Control Message Protocol (ICMP) and its role in network diagnostics and alerting.      My team and I  began coding the emulation of a network using the Mininet API. The project is challenging but fun and will facilitate our learning while we simulate a network with multiple networks, routers, and servers.      I also started studying for the Final this week as we are planning to take it this upcoming Saturday.  Overall, w eek 6 has been interesting as we have been learning more about networking principles and technologie...