Héctor Iván's bookshelf: programmers-must-read en-US Tue, 31 Dec 2024 07:48:21 -0800 60 Héctor Iván's bookshelf: programmers-must-read 144 41 /images/layout/goodreads_logo_144.jpg Thinking in Systems: A Primer 18891716 "Dana Meadows' exposition in this book exhibits a degree of clarity and simplicity that can only be attained by one who profoundly and honestly understands the subject at hand--in this case systems modeling. Many thanks to Diana Wright for bringing this extra legacy from Dana to us."

Herman Daly, Professor, School of Public Policy, University of Maryland at College Park

In the years following her role as the lead author of the international bestseller, Limits to Growth—the first book to show the consequences of unchecked growth on a finite planet� Donella Meadows remained a pioneer of environmental and social analysis until her untimely death in 2001.


Meadows� newly released manuscript, Thinking in Systems, is a concise and crucial book offering insight for problem solving on scales ranging from the personal to the global. Edited by the Sustainability Institute’s Diana Wright, this essential primer brings systems thinking out of the realm of computers and equations and into the tangible world, showing readers how to develop the systems-thinking skills that thought leaders across the globe consider critical for 21st-century life.


Some of the biggest problems facing the world—war, hunger, poverty, and environmental degradation—are essentially system failures. They cannot be solved by fixing one piece in isolation from the others, because even seemingly minor details have enormous power to undermine the best efforts of too-narrow thinking.


While readers will learn the conceptual tools and methods of systems thinking, the heart of the book is grander than methodology. Donella Meadows was known as much for nurturing positive outcomes as she was for delving into the science behind global dilemmas. She reminds readers to pay attention to what is important, not just what is quantifiable, to stay humble, and to stay a learner.

]]>
243 Donella H. Meadows Héctor Iván 5
El concepto principal del libro es que podemos modelar el mundo en sistemas y empieza definiendo qué es un sistema, qué componentes tiene y cómo podemos entender mejor un sistema. Pero deja bien claro que todos los sistemas son arbitrarios completamente y que son "invenciones" nuestras, intentos por capturar la dinámica del mundo y por simplificar el mundo para que lo podamos entender un poco mejor. Con ejemplos claros te muestra ejemplos arquetípicos de sistemas comunes que vemos en el día a día y te ayuda comprenderlos para que puedas empezar a intentar modelar tus propios sistemas.

En el libro se dan una serie de listas que me parecen útiles y que quiero volver a leer y estudiar para poder interiorizarlo:

1. Los lugares donde puedes intervenir un sistema para cambiarlo y qué tan efectivo es cada uno de los puntos
2. Los vicios que un sistema puede tener y cómo puedes evitarlos o eliminarlos
3. Las reglas para interactuar con los sistemas

Finalmente, te da la advertencia de que todo este conocimiento (te sientes super poderoso después de todo lo que leíste) no te va a hacer un súper-humano capaz de intervenir cualquier sistema y cambiarlo a voluntad. De hecho, dice que ella sintió lo mismo y con el tiempo te das cuenta que los sistemas no los puedes cambiar mágicamente, lo más que puedes hacer es intentar entenderlos e influirlos para irlos cambiando poco a poco o para ponerte en una mejor posición tú mismo.]]>
4.35 2008 Thinking in Systems: A Primer
author: Donella H. Meadows
name: Héctor Iván
average rating: 4.35
book published: 2008
rating: 5
read at: 2024/12/22
date added: 2024/12/31
shelves: everyone-must-read, great-non-fiction-books, must-read-math, programmers, programmers-must-read
review:
Este es uno de los libros que más me arrepiento de no haber leído antes, siendo tan recomendado por muchas personas y en muchos lados.

El concepto principal del libro es que podemos modelar el mundo en sistemas y empieza definiendo qué es un sistema, qué componentes tiene y cómo podemos entender mejor un sistema. Pero deja bien claro que todos los sistemas son arbitrarios completamente y que son "invenciones" nuestras, intentos por capturar la dinámica del mundo y por simplificar el mundo para que lo podamos entender un poco mejor. Con ejemplos claros te muestra ejemplos arquetípicos de sistemas comunes que vemos en el día a día y te ayuda comprenderlos para que puedas empezar a intentar modelar tus propios sistemas.

En el libro se dan una serie de listas que me parecen útiles y que quiero volver a leer y estudiar para poder interiorizarlo:

1. Los lugares donde puedes intervenir un sistema para cambiarlo y qué tan efectivo es cada uno de los puntos
2. Los vicios que un sistema puede tener y cómo puedes evitarlos o eliminarlos
3. Las reglas para interactuar con los sistemas

Finalmente, te da la advertencia de que todo este conocimiento (te sientes super poderoso después de todo lo que leíste) no te va a hacer un súper-humano capaz de intervenir cualquier sistema y cambiarlo a voluntad. De hecho, dice que ella sintió lo mismo y con el tiempo te das cuenta que los sistemas no los puedes cambiar mágicamente, lo más que puedes hacer es intentar entenderlos e influirlos para irlos cambiando poco a poco o para ponerte en una mejor posición tú mismo.
]]>
Bite Size Bash 57212915
Variable assignment is weird, it’s hard to quote things, if statements run programs instead of checking a boolean value, its default error handling feels like it’s designed to cause catastrophic bugs, and that’s just the beginning.

And despite it being so weird, it’s everywhere! We use shell scripts all the time to configure servers and run our builds. So you end up frantically googling bash facts in an emergency when your test suite breaks because it was held together by a bash script that nobody on your team understands.

But bash has one thing going for it: it doesn’t change much. Bash scripts today are pretty much exactly the same as they were 15 years ago. So if you take the time today to learn the weird way bash works, everything you learn will still be true in 10 years.

And there aren’t that many weird facts about bash you need to learn to be able to understand & change most bash scripts with confidence. If you learn everything in this zine you’ll be way more comfortable with bash scripting than most programmers :).]]>
28 Julia Evans 1990323030 Héctor Iván 5 4.73 Bite Size Bash
author: Julia Evans
name: Héctor Iván
average rating: 4.73
book published:
rating: 5
read at: 2024/07/08
date added: 2024/07/10
shelves: programmers, programmers-must-read, computer-science-and-programming, visual
review:
Muy buena introducción a lo que puedes hacer específicamente con Bash y las diferencias que tiene con otras shells POSIX. Me gustó que entendí por fin la sintaxis de muchos comandos que sólo copiaba ciegamente y para mi funcionaban de manera oscura. Espero poner en práctica lo que vi ahí pronto.
]]>
<![CDATA[Gently Down the Stream: A Gentle Introduction to Apache Kafka]]> 58350853
Gently Down the Stream is a gentle introduction to stream processing and Apache Kafka. A group of otters discover that they can use a giant river to communicate with each other. As more otters move into the forest, they must learn how to adapt their system to handle the increased activity of the forest.

Pairing whimsical imagery with lucid explanations of stream processing concepts, this book will captivate beginners of all ages. Adults will appreciate the no-frills explanation of several key Kafka concepts, while children and non-technical adults will enjoy the story, the original artwork, and the loads of cute otters that live in these pages.]]>
0 Mitch Seymour 1737419009 Héctor Iván 5
Muy recomendada para todos lo desarrolladores de software.]]>
4.49 Gently Down the Stream: A Gentle Introduction to Apache Kafka
author: Mitch Seymour
name: Héctor Iván
average rating: 4.49
book published:
rating: 5
read at: 2024/02/12
date added: 2024/02/12
shelves: computer-science-and-programming, programmers-must-read
review:
Una muy bonita y simple explicación al funcionamiento de sistemas basados en eventos con Kafka. La versión electrónica animada es todavía más bonita.

Muy recomendada para todos lo desarrolladores de software.
]]>
How Integers and Floats Work 181447552
Of course, the way computers do math is predictable � it just plays by slightly different rules than you might expect. And understanding how your computer does math unlocks a lot of things! You’ll:

know the limitations of your data types (“Oh, I should use a 64-bit integer for this, not a 32-bit int…� or “it’s fine to use a float here because…�)
be able to reason about WHY your computer is doing weird stuff with numbers (for example: why does echo '{ "id": 1648521499652009984 }' | jq '.' change the number from 1648521499652009984 to 1648521499652010000?)
unlocks a whole world of binary data and technical specifications you can read more easily (like Wireshark’s packet visualizations!)
And the way integers and floats are represented isn’t going to change (floating point was standardized in 1985!), so you only have to learn it once.

This zine will explain:

the jargon: signed/unsigned, little/big endian, 32 bit, bytes, hexadecimal, and more
why floating point math is so weird (and why a little weirdness is inevitable)
how integers and floats are represented in memory
exactly how floating numbers work, down to the binary representation
some alternatives to floating point
The zine also comes with a playground called memory spy where you can run programs and spy on the integers and floats in their memory.]]>
28 Julia Evans Héctor Iván 5 5.00 2023 How Integers and Floats Work
author: Julia Evans
name: Héctor Iván
average rating: 5.00
book published: 2023
rating: 5
read at: 2023/12/30
date added: 2023/12/31
shelves: computer-science-and-programming, programmers-must-read, programmers
review:
Gran explicación sobre cómo se almacenan y funcionan los número en las computadoras, te ayuda a comprender muchas cosas que te pueden ayudar en el futuro.
]]>
Great Principles of Computing 23461425 320 Peter J. Denning 026252712X Héctor Iván 0 3.29 2015 Great Principles of Computing
author: Peter J. Denning
name: Héctor Iván
average rating: 3.29
book published: 2015
rating: 0
read at:
date added: 2023/09/20
shelves: currently-reading, computer-science-and-programming, programmers, programmers-must-read
review:

]]>
<![CDATA[Enfócate: Consejos para alcanzar el éxito en un mundo disperso]]> 39690167 One of the most valuable skills in our economy is becoming increasingly rare. If you master this skill, you'll achieve extraordinary results.

