miércoles, 12 de abril de 2017

Ready Player One

For this final entry, we are going to talk about Ernest Cline book "Ready Player One", which gave us a pretty interesting adventure, that personally I liked it, so the purpose of this entry is making a reflexion, taking as a starting point, the next two paragraphs:

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 un can find true happiness. Because reality is real" (p.364)

First of all, I'm gonna begin with the if I agree with the quotations before? And the answer is yes, because as their perspectives, they are right, reality is hard so we find ways to escape from it, but at the same time, as everything, if we escape too much it can be harmful and we can lost the sense of reality, so there should be balance between them. About the virtues in OASIS I think, the are many like loyalty, like Daito y Shoto, they were not brothers but they acted like that, also perseverance to find the keys and solving the puzzles, so there are virtues I found in the book.
Our value system it could be altered if we spent most of the time in an OASIS like system, because there are histories, were you loose the sense of time and reality, our costumes will be altered and the lost, because if we made a comparison with our current use of IT technologies like computers, game consoles, smart phones, and social networks (Facebook, Twitter, Instagram, Pinterest, etc) with the OASIS game at the book, the is no big difference, games had change their role, now all is virtual and practically the new generation born with technology, so it is no gap between the reality we live and the book. We live with IT technologies in our daily life.
I think all this books like Ready Player One, Nineteen Eighty-Four, The Hunger Games, The Matrix, etc, for so creepy that it sounds, have a little bit of truth, I mean it's like predicting future, but the worst part is that most of the time we did not notice about it, obviously it is not the 100% of what happen in the real world, but we are getting closer.
So, I think it is possible, technological having a similar OASIS nowadays, because now games have evolved to the point we can connect with people from the other part of the world and so on, the tools now are pretty closer for an OASIS game, also reminded me to the Spy Kids 3, where was kind of game of the book, but less interesting. And the fact that video games are pretty addictive isn't it?

References
"Ready Player One", by Ernest Cline

martes, 4 de abril de 2017

An Introduction to Metaprogramming

Hi everyone! On this entry we are going to talk about metaprogramming written by Ariel Ortiz. First of all, we need to know that a metraprogram is a program that generates other programs or program parts, which is helpful when we want to generate source code, but before we can do this, we need to know the adequate tools to make that magic happen!
The article show us an hypothetical situation, were metaprogramming is the solution, so if we want to write an extense source code, without doing manually or using loops, the only thing we can do is write a program that creates it, so the example they show us, is print a sentence too many times. And that is an easier way, also we can do it with images. Another thing, we can do is generating source code and execute it on the spot, only calling eval, which is a function some languages have, allowing to translate and execute an piece of source code contained. This feature is mostly available on interpreted languages as Lisp, Perl, Ruby, Python and Javascript. But eval, can have it's disadvantages, like can be insecure, that's why it exist an other alternatives as quines, quines are defined as a program that generates a copy of its own source text as it's complete output. Another advantage of metaprogramming is the possibility of modifying programs during Runtime.
So, after reading this article I think or I agree that metaprogramming is not only for programming languages gurus, the important here is knowing the tools of each programming language as eval. And metaprogramming have the advantage that for larger programs, we can write a program to do the tedious work, but I think the hardest part is knowing how to write a program that write programs, so it's important knowing the techniques.

For more information visit An Introduction to Metaprogramming by Ariel Ortiz.

lunes, 13 de marzo de 2017

Microservices

Figure 1: Monoliths and Microservices

Microservices is a term, that makes reference to an architectural style, meaning that a single application is developed as a small service. To understand better the term, the article make a contrast of what monolithic style means, and is a monolithic application bit as a single unit. An example, is the server-side application of an enterprise application, which handle HTTP requests, execute domain logic, retrieve and update data from a database; but the truth is that any small change to the application, require the entire monolith to be rebuilt and deployed, which is a pain.

