Hoy estamos aquí para honrar la memoria de mi padre, pero me gustaría en primer lugar dar las gracias a mi madre por la maravillosa persona que es, su trabajo y dedicación. Gracias, mamá. Mi madre me pidió que dedicara unas palabras durante el funeral de mi padre pero es imposible expresarlo mejor que Jorge Manrique cuando escribió en el siglo XV las coplas a la muerte de su padre: Recuerde el…
Londres es una de las ciudades más multiculturales y cosmopolitas del mundo. Parece que todo lo que ocurre en el mundo está ocurriendo aquí, y eso se nota en el ambiente y en la gente. Las ciudades mandan mensajes de maneras sutiles. Great cities attract ambitious people. You can sense it when you walk around one. In a hundred subtle ways, the city sends you a message: you could do more; you…
About 10 years ago, I got involved in a very interesting project: iShows . Now that the project is over, I would like to pay a small tribute to it. At that time, a server was needed to provide images with specific sizes to an iOS mobile application. This started as a side project, but ended up serving over a billion images. Billion! One thousand million. 1,000,000,000. Basically, the server was a…
Flâneur significa ‘paseante’ o ‘callejero’. Aquel que vaga por las calles, sin rumbo ni objetivo, abierto a todas las vicisitudes y las impresiones que le salen al paso. El término tuvo interés académico en el siglo XIX como símbolo de la experiencia urbana y la modernidad. Yo llegué a este concepto leyendo Antifrágil: Las cosas que se benefician del desorden , donde Nassim Taleb extiende la…
«Desocupado lector», al igual que a muchos otros estudiantes, me obligaron a leer en el colegio Don Quijote de la Mancha de Miguel de Cervantes. Lectura que ni comprendí, ni disfruté. Por suerte, muchos años más tarde decidí leerlo de nuevo. En esta segunda ocasión, escogí la edición puesta al castellano actual por Andrés Trapiello. Una auténtica maravilla. Pocas cosas fomentan menos la lectura…
He viajado de muchas formas, desde mochilero con un pase de Interrail hasta siendo arrastrado a autocares con paradas programadas. Viajes de un día o de varias semanas. Con planificación o sin ninguna en absoluto. Siempre asumí que viajar era ver cosas—cuantas más mejor—, quizás aprender algo nuevo y regresar a casa con las fotografías pertinentes. Fotos a las que rara vez he regresado. Odias a…
Success: the achieving of the results wanted or hoped for. something that achieves positive results. “Success” is a word that should always be in quotation marks as its definition varies from person to person. Let everyone define what it means to them in life. I personally like the following definitions. When I was 17, I read a quote that went something like: “If you live each day as if it was…
I’ve read The story of computing: From the Abacus to Artificial Intelligence by—Alan Turing’s nephew—Dermot Turing. Exploring the history of computing was very stimulating, but how wonderful it would be if a great writer could capture these stories. Something similar to Decisive Moments in History by Stefan Zweig. The following are the possible chapter titles—cryptically evocative—of Decisive…
Será que la gente ya no soporta la televisión basura, será que en el mundo suceden tantas cosas malas que se siente la necesidad de algunos momentos de reflexión sosegada, pero el caso es que se están multiplicando los lugares y las ocasiones en que la filosofía se ofrece como propuesta al gran público. La del bachillerato, concretamente. Puede llevarse a cabo en un café donde reunirse los…
[…] El sistema combina de manera un tanto improvisada las virtudes «paganas» apropiadas para un ciudadano libre de Atenas (Valentía, Templanza, Justicia y Prudencia) y las virtudes «cristianas» apropiadas para un creyente de Nuestro Señor y Salvador (Fe, Esperanza y Amor). Improvisadas o no, defenderé que las siete cubren lo que necesitamos para prosperar como seres humanos. Lo mismo valdría en el…
[…] De modo que no guardo de mí pasado más que lo que llevo detrás de la frente. En estos momentos, todo lo demás me resulta inaccesible o, incluso, perdido. Pero nuestra generación ha aprendido a conciencia a no llorar las cosas perdidas y, además, quién sabe si la falta de documentación y de detalles no acabará redundando en beneficio de este libro. Porque yo no considero a nuestra memoria como…
I have gradually noticed the degradation of my terminal’s performance when working with relatively large Git repositories. I use Bash as my Unix shell and keep my dotfiles organised, so it’s relatively easy to investigate and improve performance. Improving git-status The first thing I noticed was the poor performance when showing the working tree status with git status . It took 2.34 seconds to…
No sabemos por qué, pero podemos demostrar que el ser humano encuentra los planos de proporciones definidas e intencionales más placenteros o más bellos que aquellos de proporciones aleatorias. Jan Tschichold, La forma del libro , 1975. […] nada aborrece tanto el sano juicio como una imagen perpetrada sin pericia técnica alguna, por mucho cuidado y diligencia que se aplique en su factura. Ahora…
Dos anécdotas que expresan muy bien el amor por el detalle. La perfección de Steve Jobs por Walter Isaacson. De su padre, Jobs había aprendido que el sello de cualquier artesano apasionado consiste en asegurarse de que incluso las partes que van a quedar ocultas están acabadas con gusto. Una de las aplicaciones más extremas —y reveladoras— de esa filosofía llegó cuando inspeccionó el circuito…
Desde hace muchos años voy apuntando todos los libros que leo . Alcanzar 50 lecturas en un mismo año me parecía algo casi imposible, sin embargo, llevo ya varios años superando esa cifra fácilmente. Resulta que aprender a leer no es simplemente entender el significado de un texto sino saber utilizar el libro como herramienta. Hay libros que necesitan un tempo pausado, otros no requieren más que…
Lo Clásico Lo Barroco Geometría Organicidad Estático En movimiento Gravita Se eleva La Razón La Emoción La Razón La Percepción Símbolos abstractos Realidades concretas Un futuro único Futuros contradictorios La obra imita al espíritu La obra imita a la naturaleza Seguro de si mismo Roto en sus contradiciones Monoteísta Panteísta Humanista Panteísta Ortodoxo Pagano Se proyecta en una línea Se…
Two interesting ideas from reading It Doesn’t Have to Be Crazy at Work , Jason Fried & David Heinemeier Hansson. The Trust Battery […] “Another concept we talk a lot about is something called a ‘trust battery.’ It’s charged at 50 percent when people are first hired. And then every time you work with someone at the company, the trust battery between the two of you is either charged or discharged,…
De todas las definiciones que se han dado de justicia, quizás, la más conocida es aquella expresada en el siglo III por el jurista Ulpiano, quien decía que «la justicia es la constante y perpetua voluntad de dar (conceder) a cada uno su propio derecho». «Los preceptos o mandatos del derecho son: vivir honestamente, no hacer daño a nadie y dar a cada uno lo que le corresponde». Iuris praecepta sunt…
He leído Ulises y la comadreja: Una simpática introducción a los mercados financieros de Georg von Wallwitz. Una lectura bastante ligera sobre los mercados financieros; mezcla de filosofía, psicología inversora e historia. El libro comienza describiendo el nacimiento de la banca moderna en Amsterdam y los primeros mercados financieros con la Compañía Holandesa de las Indias Orientales. Continúa…
I recently read Simplifying the Bull: How Picasso Helps to Teach Apple’s Style , an article about how Apple uses Picasso’s process of eliminating details to teach its designers about striving for simplicity when creating their products. Le Taureau (The Bull). Pablo Picasso, 1945. Lisa Mouse, 1983 | ADB Mouse II, 1993 | Mighty Mouse, 2006 | Magic Mouse, 2009. Simplicity is the ultimate…
El alma debe ir ascendiendo en la contemplación de la belleza de manera gradual. Primero viendo las obras bellas, no las de arte, sino las de los hombres de bien. Luego es necesario ver el alma de aquellos que realizan las obras bellas.¿Y cómo puede hacerse esto? Mirando sobre uno mismo. «Si tú no ves todavía la belleza en ti, haz como el escultor de una estatua, que debe ser bella; toma una…
In many ways, the medieval cathedrals embody what is best about the human spirit. They were the first man-made structures to go higher than the pyramids, and this fact alone says a lot about the difference between the Ancient, Pagan world and the Christian world. A pyramid is a fat structure with a heavy base, while a cathedral soars towards the sky. A society that builds pyramids is a society…
The seven liberal arts, are those subjects or skills that in classical antiquity were considered essential for a free person ( liberalis , “worthy of a free person”) to know in order to take an active part in civic life, something that (for ancient Greece) included participating in public debate, defending oneself in court, serving on juries, and most importantly, military service. Trivium Grammar…
New representations of thought — written language, numerals, mathematical notation, data graphics — have been responsible for some of the most significant leaps in the progress of civilization, by expanding humanity’s collectively-thinkable territory. Definition A representation captures some aspect of a concept or phenomenon in a human-understandable form, thereby enabling a person to perceive…
My starting point for this book was not Leonardo’s art masterpieces but his notebooks. His mind, I think, is best revealed in the more than 7,200 pages of his notes and scribbles that, miraculously, survive to this day. Paper turns out to be a superb information-storage technology, still readable after five hundred years, which our own tweets likely won’t be. Fortunately, Leonardo could not afford…
I was invited to speak at Pamplona Software Crafters 2018 , and I’m glad to have contributed with my talk about mental models, complexity and software. Software is complex There are several ways in which we can approach complexity from a developer’s point of view. For example, we can look at it from the perspective of computational complexity (big O notation) or the perspective of programming…
I used to have a problem when setting an environment variable; I couldn’t make the variable immediately available in a different shell or subshell without the need to source any file. As a result, I’ve created gvar to solve the problem. This project was featured on issue #109 of Changelog Weekly newsletter . gvar(1) – display, set, or remove global variables*. * I define global variable as a…
During the last few weeks, I have been working on PowerCore , which enhances the Ruby Core with useful extensions. This project was featured on issue #293 of Ruby Weekly newsletter . There are Ruby gems that do something similar, such as Active Support Core Extensions or Powerpack . In this case, this is just a collection of extensions for reference, not a Ruby gem. Who wants a new dependency in…
I’ve been taking a lot of pictures since last year. As a consequence of my newly acquired hobby, I now have tens of gigabytes of data stored on my computer. I decided to organize and store all those files in a remote hard drive. My plan was to organize my photo library by using the EXIF data stored in each file, following this structure: YYYY/MM/Photographs . This is my current directory: $ tree .…
Agile methodology is an alternative to traditional project management, typically used in software development. This collaborative approach between self-organizing and cross-functional teams could be valid for other non-software teams, or even your personal life. I gave a talk about applying Agile methodology beyond software development at the Mastered Summer Event. These are the slides.
After having a lot of fun building YARR , I have built a new Ruby gem. OpenFastStruct is a data structure, similar to an OpenStruct, that allows the definition of arbitrary attributes with their accompanying values. It benchmarks ~3x slower than a Hash, but it’s ~4x faster than OpenStruct . It’s faster because it uses simple hash storage with method_missing instead of expensive define_method…
I heard about the Intercept-Cache-Invoke pattern for the first time from Graeme Rocher ; he was explaining how he had implemented the dynamic finders on Grails. The idea is to dynamically figure out method behavior at invocation time, so we can create new methods with flexible and dynamic names on-the-fly . A synthesized method may not exist as a separate method until we call it. When we call a…
YARR (Yet Another Ruby REPL) is a Ruby REPL (it’s just a hobby, it won’t be big and professional like Pry). YARR was inspired by groovysh 1 , IRB 2 , Pry 3 , Bash 4 and Vim 5 . A read–eval–print loop (REPL) is an interactive environment that takes user inputs, evaluates them, and returns the result to the user. A simple REPL that evaluates single valid lines of Ruby code, could be something like…
Back in 2012 I wrote an article about closure design patterns . I used Groovy as a programming language but now I have decided to use Ruby (the programming language that I have mainly been using for two years). This article was featured on issue #231 of Ruby Weekly newsletter . I want to keep the same examples, so I have created a helper method to make assertions. def assert ( expression ) raise…
I attended the SoCraTes UK 2013 unconference. We had a space for lightning talks and I did a presentation about command line one-liners. I love Unix and I talked about terminal commands so I used Terminal Keynote , a hack for terminal-based talks. Command line one-liners Run the last command $ !! Run the last command as root $ sudo !! Create a script of the last executed command $ echo "!!" >…
I’m happy to announce the latest project that I participated in: iShows . We love TV shows, we love programming, we love design, and we believed that we could create the best TV show tracking app for iOS. Users enjoyed the application and the first version had such good reviews. The second release also had very good reviews . We wanted to provide an image-based UI and one of the strengths of the…
There are a lot of tools to organize and get work done, some are more focused on task management like Wunderlist To Do, and others are more focused on project management like Trello. These are great tools, but I prefer notebooks over other devices and media. I feel the same way with books and e-readers. I love the feel of paper and it gives me a better user experience. In many ways it’s more…
I have played with the idea of displaying statistics about version control systems in a Unix shell, and I also wanted to improve my command line skills. Before starting, I remembered spark , a project that generates sparklines for a set of data, so I became interested in trying an alternative Groovy implementation to have fun. Sparklines for your shell: Groovy flavored My project is sparky , a…
Design patterns I’m learning design patterns. There is a lot of documentation about software design patterns, but I’m interested in closure design patterns .* Many patterns imply object-orientation, so may not be as applicable in dynamic languages. Peter Norvig demonstrates that 16 out of 23 patterns in the Design Patterns book are simplified or eliminated, Design Patterns in Dynamic Languages .…
Most programmers know several languages. As a web developer, I work on a daily basis with Groovy, SQL, Bash Scripting, HTML, CSS, and JavaScript. Learning different languages allows us to solve problems with the most appropriate tool and to explore new paths of thinking about computational problems. Neal Ford coined the term polyglot programming to express this concept: I think it’s important in…
Type conversion. Standard way Type conversion —or casting —is a programming language technique for changing an object’s data type into another. The following code converts a String to an Integer. def number = ( Integer ) '1' def number = '1' . toInteger () def number = '1' as Integer If we want to change the type of our own objects, we need to create a method to achieve this goal. We can copy…
The diversity of languages and programming paradigms allows us to solve existing problems by thinking of solutions from very different approaches. But why should a Groovy developer learn functional programming? As I learned about functional programming, I found good ideas and discovered that it brought new clarity to my thinking about the design of classes and methods. It also allowed me to write…
Clean Code: A Handbook of Agile Software Craftsmanship is a book that every developer should read, especially at the beginning of their careers when many basic programming concepts need to be settled. The following is a short summary with the main ideas from the book. Below you can also find my talk from the Agile Madrid User Group about this book, which covers many different examples. Meaningful…
I believe that comparing programming languages is a worthwhile exercise mainly because of the different techniques and styles that you are exposed to. After 10 Scala / CoffeeScript / Ruby / Haskell / Clojure / C# / F# / Nim / Swift one-liners to impress your friends, here are the Groovy one-liners. 1. Multiply each item in a list by 2 ( 1 .. 10 )*. multiply ( 2 ) 2. Sum a list of numbers ( 1 ..…
Hacking is an overused term for a simple concept: to explore the limits of what is possible by doing something in a different way. I want to write and share some ideas, but traditional blogging platforms lock you into their complex ecosystem. I’ve chosen to hack my way to a simpler and more refreshing approach. That’s the reason this site is built with toto Jekyll , a static site generator that…