martes, 3 de mayo de 2016

Ready Player One

We currently live in an age where technology is slowly taking possession of our homes. Something that I seem really sad is to see families reunited, and that each member is looking at his cell without setting any conversation. I dare say that technology improved the communication but, got worse quality.

I do not consider that evade the reality is a good choice, sooner or later we have to face our problems and doing so gives us maturity and growth as a human beings. I know that many people use this kind of thing because it helps them get ahead, for example, of a strong depression, but in my opinion I think that for everything there is a balance to avoid falling in excesses.

We can compare Oasis with the social network Facebook, for example many people publish a lot of nonsense things, or worse even, making public everything that they do (to where they leave, what they are eating, what bought, etc.) without seize the opportunity to enjoy their activities. Now the problem is that many people hide behind a computer and displayed through it as something they're not or worse even, looking for acceptance of people through likes.

It's interesting how most futuristic novels narrate a world desolate, where everything is dead and there is no hope for humans. I do not know if this is a coincidence, or if indeed we are leading the world to a similar situation, from my point of view I think we are not far away from becoming in a society like that show us some books.

Of course it is possible to have a world like Oasis, augmented reality is something in which many experts are working, and the technology is progressing ever more quickly, so we should not doubt that in the future we will have access to our own Oasis.

War Games

This movie seemed to me so impressive, firstly as a child can have as many skills being so small. Secondly what could have caused this child to use their skills.

At first it may sound funny the issue of that one boy has confused a program of a military station with a video game (given the violence in video games, any other would have confused too), but once you thought about the damage that he may cause , the situation leaves to be so funny.

What I learned from this movie is that you have to protect things that are important for you and are within your computer, as you never know who could prowl around. Of course that we do not have programs to launch nuclear bombs or something like that, but I imagine that if someone hates me, can get into my computer and erase my final class project Software Architecture. Of course my teacher would not believe me, and would jeopardize my grade.

Retaking the matter, I believe that security is something we can not put aside. Those who are taking the computer forensics topic, we can get an idea of the information that we can access within a computer.

Although the film is somewhat old, I allowed myself to make a comparison with children of this age. I sincerely believe that children of today have great potential to exploit, but the problem is that this potential is misdirected. If schools put more emphasis on quality education where children have access to other activities that help them at channeling that knowledge, we would have a very promising future.

Taking what happened on the positive side, was good that the attacker was a child and thanks to this, the military could find vulnerabilities in your system that they not believed have. If it had been a terrorist they would not have had the same opportunity.


domingo, 27 de marzo de 2016

Microservices

This article deals with the subject Microservice, which is to separate a program into small services where each of them running in their own process, I remembered the motto of a sorting algorithm "Divide and conquer" whose objective was the same. The purpose of this style is facilitate the updating and modification of our program. It is mentioned that in a monolithic programming style, you can't change a single module, needs to be updated whole the application or program every time a change is made.

On the other hand in a style based on Microservice we have the advantage that if we modify some modules of the application, we can go only to the module or service that will be updated and this is enough for the changes to be reflected the whole application.

Another advantage of this technique is that by putting each element as a separate service, in the situation where a replication of data related to the information stored in the database is required, only the data replication that is required are performed and not all the information as would be done in any other style. This allows to carry out this task effectively and without wasting resources.

Componentization (term ascribed to the action separating an application into services) has as main advantages:
  •  Allows services are independently deployable, so modification is simple and effective.
  • Minimize cohesion, which refers to the relationship maintained with other services and that both affect the changes made in one service to another service.

The industry related with information technology (IT) chooses to organize services depending on your skills or capabilities, this allows a group to be able to develop and operate the same product, and not as has been done in recent years, that people who develop applications are not responsible for the maintenance of it.

martes, 15 de marzo de 2016

The 4+1 View Model

Personally this blog activity I really liked, both videos and the reading, I found them very interesting and applicable to everyday life and, in our case to our coding methodologies.

In the first video we can observe how UML diagrams play important roles in each stage of software development . Each stage has a purpose, but we must not forget that each relate to each other and at the end the greatest relationship that they have is with the UML diagrams. The comparison with respect to the planes which a builder performs before a building is built, it is very accurate because as has been mentioned on many occasions, are the foundation of our program.

Moreover, what most caught my attention was the second video and the reading. Each of us has a different perspective on things, this depends precisely on how we observe things or attention that we put in some details. Relating this to programming practices, sometimes maybe we do not realize of certain aspects or details of a program, but someone else makes us see another perspective or, sometimes each person understands a different thing, but in the end you get the same result .