So, that's why microservices are a way more better, because services are independently deployable and scalable; and allowing that different services can be written in different programming languages. Graphically, in Figure 1 we can see the differences between monolithic and micro services. But the truth is, that all not all the micro services have the same characteristic (but we expect the opposite), which are:

  • Componentization via Services
  • Organized around Business Capabilities
  • Products not Projects
  • Smart endpoints and dumb pipes
  • Decentralized Governance
  • Decentralized Data Management
  • Infrastructure Automation
  • Design for Failure
  • Evolutionary Design
So the main question is are Microservices the future? Despite the experiments and comparison made with the monolithic architecture, micro services have many advantages, but we need to consider that we can take a final decision, because architectural decisions are only evident several years after you made them, so is soon to make a final decision.
So from my point of view, seem to have so many advantages the micro services in contrast with monolithic, but taking in count the requirements of the system and implementing a new architecture involves too much time and money, that's why I think, not many companies have adapted this architecture. One good example of a website that knew who to use it is the The Guardian website, which the core stills built as monolithic, but they added features by building micro services that use the monolith's API.
Santorini, Greece
For more information visit Microservicies

jueves, 2 de marzo de 2017

The 4+1 View Model

The main topic of this blog is the 4+1 View Model, but we are going to complement it with another article and video, that in brief is about how blind men try to describe one creature, but their perspectives are so different, that did not get to a final decision and that's what happen when we try to build a software or in project if we see that way. So the article The Elephant and the Blind Programmers is kind of the video of the Six Blind Men, but the moral that one describe us is that a methodical war, where everyone fights to prove everyone is wrong, except him, but the truth is that everyone is right, about some part of the creature, but if they would join all their opinions, maybe it would be easier to came to a result, and that what the article tried to teach us. Mention this, we can now talk about the 4+1 Model, because what we mention before was like an analogy or the consequences of not having a good methodology, and this model is about four views, plus one that is an use-case view, which we will describe next:
Logical View. Tell us what sort of objects we are going to be building for the product. Include all the classes and objects, how they communicate and the sort of data.
Development View. (Which belongs to what) Tells the developer how the system is organized during the development. Also called implementation view.
Process View. Describes the concurrency and synchronized aspects in the process and software.
Physical View. Tells us how software and hardware are related. How the system will look like, when is in the system environment and what parts of the system goes where.
Use-Case View. This is the +1, also called scenarios, which describe is how the system interacts with the world
So this are important for developing software and having a good organization, to avoid situations like the blind men.
For more information visit 4+1 View into Software Architecture

jueves, 23 de febrero de 2017

Understanding the SOLID Principles

First of all, SOLID is an acronym for the it's five principles hidden in each letter of object-oriented programming (Java, C#, PHP, Python, Ruby, etc.) and design. It's objective is to avoid dependencies, because it may cause problems on the code if there are, so the principles are:
  • Single Responsibility Principle (SRP). Basically as the name said the method should have only one responsibility, because the consequences would be at the moment of maintenance, when other programmer change the code and if the class do two things, but the programmer did not check out, the functionality would be compromised.
  • Open / Closed Principle (OCP). It states that a class or function should be open for extension and closed for modification. Meaning that the base classes (functions) should be leave alone, when adding a new behavior and create new inheriting classes. It's about inheritance.
  • Liskov Substitution Principle (LSP). This principle is like OCP and has the intention to keep happy relationships between classes and functions to work well. Meaning that as the previous principle said, avoid modifying the base class with the difference that LSP do not use the inheritance mechanism (because it would be a violation to the principle), instead of that, create an instance of that class. In other words, avoid inheritance by using keywords according the language, for example in Java you can use final keyword an in C# sealed keyword.
  • Interface Segregation Principle (ISP). This principle is about interfaces and avoiding creating too many responsibilities in one interface, making the code less understandable, it's kind of SRP but with interfaces and with the main difference that you should partition interfaces according it's concerns, making the code more readable for other programmers.
  • Dependency Inversion Principle (DIP). "Depend upon abstractions, not upon concretions" Meaning that you shouldn't depend of another class, instead it's better depend from an interface, becoming easier to substitute any class you want.
