End of Week report

I have been recently working on a project for the company, a proof-of-concept type project to test my capabilities after finishing their bootcamp. I am loosing my confidence in the retention of the knowledge that has been fed to me. This does not mean I am loosing focus, or determination. Just my confidence in taking what they have shown me and apply it solo.

Basic structure of the project. Have a relational database for the data store. The database and data I will create depending on the guidelines given by the project paper. A simple storage of user data, manager and employee roles, with data representing a simple reimbursement functionality. This part is a breeze. I am very comfortable with the skills needed for this.

To communicate with this database, I need to create a Spring application, ensure that I use Hibernate and create REST endpoints to communicate with the web-based front-end. I thought I had this handled. Creating the beans, repositories, and services etc. I have ran into several problems along the way, causing a restructure in the database at least once to accommodate the attempts at a solution. I tackled the simple login functionality first, and I have ran into a dead end. I am currently unsure what to do next other than scrapping the project and starting fresh again.

Using the examples provided, I have attempted to manipulate the information to suit my individual need. An error has finally came that I have no idea how to work around at this time. Having to do with a null session. What perplexes me is before the restructure of the database, I was not having this issue until I fail at login. Now I have it no matter what. The database is being accessed properly, I see within the logs the data that was accurately pulled from the database.

I haven’t even started on the front end due to the issue I have ran into. The great thing about how I am doing this, once I have a whole working login application working, I will be able to quickly add all other functionalities. This is because I am doing a full stack development of the single user story, then I will just recreate my steps for all other parts of the application. It is a wonderful process that I am very comfortable in performing.

So to finish the stack, I will be using an Angular front-end. I am very confident in working in Angular, and going to continue expand my knowledge of the framework. I am probably going to be using Bootstrap for the styling of the page instead of material, but I have not arrived to a decision.

I will not totally scrap this project and start anew, but I will create a new project off a different method that I have found. If I can quickly get a working example, I might migrate my project to this new method and then quickly iterate upon it to create the full application. This may remove any bugs or settings that I have missed and unable to figure out. Luck to me, and I will deliver future updates.

A Change of Plans [again]

The beauty of working in the software development industry is that there may be changes in what you are planning to do, and you must be prepared to take this on. Especially when working in an agile environment where a long-term goal is simply the viability of a product (vs the planned destiny of the project).

Status new Project

I have been assigned by the the company a new project. It is more or less a proof of concept deal than something that will be put into production. Due to the intern nature of my position, they wish to gain a greater understanding of my capabilities. This is good, I want the more practice, this time with consequences.

So, what is it? A reimbursement system. Simple employee / manager user roles, authentication and a database. Employee makes a request for reimbursement, manager can approve or deny.

A number of technologies are required, including the Spring framework, Hibernate, a relational database and a web-based front-end. I will be using Spring Boot as an overall driver of the backed, Angular for the front end, and the Oracle Database technologies. Angular will be up to date, Spring will be built on Java 8, and the database will be simulated by using Oracle Express Edition 11g installed locally.

If I am able to get a working product by the weekend, I will work on adding some additional goals that the initial document suggested, and a few ideas of my own. The focus of the blog will be upon this project until it’s completion. Studies will be focused on gaining answers to the issues that arrive (before asking around). I will continue with the previous work after this project is completed.

This will increase the frequency of these posts once again. Starting with the next posting (possibility tonight) I will work towards showing my process in this development cycle, just throw out ideas, and highlight the difficulties I have experienced during the process (and how I overcame them).

Sprint 2 Week 3

Much progress has been made on the Angular course work. I am pretty impressed in this course. It is really as complete as advertised, so far.

Over the week I have had a number of opportunities to talk to potential clients. I have came to a realization that I am struggling in aspects of development that I should not be! This is disappointing.

For example, code challenges. I have been avoiding them. They are more of an academic practice than actual development experience. At least this is the mindset I have had until recently. It appears that management does actually look at these exercises as a gauge of capabilities and competence. On top of that, they expect such tasks to be done in short spurts. Due to my avoidance, I am not prepared to do them upon request. I mean, I should have no issue, which is why I am disappointed.

So, to overcome this, Sprint 2 may be extended back to 5 weeks. I will be joining a number of core code challenge sites to bring those type of skills back up to par with my capabilities. This is not for a self-confidence thing, but a necessity for the job.

As far as additional Angular knowledge I have gained, I now know about how to make directives, and use them. This is pretty easy to do. I am surprised that I have not been introduced to this at an earlier time. More and more I learn, more and more I find what I do not know. To be honest, this is pretty exciting for me!

Sprint 2 Week 2 Overview

Due to how I have taken this sprint, making it a learning and retraining sprint, I have cut back dramatically on the content of the posts. I will perform a weekly posting of what has occurred during the sprint. This may be split into mid-week and end of week postings as planned last week. For this week, I have decided to forgo the bi-weekly reviews and go with a mid to end of week review and update.

As far as progress with the project, the main purpose of this dev cycle, very little is new. I have implemented an addition to the project, a new chart based on the information gained from the Udemy course that I have signed up for. I like how he has split the features and component plans down, and this is reflective of what was asked by a potential client recently. I am a very visual thinker, so these charts and images really assists me in the understanding of and break down of the project at hand. As I finalize the documentation throughout the sprints, I will update that information within these postings. I will also be working on the documentation website based from these postings.

Aivoeve Model breakdown

As seen within the above image, I have broken down the application components and models based off the features that I am going to implement in the first iteration of the application. At the end of Sprint 3 these features would be working, from back-end to front-end. This is just the front-end Angular application breakdown represented in a format that I understand it to be.

I started with the features of the application. The overall Application Login and the EVE SSO Login. This is separated due to the nature of the game EVE Online. One physical individual typically has more than one eve online characters, and with how the laws and regulations of EU customer identity protection is implemented by CCP, the characters will be identified as separate entities, even separate from the login of the account that they reside on. Each account is limited to 3 characters, but CCP recognizes that each individual can have multiple accounts. So there is a need to separate these two login schemes, and then tie them together within the application itself. I do plan on implementing a scheme that will prevent me, as the developer and database manager, to not identify individual data to individual accounts, but this is not planned yet. The characters in question are called Capsuleers, so this is the term used within the application logic. Mail functionality is the initial focus of the application, thus the mail features are what remains. This will be expanded, but not within Sprint 3.

Next I focused on the components, as understood by an Angular application context. We have the root component, which is simply the application entery point. The header will stretch across all other components, but seperate from the root. Each feature will have a component dedicated to its functionalities, with each list consisting of two different components. One to repersent a summary of each item within the list, and the other to contain all summaries into one view for the user.

Lastly I looked at how the data is modeled. I realized that there will be sharing of models between features, so there will be fewer models than features. This will also allow me to better structure the directory tree within the application. This would be better demonstrated as I start to implement these ideas, after any additional changes required during the first week of Sprint 3.

As far as the training is going, I have realized that I am flowing through the work quicker than anticipated. I may end up completing the course within week 4 of this sprint, instead of stretching to week 5. I look forward to completing this training sprint and working on the next phase of the project.

Next posting will be next week.

Sprint 2 Week 1 – End of Week Report

This week production on the product has came to a stand still. A potential new direction has arrived, which would require re-training. With this, I shall get my mind back in track for training. I have signed up for a Udemy course in Angular and have started going through that. This way I will not only have my thought processes back to being trained, but also gain a stronger insight on Angular. So far I have learned only one minor trick with angular, but then I have only just started this program.

As far as the progress of the application goes (remember, from this point, most of the progress shall be minimal until either I have this new assignment, or I have completed this Angular course), I have started research on how to connect the MongoDB Atlas to the Spring Boot project. I added functionality within the backend to allow for the communication with the Mail Service Database. I added functionality within the frontend to allow for communication with the backend through a restful API.

I then decided to just refactor the Mail Service and Mail Database Service. They are going to be combined into a single Mail Service with the code hosted on the encripted Keybase GIT. This was done due to my understanding of Spring Boot and how the communication between services are structured. I found that it will be easier to just keep with industry standards, allowing the Discovery service handle communications between services. This removed the requirement placed upon the project to keep the two services separated. The database is going to communicate with the Discovery Service, so might as well keep the Mail Service with its database. I will re-post the finished code on a public repo after the completion of the project.

I wanted to implement a new technology found while researching the MangoDB solution, Lombok. It appears to be so much easier to setup the beans using Lombok. Then I found that I had to change the directory structure of the project to be able to utilize Lombok, taking it out of the understood industry standards. I have decided to pull Lombok back out of the project to avoid any further issues.

In an attempt to reduce the complexity of the project, I have redone the Angular front-end. At this moment, there is no front-end formed. Due to starting the new Angular training session, I have decided to hold off on new implementations, using some of the techniques I will learn, combine with what I have already been instructed, and then relaunch the new front-end after the completion of the training sessions.

Due to the new cadence of the project, I will skip Monday’s blog posting and just have a mid-week touch-up and a end-of-week report. I will still consider next week the end of sprint and create another PowerPoint presentation at the start of Sprint 3 (which will most likely consist of a training sprint). If this is so, then I will have just an end-of-week reports for that sprint.

Till Wednesday next week!

Sprint 2 Week 1 – Midweek Report

As stated in the previous posting, the PowerPoint presentation has been completed. A dry run of the presentation was performed in private. Continuation of the development process has commenced. A work-flow was attempted before documentation, which was not too successful. Some research has been conducted on how to create a quick wire frame of the application which resulted in me discovering Figma. The workflow of the application reminded me of Xcode back when I was doing mobile development. Due to this influence, I created a basic prototype of the mobile functionality of the application. This allowed me to formulate how to break down each aspect of the application into its components. Today I will continue the process of implementing a functional front end, which should start to communicate with the back end to make the calls out to the EVE Online API.

During my research notes were not taken, so there is a lack of material in this posting. Off to finishing up the basic front-end before Friday!

Sprint 2 – Week 1 – Start

Note: I am still working out the format for these posts. I am working under an agile scrum process, so iterations to how I deliver this information may, and will, change slightly.

Each week I will start off with what have lead up to the start of the week, and delve into the day’s agenda. The first half of the first day of a new sprint is dedicated to the creation of the presentation about the previous sprint.

Last sprint was a mix bag of success and lack of success. The first week was much slower than expected, with much of the work done thrown out and redone. By the second week, things became organized and a firm standing for the project has been established. The previous post contains all the details of this process. In the end, there was much success.

Earlier today the presentation slideshow was developed, with a few notes that was not within the sides themselves. Upon writing this post a download of images is occurring that would be used within the slideshow. The goal was to get the presentation completed by lunch, which I believe was 90% successful.

Later on today and into tomorrow I will be working on getting the microservices communicating between each other, and then getting the front end communicating with the back end. If this runs smoothly (which I expect it to do so), the business logic would start to be implemented.

Wednesday will be the mid-week stand-up. Until then, here is the presentation. Note that it is a live document, so it will change over time (until the end of today).