Deep work is the ability to focus without distraction on a cognitively demanding task. It's a skill that allows you to quickly master complicated information and produce better results in less time. Deep work will make you better at what you do and provide the sense of true fulfillment that comes from craftsmanship. In short, deep work is like a super power in our increasingly competitive twenty-first century economy. And yet, most people have lost the ability to go deep-spending their days instead in a frantic blur of e-mail and social media, not even realizing there's a better way.

In Deep Work, author and professor Cal Newport flips the narrative on impact in a connected age. Instead of arguing distraction is bad, he instead celebrates the power of its opposite. Dividing this book into two parts, he first makes the case that in almost any profession, cultivating a deep work ethic will produce massive benefits. He then presents a rigorous training regimen, presented as a series of four "rules," for transforming your mind and habits to support this skill.

A mix of cultural criticism and actionable advice, Deep Work takes the reader on a journey through memorable stories-from Carl Jung building a stone tower in the woods to focus his mind, to a social media pioneer buying a round-trip business class ticket to Tokyo to write a book free from distraction in the air-and no-nonsense advice, such as the claim that most serious professionals should quit social media and that you should practice being bored. Deep Work is an indispensable guide to anyone seeking focused success in a distracted world.]]>
292 Cal Newport 6077473421 Héctor Iván 5 programmers-must-read
Es un gran libro que me ha dado varias ideas para mejorar mi concentración, que por alguna razón pienso que pueden funcionar en mi caso.

El autor además me ha dado grandes lecciones sobre cómo exponer un punto, desde los fundamentos de la idea. El autor construye casi desde la nada una idea y va dando argumentos estructurados y convincentes sobre la idea de la que quiere convencerte.

Me gusta el estilo estructurado del libro, que se siente como si ses estuviera leyendo algo científico. Las ideas que quiero poner en práctica son las siguientes:

- Limitar el tiempo de trabajo primeramente para poder hacer otras cosas (como descansar) fuera de él, pero además para crear una escasez que me ayude a concentrarme en lo que vale la pena.
- Limitar el tiempo de trabajo en tareas que no valen tanto la pena.
- Escoger lo mejor posible mis actividades, que sólo yo puedo hacer, tanto dentro como fuera del trabajo
- Entrenar mi mente para no distraerse tan rápido mediante pensar en problemas difíciles durante otras actividades que no requieran mi mente al 100%
- Entrenar la mente mediante la habilidad de memorizar
- Escoger mejor mis herramientas de trabajo, pensando en los objetivos a los que quiero llegar

Lo recomendaría a todos los trabajadores del conocimiento (que trabajan usando su conocimiento o produciendo conocimiento), pero sobre todo a los programadores que están en un entorno que es muy propenso a las distracciones.

Creo que debo repasarlo cada pocos años para revisar mi avance y ver en qué puedo seguir mejorando.]]>
4.11 2016 Enfócate: Consejos para alcanzar el éxito en un mundo disperso
author: Cal Newport
name: Héctor Iván
average rating: 4.11
book published: 2016
rating: 5
read at: 2023/09/07
date added: 2023/09/09
shelves: programmers-must-read
review:
La idea principal del libro es que para lograr resultados que valgan la pena en trabajos intelectuales, es indispensable poder enfocarse profundamente en el trabajo por periodos de tiempo ininterrumpidos. Pero trabajar significa especialmente hacer las actividades que más contribuyan a tu avance. Para esto hay que tener muy claro tanto tus objetivos como tus principios.

Es un gran libro que me ha dado varias ideas para mejorar mi concentración, que por alguna razón pienso que pueden funcionar en mi caso.

El autor además me ha dado grandes lecciones sobre cómo exponer un punto, desde los fundamentos de la idea. El autor construye casi desde la nada una idea y va dando argumentos estructurados y convincentes sobre la idea de la que quiere convencerte.

Me gusta el estilo estructurado del libro, que se siente como si ses estuviera leyendo algo científico. Las ideas que quiero poner en práctica son las siguientes:

- Limitar el tiempo de trabajo primeramente para poder hacer otras cosas (como descansar) fuera de él, pero además para crear una escasez que me ayude a concentrarme en lo que vale la pena.
- Limitar el tiempo de trabajo en tareas que no valen tanto la pena.
- Escoger lo mejor posible mis actividades, que sólo yo puedo hacer, tanto dentro como fuera del trabajo
- Entrenar mi mente para no distraerse tan rápido mediante pensar en problemas difíciles durante otras actividades que no requieran mi mente al 100%
- Entrenar la mente mediante la habilidad de memorizar
- Escoger mejor mis herramientas de trabajo, pensando en los objetivos a los que quiero llegar

Lo recomendaría a todos los trabajadores del conocimiento (que trabajan usando su conocimiento o produciendo conocimiento), pero sobre todo a los programadores que están en un entorno que es muy propenso a las distracciones.

Creo que debo repasarlo cada pocos años para revisar mi avance y ver en qué puedo seguir mejorando.
]]>
<![CDATA[El lenguaje electrónico (Spanish Edition)]]> 5662071 75 David J. Bolter 9681657888 Héctor Iván 5
El librito explora el significado de la computación desde el punto de vista de la manipulación de símbolos y después divaga sobre las épocas que han pasado sobre el lenguaje, desde la época oral en la que se aceptaba que las palabras y los nombres cargaban un significado en sí mismos, e incluso como que conjuraban o cargaban algo de la cosa que representan. Después sobre la época de la palabra impresa en la que se empieza a ver el lenguaje como algo lógico y arbitrario y se empieza a analizar su estructura.

Al final, habla de esta época en la que se ha despegado el lenguaje casi completamente de su interpretación poética o arbitraria y se intenta analizar como completamente lógico (algo que con los lenguajes humanos es casi completamente imposible), y se habla de cómo los lenguajes computacionales y de programación han llevado esto al extremo, ya que la computadora no entiende nada y simplemente manipula símbolos para producir resultados.

Creo que es una pieza indispensable para pensar sobre el significado de la computación y de los lenguajes y más ahora que parece que las computadoras también están empezando a dominar los lenguajes humanos.]]>
5.00 1999 El lenguaje electrónico (Spanish Edition)
author: David J. Bolter
name: Héctor Iván
average rating: 5.00
book published: 1999
rating: 5
read at: 2023/06/02
date added: 2023/06/02
shelves: computer-science-and-programming, programmers-must-read, programmers
review:
Creo que esta es una lectura fundamental para los desarrolladores de software que quieran aprender sobre ciencias de la computación y su fundamento.

El librito explora el significado de la computación desde el punto de vista de la manipulación de símbolos y después divaga sobre las épocas que han pasado sobre el lenguaje, desde la época oral en la que se aceptaba que las palabras y los nombres cargaban un significado en sí mismos, e incluso como que conjuraban o cargaban algo de la cosa que representan. Después sobre la época de la palabra impresa en la que se empieza a ver el lenguaje como algo lógico y arbitrario y se empieza a analizar su estructura.

Al final, habla de esta época en la que se ha despegado el lenguaje casi completamente de su interpretación poética o arbitraria y se intenta analizar como completamente lógico (algo que con los lenguajes humanos es casi completamente imposible), y se habla de cómo los lenguajes computacionales y de programación han llevado esto al extremo, ya que la computadora no entiende nada y simplemente manipula símbolos para producir resultados.

Creo que es una pieza indispensable para pensar sobre el significado de la computación y de los lenguajes y más ahora que parece que las computadoras también están empezando a dominar los lenguajes humanos.
]]>
<![CDATA[Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World, 3rd Edition]]> 19781410 While such fundamental issues remain unrecognized and unanswered, Data and Reality , with its lucid and compelling elucidation of the questions, needs to remain in print. I read the book as a database administrator in 1980, as a researcher in 2002, and just recently as the manuscript for the present edition. On each occasion I found something more, and on each occasion I considered it the most important book I had read on data modeling. It has been on my recommended reading list forever. The first chapter in particular should be mandatory reading for anyone involved in data modeling. In publishing this new edition, Steve Hoberman has not only ensured that one of the key books in the data modeling canon remains in print, but has added his own comments and up-to-date examples, which are likely to be helpful to those who have come to data modeling more recently. Don't do any more data modeling work until you've read it.]]> 162 William Kent 1935504215 Héctor Iván 5
Esta lectura en cada página te romperá la cabeza si eres un desarrollador de software, modelador de base de datos, analista de datos o cualquier otra profesión que tenga que ver con el tratamiento de la información y la representación del mundo real.

El tema o la cuestión que deja más clara y que se repite a través de todo el escrito es que el modelado de datos y la decisión de cómo representar algo es completamente subjetiva y dependerá muchas cosas, entre ellas, el objetivo del modelado. Es por eso que diferentes modelados o abstracciones de la misma cosa del mundo real variarán dependiendo de las personas que lo hagan.

