Sunday, July 22, 2012

Libro: 'Building the Perfect PC'



Quiero hablar sobre el libro ‘Building the Perfect PC’, Tercera Edición, publicado por O’Reilly Media, Inc. en 2011, cuyo slogan es “El PC perfecto es aquel que construyes tú mismo”. Este libro es una guía ilustrada de cómo ensamblar computadores según diferentes criterios de desempeño y presupuesto, mostrando los paso a pasos respectivos y la justificación del porqué de una determinada decisión de componentes y de ensamble. El objetivo es mostrar las técnicas que permiten ensamblar un computador a gusto y requisitos propios en vez de comprar uno de fábrica, como Dell y Hewllet-Packard.
El libro se divide en ocho capítulos para esta explicación. El capítulo 1 describe los criterios que deben tenerse en cuenta para el diseño de una configuración hardware de PC y su posterior ensamble. Esos criterios de hardware son: precio, confiabilidad, tamaño, nivel de ruido, expansibilidad, desempeño del procesador, desempeño del video, y desempeño y capacidad del disco. Esos criterios deben balancearse para obtener un computador aceptable dentro de los parámetros establecidos por el cliente. Por ejemplo, una torre pequeña de computador requiere disipadores de calor más potentes y quizá más ruidosos que una torre grande.


El capítulo 2 nos muestra los parámetros particulares de cada componente hardware que debemos considerar para su elección, compra y ensamble. Esos componentes son: torre o chasis, fuente de energía, procesador, ventiladores, placa base (motherboard), memoria (RAM), diskette, disco duro, disco óptico (CD/DVD/Blu-ray), discos de respaldo (extraíbles, USB), adaptadores de video (tarjeta de video), pantalla, adaptador de sonido, micrófono, teclado y ratón. De cada componente se explica sus características técnicas de operación, desempeño y medición, por ejemplo, revoluciones por minuto (RPM), voltaje, velocidad en Giga Hertz, cache, sockets, puertos, bytes y múltiplos (KB. MB, GB) y resolución. También se explican brevemente cómo hacer el proceso de compra y de elección de marcas. Pese a que existen muchas marcas de hardware es preferible escoger solo las marcas reconocidas para mantener la seguridad y la garantía.


En cada uno de los siguientes seis capítulos se explica un proyecto de ensamble diferente para propósitos y presupuestos diferentes. En el capítulo 3 se construye un computador a presupuesto, es decir, un computador estándar a bajo precio y que tiende a estar en lo mínimo de desempeño, ya que su prioridad es un bajo presupuesto. Ideal para pequeñas oficinas, usuarios casuales y el hogar.


En el capítulo 4 se ensambla un computador principal cuya prioridad es el balance y utiliza componentes de alta calidad y mediano desempeño. Cuesta entre 50% y 100% más que un computador a presupuesto pues incluye mejor hardware y componentes adicionales. Es ideal para grandes oficinas, usuarios frecuentes y el hogar.


En el capítulo 5 se ensambla un computador extreme que busca en mayor rendimiento en memoria (RAM), procesador, discos duros y video a expensas de un mayor costo. Es útil para ingenieros y videojuegos.


En el capítulo 6 tenemos un sistema de centro de multimedia que es similar en concepto a un teatro en casa que incluye, además de reproducción de audio y video de alta calidad, funciones de grabación de video y televisión digital. Es también un computador costoso alcanzando lo cinco millones de pesos. Aunque proveedores de televisión como DirectTV y muchos reproductores de DVD ya incluyen la grabación de televisión digital, un sistema de centro multimedia que administre los contenidos multimedia y que los sirva a través de una red casera es algo poco común de encontrar en el Mercado. Es obvio, que este sistema es para aquellos usuarios que quieren un computador en casa dedicado exclusivamente al almacenamiento y reproducción de música, video y películas.


En el capítulo 7, encontramos un computador pequeño conceptualmente igual a un portátil dado su tamaño y forma para guardarse en espacios pequeños y específicos. Su uso es para ejecutar tareas específicas, de simple almacenamiento o de terminal del sistema de centro multimedia. También pueden utilizarse en la domótica para controlar sensores, puertas, ventanas y electrodomésticos.


Y finalmente, en el capítulo 8 se ensambla un computador servidor en el hogar cuyo propósito es administrar archivos, recursos y red de manera más sofisticada y segura para todos los computadores terminales. Este sistema hardware tiende a alojarse en un cuarto o rack especial fijo, ocupando mayor espacio, consumiendo más energía, y produciendo más ruido. En esencia es útil para hogares y pequeñas oficinas donde se comparten muchos archivos, discos duros e impresoras.


En conclusión, ‘Building the Perfect PC’ es un libro muy apropiado para que nosotros podamos entender de forma pedagógica cómo evaluar características funcionales del hardware, elaborar un presupuesto, elegir marcas y ensamblar el computador para aquellos clientes que no se sienten satisfechos con las configuraciones de computadores ofrecidas por los grandes fabricantes y distribuidores.

Wednesday, May 30, 2012

My Review of REST API Design Rulebook

Originally submitted at O'Reilly

Designing Consistent RESTful Web Service Interfaces

An Attempt to Unify the REST APIs
By Eder Andres Avila Niño from Paipa, Colombia on 5/30/2012
4out of 5
Pros: Easy to understand, Concise
Best Uses: Novice, Intermediate, Student
Describe Yourself: Developer
This a good book for beginners willing to understand what a REST API is about, its characteristics, HTTP methods and media resources in a short, concise, panoramic way. This book is an attempt to collect the best practices to expose the external behavior that a client, web or mobile, expects from a REST API server for processing requests and returning responses. For beginners, it offers a foundational knowledge about what a REST API should provide; and for experienced developers it offers an implicit 'audit' checklist to evaluate if their APIs are REST compliant.

For those software and web developers that want to enter to the REST API development, 'REST API Design Rulebook' is a good starting point since it explains through five sets of rules the underlying knowledge of a REST API, their structures, methods, documentation and suggested exposure to client applications and other APIs. On my opinion, and keeping proportions, this book, as a design pattern does, gives to developers the common vocabulary to discuss, specify, design, develop and test RESTful APIs.

The book's chapters are easy, quick reading, except chapter 5 'Representation Design' which is the one that requires more intellectual effort because it explains how to structure well-formed formats for message body (i.e. JSON), hypermedia (i.e. links), media schemas and API errors. Be careful with this chapter since it introduces a new Internet format not yet approved (the WRML), but on author's opinion this new format will become the client–server more verbose with respect to the format of a returned document (i.e. resource).

However, experienced REST developers may already know and have implemented many of the rules defined in the book, and instead be more interested in how to design the back-end service layers that conform to a RESTful API avoiding RPC or RMI practices, if possible. Such inner workings are not covered, but I think they could benefit from this book by performing a 'REST API compliant test' by taking this rulebook as a checklist.

By taking that implicit checklist approach, this book also has the side effect of providing several criteria to evaluate if a software framework that claims to help to the development of REST APIs indeed offers a full set of features that compliant with REST behavior, much more than routing HTTP requests and isolating from user interface artifacts.

Finally, in chapter 7 'Final Thoughts' the author depicts the need to unify a methodology to design a REST API that decreases disparities between APIs and improves team communication. Author depicts his solution known as the WRLM, akin to, say UML and RUP. On my opinion, a more detailed example included in this chapter would have been useful to show us the WRML's full potential rather than visiting the official web page.

In conclusion, 'REST API Design Rulebook' is a good starting point to understand how a REST API is composed, to acquire the proper vocabulary and to apply a more planned API design process. As a side effect, this rulebook helps to evaluate the RESTfulness of an existing API or developer framework.

Note: This review is in exchange for the O'Reilly Bloggers Review Program (http://oreilly.com/bloggers).

I review for the O'Reilly Blogger Review Program

Wednesday, May 16, 2012

Node: Up and Running – Review





Node: Up and Running is a book for JavaScript programmers who want to get started with the foundations of Node.js as a nonblocking runtime environment and web server, covering essential features, popular third-party APIs and programming suggestions for building web applications and services, this time using JavaScript as the programming language on the server side. Node: Up and Running is for the reader the starting point to understand the main components like servers, events, callbacks and modules from which a Node.js application is made of.

This is a short, concise book that explains how Node.js gives solution to support thousands of asynchronous requests through its event-loop mechanism and core functionality. In chapters 1 to 5, we can find the structure of a basic, raw HTTP Node.js server, what request callbacks mean, and how to organize these callbacks to obtain clarity and consistence. We can also find basic utility functionality dealing with IP addresses, clusters and child processes, and how to encrypt public and private application keys.

In chapters 6 and 7, this book explains briefly the most popular third party Node.js modules from which we can actually use for building useful web applications and services. We can briefly learn how to setup database connections, operations and queries, ho to build a basic, managed HTTP server with the Expressjs module for web page rendering; and how to work with WebSockets, the new feature found in recent version of web browsers for persistent connection with the server. Final chapter 8 explains to how to publish our own Node.js modules to share with the community.

What I liked most of Node: Up and Running is that it offers suggestions to avoid pitfalls when dealing with callback chaining, why a ‘try…catch’ block doesn’t catch an asynchronous exception and how to distribute the work load on several CPUs when possible (chapter 3). Programming good callback chaining and monitoring mechanisms is important to improve readability and maintainability, and to avoid possible hang-out conditions due that certain I/O events may take long time to be processed, like downloading a file and querying a database.

I think the benefit after reading Node: Up and Running is that the reader gets an initial understanding of how a Node.js HTTP server works and how to combine core with third-party functionality. That is, this book gives the reader an overview of how the Node.js world is structured and its possibilities becoming JavaScript available on both server and client sides. Yahoo! said this fact is a potential transformation in software architecture.

However, if the reader really wants to build a web server he/she should look for more information about Node.js frameworks like Expressjs, Restify and Mojito since this book only introduces the basics. But, Node: Up and Running opens the doors to understand how a Node.js HTTP server works so the readier will be able to understand the vocabulary, the mechanics and the good practices offered by each module and framework.

A negative point to this book is the absence of how to structure the different layers of a Node.js application like the business, data access and security layers. The book doesn’t show how to break functionality into several JavaScript files. I think a final chapter 'Putting it all together' would have been useful.

Finally, I want to say that there’s a difficulty to imitate some code examples because the directory structure was not specified. You’ll notice this when reading the Twitter App on chapter 2. That may change if O’Reilly Media publish the accompanying source code or a book update. Meanwhile, you can read the errata section at the publishers web site.

Note: This review is in exchange for the O'Reilly Bloggers Review Program (http://oreilly.com/bloggers).

I review for the O'Reilly Blogger Review Program

My Review of Node: Up and Running

Originally submitted at O'Reilly

This book introduces you to Node, the new web development framework written in JavaScript. You'll learn hands-on how Node makes life easier for experienced JavaScript developers: not only can you work on the front end and back end in the same language, you'll also have more flexibility i...


By from on 5/16/2012

 

out of 5

(legalese)

Thursday, May 3, 2012

My Review of Introduction to Tornado


Overcome your Fear to Try Tornado

By Eder Andrés Ávila Niño from Paipa, Colombia on 5/3/2012

 

4out of 5

Pros: Concise, Easy to understand, Helpful examples

Best Uses: Student, Novice

Describe Yourself: Developer

Introduction to Tornado is a rapid book for starting to get in touch with Tornado, an open source framework led by Facebook, Inc., for developing asynchronous web services in Python, covering topics like request handlers, forms, templates, MongoDB, initial authentication, OAuth, and Nginx.

With Introduction to Tornado you can learn and practice the fundamentals of the capabilities given by the Tornado framework to build web services that support hundreds of asynchronous requests, user authentication via cookies and OAuth, MongoDB document storage and retrieval, and deployment in an Nginx server environment. That is, some of the top leading technologies today to provide to end consumers fast, scalable, secure web applications that follow the RESTful architecture.

Without doubt, this book will help you overcome your fear to try this Python framework for starting to develop web applications, web services and web APIs that want to benefit of thousands of asynchronous accesses. And maybe, Tornado could be the technology you're looking for begin your startup business offering to your customers the same service quality provided by services like Twitter and Facebook.

The reader should be warned about his/her expectations, however. As I said, this book is helpful for overcoming the fear to try the Tornado web server, but not to master it. In fact, as you can see Introduction to Tornado is a short book of 136 pages divided in 8 chapters that cover the foundation of each Tornado's feature ranging from small web services and ending with the final deployment. So, after reading this book you won't be a Tornado's master chief, but a Tornado's recruit, I mean enthusiast. Besides, you need to read more about RESTful architecture, user authentication, and Nginx developing by your own.

But, I recommend Introduction to Tornado because each Tornado's feature is explained through a short, comprehensive application accompanied by a clear discussion which motivates the reader chapter by chapter and after finishing the book to continue exploring the different development possibilities by using Tornado as an asynchronous web server.

Personally, I'm delighted with this book because it has explains a little more the rationale about some features like classes, callbacks and settings that other tutorials I found on-line. I hope in the future we can get more complements to the book's contents and more extras from the authors.

Note: This review is in exchange for the O'Reilly Bloggers Review Program (http://oreilly.com/bloggers).

(legalese)

Friday, March 30, 2012