Another important aspect is the relationship of an all in a set or object. I think a very important weapon are groups of working where, before developing a project are presented to developers the necessary requirements, and once they are analyzed, each of the people involved gives ideas according to their view about the things. I think these practices also help create more powerful programs and it contribute to sharing knowledge, and gives us the opportunity to learn new things, we must not closing ourselves off  to our ideas. A person who does not open to new thoughts is like a blind man who clings to what is touching, its what he thinks or believes it is.

sábado, 27 de febrero de 2016

Understanding the SOLID Principles

The article of this week emphasizes again how to improve our code, to make it more efficient, ease maintenance and reuse it. Five principles are mentioned, which we should follow to improve our practices when developing code. These five principles were first identified by Robert "Uncle Bob" Martin, but the acronym SOLID (by the initials of each principle) was introduced later by Michael Feathers.

Each of these principles establish certain rules to follow, below they mention each of them with its brief explanation.

1. Single Responsability Principle
It states that you must give only simple responsibilities to the classes, thus avoiding dependence between them. It also specifies that can be assigned to a class the responsibility of a group of classes, all to facilitate future modification of code without affecting the other classes.

2. Open/Closed Principle
It states that classes should be open for extension, but closed for modification. It is recommended to control the behavior of each of the classes through inheritance. The main objective is to avoid making modifications to classes, it is better to have an extension that controls everything and make the change directly on it.

3. Liskov Substituiton Principle
This principle is similar to the previous, except that it focuses on maintaining a good relationship between classes and functions. Also recommended not to make changes in base classes.

4. Interface Segregation Principle
It states that we should avoid writing large interfaces. To improve recommends creating collections that contain these interfaces discreetly and smaller, through dividing into groups depending on what interfaces do.

5. Dependency Inversion Principle
The last principle states specifically, avoid dependence. It recommended interfaces to carry out the relationship between the classes that we want to have relationship.

Each of these principles are aimed at improving practices writing code and ease of maintenance, modification and reuse it.


martes, 23 de febrero de 2016

Software Craftsmanship with Bob Martin

The metaphor used by Bob Martin saying that software development should be craftsmanship, I seem very accurate because, craftsmanship is any product that is made with art and technique usually performed with hands and with good quality. This is exactly what Bob tries to explain, how we can create a better quality software and do not  make programs only for do, without any sense,  and without paying attention to the quality of the final work.

Bob's idea to create a change in people is good, but complicated. Usually, as programmers, we are used (not all, I'm not generalizing) deliver programs for the sake of fulfilling a contract and  only by that reason. We do not consider the quality of the code, most of the time we do not even take into account if we solve the problem in the most efficient way,  just care about giving the solution.

I consider that every work we do speak a little of ourselves, therefore we should pay a little more interest to do so. If we really love what we do, we must try to do our best effort. Perhaps the same IT industry lead us astray, to make us believe that a quickly software outsells than a good software, but I think we need to change this belief. I do not believe some company prefer something quick but that in the future will give them problems that could represent extra expenses for them.

We can try to change our mentality, not only to develop programs but also in other things. We must see the software as a craftsmanship that we create, and the documentation like your support. Sometimes the program may be clear to us but not to others, and therefore the explanation never hurts to. Besides this good practice can occasionally save our life in an emergency code.


martes, 9 de febrero de 2016

Is Design Dead?


This article stands out again the importance of design in programming. I found it very accurate the part where mentioned that people focused on programming underestimate the work of the dedicated to the design, without considering that both techniques are combined to achieve the best of a program.

An important concept is refactoring as it can sometimes be useful, depending on how it is used. For example, we must not believe that refactoring corrects errors that were committed in the past because it is not. In addition, you should keep in mind that this technique will only work in a proper way if you have a good design. People are inclined to use UML diagrams for design, others simply do not, the only important thing here is that the design should be as simple as possible.

Again the software architecture and the importance of knowing different design patterns to improve the programs is mentioned in a matter of simplicity. It is mentioned that the programs should be simple and able to be understood by people who maybe not engaged in coding.

A point to be considered is that the design is an aid to deployment part, and with aid I want to say that could prevent errors. It is recommended that if you are in that part of encoding and errors that could belong to the design are found, they must be corrected and documented in the design, which does not always take place.

As programmers, and so that our programs have a longer duration, we should not leave aside the design, since as we have been learning in other articles, is an essential part of a program that not only improves the quality, also help saving time and money in a big project, and a good design can get us out of many future problems.

lunes, 1 de febrero de 2016

Who Needs an Architect?


The importance of architecture in programming, is again based on how to improve the way in which a system is developed. Comparing the theme of architecture related to the construction and in our case, the related software development is, as mentioned in the end, the foundations of our program. The difference between the two is that in a construction is not possible to make changes once the stage was completed, unlike software development where you can be performed changes, even if they have a cost in time.

