domingo, 1 de abril de 2018

Blog Entry: Ethical Reflection on Ready Player One

Well, this is the last entry blog (apparently 馃槶) and for this one we are going to talk about a book (now on theaters) that for my opinion it's from culture if you like videogames and technology, Cline used everything at his favor to create a science fiction novel that could attract a lot of people. For me it’s a special case since recently I acquired that interest in VR and for this kind of stories related to a different world or a perspective where everybody can be free (well, with the limitations of the game) or do whatever the person decides.

Looking at this quotes as a starting point:

Morrow wrote in his autobiography that he’d left GSS because ... he felt that the OASIS had evolved into something horrible. “It had become a self-imposed prison for humanity,” he wrote. “A pleasant place for the world to hide from its problems while human civilization slowly collapses, primarily due to neglect.” (p. 120).

(Halliday speaking) “I created the OASIS because I never felt at home in the real world. I didn’t know how to connect with people there. I was afraid, for all of my life. Right up until I knew it was ending. That was when I realized, as terrifying and painful as reality can be, it’s also the only place where you can find true happiness. Because reality is real.” (p. 364).

To answer this questions:
  • Do you agree with the two previous quotations?
  • Do you personally see any virtues in a system like the OASIS?
This is pretty interesting point of view for all people, not only because both quotes tell the truth about a virtual game or environment, sometimes people tries to escape from who really is or think that they could be another person (good or bad) than IRL (In Real Life), they don't accept it's reality so they use it as an escape, but from the other side it's true that is not a "prison" for people because it's a way to look it as another place for keeping your essence (or as an entertainment), but as I previously said it depends on the person's perspective.

Now, 
  • Do you think it’s possible, technologically speaking, to have something similar to the OASIS by the years 2040 or 2050?
  • Can you envision a software architecture, using currently available technologies and tools, to build a system that could evolve to something like the OASIS?
Technology has evolved in an impressive way, not only for the society, but also for a tool where everyone can have entertainment or even have a different purpose for everyone’s life.

I don't like to change of novel (or even book), but it helps me to answer to these 2 questions, this story is a pretty one that I also estimate and like so much (and hated for a lot of people because the thematic or even the story plot got turned into something that at the end was not related -people call it Harem, and it's true, sadly- BUT I got hooked more for the possibilities about story and games that in reality we could create from that point), the story is Sword Art Online (a.k.a. SAO) created by Reki Kawahara, this one it's a pretty popular franchise that is part of ASCII Media Works on the Dengeki Bunko imprint, just as a small fact he created the story for a contest on Dengeki, the story got rejected because the limitations was a 100 page story, he did it on 200 (he try the same competition -and won!- later on with another novel that is not so popular than SAO that is Accel World, another novel that it's important to me too because he uses the same thematic, but with different character's story and more darker than SAO, this one it's years later than the events of SAO and as I said the story is unrelated to Sword Art Online, but at the same time its handled on the timeline with the same technology used for both games SAO and Brain Burst, NerveGear -later Amusphere- for the first one and it evolved on the Neuro Linker). 