From my point of view , already having understood the principles gave me a new way of code, because sometime we do not follow a standard when coding, but we may ask Why this is important? Dependencies are always there, but the less we avoid the easier it's maintenance will be.
Vatican City, Rome
For more information visit Understanding the SOLID Principles

martes, 21 de febrero de 2017

Software Craftsmanship with Bob Martin

Bob Martin is an software architect, also known as "Uncle Bob", but before that he said he was a little bit of everything, because people need to grow. He thinks architecture is really worth doing, but he thinks architects should be also coders because otherwise they don't connect with the code decisions, "they don't connect with the keyboard", they just forget the code, and doing it that way the architect just forgets about the keyboard and it's really hard to manage a team like that.
The Software Craftsmanship is a good example of how very important advices can be written in a few lines of text where the important ideas are summarized in four principal advices that tell us like programmers that if we want to be better professionals following the software craftsmanship we have to be aware of helping others to do quality software, response to the change and add value to the product with it, strengthen the community of professionals with my contribution and search a good productive partnerships in the projects.

 It is important to mention that there is too much importance in the developers teams related to collaboration and having good practice in a way to  be sure that all members of the team  are informed with the all related to the project and we have to keep in mind coding considering that in the future we want to change something, so the code must be able to change without breaking something else. In conclusion, Bob Martin have a lot of knowledge of how to this Software Craftsmanship Manifesto works, and is important knowing the point of this, to future generations. 'cause at it says, knowledge is everywhere and we need to use that, to get this new industries that want the best of the best, specially with software architects.
Piazza San Marco, Venice
For more information visit Episode 150: Software Craftsmanship with Bob Martin

martes, 7 de febrero de 2017

Is Design Dead?


As we know Extreme Programming (XP), created by Kent Beck is a methodology of software development that according to the author Martin Fowler it is calling the death of software design, so our main concern Is Design Dead? to give a better understanding and answer to this question he gives us step for step many arguments to be or not in accordance with the author.

In software development there are many styles of design, but the author described us two; one of those are evolutionary design, that means the design of the system grows as the system is implemented, but at the end it's a bad idea because makes the code harder to modify going against the practices of XP. On the other hand we have Planned Design that works the same with the disadvantage that entropy sets in, because it's maintenance gets difficult for other programmers.

So I see it's about software entropy, that is a measure of how complex the maintenance gets when we add more code to a program, based on the methodology of Extreme Programming that have the characteristics of refactor code, simplicity in code, keeping design clean among others.

The author said design is not dead, but it had changed looking for: communication of the design through diagrams, keeping clear and simple code, refactoring and keeping an eye to the future to have in mind future problems.
So, from my point of view I agree with the author the design in NOT dead, but it is in constant grow, to get a better standard of design that helps when we code. As my experience with some other courses , design seems to be not useful, but at the moment of implementing, sometimes helped for reducing time and bugs, always if the style of design was good.

Madrid, Spain
For more information visit Is Design Dead?

martes, 31 de enero de 2017

Who need an Architect?

What is an architecture? Before we start with the main question, we need to know this. An architecture according to the author, Martin Flower,  is a word used when they wanna talk about design and according to the IEE definition it is the highest level concept of a system in its environment; understanding how the system is divided and how the components interact are important for an architecture.
But what about the architect? the architect is the person that worries about the architecture (the important stuff). The article make an analogy with the movie Matrix Reloaded and the species of architec:
Architectus Reloadus: Person who makes all the important decisions
Architectus Oryzus: Person who is very aware of what's going on in the project, basically mentors the development team.
Between these two types of architects, the reloadus is the most common, but the Oryzus is a guide for the team, and is more involved in team and the difficulties. 
Another terms, that the article talk about is the difference between software architecture and building architecture, the last one is difficult to change. So, another thing that I saw in this article is the fact, that software is not limited by physics, but by the design, organization and imagination.
In conclusion, from my point of view, according to the title and question, Who need an Architect? we can see with the article the contrast in real life and in software, even though seems the same in so many ways, the way they build is different, the restrictions. And is importan to have a good architect that is involved during the process to have a good system. So if is a building or a software, must need an architect, to make the decision and I think the kinds of architect mentioned before, it would be great if we combine the abilities of both, but the truth is that Oryzus have more work to do.
Roman Forum, Rome, Italy
For more information visit Who Needs an Architect?