El libro en realidad se va mucho más profundo filosófica y epistemológicamente y te hace cuestionarte cosas como si de verdad las cosas están tan bien definidas como creemos en el mundo real. Esto te hace razonar que si las cosas están tan difusas en el mundo real, con mucha más razón lo estarán en las representaciones que creamos.

Algunos de los puntos sobre la representación de información que toca son:

1. Identidad
2. Igualdad
3. Transformaciones (cambios en el tiempo)
4. Atributos (Aquí me rompió la cabeza una pregunta: ¿Es lo mismo un atributo que una relación?)
5. Entidades
6. Relaciones
7. Nombres y Aliases
8. Registros y mecanismos de almacenaje

Además, la tercera edición que fue publicada en 2012 tien comentarios de Steve Hoberman, que a mi parecer también son bastante valiosos por la experiencia que tiene en modelado de información.

Esta lectura te hace cuestionarte muchas cosas de lo que sabes sobre computación en general, bases de datos, sistemas de representación y de la REALIDAD MISMA. Te hace pensar que hay muchas cosas que damos por sentado pero que en realidad si piensas un poco puedes ver que están tan definidas como lo penssbas.

Creo sinceramente que esta lectura debería ser obligatoria para todos los estudiantes de computación o carreras similares y también para personas relacionadas con el almacenado de datos en cualquiera de sus formas, sobre todo aquellas responsables de definir cómo se guardará la información.

Finalmente, me sorprende cómo desde 1974, año en que se escribió la primera edición, poco han cambiado las cosas y parece que los problemas fundamentales de la representación de información son irresolubles. Agradezco mucho haberme topado con este libro.]]>
4.10 1978 Data and Reality: A Timeless Perspective on Perceiving and Managing Information in Our Imprecise World, 3rd Edition
author: William Kent
name: Héctor Iván
average rating: 4.10
book published: 1978
rating: 5
read at: 2023/01/20
date added: 2023/03/02
shelves: programmers-must-read, programmers
review:
Increíble lectura sobre la naturaleza de la información, las dificultades de modelarla y los sistemas de representación con los que contamos en las computadoras.

Esta lectura en cada página te romperá la cabeza si eres un desarrollador de software, modelador de base de datos, analista de datos o cualquier otra profesión que tenga que ver con el tratamiento de la información y la representación del mundo real.

El tema o la cuestión que deja más clara y que se repite a través de todo el escrito es que el modelado de datos y la decisión de cómo representar algo es completamente subjetiva y dependerá muchas cosas, entre ellas, el objetivo del modelado. Es por eso que diferentes modelados o abstracciones de la misma cosa del mundo real variarán dependiendo de las personas que lo hagan.

El libro en realidad se va mucho más profundo filosófica y epistemológicamente y te hace cuestionarte cosas como si de verdad las cosas están tan bien definidas como creemos en el mundo real. Esto te hace razonar que si las cosas están tan difusas en el mundo real, con mucha más razón lo estarán en las representaciones que creamos.

Algunos de los puntos sobre la representación de información que toca son:

1. Identidad
2. Igualdad
3. Transformaciones (cambios en el tiempo)
4. Atributos (Aquí me rompió la cabeza una pregunta: ¿Es lo mismo un atributo que una relación?)
5. Entidades
6. Relaciones
7. Nombres y Aliases
8. Registros y mecanismos de almacenaje

Además, la tercera edición que fue publicada en 2012 tien comentarios de Steve Hoberman, que a mi parecer también son bastante valiosos por la experiencia que tiene en modelado de información.

Esta lectura te hace cuestionarte muchas cosas de lo que sabes sobre computación en general, bases de datos, sistemas de representación y de la REALIDAD MISMA. Te hace pensar que hay muchas cosas que damos por sentado pero que en realidad si piensas un poco puedes ver que están tan definidas como lo penssbas.

Creo sinceramente que esta lectura debería ser obligatoria para todos los estudiantes de computación o carreras similares y también para personas relacionadas con el almacenado de datos en cualquiera de sus formas, sobre todo aquellas responsables de definir cómo se guardará la información.

Finalmente, me sorprende cómo desde 1974, año en que se escribió la primera edición, poco han cambiado las cosas y parece que los problemas fundamentales de la representación de información son irresolubles. Agradezco mucho haberme topado con este libro.
]]>
<![CDATA[Functional Programming: A PragPub Anthology: Exploring Clojure, Elixir, Haskell, Scala, and Swift]]> 36154521 Contributing Rich Hickey, Stuart Halloway, Aaron Bedra, Michael Bevilacqua-Linn, Venkat Subramaniam, Paul Callaghan, Jose Valim, Dave Thomas, Natasha Murashev, Tony Hillerson, Josh Chisholm, and Bruce Tate.
Functional programming is on the rise because it lets you write simpler, cleaner code, and its emphasis on immutability makes it ideal for maximizing the benefits of multiple cores and distributed solutions. So far nobody's invented the perfect functional language - each has its unique strengths. In Functional A PragPub Anthology , you'll investigate the philosophies, tools, and idioms of five different functional programming languages. See how Swift, the development language for iOS, encourages you to build highly scalable apps using functional techniques like map and reduce. Discover how Scala allows you to transition gently but deeply into functional programming without losing the benefits of the JVM, while with Lisp-based Clojure, you can plunge fully into the functional style. Learn about advanced functional concepts in Haskell, a pure functional language making powerful use of the type system with type inference and type classes. And see how functional programming is becoming more elegant and friendly with Elixir, a new functional language built on the powerful Erlang base.The industry has been embracing functional programming more and more, driven by the need for concurrency and parallelism. This collection of articles will lead you to mastering the functional approach to problem solving. So put on your explorer's hat and prepare to be surprised. The goal of exploration is always discovery. What You Familiarity with one or more programming languages.]]>
460 Michael Swaine 1680502743 Héctor Iván 4
La antología empieza muy bien con un recuento de lo que es la programación funcional, su historia y por qué está de moda de nuevo, así como las veces en la historia en la que surgió y "se durmió". Construye muy bien el caso de uso, en el que se muestra cómo la programación funcional es más intuitiva y fácil de entender a nivel de negocio, y muchas veces más fácil de mantener al permitir crear soluciones más concisas. Esta explicación la extiende por algunos capítulos mostrando los ejemplos en diferentes lenguajes y sobre todo comparándolo con la alternativa. Estos capítulos están interesantes, aunque los siento un poco divergentes.

Después, el libro va profundizando en temas muy divergentes de diferentes aspectos de los lenguajes del título, como por ejemplo el manejo de errores de Clojure, el sistema de tipos de Haskell (mi capítulo/artículo favorito) y la concurrencia de Elixir.

Esta última parte es la que no me agradó tanto, no se siente cohesivo el libro, sino se siente como una revoltura de temas muy débilmente ligados.

Sin embargo, si quieres explorar y aprender de diferentes temas relacionados todos por la programación funcional y todas las cosas que tienen que ver con esta, lo recomiendo mucho, pero creo que una lectura práctica (en donde haces o copias todo el código) sería mucho mejor.]]>
3.24 Functional Programming: A PragPub Anthology: Exploring Clojure, Elixir, Haskell, Scala, and Swift
author: Michael Swaine
name: Héctor Iván
average rating: 3.24
book published:
rating: 4
read at: 2022/12/16
date added: 2022/12/21
shelves: computer-science-and-programming, programmers, programmers-must-read
review:
Esta es una colección de artículos relacionados con la programación funcional y cinco lenguajes en los que puedes hacer programación funcional a diferentes niveles, pero todos tienen las ideas principales: inmutabilidad y trato de funciones como ciudadanos de primer mundo.

La antología empieza muy bien con un recuento de lo que es la programación funcional, su historia y por qué está de moda de nuevo, así como las veces en la historia en la que surgió y "se durmió". Construye muy bien el caso de uso, en el que se muestra cómo la programación funcional es más intuitiva y fácil de entender a nivel de negocio, y muchas veces más fácil de mantener al permitir crear soluciones más concisas. Esta explicación la extiende por algunos capítulos mostrando los ejemplos en diferentes lenguajes y sobre todo comparándolo con la alternativa. Estos capítulos están interesantes, aunque los siento un poco divergentes.

Después, el libro va profundizando en temas muy divergentes de diferentes aspectos de los lenguajes del título, como por ejemplo el manejo de errores de Clojure, el sistema de tipos de Haskell (mi capítulo/artículo favorito) y la concurrencia de Elixir.

Esta última parte es la que no me agradó tanto, no se siente cohesivo el libro, sino se siente como una revoltura de temas muy débilmente ligados.

Sin embargo, si quieres explorar y aprender de diferentes temas relacionados todos por la programación funcional y todas las cosas que tienen que ver con esta, lo recomiendo mucho, pero creo que una lectura práctica (en donde haces o copias todo el código) sería mucho mejor.
]]>
Building Git 44128595 708 James Coglan Héctor Iván 5
Se hace una implementación de git en Ruby (llamada Jit), que como dijimos, es completamente compatible y se recorren muchos temas relacionados con la programación:

1. El lenguaje Ruby, muchas de sus particularidades e implementaciones en sus biblioteca estándar
2. Sistemas operativos y la forma en que realizan las cosas que les pedimos
3. Representación y compresión de información
4. Estructuras de datos tanto básicas como avanzadas
5. Algoritmos y su uso en software real (XDelta, Myers Diff)
6. Testing
7. Prácticas convenientes de programación, para hacer el desarrollo más sencillo
8. Redes de computadoras y transmisión de datos

Es increíble todo lo que un programa tan útil tiene que hacer y tomar en cuenta para funcionar correctamente.

