Archive for September 2013
Windows? Thanks but no thanks
DISCLAIMER: ALL THE OPINIONS ARE RESPONSIBILITY OF THE AUTHOR AND ARE BASED ON THE FREEDOM OF SPEECH.
This entry
is related to documentary video entitled “Revolution OS”. The documentary
exposes how the Open Source and the Free Software were created, under which
terms is distributed and how this projects were (and are) taking Microsoft
users. Now, what I'll try to do (yes, try) is to analyze some of the points of
the documentary video instead of just making a recap.
First of
all, let's talk about the Microsoft behavior. Even when Microsoft is a huge
company, they are afraid of the competition... Yes, they are AFRAID. We
have the Netscape case (I think almost everyone knows about this one) or the
OpenGL case. Let's check the OpenGL case: This time, when Microsoft Windows
Vista was released, DirectX had a positive feedback and the programmers wanted
to use it. Even when OpenGL was way better, Microsoft launched a FUD (fear,
uncertainty and doubt) campaign against OpenGL, making a wild exaggeration of
the merits of DirectX and the disadvantages of OpenGL. This way, programmers
used DirectX over OpenGL, even when OpenGL is multiplatform and DirectX is only
supported by Windows and XBOX. The key for Microsoft is to spread the fear
instead of taking advantage of the competition... Yes, TAKING ADVANTAGE. How
can you take advantage of a competition? Well, from my perspective, the competition
will help all the companies involved, because if you compete to be the very
best, like no one ever was (yup, that was Pokémon), then all the companies will
have to improve their software, so the companies will have better software. In
the OpenGL case, if Microsoft had accepted the competition, OpenGL and DirectX
could have been better by now...
I think this is enough for now, let me know if you what's your opinion about this. Also, the documentary is available in YouTube if you are interested.
See ya!
Software Architecture Fra Diavolo
This entry is related to the 14th chapter of the book "Code Craft". It explains why having a software architecture is a serious issue, the similarities with "real life" architecture and some types of architecture... Pasta architecture (for real).
Let's analyze some of these points.
Yes, having a software architecture is a serious issue. This will help a programming team in order to avoid any extra efforts in a project (and by "extra" I mean "unnecesary"), like too specific/general modules, redundancy and so on. We have to remember that a project is a limited-resources (time, money and quality) effort, so we have to achieve a goal without wasting any resource.
Now, let's analyze some of the architectural styles from the book (and by "some", I mean "the ones I liked"... You know... This is my blog :P):
Obviously, having no architecture (spaghetti ball) is not the best idea, because you do not have an idea of what you have to do. Layered architecture (lasagna) is one of the most common styles: you make some low-level modules, then you make some mid-level modules (using the low-level ones) and so on. This style might work well, but if you have a distributed aplication system, for example, maybe you are looking for a server/client style (gemelli). With this style, you take on count some client actions, and you don't need to have all the functionality on the server side, and you can consider your client is not a dumb terminal (like everyone does). I really like this style, because it makes some things safer. Even when some geeky dude achieves to use a client-side code to some personal goals, you can verify if everything is working well on the server-side. Also, you can find pretty cool asychronous stuff in the client/server style (yes, yes... I really enjoyed working on distributed aplications using Node.js). Now, if you are lazy (like me :D) and you don't like to work too much in general things, maybe you will like middlewares (canned ravioli). These things are one of the best thing I've seen in my life, because they LOVE my laziness :3 Middlewares provide you some general work, which is necessary for the most basic application (yes, I love you, Express). If you are a person that likes doing all the job... Well, middlewares are not for you... I'm sorry...
I began writting serious stuff and I ended fangirling (sorry about that). If you want to read more specifically about software architecures, I widely recommend the text I read to write this entry ("Code Craft" Ch. 14). Also, I would like you to know that I know the meaning of every culinary term used in this entry (it's hard to grow up with a chef sister). I hope you enjoyed this entry as I did. See ya!
Let's analyze some of these points.
Yes, having a software architecture is a serious issue. This will help a programming team in order to avoid any extra efforts in a project (and by "extra" I mean "unnecesary"), like too specific/general modules, redundancy and so on. We have to remember that a project is a limited-resources (time, money and quality) effort, so we have to achieve a goal without wasting any resource.
Now, let's analyze some of the architectural styles from the book (and by "some", I mean "the ones I liked"... You know... This is my blog :P):
Obviously, having no architecture (spaghetti ball) is not the best idea, because you do not have an idea of what you have to do. Layered architecture (lasagna) is one of the most common styles: you make some low-level modules, then you make some mid-level modules (using the low-level ones) and so on. This style might work well, but if you have a distributed aplication system, for example, maybe you are looking for a server/client style (gemelli). With this style, you take on count some client actions, and you don't need to have all the functionality on the server side, and you can consider your client is not a dumb terminal (like everyone does). I really like this style, because it makes some things safer. Even when some geeky dude achieves to use a client-side code to some personal goals, you can verify if everything is working well on the server-side. Also, you can find pretty cool asychronous stuff in the client/server style (yes, yes... I really enjoyed working on distributed aplications using Node.js). Now, if you are lazy (like me :D) and you don't like to work too much in general things, maybe you will like middlewares (canned ravioli). These things are one of the best thing I've seen in my life, because they LOVE my laziness :3 Middlewares provide you some general work, which is necessary for the most basic application (yes, I love you, Express). If you are a person that likes doing all the job... Well, middlewares are not for you... I'm sorry...
I began writting serious stuff and I ended fangirling (sorry about that). If you want to read more specifically about software architecures, I widely recommend the text I read to write this entry ("Code Craft" Ch. 14). Also, I would like you to know that I know the meaning of every culinary term used in this entry (it's hard to grow up with a chef sister). I hope you enjoyed this entry as I did. See ya!