The part where are mentioned that the programs unlike to building constructions, should be able to change. I do not know how well is that a program is so flexible, from my point of view I think it depends on the use to which it will give to the program and also an important aspect is the documentation, because we can have a very flexible program but without the necessary documentation, making changes can be a very complicated task, and sometimes choose to start a program from the beginning is the best option.

This article mentioned again the importance of good design during the performance of a system. Among the various definitions of the word architecture I understand in a better way that mentions the architecture is like art, where the limits are imagination, design and organization. The benefits of good architecture are many compared to the problems that could result in the future. For obvious reasons, to make designs we are not facing problems related to physical as in the case of building designs, all that should concern us is a design that includes all the features, and we have to remember that a good design will guide during the development of our program.  We have to do of the design a good practice in every program that we perform.

martes, 26 de enero de 2016

Software Architecture


The design stage is one of the most important from my point of view, since it is the first stage where special features of the program that we want to develop are set. As mentioned in the book, it is very important to have a detailed and accurate design, where the program requirements are included, the dependencies of classes, their relationship classes and in case that you are using interfaces, how it is related with the other classes.

The main point of the design phase is to identify the errors as soon as possible, since the more you delay to identify, will be more expensive to remove. For example, suppose you are in the design stage and we realize that we are committing an error related to the requirements, if we continue with the process and you get to the stage of development that involves code, and when we realize the program does not work as expected, it will take hours or even days, depending on the difficulty of the program, to find the error. However, if the error is identified in the first stage, the cost will be much lower.

The part that explains the different design styles relating them with names of pastas, I think that was a good idea because it made better understand the concept. It is good to note that the design is like the foundation of a house, and if they are not strong enough, all subsequent jobs can come down for a minimum error. I remember that in the course of Fundamentals of Design was said that, the program design was optimal, if this stage takes at least half the time it took to develop this program, for example if it takes eight hours to develop program, it is expected spend at least 4 hours in the design stage.

martes, 19 de enero de 2016

Moon Machines


This kind of videos always I find really interesting, because you relize the hard work and effort behind thing that have been developed, in this case, the program that guided the rocket to make it to the moon. I can't imagine the pressuare felt by people in charge of the project when it was tested, and excitement when it worked properly.

Personally I like to watch videos as well because give you an idea of the things you can get to do or that we can perform with the knowledge we have. I could not avoid comparing the work of engineers and as we did a school project (in our case materials of programming), and although they have no point of comparison, the stages are similar.

Personally I like to watch videos like this because, they give you an idea of the things that  you can perform or that we can perform with the knowledge we have. I could not avoid comparing the work of engineers and do a school project (in our case, programming courses), and although they have no point of comparison, the stages are similar.

First is the stage where the engineers are given a project and they don't have idea how they will perform the work. At school is the same situation when the professor gives you your project, you don't know how you'll do it but you trust that will finished it in time. Then comes the stage of developing, is the most important and critical stage, engineers begin and end at a good time, but in the testing stage they realize that something is wrong. It also happens in real life, you finish your project believing that everything went great but during the test stage you realize that it isn't and you go into the stage of desperation.

Already at the desperation stage and over time above, engineers have to make the greatest possible effort to complete the project, the sad thing is that during this stage some lose their families. In our case it isn't so bad but if we can lose some important events, and sometimes one to other friend that finally wasn't a good friend. Learning: at the end of all the chaos, things are completed, with great effort and teamwork.

sábado, 16 de enero de 2016

About Me...


My name is Miriam Gutierrez and everybody call me Miri, I feel weird when someone calls me by my full name.

I don't know the ruby language well but, I've heard that ruby is a pretty good language and once that you learn it, you love it. Honestly, I want to learn the new language well and, in the future be able to dominate the Ruby language, obviously with a lot of practice.

Among my personal interests are mainly, finish my major and then, start a master. I would like to specialize in something related to Artificial Intelligence, and even getting a certification as Project Management.

I have a lot of hobbies but now I have only just two, reading and do exercise. I enjoy do exercise everyday that I can, because it is an activity that frees me from stress and relaxes me.  Reading makes me forget for a moment of reality and also relaxes me. My favorites books are two: One Hundred Years of Solitude by Gabriel García Márquez and Looking for Alaska by John Green. I am currently reading the Harry Potter saga, and I want to finish reading all the books this year.

I like TV series, if someone recommends me a serie, I see it, but if the first episode does not seem interesting, I do not continue to whatching, that is my condition. The series that could see again and again are, Gossip Girl, Breaking Bad, The Walking Dead, Soy tu Fan, CSI (all), Dr. House and The Big Bang Theory. I also like listening to music, my favorite genres are pop and rock in English and Spanish. I like bands like One Republic, U2, Imagine Dragons, Muse, Radiohead, among others.