En conclusión, creo que es un libro que tienes que leer si quieres mejorar tu capacidad de crear buen software y además creo que lo puedes seguir con otro lenguaje que no sea Ruby para conocer este lenguaje a fondo. Además creo que un libro o curso similar debería darse en la universidad para que todo estudiante saliera sin dudas de dónde se aplican todas estos algoritmos y estructuras de datos que se ven ahí.

Nota: Pienso que este libro no está hecho para leerse, sino para seguirse como un curso en el cuál vas a profundizar en muchos temas, yo hice un pasón rápido, pero espero que el próximo año lo pueda seguir profundamente con Rust.]]>
4.74 2019 Building Git
author: James Coglan
name: Héctor Iván
average rating: 4.74
book published: 2019
rating: 5
read at: 2022/10/23
date added: 2022/10/24
shelves: computer-science-and-programming, favorites, programmers, programmers-must-read
review:
Es un librazazo que se siente como un tutorial profundo gigante sobre la construcción de Git y todos los detalles que implican sus comandos más importantes. Lo que esto implica es que se está tomando software del mundo real y se tiene que replicar su funcionalidad externa, además de hacer un poco de ingeniería inversa para hacer una implementación completamente compatible.

Se hace una implementación de git en Ruby (llamada Jit), que como dijimos, es completamente compatible y se recorren muchos temas relacionados con la programación:

1. El lenguaje Ruby, muchas de sus particularidades e implementaciones en sus biblioteca estándar
2. Sistemas operativos y la forma en que realizan las cosas que les pedimos
3. Representación y compresión de información
4. Estructuras de datos tanto básicas como avanzadas
5. Algoritmos y su uso en software real (XDelta, Myers Diff)
6. Testing
7. Prácticas convenientes de programación, para hacer el desarrollo más sencillo
8. Redes de computadoras y transmisión de datos

Es increíble todo lo que un programa tan útil tiene que hacer y tomar en cuenta para funcionar correctamente.

En conclusión, creo que es un libro que tienes que leer si quieres mejorar tu capacidad de crear buen software y además creo que lo puedes seguir con otro lenguaje que no sea Ruby para conocer este lenguaje a fondo. Además creo que un libro o curso similar debería darse en la universidad para que todo estudiante saliera sin dudas de dónde se aplican todas estos algoritmos y estructuras de datos que se ven ahí.

Nota: Pienso que este libro no está hecho para leerse, sino para seguirse como un curso en el cuál vas a profundizar en muchos temas, yo hice un pasón rápido, pero espero que el próximo año lo pueda seguir profundamente con Rust.
]]>
<![CDATA[Docs for Developers: An Engineer’s Field Guide to Technical Writing]]> 59239026

A well-documented project saves time for both developers on the project and users of the software, and projects without adequate documentation suffer from poor developer productivity, project scalability, user adoption, and accessibility. In short: bad documentation kills projects.


Docs for Developers demystifies the process of creating great developer documentation, following a team of software developers as they work to launch a new product. At each step along the way, you learn through examples, templates, and principles how to create, measure, and maintain documentation, which you can adapt to the needs of your own organization.

What You'll Learn




Create friction logs and perform user research to understand your user's frustrations Research, draft, and write different kinds of documentation, including READMEs, API documentation, tutorials, conceptual information, and release notes Define an information architecture for a larger set of documentation, optimized for search Publish and maintain documentation alongside regular code releases
Measure the success of the content you create through analytics and user feedback
Who This Book Is For




Ideal for software developers tasked with creating documentation alongside code or for technical writers, developer advocates, product managers, and other technical roles that create and contribute to documentation for their products and systems. Technical managers will also find value in adapting their teams or organizations to improve software documentation practices.




]]>
252 Jared Bhatti 148427217X Héctor Iván 4 programmers-must-read
Básicamente es aplicar el mismo proceso de UX y DevOps/Release que se aplica a los productos a la documentación y ponerla como un producto importante, de primer orden.

Te guía a través de todos los pasos necesarios para crear buena documentación, desde descubrir por por qué la creas hasta el proceso de reemplazarla y eliminarla cuando no se necesita.

También da consejos muy útiles sobre cómo escribir claramente, qué es un documento de calidad, qué se espera en general de la documentación y recomendaciones sobre herramientas y cuánto contratar a alguien más especializado.

Creo que es un libro que todo equipo de desarrollo debe leer, para mantener en la mente la importancia de crear y mantener buena documentación, ya que deja clara una lección importante: un programa, por muy bueno que sea, si nadie sabe cómo usarlo, no sirve.]]>
4.10 Docs for Developers: An Engineer’s Field Guide to Technical Writing
author: Jared Bhatti
name: Héctor Iván
average rating: 4.10
book published:
rating: 4
read at: 2022/09/30
date added: 2022/09/30
shelves: programmers-must-read
review:
Es una muy buena guía sobre el proceso de escribir documentación clara y útil para tus usuarios finales, pero me faltó más guía de cómo escribir documentos internos o documentación técnica a nivel de código para que otros desarrolladores puedan retomar el trabajo, pero creo que estos principios pueden ser muy aplicables también pare ese tipo de documentos.

Básicamente es aplicar el mismo proceso de UX y DevOps/Release que se aplica a los productos a la documentación y ponerla como un producto importante, de primer orden.

Te guía a través de todos los pasos necesarios para crear buena documentación, desde descubrir por por qué la creas hasta el proceso de reemplazarla y eliminarla cuando no se necesita.

También da consejos muy útiles sobre cómo escribir claramente, qué es un documento de calidad, qué se espera en general de la documentación y recomendaciones sobre herramientas y cuánto contratar a alguien más especializado.

Creo que es un libro que todo equipo de desarrollo debe leer, para mantener en la mente la importancia de crear y mantener buena documentación, ya que deja clara una lección importante: un programa, por muy bueno que sea, si nadie sabe cómo usarlo, no sirve.
]]>
Real-World Cryptography 50090498 400 David Wong 1617296716 Héctor Iván 5
Me gustó mucho el orden en el que presenta los temas, en la primera sección del libro hablando sobre primitivas, o los bloques de construcción básicos de los sistemas que usan criptografía. Dentro de esta sección empieza no por lo que teóricamente se enseña primero, sino por construcción más usada y más simple: hashes. Esta idea la sigue por todo el libro, construyendo sobre las ideas anteriores, a diferencia de "Serious Cryptography", en la que la mayoría son capítulos autocontenidos y a veces, requieres leer otra parte del libro para entenderlo. Esta forma me gustó más porque siento como que tomé un curso completo bien fundamentado de criptografía aplicada básica.

La segunda parte del libro habla sobre los protocolos criptográficos, que se pueden entender como una serie de pasos que hacen uso de las primitivas criptográficas, para lograr un objetivo, por ejemplo, lograr la comunicación segura entre dos actores que no se habían visto nunca. Esta es la parte, a mi entender, más complicada del libro. Es difícil de meter todo en tu cabeza porque trata con cosas y problemas del mundo real que normalmente son más complicados que los académicos. Además, para entenderlos, debes tener bien entendidos y hasta cierto punto, dominados los puntos anteriores.

También es un libro muy completo porque habla de la mayoría de usos que le damos a la criptografía hoy:
- Comunicaciones secretas y confiables
- Cifrado de extremo a extremo
- Criptomonedas
- Cómo proteger la parte física de los sistemas
- Criptografía post-cunántica
- Lo que viene para la criptografía: pruebas con cero conocimiento, criptografía completamente homomórfica, etc.
- Cómo puedes usar mal la criptografía y cómo protegerte

Sin duda es un libro que recomendaría a todos los desarrolladores que estén interesados en crear programas "seguros". Pongo seguros entre comillas porque el libro te deja claro que la seguridad criptográfica actual en realidad es un juego de poder: quien tenga más poder se va poder proteger mejor, pero no existe un programa completamente seguro.

Finalmente, en cuanto al estilo de escritura en general, lo sentí menos formal que "Serious Cryptography" y en algunos puntos también siento que David se rindió ante la complejidad del tema, pero por lo menos te deja con una idea de lo que te espera si quieres estudiar eso a fondo.]]>
4.58 Real-World Cryptography
author: David Wong
name: Héctor Iván
average rating: 4.58
book published:
rating: 5
read at: 2022/09/19
date added: 2022/09/24
shelves: computer-science-and-programming, programmers, programmers-must-read, thought-provoking
review:
En este libro encontrarás todo lo que necesitas saber sobre criptografía como desarrollador de software, explicado de una manera sencilla (la mayoría de las veces) y también lo más que se puede simplificar.

Me gustó mucho el orden en el que presenta los temas, en la primera sección del libro hablando sobre primitivas, o los bloques de construcción básicos de los sistemas que usan criptografía. Dentro de esta sección empieza no por lo que teóricamente se enseña primero, sino por construcción más usada y más simple: hashes. Esta idea la sigue por todo el libro, construyendo sobre las ideas anteriores, a diferencia de "Serious Cryptography", en la que la mayoría son capítulos autocontenidos y a veces, requieres leer otra parte del libro para entenderlo. Esta forma me gustó más porque siento como que tomé un curso completo bien fundamentado de criptografía aplicada básica.

