domingo, 31 de marzo de 2019

Ethical Reflection on Ready Player One


After readying ready player one, we can discuss from two quotes. These quotes are the following:

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) (Ernest Cline)

After Reading these quotes written by Ernest Cline, I can say that in a certain way I agree with the author, but not at all. I believe that many people have a place where they can get disconnected from reality and this world and tele transport themselves into another world created by themselves, but you can´t disconnect yourself reality at all, you need to distinguish what is real and what it isn´t, you have to live your real life.

Oasis has a great potential as a scape for people that need to live their life in a different way, but it also is dangerous if people see it as their real world.
Another advantage of Oasis is the fact that I think people could learn cultural and personal values following rules from this world, they would learn it indirectly while they pass time in Oasis.

For me, using Oasis is the same as using IT technology and social networks and I think that Oasis makes it better, because here you can interact closer with people and require more concentration and effort for some activities.
I think that the real world is different in contrast to another idea of real world in books and movies I have read, I believe that in ready player one this idea is unique.

For me is a fact that we will having something familiar to Oasis for the year 2040 or 2050, technology is increasing on an exponential way.

I think that software architecture at this point can start creating a world similar to Oasis, maybe with some research and technology evolution we can have finally that world in our present

viernes, 22 de marzo de 2019

An Introduction to Metaprogramming


This is an article written by Ariel Ortiz, our professor. Where he talks about metaprograms, which are programs that generates other programs or program parts. So, metaprogramming means writing metaprograms. The most common ones include compilers, interpreters, parser generators, assemblers and preprocessors. We use metaprograms to reduce a tedious programming task.
A quine is a special kind of source code generator. It is a program that generates a copy of its own source as its complete output.

Ruby is a dynamic language that allow us to modify different parts of the program easily during runtime without having to generate source code explicitly. Ruby´s core API and frameworks employ this facility to automate common programming tasks. To accomplish the previous statement we have code as the attr_initialize method that takes as input a variable number of attribute name. Each of this attribute name has the same position reserved for it in the dynamically created initialize methos parameter “args” in order to set its initial value.

We use zip and each methods to iterate at the same time over the attributes declared in list “attrs” and the argument list “args”. As a final step we delegate the attr_accessor method to create the read/write access methods for all the declared attributes.

Metaprogramming should sound difficult or complicated, but once you are familiar with the techniques, it becomes easier. With metaprogramming we can automate error-prone or repetitive programming tasks. We can use it to pre-generate data tables, generate boilerplate code automatically that you can abstract into a function, or even to test ingenuity on writing self-replicating code.

domingo, 17 de marzo de 2019

MICROSERVICES


This Entry is about an article written by Martin Fowler and James Lewis. Where he talks about the arising of the architecture, that we call as microservice Architecture. This term is used to refer a way of designing software in small independent services that will work together. This is used mainly in business applications and have some peculiar characteristics.

 A Business application is usually constructed in three main parts: an user interface, a database and a server application. When you have a monolith application, whenever you make a change on any of these parts, you have to deploy all the application including those that you did not make a change. This is an advantage for microservices, why? Because this kind of architecture are independently deployable, you can change a service and then only deploy that service, not all of them.

Here you have some of the main characteristics described into this article.

Componentization via Services- A component is described as a unit of software that is independently replaceable and upgradeable. This allow us to have several components that together work as the complete functionality, these services are components which communicate with a mechanism such as web service request, or remote procedure call.

Organized around Business Capabilities- The system design will be mostly a copy of the organization´s communication structure.

Products not projects- do not look a software as a set of specifications, look it as an on-going relationship between the developer, software and the client.

Smart endpoint and dumb pipes- Endpoints do all the work

Decentralized Governance- Microservices allows you using different programming languages to build different services to make a solution more efficient and well built.

Decentralized Data Management- Data can also be represented in different forms depending on what the service needs. Each service manages its own database.

Infrastructure Automation-Trying to automate everything, from test to deployment.

Design for failure- Applications must be designed to handle error gracefully.

Evolutionary Design-Have great change control so you can make faster and well controlled changes to the software.

sábado, 9 de marzo de 2019

The 4+1 View Model


We have three types of diagrams, Structure diagrams, behavior diagrams and interaction diagrams. In Structure diagrams we have Class Diagrams, object diagrams, deployment diagrams. In Behavior ones we have State machines diagrams, use case diagrams. At interaction diagrams we have Communication diagram, Sequence diagrams, timing diagrams.

UML is important because enables knowledge transfer and visual presentation of ideas. The 4+1 View states that there are 4+1 views important for development of software. The vies are the following:

·        Logical View: Object model, states what components will be made and how they will behave.
·        Development View: Organization of assets during the development. Which belongs to what
·        Physical View: How software and hardware are related. What system looks like when finished.
·        Process View: Concurrency and synchronized aspects.
·        Use-Case Views/Scenarios: How system interacts with the world and systems around it.

Essentially, we need to make a view model because it will help the programmers to start the development with an idea. We need to model the requirements to avoid the ignorance and to make a group of programmers agree on how they will develop a project. This will help us to go from the requirements that we get from users and customers to the construction of architecture and components, we have to transfer the pipeline into a view design to organize things and manage environments or support the work of other programmers, basically to understand how the project will be developed. If programmers actually work as the six blind men example, everyone would make the components as they understand and they would never join the components on a good way, the programmers need to know how other programmers are developing other components that also may help them to develop their part of the project