{ Adrian.Matías Quezada }

  1. SolidJS API

    createSignal

    const [counter, setCounter] = createSignal(initialValue);
    return <h1>{counter()}</h1> // dependencies = [counter]
    

    Setter only has effect if newValue !== currentValue.

    Read more
  2. Maintenance tasks

    To Virginia, the brightest light in the sky

    Yesterday I got across the term "Technical debt" and I remember it being explained to leadership as "debt that should be payed regularly", it's a term that doesn't resonate with me because debt is not something that appears out of nowhere: to have debt is an option, to pay it is an obligation.

    Read more
  3. Rust

    I've decided to try rust language for several reasons:

    • WebAssembly: I've been looking for a language that allows me to run performant code in the browser as WebAssembly and Javascript / Typescript are not good fit for the case because of the weak typing system and the Garbage Collector.
    Read more
  4. SolidJS

    These last years I've past from AngularJS (v1) to Angular2+ and since I tried ReactJS I've considered it my go-to framework.

    These weeks I've been trying SolidJS and when I compare it with ReactJS there are a set of things that I really like.

    Read more
  5. Graham number with Javascript

    Following this video (in spanish) I learned the arrow notation in math:

    ``` 3↑3 = 3^3^3 = 3^27 = 7_625_597_484_987

    Read more
  6. Generate HTML pages from TSX with Deno

    I've been working on a new version of this site with a clear idea:

    • I want content to be Markdown
    • I want it to be the fastest site ever (negotiable)
    Read more
  7. Asynchrony and the Event Loop (spanish)

    Me gustaría hacer un repaso al tema de la asincronía en Javascript porque me llama la atención que pese a tener casi 20 años es un tema que sigue madurando y he visto surgir buenas ideas recientemente.

    El event loop

    Primero lo primero, de donde sale la asincronía. Javascript es un lenguaje cuya ejecución se basa en lo que se llama event loop (bucle de eventos). El event loop es una cola donde se van añadiendo los bloques de código que quieren ejecutarse, por ejemplo: cuando el navegador está renderizando el HTML de una página y se encuentra un tag <script> el contenido de ese elemento se añade al event loop para que sea ejecutado tan pronto como sea posible.

    Read more
  8. Type.new() (spanish)

    NOTA: Este artículo está centrado en un tema que ya comenté en el post anterior, pero de una forma más organizada y centrada, algunos fragmentos están extraídos del post anterior para mayor claridad.

    Constructores en Javascript

    He hablado antes de la limitación de los constructores javascript y sobre todo de la complejidad de extenderlos

    Read more
  9. Object construction (spanish)

    Este artículo quedó muy complejo y caótico, por eso voy a intentar dividirlo en partes, recomiendo leer los nuevos post en lugar de este.

    Parte 1: Type.new()

    TL;DR

    Buscando optimizaciones para un juego en javascript encontré un paradigma de definición de tipos y creación de objetos que cambió mi forma de ver el lenguaje.

    He hablado antes de la limitación de los constructores javascript:

    function Person(name) {
      this.name = name;
    }
    Person.prototype.methodA = function() { ... }
    

    En este caso quiero referirme a las limitaciones en cuanto a memoria pero hará falta un poco de introducción

    Read more
  10. HTML Components (spanish)

    Acabo de caer en cuenta de porqué no me gusta angular, backbone, ember...

    El problema

    Todos estos frameworks si bien intentan dividir la aplicación que vas a construír en módulos se hace esto por mantenibilidad, no por reutilización de los módulos.

    En otras tecnologías generalmente creas un componente reutilizable y basta con mover el archivo de proyecto para tenerlo listo, pero estos frameworks no se puede hacer eso, por ejemplo una simple targeta que muestre los datos de una persona:

    Read more
  11. ECMAScript 5 _.extend (spanish)

    A algunos ya os he comentado los problemas que NC Zakas comenta con el _.extend de underscore y los getters:

    var a = {
      init: function () {
        this.list = [];
      },
    
      get first() {
        return this.list[0];
      },
    };
    
    Read more
  12. Object.create vs new (spanish)

    Actualización 19/3/2014: Finalmente he entendido la utilidad de reemplazar new, se puede ver aquí

    JotaEseros! Tengo un dilema existencial que me impide dormir.

    Hasta donde sé los constructores hacen más o menos esto

    function fakeNew(Ctor) {
      var instance = Object.create(Ctor.prototype);
      instance.constructor();
      return instance;
    }
    
    Read more
  13. GIT Workflow 2 (spanish)

    Continuando con [mi último artículo][1], llegó la hora de hablar del gran Github Flow:

    Github Flow

    Y finalmente el artículo que ha inspirado éste. Después de probar el Git Flow (el modelo, no la herramienta) en productos profesionales y a modo de prueba en pequeñas librerías propias y aunque para proyectos grandes donde una release se planea durante semanas va bien, en pequeños proyectos, y en proyectos SaaS no acaba de encajar.

    Read more
  14. GIT Workflow 1 (spanish)

    Acabo de leer un artículo creado por los trabajadores de Github que han dado una vuelta de tuerca a lo que sabía de GIT y creo que será muy útil compartirlo, pero primero vamos por partes:

    Read more
  15. Experiment: Per-instance privacy (spanish)

    Actualización 19/3/2014: Sorprendentemente parece que una propuesta del ECMAScript 6 sigue mismo el patrón descrito en este post, y yo que pensaba que era demasiado rebuscado...

    http://wiki.ecmascript.org/doku.php?id=harmony:classes

    Como ya comenté, la privacidad en Javascript es un tema peliagudo, el lenguaje no nos ofrece ninguna herramienta para gestionar la privacidad automáticamente, tenemos que aprovechar el scope de los closures para ocultar información que el usuario de nuestra librería no necesita saber, pero ocultar propiedades de una instancia es mucho más complicado. Hace algunos años me empeñé en buscar una forma de conseguir privacidad por instancias que no fuera mediante el constructor, como ya expliqué en el [post anterior][1].

    Read more
  16. Basic Javascript Concepts: Privacy (spanish)

    Introducción

    Uno de los temas más frecuentes cuando uno se inicia en Javascript es la privacidad, principalmente viniendo de lenguajes como Java, C# o C++; donde publican o se ocultan propiedades de los objetos mediante modificadores. Javascript no posee dichos modificadores sino que todas las propiedades de los objetos son públicas lo que puede ser muy confuso para una persona poco diestra en ésta técnica, entre los que me incluyo.

    Personalmente cuando diseño un componente (objeto/clase/librería), es porque quiero que ese componente cumpla una funcionalidad, por ejemplo, si yo quiero tener una clase que represente a una impresora necesito enviarle datos y que los imprima; mi prioridad es que dicho componente sea sencillo de utilizar, lo que facilita la reutilización del componente. Por lo que primero imagino cómo me gustaría usarlo:

    Read more
  17. Basic Javascript Concepts: Prototypal inheritance (spanish)

    Llegó la hora de entrar el en tema que realmente confunde a los recién llegados a Javascript, principalmente para quienes vienen de lenguajes que implementan la orientación a objetos mediante clases, que son la gran mayoría.

    Read more
  18. Basic Javascript Concepts: this, .call() y .apply() (spanish)

    Antes de continuar con el Patrón Promise me gustaría explicar en paralelo Conceptos Básicos de Javascript. Entendiendo que estamos hablando de Javascript como lenguaje y no vamos a hablar sobre conceptos básicos del DOM o como abrir una nueva ventana en el navegador, sino detalles de Javascript puro, tanto en cliente como en servidor.

    De dónde sale this

    He pensado que sería un buen punto empezar por una curiosidad bastante desconocida para los recién llegados a Javascript: La variable this, también llamado el scope o más correctamente contexto de la función. En los lenguajes basados en clases más extendidos (Java, C++, C#...) encontramos que los métodos de la clase siempre disponen de la variable this que nos permite acceder a nuestra propia instancia sobre la que se está ejecutando el método. Es decir, si tenemos la clase...

    Read more
  19. Promise pattern: Implementation (spanish)

    Lo prometido es deuda (bien lo saben las funciones) y he encontrado un momento para empezar a explicar la forma en la que he implementado el patrón Promise en mi caso, no tiene porqué ser la mejor, pero cumple con su cometido.

    NOTA: Me gustaría implementarla en Test Driven Development, pero ya es bastante para quien lee y para el que escribe seguir la implementación como para encima añadir TDD, pero no quisiera dejar de recomendarlo.

    Read more
  20. Promise pattern (spanish)

    Actualización 19/3/2014: Finalmente los promises se han confirmado para el estándar ECMAScript 6, dentro de poco serán nativos en Javascript :D

    Actualización 7/10/2016: Los promises ya son estándar y están implementados en los navegadores!!!

    PROBLEMA

    Recientemente he tenido que implementar un sistema MVC en Javascript para simplificar el desarrollo sobre una plataforma y me he encontrado con el problema de que las llamadas asíncronas a servidor rompían la simpleza del código, tras un análisis identifiqué cuatro problemas:

    Read more
  21. Let's get it started! (spanish)

    Bueno, ha llegado la hora de dar el siguiente paso como programador: comenzar un blog para que todos puedan criticarme por poner las llaves { a la derecha :D

    Read more
  22. Hello World!

    int main(char** args) {
        print("Hello World!");
        return 0;
    }
    

    Y así es como un blog de programación debe empezar.

    Read more