La segunda parte del libro habla sobre los protocolos criptográficos, que se pueden entender como una serie de pasos que hacen uso de las primitivas criptográficas, para lograr un objetivo, por ejemplo, lograr la comunicación segura entre dos actores que no se habían visto nunca. Esta es la parte, a mi entender, más complicada del libro. Es difícil de meter todo en tu cabeza porque trata con cosas y problemas del mundo real que normalmente son más complicados que los académicos. Además, para entenderlos, debes tener bien entendidos y hasta cierto punto, dominados los puntos anteriores.

También es un libro muy completo porque habla de la mayoría de usos que le damos a la criptografía hoy:
- Comunicaciones secretas y confiables
- Cifrado de extremo a extremo
- Criptomonedas
- Cómo proteger la parte física de los sistemas
- Criptografía post-cunántica
- Lo que viene para la criptografía: pruebas con cero conocimiento, criptografía completamente homomórfica, etc.
- Cómo puedes usar mal la criptografía y cómo protegerte

Sin duda es un libro que recomendaría a todos los desarrolladores que estén interesados en crear programas "seguros". Pongo seguros entre comillas porque el libro te deja claro que la seguridad criptográfica actual en realidad es un juego de poder: quien tenga más poder se va poder proteger mejor, pero no existe un programa completamente seguro.

Finalmente, en cuanto al estilo de escritura en general, lo sentí menos formal que "Serious Cryptography" y en algunos puntos también siento que David se rindió ante la complejidad del tema, pero por lo menos te deja con una idea de lo que te espera si quieres estudiar eso a fondo.
]]>
<![CDATA[Historia de los lenguajes de Programación. Años 1940-1959]]> 60092260
Este libro te ofrece una visión de cómo surgieron los primeros lenguajes y cómo influenciaron a otros lenguajes hasta llegar a la era de Internet. El Siglo XX desde el punto de vista de los lenguajes de programación, comenzando la historia con los años 40 y 50, los primeros pasos desde Babbage y Lovelace hasta lenguajes que perduran hoy en día como son COBOL, FORTRAN o Lisp.]]>
133 Manuel Ángel Rubio Jiménez 9788494552 Héctor Iván 4 programmers-must-read
Me llevo varias lecciones de lo que se vivió en los primero años de la programación:

1) La programación siempre ha requerido gente con intereses particulares y desde ese tiempo, a los programadores le era difícil despegarse del trabajo.

2) Siempre ha habido personas que quieren avanzar el campo mediante bajar las barreras de entrada, mientras que otros se oponen fervientemente.

3) La cooperación y coordinación entre industria, academia y profesionales individuales es imperativa para el avance de la computación.

Te recomiendo mucho este libro si eres programador@ o ingenier@ de software y quieres aprender más de la historia de tu profesión, espero con ansias los siguientes volúmenes.]]>
4.67 Historia de los lenguajes de Programación. Años 1940-1959
author: Manuel Ángel Rubio Jiménez
name: Héctor Iván
average rating: 4.67
book published:
rating: 4
read at: 2022/05/10
date added: 2022/08/29
shelves: programmers-must-read
review:
En este libro aprenderás bastante sobre la historia de las primeras computadoras y los primeras formas de programarlas, además de cómo fueron evolucionando tanto las computadoras como los lenguajes que se diseñaron para poder automatizar cada vez más tareas.

Me llevo varias lecciones de lo que se vivió en los primero años de la programación:

1) La programación siempre ha requerido gente con intereses particulares y desde ese tiempo, a los programadores le era difícil despegarse del trabajo.

2) Siempre ha habido personas que quieren avanzar el campo mediante bajar las barreras de entrada, mientras que otros se oponen fervientemente.

3) La cooperación y coordinación entre industria, academia y profesionales individuales es imperativa para el avance de la computación.

Te recomiendo mucho este libro si eres programador@ o ingenier@ de software y quieres aprender más de la historia de tu profesión, espero con ansias los siguientes volúmenes.
]]>
<![CDATA[Understanding ECMAScript 6: The Definitive Guide for JavaScript Developers]]> 31743923

ECMAScript 6 represents the biggest update to the core of JavaScript in the history of the language. In Understanding ECMAScript 6, expert developer Nicholas C. Zakas provides a complete guide to the object types, syntax, and other exciting changes that ECMAScript 6 brings to JavaScript. Every chapter is packed with example code that works in any JavaScript environment so you'll be able to see new features in action. You'll learn:

How ECMAScript 6 class syntax relates to more familiar JavaScript concepts What makes iterators and generators useful How arrow functions differ from regular functions Ways to store data with sets, maps, and more The power of inheritance How to improve asynchronous programming with promises How modules change the way you organize code Whether you're a web developer or a Node.js developer, you'll find Understanding ECMAScript 6 indispensable on your journey from ECMAScript 5 to ECMAScript 6.]]>
353 Nicholas C. Zakas 1593277989 Héctor Iván 5
El autor demuestra una experiencia muy extensa y un conocimiento muy profundo del funcionamiento de JS, y lo usa para explicar de manera increíble cada parte que cambió, así como también el funcionamiento tanto de implementación tanto del lenguaje como de los engines de JS.

Recomiendo este libro a todo aquel necesite profundizar su conocimiento de JS aunque no sea específicamente saber las características de ES6 lo que necesita. Como practicante de JS puede aprender muchísimo, aunque también puede ser leído como una referencia, por partes, o cuando se necesite saber de un tema en específico.

Los temas que más me llamaron la atención:

- Generadores e Iteradores
- Implementación de las clases y atributos no modificables
- Símbolos

Gracias a Nicholas Zakas por todas las buenas explicaciones que produce.]]>
4.31 2016 Understanding ECMAScript 6: The Definitive Guide for JavaScript Developers
author: Nicholas C. Zakas
name: Héctor Iván
average rating: 4.31
book published: 2016
rating: 5
read at: 2022/07/15
date added: 2022/08/13
shelves: computer-science-and-programming, programmers-must-read, programmers
review:
En este libro encontrarás una referencia explicada muy completa de todos los cambios que hicieron a ECMAScript 6 un gran evento para los programadores de JS.

El autor demuestra una experiencia muy extensa y un conocimiento muy profundo del funcionamiento de JS, y lo usa para explicar de manera increíble cada parte que cambió, así como también el funcionamiento tanto de implementación tanto del lenguaje como de los engines de JS.

Recomiendo este libro a todo aquel necesite profundizar su conocimiento de JS aunque no sea específicamente saber las características de ES6 lo que necesita. Como practicante de JS puede aprender muchísimo, aunque también puede ser leído como una referencia, por partes, o cuando se necesite saber de un tema en específico.

Los temas que más me llamaron la atención:

- Generadores e Iteradores
- Implementación de las clases y atributos no modificables
- Símbolos

Gracias a Nicholas Zakas por todas las buenas explicaciones que produce.
]]>
Mentes Geniales 61094834
Con su lectura iniciará un viaje hacia el corazón de la informática, las ideas, las contribuciones, las personas que dieron origen a gran parte de lo que conocemos hoy como tecnología. Todas ellas fueron ganadoras del «nobel de la informática», el premio Turing, excepto uno, el que lleva el nombre del premio: Alan Turing.

Encontrará historias de creatividad, voluntad y perseverancia. Sus vidas, sus anécdotas y sus principales contribuciones intelectuales son presentadas en este libro en un lenguaje ameno, sin caer en excesivos tecnicismos.

¿Cuál es el objetivo de este libro? Motivar a una nueva generación de informáticos (y profesionales de áreas similares) a seguir el camino de estas grandes mentes. Después de todo, la informática necesita de personas así.

Camilo Chacón Sartori fue elegido escritor destacado por Quora en español durante cuatro años seguidos, 2018-2021, por sus más de 800 respuestas sobre ciencias de la computación.

Actualmente tiene un pódcast llamado Había una vez un algoritmo, donde trata temas filosóficos, prácticos y teóricos sobre la computación. Obtuvo su licenciatura y máster en Ingeniería Informática, ambos, con distinción máxima.]]>
204 Camilo Chacón Sartori Héctor Iván 4
La selección de personajes es interesante, desde el que muchos consideran el padre de la computación actual, Alan M. Turing, hasta una de las personas mas influyentes en la creación de lo que ha transformado la vida de muchas personas: el internet. (Tim Berners-Lee).

El libro no sólo te habla de sus logros técnicos, sino también de su historia de vida y si contexto, para que entiendas las razones de lo que hicieron y dijeron. Finalmente, en cada capítulo, el autor resalta las características que el autor cree que llevaron a cada uno de los personajes a contribuir de tal manera a la informática y la computación. Entre estas características y valores, la que más resalta es la voluntad de crear cosas que ayuden a otros.

Creo que leer este libro te puede dar un índice para investigar más sobre la historia de la computación y cómo se fueron dando los avances que le dieron forma a nuestro mundo.

Mis capítulos favoritos fueron:

- Antony Hoare, y sus esfuerzos por formalizar la programación y los sistemas distribuidos
- Manuel Blum, y cómo contribuyó a la criptografía y al campo de complejidad computacional
- Michael Stonebreaker, sus contribuciones a las bases de datos y su incansable esfuerzo por hacer rentables las investigaciones que llevaba a cabo