My Review of R Cookbook

Originally submitted at O'Reilly

With more than 200 practical recipes, this book helps you perform data analysis with R quickly and efficiently. The R language provides everything you need to do statistical work, but its structure can be difficult to master. This collection of concise, task-oriented recipes makes you productive...


Useful R for Statistical Courses

By Eder Andrés Ávila Niño from Paipa, Colombia on 3/30/2012

 

4out of 5

Pros: Easy to understand, Well-written, Concise, Helpful examples

Best Uses: Student, Intermediate, Novice

Describe Yourself: Developer

This is a book about how to use the R programming language to solve several statistical problems like combinations, probabilities, frequencies, quantiles, means, correlations, regressions and ANOVA analysis, and as a plus, time series analysis. This cookbook is perfect to students and professors looking for a computing tool that helps them to understand and teach statistical courses, respectively. That's because many times it is important to solve complex exercises that shows the several applications that a statistical topic, like the normal distribution, has in surveys, engineering, manufacturing and commerce, which implies performing several activities related to data retrieval, storage, processing, analysis and visualization.

This cookbook explains the how-to of such activities providing a catalog of tasks to accomplish each of these, for example, how to read and write CVS files, prepare the data contained in those files, generate random samples, calculate the probability of X, test for normality, perform linear regressions and plot the histogram. Each task is described following this structure: Problem, Solution, Discussion and See Also, being the Discussion section the valuable resource of the R Cookbook, because this section explains the implications of using the given solution together with some tips and tricks. Those implications, tips and tricks makes the difference between the R Cookbook and a raw Internet search, so students and professors can learn about the rationale of a solving a statistical problem with R, not just the syntax of variables and functions.

However, it is important to clarify that the R Cookbook is not a book for learning the essence of statistics; instead the R Cookbook is a suggested companion resource for the course main textbook. The R Cookbook will help the explanation and understanding of the core topics, exercises and applications, and simulate different problem scenarios.

Finally and personally, I'd like to see a second edition, volume or update to include how to solve operations research problems using R, if possible. For instance, simplex method, duality, transport and network problems, and inventory and queuing systems are the most common ones in operations research.

Note: This review is in exchange of the O'Reilly Bloggers Review Program (oreilly.com/bloggers).

(legalese)

Tuesday, May 3, 2011

My Review of Data Analysis with Open Source Tools

Originally submitted at O'Reilly

Turning raw data into something useful requires that you know how to extract precisely what you need. With this insightful book, intermediate to experienced programmers interested in data analysis will learn techniques for working with data in a business environment. You'll learn how to look...


Data Analysis w/ Professional Experience

By Eder Andres Avila from Paipa, Colombia on 5/3/2011

 

4out of 5

Pros: Well-written, Accurate

Best Uses: Intermediate, Novice, Student

Describe Yourself: University Student

This is a book about how to design a strategy to understand the organization's data collected using statistical, graphical, analytical and reporting methods and open source tools. This book explains the major concerns about how to extract the information that the data tries to show about products, finances, processes and others. For that purpose, every information engineer should consider:

• The underlying properties of data
• The ways to represent the current status of the data
• The criteria to select relevant data and attributes
• The algorithms to analyze the selected data and attributes
• The ways to report the conclusions of the performed data analysis.

The author Philipp K. Janert takes a designer approach rather than an implementer approach. That means that you will gain important suggestions and tips to propose a plan for data analysis, instead of how to build an entire or partial information infrastructure using open source tools like Python, R, PostgreSQL and Weka.

Then, for some developers the lack of full programming constructs may be disappointing. However, I feel that Philipp K. Janert's main goal is to share with us his own professional experiences in real world enterprise analytical projects from a requirements perspective. In fact, many reference and recipe books cover deeply the aforementioned open source technologies so you can start to build a data analysis subsystem from zero, but without this book, you can lack the enterprise's point of view, something much more related to data architecture and data policies.

Despite the implementer approach is not fully covered, you'll be able to understand how the analytical demands can be satisfied using specifically the programming languages Python and R given its speed of execution, numerical analysis capabilities and cross-platform support. Each chapter contains both the Philipp K. Janert's professional experience and the core programming snippets that make such concepts a programming asset.

In conclusion, if it is true that this book will not guide you to develop a data analysis tool with all the specific programming details of Python and R, it is also true that you will gain worthy professional experiences to design strategies, architectures and policies for data analysis.

This review is in exchange of the O'Reilly Bloggers Review Program (oreilly.com/bloggers).

(legalese)