Sword Art Online takes on 2022 (we are close, only 4 more years) where 10,000 players got trapped on a dead game created by Kayaba Akihiko, they use the NerveGear as the device to access the virtual world called Aincrad (it's a helmet that blocks all reactions from the real body and sends the game information and images through the brain) where the story takes place (at least the first volumes of the light novel), a player called Kirito (real name Kirigaya Kazuto) got trapped with the other players on this nightmare and the only way to finish the game and return to reality is to beat the 100 floors that Aincrad possess, the only limitation is (and turns it into the death game) that when the health (HP) of the player reaches 0 it's avatar is eliminated from SAO and the NerveGear sends a signal to the brain via microwaves that destroys it, killing the person using the device, there is no Log Out or even revive option, you only have one life and wasting it would be dumb.

This is the beginning of the series and franchise, the rest I would like to invite everyone that reads this blog entry to look at the light novels or anime (also releasing soon the 3rd season of SAO and on April an alternative story from the SAO universe is going to be transmitted on tv, Gun Gale Online Alternative).

Now with all this information (I know, it's too much information, but required), VR (Virtual Reality) and AR (Augmented Reality) are already part of human life, also the evolution of technology, I'm sure that we are far away from the creation of this kind of environments (and of course because they are only novels), but the tools to begin this are already developed, we can see the Occulus Rift that uses VR, games like Pok茅mon Go that uses the AR we are able to modify our reality already.

For this, I'm pretty sure that using Microservices it’s the best way to develop this system and to have it at the palm of the hand. 


We talk as an assumption (but it’s not!), IBM already take the advantage (and the reality is that it was only a promotional campaign, looked too real, that if they get the right sponsorship it could be a reality) for this kind of idea on 2016. With the help of SAO, IBM created a virtual world Demo, the project was called Sword Art Online: The Beginning, Sponsored by IBM. This "Alpha test" was tested by only 200 persons that even Kawahara-san try it (lucky them :( ! ) but the objective was to recreate the first levels and enemies of Aincrad (with the feared Gleam Eyes), it was a success, that I would like to share videos that demonstrates this.




The webpage is not available anymore, but they store it through these webpage, it's on Japanese, but there’s is an English page where they describe the event and the way they create it:

https://www.mugendai-web.jp/vrmmo-project/

https://www.mugendai-web.jp/vrmmo-project/archives/en01.html

I would like to talk more about these thematic, but that would be it for today. Thanks for the attention and see you online!

Oh, also I would like to leave the opening, this one is the one that began with my addiction to SAO and other animes.




References:


  • Cline, E. (2011). Ready player one. New York: Crown Publishers.

  • Kawahara, R. (2009). Sword Art Online, Aincrad. ASCII Media Works, Dengeki Bunko.
  • Kawahara, R. (2009). Accel World, Kuroyukihime's Return. ASCII Media Works, Dengeki Bunko.

mi茅rcoles, 14 de marzo de 2018

Blog Activity: Microservices

The first time I heard the term Microservice was in this reading, this term is in reference for an architectural that structures applications as a bundle or in other words the application is develop as a small service, each one runs its own process (but it still considered one) and run with mechanisms that does not waste too much resources, or runs over an API.

I consider that this kind of applications are an excellent tool for business where they look for an application that is useful for their role (and independent so it can deploy its own service) and for the price and investment they can have for, and not only for the price, it allows to stack of technology (so in the future they can grow also put a more complex structure for their services and applications) and with this deploy their technologies on their systems.

Now, this helps to accomplish objectives for the company, and to have more opportunities to choose what style of structure we want, Microservice or monolithic. Monolithic is the most common architecture because we have 3 components, the user interface, the database and the server application.

We can see that the architecture has change or evolved, in other words it evolved because all the elements from the application, instead of standalone services we get the fusion of the 3 so it can work without needing another element or something extra.

For this I look for a lot of benefits like the independence that it could have instead of the monolithic one, requiring separate equipment for each one apart that its cost is higher, you need more specialist to take care of every section.

Applications from companies from the actual time like Netflix, Amazon or even the music platform Spotify have a new way to provide their services to the customer, they try to simplify everything also because the large amount of information and data that is carried over their applications is completely huge they need to use the Microservice one to provide service to a big amount of customers, now if they have the monolithic, what we could say, let's give an example if one of the elements is under maintenance or even has an issue and needs to be repaired (but at that moment the service are offline) you leave millions or even billions of connections without service that will impact your money and also for that reason many customer will leave your platform, we do not want that, so we opt for Micro so we can avoid that.

Before I finish these blog entry, I would like to give a small mention to the man that change the way of thinking for the universe also for black holes theories, for something that we are not able to describe, but he dedicated his life to understand and discover what is beyond there. Stephen Hawking was an incredible human and a memorable scientist from the 20th century. RIP Stephen Hawking.





Because not only he dedicated to science, he also show his human side on the Big Bang theory.



Oh, almost forgot one more thing Happy Pi day!

mi茅rcoles, 7 de marzo de 2018

Blog Activity: The 4+1 View Model


When we talk about software development or even software engineering, we refer to the steps or elements that we follow to create a project, a program requested from one person, a group of people gets involved on a project, these people are on different areas of development from the programmer to the tester. Every person on the project has an important role and needs to know what he is really doing.

The previous stuff is related to what is the 4+1 View Model, you need to look far beyond the main objective of the creation, I consider that is important to get the idea of how the project, program, code, etc. works what are the elements physical, logical so it could have the correct structure and the right planning so the project or program could be a complete success.

We have the point of view from ourselves and not from the others, even if the customer or the person tells you the requirements to create what he wants we finish understanding or even creating something that is from our point of view, this needs to be fixed and is not something that for people could be annoying all the time, but it's something that needs to be corrected so at the half or even at the end of the project could leave a complete failure about the requirements of the product and request from the customer.

Now, about the reading and the other video for the blind cases, it's the same we look at our perspective and own point of view, we can say that is not correct or it could be wrong, if we talk about the same topic with a person and has the same knowledge like you the point of view could be different and that does not mean that is not correct, same thing happens when you are programming, solutions are pretty different, a problem could be solved in so many ways, but it will be different the logic from another person compared to yours, that does not mean is wrong we can look it as a different path to reach another place.

In conclusion, we need to see from different points of view to solve a problem, not only a way where we feel comfortable, but also a way where we don't get to a closed solution only, be flexible, also is important to consider everything around of what you are going to solve, create or develop.

I would like to share an image that resumes what I want to express on this entry.



mi茅rcoles, 21 de febrero de 2018

Blog Activity: Understanding the SOLID Principles

SOLID principles are a good option to provide refraction or in other word to optimize the code that were creating, these kind of tips and tools helps programmers to get the right idea and the best structure to create a program.

For the SRP it’s important to keep an eye on what is going to be removed from the code, if it provoke an issue or something important is removed then it could impact in a negative way the result or the expected exit from the program.

Now, for the OCP keeping the most important stuff as private and that could not be modified, but for some other sharing issues we find a common problem when creating a new class that inherit from another, one thing that I can use also for some programming languages are friendly classes, for me is the best answer to solve this kind of problems when we share between some classes information or content and that other class is not able to use.

LSP is another element for the code to get every class working and cooperate between each one, the only thing here is that in this principle modification is allowed, sometimes this option is a good one because you don't depend too much on inheritance and could make the code independent for each class, this does not mean that you need to discard everything of inheritance, but to reduce the amount of use.

For ISP, looks simple and to have difference classes with the function each one can call is a good idea, you avoid any issue from memory and to execute classes that now the program that is running does not require it.

Finally, for DIP, instead of making references to classes, with this principle we can create reference to interfaces or abstract classes.


Every part of the structure of a code is very important not only for the syntax, but also for the way the programmer writes the code, once we remember this and apply (of course) you are going to be able to create and design code in no time.

mi茅rcoles, 7 de febrero de 2018

Blog Entry: Software Craftsmanship

A long time the division between programmers and designers (or architects) has been marked since years and for the required job that every role needs to be implemented on a project.

It's important to distinguish again that there are traditional methods and agile methods for a project management and development. With this, the election and decision for choosing the right method to create the project depends on the requirements and the time and resources that the person/team is going to used and in terms on time the amount of inverted time for the different phases of the project.

Now, one thing that it’s important to consider is that every person on the project has its main role. from my point of view a person is not able to be architect and a programmer at the same time, you need to focus only on one thing, not because of judging or even having lack of ability, but it's more on the sense that one person needs to focus on the main role he or she has. Now, sometimes being all in one could be valid when you are a small group or you are the only element of a project is taking all the roles from a project.

Having a software strategy is important to have a method to create the right project, normally is followed by a method because once there is a team with specialized areas everyone needs to follow the right process.

Normally, Agile software (like in this case software craftsmanship) keeps quality high so the schedules should not be affected.

For me Agile software is a good tool to create projects this kind of methods are applied correctly when we are creating the project for something that is not formal or even as a student it’s nice to use it, but when we are talking about a professional and serious project the team and specially the manager needs to take the right decision about this
Oh, and for a project the adherence is important not only to keep the record of what we are doing but also to check loses or incomings from the project.

Just before I finish this blog entry I would like to leave the Agile manifesto, something that could help to make a good reflection about any project where agile software development:

We are uncovering better ways of developing software by doing it and helping others do it. Through this work we have come to value:
Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan
That is, while there is value in the items on the right, we value the items on the left more.
Also, for more information (I used this webpage too to get more information) I recommend you to access this page to check the values and the principles.

http://www.ambysoft.com/essays/agileManifesto.html

mi茅rcoles, 31 de enero de 2018

Blog Activity: Is Design Dead?

When I begin my career, I started to check different areas of the Degree, like Databases, Networking, Operating Systems, Project Management and Programming Languages. What I'm trying to say is that the main objective here is not to only learn one thing or focus on a specific area, in this case when there is a project for a company or even for the creation of something new there has been an issue that normally makes that the projects take more time, resources or even fails or don't reach the expectations,

In this case when it's a Software project there is a lot of people behind it, but nowadays companies try to create more and more ASAP not only because of the competition that exists, but to save money and avoid any problem with it.

A working team for these cases opt for the process and rules that are in 2 ways, the classic methods and the agile method. As the names for each one tells advantages and disadvantages it’s important to identify when to use each of the programming method, sometimes using a traditional instead of an agile method takes more benefits and excellent result or vice versa with the agile method, the team needs to decide and check which one is the one that will not affect the gap between the main objective and what is being develop.

Now, another thing that everyone should keep while working on a project is to keep things simple, I think that the programmer or even the engineer logic and thoughts keep the person too far from the simplicity, that does not mean that is not correct, but sometimes the answer is easier that the story that a person could create on the head. In programming is the same, we create stuff looking for different scenarios, with details and precision but, at the same time we complicate the things looking more than the present and possible future scenarios that could happen.

It's important also to think that every person on a project (programmer, designer, tester or even another department from the company) is important and the team needs to be as one, only choosing the way to create the project (UML, Kanban, XP, SCRUM, Cascade, etc.) is what decides the failure or success from the project it needs to have the right option the project requires to save money, develop a good product and the most important one so every person on the team could work properly.

With this I can answer that Designing and Programming are evolving not on a way that only a person could be specialized on only one knowledge area, but needs guidance from each one for a successful project.


And remember, keep the code simple so any other person could understand, also you don't get confused with your own code!

mi茅rcoles, 24 de enero de 2018

Blog Activity: Who Needs an Architect?

Normally, when we hear the word Architect, for a non-IT career related we remember those persons that creates the main structure of a building or a construction. The one's that creates a model from a house, etc.

For us, programmers or in other words for IT related, the term architect and architecture gets a different meaning, especially on the part that one person who has experience is considered an architect (also, for me the term of architect is a person who has already more than 5 - 10 years on his work area, considering it for a job vacancy) and a person who can get the right authority for the development of a project.

The architect in other words is considered a very important person so a project or software could have a great amount of success. Now, this term is for the people who manage the project to have the same channel and knowledge from all the employees involved on the work, but remember that is only for the development part, because there is a person who get all the project control and that one is the project manager.

What I’m trying to say is that there are too many people who works on the development of a software, Q/A, developers, testers and other areas that conform a team. The architect is considered an important, a very important person for the project, not only for being the one with more knowledge from the other, but also to analyze the best options the team has for development, he already saw further than the team and knows where to lead the group. 

I'm still looking for options for a specific role on my career, the ones that I look interesting is network architect or even software architect, this does not mean that I won't pass the first stages from my career to become an architect, a person with experience but is a good objective to set in mind to success.


Now, according to the reading this could answer one of the most important questions, is it necessary an architect? My answer and opinion is yes, experience and knowledge are 2 important tools to have that sightseeing that some expert needs, not only to have a good development but also to consider a person with more experience inside the project, could help to get the required success for the team and the process.