Este libro debería ser una lectura obligatoria para todos los estudiantes de cosas relacionadas con la informática y las ciencias de la computación, ya que, a diferencia de otros campos, a nosotros no se nos habla de la historia del campo y las personas que han ayudado a darle forma, sólo escuchamos de ellos por encima.]]>
4.20 2021 Mentes Geniales
author: Camilo Chacón Sartori
name: Héctor Iván
average rating: 4.20
book published: 2021
rating: 4
read at: 2022/05/22
date added: 2022/05/30
shelves: computer-science-and-programming, programmers-must-read
review:
En este libro verás la vida y obra de 12 personas que influyeron mucho en la informática y que pusieron trabajo sobre el que casi todo nuestro mundo digital está construido hoy. Es una lectura muy interesante para los que les gusta la computación, y también para las personas que han trabajado en este campo mucho tiempo, ya que entenderán el origen de muchas de las cosas que escuchan a diario.

La selección de personajes es interesante, desde el que muchos consideran el padre de la computación actual, Alan M. Turing, hasta una de las personas mas influyentes en la creación de lo que ha transformado la vida de muchas personas: el internet. (Tim Berners-Lee).

El libro no sólo te habla de sus logros técnicos, sino también de su historia de vida y si contexto, para que entiendas las razones de lo que hicieron y dijeron. Finalmente, en cada capítulo, el autor resalta las características que el autor cree que llevaron a cada uno de los personajes a contribuir de tal manera a la informática y la computación. Entre estas características y valores, la que más resalta es la voluntad de crear cosas que ayuden a otros.

Creo que leer este libro te puede dar un índice para investigar más sobre la historia de la computación y cómo se fueron dando los avances que le dieron forma a nuestro mundo.

Mis capítulos favoritos fueron:

- Antony Hoare, y sus esfuerzos por formalizar la programación y los sistemas distribuidos
- Manuel Blum, y cómo contribuyó a la criptografía y al campo de complejidad computacional
- Michael Stonebreaker, sus contribuciones a las bases de datos y su incansable esfuerzo por hacer rentables las investigaciones que llevaba a cabo

Este libro debería ser una lectura obligatoria para todos los estudiantes de cosas relacionadas con la informática y las ciencias de la computación, ya que, a diferencia de otros campos, a nosotros no se nos habla de la historia del campo y las personas que han ayudado a darle forma, sólo escuchamos de ellos por encima.
]]>
Programming Machine Learning 45865109 300 Paolo Perrotta 1680506609 Héctor Iván 5
No es un libro básico en el sentido de que requieres saber programar bien y matemáticas para entenderlo y sacarle el mejor provecho.

Se explican los conceptos desde lo más básico, pero se requiere conocimiento de matemáticas para poder sacarle el mayor provecho al libro. Lo bueno es que el autor da las referencias necesarias para empaparse de los conceptos antes de meterse en la explicación profunda, aún así, creo que si no tienes idea de matemáticas, pasarás un mal rato.

Es increíble el avance que se ve en la introducción de conceptos y lo mejor es que todo se hace con código, para que puedas ir experimentando con lo que acabas de aprender. Esto te lleva a tener un entendimiento sólido e intuitivo de las cosas que se explican. Más allá de un muy buen libro técnico es un ejemplo de cómo deberían estar escritos todos los libros técnicos.

Finalmente, el autor tiene un muy buen sentido del humor que hace todo el libro divertido de leer. Lo recomiendo bastante a cualquier programador que quiera introducirse en el campo de Machine Learning.]]>
4.55 Programming Machine Learning
author: Paolo Perrotta
name: Héctor Iván
average rating: 4.55
book published:
rating: 5
read at: 2022/05/01
date added: 2022/05/14
shelves: programmers, programmers-must-read, awesome-machine-learning
review:
En este libro se tratan bastante bien las bases de lo que actualmente se le conoce como Machine Learning, un conjunto de técnicas para aproximar funciones matemáticas a un conjunto de datos y aplicarlo a problemas que serían casi imposibles de resolver (o por lo menos impráctico) por los medios tradicionales de programación. Se empieza desde la parte más básica (regresiones lineales) y se termina en redes neuronales profundas, con todos los conceptos que conlleva entenderlas. También te ayuda a empezar con las herramientas que se necesitarán para que trabajes en ello tú mismo y puedas continuar aprendiendo o poniendo en práctica lo que aprendiste.

No es un libro básico en el sentido de que requieres saber programar bien y matemáticas para entenderlo y sacarle el mejor provecho.

Se explican los conceptos desde lo más básico, pero se requiere conocimiento de matemáticas para poder sacarle el mayor provecho al libro. Lo bueno es que el autor da las referencias necesarias para empaparse de los conceptos antes de meterse en la explicación profunda, aún así, creo que si no tienes idea de matemáticas, pasarás un mal rato.

Es increíble el avance que se ve en la introducción de conceptos y lo mejor es que todo se hace con código, para que puedas ir experimentando con lo que acabas de aprender. Esto te lleva a tener un entendimiento sólido e intuitivo de las cosas que se explican. Más allá de un muy buen libro técnico es un ejemplo de cómo deberían estar escritos todos los libros técnicos.

Finalmente, el autor tiene un muy buen sentido del humor que hace todo el libro divertido de leer. Lo recomiendo bastante a cualquier programador que quiera introducirse en el campo de Machine Learning.
]]>
<![CDATA[JavaScript Allongé, the "Six" Edition]]> 26063752
-- Programmers learning JavaScript who want a thorough grounding in its fundamentals rather than a cursory treatment of its syntax.

-- Programmers already using JavaScript who want to go back and take a deep dive into programming with functions and combinators.

-- Any programmer curious about programming with functions.

JavaScript Allongé's primary focus is functions as first-class values and topics built on those fundamentals such as objects, prototypes, "classes," combinators, method decorators, and fluent APIs.]]>
499 Reginald Braithwaite Héctor Iván 5
Lo recomiendo muchísimo para cualquier programador@, pero especialmente para aquellos interesados en JS independientemente de su nivel, porque la forma en la que logra que describí en el párrafo anterior es explicando el funcionamiento de JS e introduciendo las características de ES6 poco a poco también.

Este libro también te enseña también conceptos sobre programación funcional, programación orientada a objetos, historia de la programación, cálculo lambda, matemáticas, etc. Tiene un estilo ameno y ejemplos ligeros.

Finalmente, es un libro autopublicado, tiene algunos typos por ahí y algunas secciones que parecen inconclusas, pero es gratuito, así que no es como que puedas reclamar que no cumple con lo que pagaste, todo este conocimiento te lo están dando gratis.
]]>
4.30 2012 JavaScript Allongé, the "Six" Edition
author: Reginald Braithwaite
name: Héctor Iván
average rating: 4.30
book published: 2012
rating: 5
read at: 2022/03/06
date added: 2022/03/06
shelves: restarted, computer-science-and-programming, programmers, thought-provoking, programmers-must-read
review:
Este libro es uno de los mejores que he leído sobre programación, explora conceptos muy básicos que pocos otros recursos se dan el tiempo de explicar con ejemplos y consecuencias de las cosas explicadas y construye sobre eso, paso a paso, para que entiendas técnicas, estructuras de datos y patrones que harán que tu código sea mejor (más elegante, más conveniente, más mantenible) y sobre las que tú también podrás construir.

Lo recomiendo muchísimo para cualquier programador@, pero especialmente para aquellos interesados en JS independientemente de su nivel, porque la forma en la que logra que describí en el párrafo anterior es explicando el funcionamiento de JS e introduciendo las características de ES6 poco a poco también.

Este libro también te enseña también conceptos sobre programación funcional, programación orientada a objetos, historia de la programación, cálculo lambda, matemáticas, etc. Tiene un estilo ameno y ejemplos ligeros.

Finalmente, es un libro autopublicado, tiene algunos typos por ahí y algunas secciones que parecen inconclusas, pero es gratuito, así que no es como que puedas reclamar que no cumple con lo que pagaste, todo este conocimiento te lo están dando gratis.

]]>
<![CDATA[An Elegant Puzzle: Systems of Engineering Management]]> 45303387 289 Will Larson 1953953336 Héctor Iván 5
Este libro y lo que recomienda esta muy arriba de mi nivel en cuanto a lo profesional, no creo enfrentarme a los problemas que menciona aquí en varios años, como ser el responsable de una organización con decenas o cientos de equipos. Si estás a ese nivel o quiere avanzar a ese nivel de reponsabilidad, creo que es una lectura imperdible, ya que habla de problemas concretos que el autor ha tenido y da soluciones prácticas.

Más allá de los problemas que aún no tengo, da muchas pistas acerca de cómo debería trabajar una organización en la que el software es el tema central y se aprenden cosas concretas sobre liderazgo. Aquí hay están algunas de las cosas que me llevo del libro:

1) Si aspiras a ser un administrador de ingeniería, ¿estás dispuesto/a a hacer las tareas de las que habla ahí? ¿Disfutarías de tareas como administración de equipos, manejo de conflictos, creación de estructuras organizacionales?

2) Toda organización, independientemente del tamaño debe ofrecer una estructura a sus empleados: una forma de crecer en tu carrera (career lader), un puesto bien definido y procesos.

3) La cultura de la empresa está formada por procesos.

4) Debes tener una mentalidad de ver las organizaciones como sistemas (system thinking) para poder crear procesos efectivos.

5) Los resultados importantes toman tiempo, siempre debes planear pensando en el largo plazo.

6) La cultura de la empresa es lo que haces, no lo que dices, los resultados gritan más fuerte que cualquier proclamación.