martes, 24 de enero de 2017

Software Architecture

On this entry, we are going to talk about the Chapter 14. Software Architecture from the Code Craft book by Pete Goodliffe's and as it the little says we are going to talk about software architecture, of what really is, what it really isn't, and what it's used for.
First of all, the lecture began with an analogy of architecture, I mean what would be of buildings if there were not architect or an architecture planned, it would be a totally disaster! And that's kind of how works with software. Software architecture is very important and is know as well, as a high level of design, that means, thats why we need to be aware of its early stages. And for software are called points of view which are:
The conceptual view. Also called the logical view. Shows the major parts of the system and their interconnections.
The implementation view. Real implementations modules.
The process view. Show the dynamic structure
The deployment view. Show the allocation of tasks to physical nodes
The important here is that you don't need to start with all. I just according what you need, because we can think that a complex architecture is better, but in this case not, simplicity is the key for a good architecture. Another part of the book that I liked was where they describe the styles of architecture more used but compared with pasta! Which makes it more understandable. The styles are No Architecture, Layered Architecture, Pipe and Filter Architecture, Client/Server Architecture, Component-Based Architecture.
So we must not forget, as equal the software specification, which explain how the structure is.
In conclusion for me, this lecture show how architecture is important for the software, because is a high level of design, that could help us for making architectures less complicated at the moment of making a modification.
Pont Alexandre III, Paris, France
For more information visit Software Architecture

miércoles, 18 de enero de 2017

Moon Machines

At first glance, the title give us an idea of what might talk about, and that's right! The time the man was in the moon, that is a very important historical moment we all know, but what about the people behind, that made it possible? the engineers, the machines, the difficulties. So that is the main main point we are going to talk on this entry.
I found this documentary video, very interesting, because I did not think about, the process, the people needed to go through and it's curious, because the technology were not that advanced. The Apollo program came up during the administration of John F. Kennedy and the desire to go to the moon and return safety to the Earth, about the six parts of the documentary, we are going to focus on the computational area, the people who built the machines.
The project Apollo, was developed at the MIT so it was a little controversial, because of the fact they were unsure if the would made it. But we all not it's not a typical school, they were very committed to what they was doing, and the tests they made were very precise, one example was the big watch that calculated the very exact point you was, it is interesting every single piece of the machine were specially designed to that machine.
Another point of the documentary I want to mention, is the participation of a woman, which at that time was rare, and the documentary emphasize the fact that there were very few women. Her name was Margaret Hamilton, she was an engineer and she was in charge to the board flight software.
The critical moment was when the final project launched, because even the tests, the probability of an error stays, but the great of all of this, it's the work team, the reward behind all the hard work, pays off. So I highly recommend watch this documentary, it have so many interesting facts.
Venice, Italy

viernes, 13 de enero de 2017

A brief introduction

Hello everyone! My name is Cristina and I'm studying computer engineering and here are some random stuff about me.

Hobbies
  1. Listen to music, it helps me to relax.
  2. Drawing
  3. Watch movies with my family
  4. Visit new places ❤︎
  5. Concerts and theater


Favorite Books
El Túnel - Ernesto Sábato
La identidad - Milan Kundera
Tokio Blues - Haruki Murakami
El libro de los amores ridículos - Milan Kundera




Music: Kasabian, Interpol, Arcade Fire, Arctic Monkeys, Foster the people, Phoenix, The Kooks, etc.


I'm really excited about the course...
And finally I love dogs♥, but it's a thing that all my contacts on Facebook know. 



Thanks for reading and feel free to comment! (: