Week 1 – Thursday Update

Finished week 2 videos of ‘Continuous Delivery & DevOps’ in Coursera. The notes are as follows:

  • The Given-When-Then pattern of testing
    • Given [a circumstance],
      When [the user does something]
      Then [expected change in state]”
  • Should have only about 5 to 20 system level tests.
    • Google rule of thumb: 70/20/10
      • Unit/Integration/System
  • mentioned Unit/Integration technologies
    • Junit – Java
    • Jasmine – JS
    • Karma – Angular (uses Jasmine)
  • During unit testing
    • create functions that are not being tested as ‘stub’ functions
    • test off of those when testing a particular function
      • spyOn in jasmine does this much easier
  • With system level testing, most useful with microservices
  • focus on critical components of the application
    • The system level tests are those tests that cannot be tested within Integration or Unit tests. Otherwise test there
  • Cucumber and Selenium are mentioned technologies for system tests

I have also completed a section of Stepik ‘Data Structures’ learning course, earning a few achievements there. This is a course about the basics of data structures, and appears to be pretty comprehensive. I am still in the beginning phase of this course work, so only time will tell how much I will gain from this.

After doing a bit of research and analysis, I have decided to make use of multiple web service platforms for the development and delivery of this application. This way I will stay within the free tier of all the services provided and gain experience in multiple platforms and methods. Amazon Web Services Free Tier services, Google Cloud Platform Free Tier and Microsoft Azure Always Free services are the current platforms that I have researched today. There may be other ones out there, and with the combination of all of the platforms, a micro service based development pattern could be created encompass the whole of the application functionality. I do not believe I will meet the goal of gaining a fully setup pipeline by the end of this week. If tomorrow (today) I am unable to do so, I will work through the weekend and holiday so that Tuesday I will be able to start putting together the solutions. Either way, the weekend will be filled with more lessons.

Week 1 – MidWeek Update

The blog is getting organized, and a flow is starting to be formed. Even though this is Thursday, MidWeek Update covers up to Wednesday work.

The DevOps pipeline is being formed. My current outcome is:

  • GitHub for code storage, project management and wiki documentation. Initial GitHub has been setup. Additional work needs to be done before being development ready.
  • Bluehost is the domain registrar and used for identity protection.
  • CloudFlare is used for DNS management and adds a layer of protection for the site.
  • Firebase is utilized for the site hosting and other cloud services within it’s Spark free tier.
  • Angular is used as a front-end single-page development and deployment technology.
  • Spring Boot is planned to be used for server-based functionality framework.
  • Database technologies are to be determined, depending on initial needs of the application.
  • Testing and deployment technologies are still in research.
  • Windows 10 Pro is the development OS, running Visual Studio Code for the Angular development and Eclipse for the Java development.
  • Windows PowerShell will be the standard CLI terminal for the project development (just as an added bit of data for the list here).
  • WordPress is utilized for this blog (currently seen as a daily stand-up blog during planning, development, and delivery).
  • The current domain purchased is aivoeve.space (Aivo is the name of the EVE Online character that the project is centered around, and who is taking the in-game credit for the development of the project).
  • Current URL of the app location is https://app.aivoeve.space. This is working as of writing of this blog, setup with a default starting Angular project page for initial setup testing.

In addition to the above work, Coursera is being utilized as a study and refresher medium. Current course started today is ‘Continuous Delivery & DevOps’. Week 1 was started and completed today (just videos and a few questions).

Notes from Week One

Setup a pipeline:
Observations -> Ideas -> Designs -> Code -> Tests -> Deployment -> Release

Observation to Design is part of the ‘Continuous Design’ aspect, usually lead by the project manager. The purpose is to create high-quality testable ideas to be passed to the DevOps team to make reality.

The rest of the pipeline is a DevOps CD pipe, and broken down to the following steps:
New Code -> Commit & Small (Unit) Tests -> Medium (Integration) Tests -> Large (System) Tests -> Manual Validation -> Deployment -> Release

Quick note of the different terms of tests:

  • Small Tests
    • Unit Tests
  • Medium Tests
    • Integration Tests
    • Component Tests
  • Large Tests
    • Functional Tests
    • Non-Functional Tests
    • Acceptance Tests
    • Contract Tests
    • System Tests
    • End-to-End Tests
    • Performance Tests
    • Security Tests

Speaking of testing, Jenkins has been installed locally on the development machine. The idea behind this move is to do some initial automated testing and deployment using Jenkins before going live. Many of the integration tests will be performed locally. The full setup of the pipeline has not been developed.

Note on Continuous Design:
Agile User Story
“As a [persona],
I want to [do something]
so that I can [realize a reward]”

The user stories will be formatted using that design pattern.

A new project

Note: Very rough post. Read at your own risk…

While here at Revature, I have learned a lot of stuff! Now to put it to practice before (and during, I suppose) an assigned project with a client. I have decided to create a new web application using the technologies that Revature has taught me. This will also include the full process of setting up a domain, finding a host, etc. The whole shebang. I will continue to use WordPress as my blog (for now), and will use this blog for the process tracking. Note: Currently this post is going to be extremely rough. I am just throwing out my ideas and such here, logging it as a post, and so forth (not enough coffee is in my system). I am not ready to proof read and edit what I write here to make sense. So bare with me, future postings will have more order and such.

So, what have I done, and what will I do:

Completed Steps

  • Purchased a domain (via Bluehost)
  • Setup Firebase account (technology similar to what I have learned in Revature, but different implementation)
  • Setup Cloudflare account (I wasn’t sure what I was doing, so just flow with this)
  • Setup initial Angular app to represent the final product and upload that to Firebase host

Steps in Progress

  • Connect Cloudflare and Bluehost and Firebase (a process I am learning on my own, pitfalls and all)

Future Plans

  • Implement EVE Online API for app EVE Mail functionality
  • Create mail server to act as a proxy for EVE Mail

This is just the first step in the process of creating the application. Once I get the step for ‘in progress’ completed, I will reorganize my thoughts, create a DevOps plan, and implement additional technologies to make sense of my chaotic mind so others can follow.

This is day 2 of my thought process, day 1 of putting to text the thoughts, and day 0 of getting things organized.

Goal for the end of the day: Complete setup and create this blog as a daily ‘stand up’ meeting with the public on the progress I have made, and what I will be doing from this time forward. Tomorrow’s post should show the results of today’s planning and implementation, and a sense of organization will happen.

A New Venture

I am working on re-creating myself. I will still be slow at creating updates within here, but at least I still have this blog.

My new project in life is a new career. I am once again in software development, working with an established company and gaining some very useful skills. This will propel me and my family to places we have only dreamed of.

I am not really doing much here at the time, I mostly wanted to pop out an update and keep this at least snail pace active.

New Projects!!! [again]

I have stated a few times that I will be working on new projects. There are many factors that determine what project I would be working on and when. My most recent idea was to work on a robot and the AI associated with it. If nothing more than for my passion and pleasure of AI development and research. It did require an investment of funds that I never received. This is okay. I have other projects that I will be working on.

I work in a retail store. My primary duty is to upload new product to the store’s website and to determine what is wrong when issues arise within the site functionality and usability. I have been doing a good job at improving the product catalog and to find errors within the inventory. Secondary objective of the job is to find ways to improve our web presence. Most of this task has been pushed off to a co-worker who has a better sense of style and fashion. Currently, new product has not been arriving and most issues with the site has been resolved. So I have decided to create an application that will assist with automating many aspects of my primary task. I have very little experience with programming beyond what I have learned within the classroom. So this development will require learning new skills. This is good. I wish to learn more.

This new self-driven education has pushed me to seek out new ways to organize code. I have found that the MVVM pattern is what I want to employ. I have attempted to work through a number of tutorials. I have learned a lot about the basic concepts behind MVVM and how to implement the suggestions into the application that I am wishing to develop. I have also found that there has been new developments with the different programming languages and libraries. I have decided to use C# as the language for business applications. I know quite a bit of C++ due to the Video Game Design and Development course and was introduction to Java, Objective C, and C#/XAML via Mobile Application Development. Out of what I have learned, C# and Windows Forms would make development of a business application work well. Windows Forms is a bit out-dated or just not preferred over another library, WPF. Well, I would use Universal Apps, but work uses Windows 7, so WPF is where I shall go.

C# WPF lead to MVVM, which lead to Prism. Prism was developed by Microsoft, but has been transferred to the community to develop and support. Many aspects of programming tools, libraries, and methodologies have been pushed to crowd sourcing and a shared development experience within the Microsoft culture. I believe this is a great thing! I have enjoyed following the new Microsoft! I even opted to using a Windows phone over Android to show my support. This has lead to me enjoying the Windows phone experience with Windows 10. I also enjoy Visual Studio, and now using the newest Visual Studio 2017 rc. The rc is ‘release candidate’.

So the current project I am working on will be hosted on GitHub. I want to make it public. As of the time of writing this post, I have not created the repository. My Visual Studio 2017 is updating. But I did create this little account: Keybase Profile. I found it as I was attempting to look up some information. I have created a new PGP key through them, so use that instead of any previous one you may know of.

Anyway, more on my work at another time. Great days ahead!!!

New Project (Yes, another idea!)

This time there is money that is involved, so this time there will be progress! What is this new project? If you have been paying attention to my Facebook, you will notice that I have recently been talking about a robot building project that I was introduced to. Well, after speaking to my family about it, my mother-in-law stated that if anyone can do it, I can do it. So she is going to purchase the hardware for the ‘Brain’ of the first robot. It is pretty cheap. I have been studying the programming language that will go with the project, Python. Pretty easy for me to understand, powerful enough language to do all that I need for this. After finishing the tutorials that I am going through, I will study up on the different software components to get the whole thing going. When the hardware arrives next month, I will be able to hit the ground running with it!

Why build the robot in the first place? What will this robot do? These are a few of the questions I have received over the short time I was talking about the project. So to answer all questions I am given for it, I will create a page off of this blog (not done yet). This page is what I initially intended for the FoA project that I am no longer doing. I will first create a FAQ, then branch off to a development blog. I will also create videos and live stream when I have the capabilities (my internet at home currently sucks, will not give quality streaming services). This is a work in progress, a first attempt in my global robotic domination.

New approach (for now)

Here I am again, writing within WordPress and getting a blog setup. This time, with some education, I know a bit more about what I am doing, and will be using some of this within this blog.

First, little background. I have been working with a group, Digital Morphine Games, LLC.(DMG), as first a prospective Graphics Programmer, then as a Webmaster, and then as an Asset Editor Programmer. I was tasked to create the editors that will be used within the team to insert the 3D and 2D assets into the developing game engine; the game in question is Fall of Atom(FoA). The FoA website has a lot of my touch still within it, but has been taken over by the project lead so that he can place the content he wishes into it. I am no longer with that group though. Differences in opinion mostly, but all is good.

Now to what I am doing with WordPress. I have decided to place some of my thoughts, as a kind of journal, for this aspect onto a page within my blog (which I have not developed yet). I learned how to do this as WebMaster of FoA (though none of that was actually used within the live site). My current site, though, will stay sparse for now, due to the need to work on life and so forth.

Day by day I continue. A grind of family life, work life, and personal relation. I do what I can to keep a sense of sanity within a  world that has turned up side down on so many levels. I have strong desires to create my own game, or create modifications for an existing game, or just to create. I lack a level of ambition or inspiration to actually put things into motion. This is a struggle I hear many have. This struggle is not over, and I will overcome!

As a means of creating that inspiration, I have decided to do a few live-casts. I have done a few while working with the FoA project, and have done a little while gaming. This has not created anything exciting, and most of those videos are now gone, save for what is up on YouTube. I have done one last night even. Not sure what inspired me to open Minecraft, but I noticed that there was a new version. I have decided only to play the game while recording! Thus I have 3 hours worth of recorded silent live play. I have edited the recorded video to a version that is just shy of a half hour. It took 10 minutes for my computer to create the file. It has taken the internet nearly 3 hours to upload. I believe I found the software that I will use for a while now, HitFilm 4 Express. Very impressive set of tools that I found via multiple reviews. With this, I hope to gain a bit more inspiration that I am lacking right now.