Se me hace muy interesante el nivel de pensamiento que debes tener para estar en un puesto de esta responsabilidad. Finalmente, la lista de lecturas recomendadas y de papers está increíble. Si tienes la oportundad de ciomprarlo en físico, hazlo, ya que la encuadernación e impresión son hermosas, pero la portada blanca se ensucia muy fácil ya que no está plastificada.
]]>
4.08 2019 An Elegant Puzzle: Systems of Engineering Management
author: Will Larson
name: Héctor Iván
average rating: 4.08
book published: 2019
rating: 5
read at: 2020/11/28
date added: 2020/12/01
shelves: programmers-must-read, thought-provoking
review:
Primero: esto no es un libro convencional sino una colección de entradas de blog ordenadas en 5 grandes áreas que conciernen a organizaciones con cientos de personas en el área de desarrollo atendiendo a millones o miles de millones de usuarios.

Este libro y lo que recomienda esta muy arriba de mi nivel en cuanto a lo profesional, no creo enfrentarme a los problemas que menciona aquí en varios años, como ser el responsable de una organización con decenas o cientos de equipos. Si estás a ese nivel o quiere avanzar a ese nivel de reponsabilidad, creo que es una lectura imperdible, ya que habla de problemas concretos que el autor ha tenido y da soluciones prácticas.

Más allá de los problemas que aún no tengo, da muchas pistas acerca de cómo debería trabajar una organización en la que el software es el tema central y se aprenden cosas concretas sobre liderazgo. Aquí hay están algunas de las cosas que me llevo del libro:

1) Si aspiras a ser un administrador de ingeniería, ¿estás dispuesto/a a hacer las tareas de las que habla ahí? ¿Disfutarías de tareas como administración de equipos, manejo de conflictos, creación de estructuras organizacionales?

2) Toda organización, independientemente del tamaño debe ofrecer una estructura a sus empleados: una forma de crecer en tu carrera (career lader), un puesto bien definido y procesos.

3) La cultura de la empresa está formada por procesos.

4) Debes tener una mentalidad de ver las organizaciones como sistemas (system thinking) para poder crear procesos efectivos.

5) Los resultados importantes toman tiempo, siempre debes planear pensando en el largo plazo.

6) La cultura de la empresa es lo que haces, no lo que dices, los resultados gritan más fuerte que cualquier proclamación.

Se me hace muy interesante el nivel de pensamiento que debes tener para estar en un puesto de esta responsabilidad. Finalmente, la lista de lecturas recomendadas y de papers está increíble. Si tienes la oportundad de ciomprarlo en físico, hazlo, ya que la encuadernación e impresión son hermosas, pero la portada blanca se ensucia muy fácil ya que no está plastificada.

]]>
Code Ahead 40779951 235 Yegor Bugayenko 1982063742 Héctor Iván 5
Presenta una visión cínica del mundo, en el que no deberías confiar en las intenciones de las personas y en la que deberías buscar trabajar con alguien egoísta y ambicioso antes de con alguien que parezca que le importa lo que tú estás haciendo.

La perspectiva técnica es bastante fuerte y estructurada:

1. El proyecto es el patrón, no las personas.
2. Debe haber una persona responsable del diseño del proyecto: esta persona sufrirá las consecuencias por las malas decisiones. Si no hay, alguien responsable nadie tiene incentivos reales para hacer las cosas correctamente.
3. El proyecto se debe proteger a sí mismo contra el mal código: para eso es el pipeline de entrega, las pruebas unitarias y toda la estructura alrededor de esto.
4. Los testers deberían ser personas más experimentadas y hábiles que los desarrolladores. Su responsabilidad es *encontrar defectos*, porque probar que el software está libre de errores es imposible.
5. Un área administrativa fuerte es la clave para lograr un buen proyecto.
6. No deberías esperar trabajar con "rockstars" para lograr tus metas, debes establecer objetivos y sistemas para que el proyecto logre lo que necesita incluso con trabajadores no tan hábiles.

Tiene muchos otros consejos que pueden ser útiles. Sobre todo, las referencias y recomendaciones son muy valiosas. Si quieres aprender una forma fuerte de trabajar y un lado radical del desarrollo de software te recomiendo mucho este libro.

Yegor es alguien que podrás llegar a odiar, pero por lo menos causará una opinión en ti.]]>
4.41 Code Ahead
author: Yegor Bugayenko
name: Héctor Iván
average rating: 4.41
book published:
rating: 5
read at: 2020/02/17
date added: 2020/02/21
shelves: computer-science-and-programming, programmers, programmers-must-read
review:
No es un libro para todos. Habla de muchos temas, es la opinión del autor fundamentada en el estudio y parece que la lectura de muchos otros libros y recursos, sobre el desarrollo de software en general.

Presenta una visión cínica del mundo, en el que no deberías confiar en las intenciones de las personas y en la que deberías buscar trabajar con alguien egoísta y ambicioso antes de con alguien que parezca que le importa lo que tú estás haciendo.

La perspectiva técnica es bastante fuerte y estructurada:

1. El proyecto es el patrón, no las personas.
2. Debe haber una persona responsable del diseño del proyecto: esta persona sufrirá las consecuencias por las malas decisiones. Si no hay, alguien responsable nadie tiene incentivos reales para hacer las cosas correctamente.
3. El proyecto se debe proteger a sí mismo contra el mal código: para eso es el pipeline de entrega, las pruebas unitarias y toda la estructura alrededor de esto.
4. Los testers deberían ser personas más experimentadas y hábiles que los desarrolladores. Su responsabilidad es *encontrar defectos*, porque probar que el software está libre de errores es imposible.
5. Un área administrativa fuerte es la clave para lograr un buen proyecto.
6. No deberías esperar trabajar con "rockstars" para lograr tus metas, debes establecer objetivos y sistemas para que el proyecto logre lo que necesita incluso con trabajadores no tan hábiles.

Tiene muchos otros consejos que pueden ser útiles. Sobre todo, las referencias y recomendaciones son muy valiosas. Si quieres aprender una forma fuerte de trabajar y un lado radical del desarrollo de software te recomiendo mucho este libro.

Yegor es alguien que podrás llegar a odiar, pero por lo menos causará una opinión en ti.
]]>
<![CDATA[A Philosophy of Software Design]]> 39996759 190 John Ousterhout 1732102201 Héctor Iván 5 4.18 2018 A Philosophy of Software Design
author: John Ousterhout
name: Héctor Iván
average rating: 4.18
book published: 2018
rating: 5
read at: 2019/11/30
date added: 2019/12/09
shelves: computer-science-and-programming, technical, programmers, programmers-must-read
review:
One of the best books I've read on how to create great systems. It provides some counterintuitive advice compared to what I've heard.
]]>
<![CDATA[How to Solve It: A New Aspect of Mathematical Method (Princeton Science Library)]]> 21981721 288 George Pólya 069116407X Héctor Iván 5
It's an authentic treasure to everyone interested in problem-solving (and every one of us has enough problems to be interested in with problem-solving).

I think this should be one of the obligatory lectures for high-school or college education because it states clearly the steps one intuitively follows when trying to solve a problem mathematical or not.

The key takeaways for me are:

1. If you conceive a plan to solve the problem you're almost done.
2. Going around obstacles is a good way of solving problems.
3. If you cannot solve the problem you have right now you could try several distinct strategies:
- Change the problem
- Change the expected result
- Change the conditions
- Change everything -> Anything that could make you improve your understanding of the problem could help.
]]>
4.20 1944 How to Solve It: A New Aspect of Mathematical Method (Princeton Science Library)
author: George Pólya
name: Héctor Iván
average rating: 4.20
book published: 1944
rating: 5
read at: 2019/08/13
date added: 2019/08/18
shelves: computer-science-and-programming, everyone-must-read, programmers, programmers-must-read, science, must-read-math, favorites
review:
One of the most useful books I've read in my life.

It's an authentic treasure to everyone interested in problem-solving (and every one of us has enough problems to be interested in with problem-solving).

I think this should be one of the obligatory lectures for high-school or college education because it states clearly the steps one intuitively follows when trying to solve a problem mathematical or not.

The key takeaways for me are:

1. If you conceive a plan to solve the problem you're almost done.
2. Going around obstacles is a good way of solving problems.
3. If you cannot solve the problem you have right now you could try several distinct strategies:
- Change the problem
- Change the expected result
- Change the conditions
- Change everything -> Anything that could make you improve your understanding of the problem could help.

]]>
<![CDATA[The Model Thinker: What You Need to Know to Make Data Work for You]]> 39354814 How anyone can become a data ninja

From the stock market to genomics laboratories, census figures to marketing email blasts, we are awash with data. But as anyone who has ever opened up a spreadsheet packed with seemingly infinite lines of data knows, numbers aren't enough: we need to know how to make those numbers talk. In The Model Thinker, social scientist Scott E. Page shows us the mathematical, statistical, and computational models--from linear regression to random walks and far beyond--that can turn anyone into a genius. At the core of the book is Page's "many-model paradigm," which shows the reader how to apply multiple models to organize the data, leading to wiser choices, more accurate predictions, and more robust designs. The Model Thinker provides a toolkit for business people, students, scientists, pollsters, and bloggers to make them better, clearer thinkers, able to leverage data and information to their advantage.

]]>
466 Scott E. Page 0465094635 Héctor Iván 5
I cannot say I understood the book fully because there are some math equations I'm not prepared to work with 😛, I need refreshers on Differential Calculus to understand some mathematical arguments.

I want to re-read this book to understand it better, and start a notebook with my notes on the book, but first a refresher on Math.

The models I found easier to understand an apply are:

- Markov Chain models
- System Dynamics
- Vote models
- Game models

It helped me understand how to model several things mathematically.
It also helped me to understand the four results a system could
The first pages of the book state the case of learning many thinking models in order to better understand the world, and throughout all the book the author repeats the case with examples of why it is important to learn several models applicable to the problem. I've learned thoroughly how applying different models to the same problem can you give several points of views, excluding details that are not important in that specific view and highlighting the most relevant aspects.

Finally, the humbling component of the book: there's so much to learn that is difficult to understand and there are things of the world we could not understand even with all our advanced knowledge.]]>
3.82 2018 The Model Thinker: What You Need to Know to Make Data Work for You
author: Scott E. Page
name: Héctor Iván
average rating: 3.82
book published: 2018
rating: 5
read at: 2019/04/23
date added: 2019/04/23
shelves: everyone-must-read, programmers-must-read
review:
This book is awesome. First, it heightened my appreciation for math. I've never had the opportunity to learn about models in such great detail and extensiveness. The book explains formally many models used to understand several problems and phenomenons that happen in the current world. The models help you understand in a mathematical and formal way some thoughts you may have intuitively and explain it. Other times, applying the same model to different problems makes you understand things you would never have understood if you didn't see the problem from that perspective.

I cannot say I understood the book fully because there are some math equations I'm not prepared to work with 😛, I need refreshers on Differential Calculus to understand some mathematical arguments.

I want to re-read this book to understand it better, and start a notebook with my notes on the book, but first a refresher on Math.

The models I found easier to understand an apply are:

- Markov Chain models
- System Dynamics
- Vote models
- Game models

It helped me understand how to model several things mathematically.
It also helped me to understand the four results a system could
The first pages of the book state the case of learning many thinking models in order to better understand the world, and throughout all the book the author repeats the case with examples of why it is important to learn several models applicable to the problem. I've learned thoroughly how applying different models to the same problem can you give several points of views, excluding details that are not important in that specific view and highlighting the most relevant aspects.

Finally, the humbling component of the book: there's so much to learn that is difficult to understand and there are things of the world we could not understand even with all our advanced knowledge.
]]>
<![CDATA[Metaprogramming Elixir: Write Less Code, Get More Done (and Have Fun!)]]> 38813643
Metaprogramming is one of Elixir's greatest features. Maybe you've played with the basics or written a few macros. Now you want to take it to the next level. This book is a guided series of metaprogramming tutorials that take you step by step to metaprogramming mastery. You'll extend Elixir with powerful features and write faster, more maintainable programs in ways unmatched by other languages.

You'll start with the basics of Elixir's metaprogramming system and find out how macros interact with Elixir's abstract format. Then you'll extend Elixir with your own first-class features, write a testing framework, and discover how Elixir treats source code as building blocks, rather than rote lines of instructions. You'll continue your journey by using advanced code generation to create essential libraries in strikingly few lines of code. Finally, you'll create domain-specific languages and learn when and where to apply your skills effectively.

When you're done, you will have mastered metaprogramming, gained insights into Elixir's internals, and have the confidence to leverage macros to their full potential in your own projects.]]>
128 Chris McCord 1680503995 Héctor Iván 5
It's often times said that books are the cheapest objects you could acquire because of all the knowledge you could get from them, and with this book that saying holds true.

This is a short but very very instructive book filled with deep practical knowledge Elixir and its code generation capabilities and an expert guide from the basics to the very advanced, step by step.

If you want to improve not only as an Elixir programmer but as a programmer in general, you should read this book and try to replicate and complete the exercises proposed.

I cannot say I understood everything totally but as the book says, nothing can replace experimentation driven knowledge.]]>
5.00 2015 Metaprogramming Elixir: Write Less Code, Get More Done (and Have Fun!)
author: Chris McCord
name: Héctor Iván
average rating: 5.00
book published: 2015
rating: 5
read at: 2019/01/07
date added: 2019/01/07
shelves: computer-science-and-programming, programmers, programmers-must-read
review:
This book is an awesome read if you're new to Elixir or haven't experimented with the metaprogramming parts of Elixir.

It's often times said that books are the cheapest objects you could acquire because of all the knowledge you could get from them, and with this book that saying holds true.

This is a short but very very instructive book filled with deep practical knowledge Elixir and its code generation capabilities and an expert guide from the basics to the very advanced, step by step.

If you want to improve not only as an Elixir programmer but as a programmer in general, you should read this book and try to replicate and complete the exercises proposed.

I cannot say I understood everything totally but as the book says, nothing can replace experimentation driven knowledge.
]]>
<![CDATA[Software Architecture for Developers: Volume 1 - Technical leadership and the balance with agility]]> 33221518
This book is a practical, pragmatic and lightweight guide to software architecture, specifically aimed at developers, and focused around the software architecture role and process.]]>
133 Simon Brown Héctor Iván 4 First, the definition and explanation of what is Software Architecture, the main functions an architect should be doing, the explanation about where it comes from in the ancient times make clear the idea of what SA is about very clear.
Also, the explanation about how to introduce SA in your company or team, the remarks about the importance and the dangers of not doing it makes this book a required read to every person involved in serious software development.
This book states clearly that software architecture is still a technical role and at the same time a leadership role, so you can understand why another skill beyond programming or technical knowledge are required.
Finally, the practical part about how to practice SA and how to improve one's skill in it is interesting and actionable making it very valuable.
Maybe this book could also include the volume II to make a complete book on the subject.]]>
3.89 2012 Software Architecture for Developers: Volume 1 - Technical leadership and the balance with agility
author: Simon Brown
name: Héctor Iván
average rating: 3.89
book published: 2012
rating: 4
read at: 2018/04/22
date added: 2018/04/25
shelves: programmers-must-read, programmers
review:
This one of the best technical books I've read although it doesn't contain any code. It makes clear so many otherwise confusing and fuzzy things.
First, the definition and explanation of what is Software Architecture, the main functions an architect should be doing, the explanation about where it comes from in the ancient times make clear the idea of what SA is about very clear.
Also, the explanation about how to introduce SA in your company or team, the remarks about the importance and the dangers of not doing it makes this book a required read to every person involved in serious software development.
This book states clearly that software architecture is still a technical role and at the same time a leadership role, so you can understand why another skill beyond programming or technical knowledge are required.
Finally, the practical part about how to practice SA and how to improve one's skill in it is interesting and actionable making it very valuable.
Maybe this book could also include the volume II to make a complete book on the subject.
]]>
You Don't Know JS: Up & Going 25136217 It’s easy to learn parts of JavaScript, but much harder to learn it completely—or even sufficiently—whether you’re new to the language or have used it for years. With the "You Don’t Know JS" book series, you’ll get a more complete understanding of JavaScript, including trickier parts of the language that many experienced JavaScript programmers simply avoid.

The series� first book, Up & Going, provides the necessary background for those of you with limited programming experience. By learning the basic building blocks of programming, as well as JavaScript’s core mechanisms, you’ll be prepared to dive into the other, more in-depth books in the series—and be well on your way toward true JavaScript.

With this book you will:

Learn the essential programming building blocks, including operators, types, variables, conditionals, loops, and functions Become familiar with JavaScript's core mechanisms such as values, function closures, this, and prototypes Get an overview of other books in the series—and learn why it’s important to understand all parts of JavaScript ]]>
72 Kyle Simpson 1491924411 Héctor Iván 5 programmers-must-read It serves as an index for the series and lists the most important topics to know about the JS programming language and the design patterns you should use. It's a good introduction that makes you think about how much of the things people complains about JS are actually true, and it challenges you to be better than that, that the persons that only complain about things they don't understand and know well.
The thing that could be better is the introduction for persons that hasn't coded before, I don't think this could serve as an introductory book to anyone who hasn't coded before or even hasn't coded in JS.

But if you are a web developer, this is a mind-changing book. Even if you don't continue with the series, you have now an index that could serve you to investigate by yourself the topics. As a conclusion: read this book if you want to be a better web developer.

The main topics are:
- Coercion
- 'this' keyword
- Types
- Why prototypes and behavior delegation are more powerful than classes and inheritance.
- Lexical Scope
- Async characteristics of the language
- Improvements in the next versions of the standard

These topics are only scratched in this book and fully explained in the other books of the series.]]>
4.33 2015 You Don't Know JS: Up & Going
author: Kyle Simpson
name: Héctor Iván
average rating: 4.33
book published: 2015
rating: 5
read at: 2017/01/11
date added: 2017/01/13
shelves: programmers-must-read
review:
This is an awesome book for anyone who wants to be a better JavaScript programmer. JS is everywhere and if you are a web developer, you cannot avoid or ignore JS by any means.
It serves as an index for the series and lists the most important topics to know about the JS programming language and the design patterns you should use. It's a good introduction that makes you think about how much of the things people complains about JS are actually true, and it challenges you to be better than that, that the persons that only complain about things they don't understand and know well.
The thing that could be better is the introduction for persons that hasn't coded before, I don't think this could serve as an introductory book to anyone who hasn't coded before or even hasn't coded in JS.

But if you are a web developer, this is a mind-changing book. Even if you don't continue with the series, you have now an index that could serve you to investigate by yourself the topics. As a conclusion: read this book if you want to be a better web developer.

The main topics are:
- Coercion
- 'this' keyword
- Types
- Why prototypes and behavior delegation are more powerful than classes and inheritance.
- Lexical Scope
- Async characteristics of the language
- Improvements in the next versions of the standard

These topics are only scratched in this book and fully explained in the other books of the series.
]]>