Author: Giovanni Collazo

  • Web History

    Web History

    Recientemente escuché esta serie de podcasts sobre la historia de la web y me encantaron. Creo que cualquiera que trabaje construyendo la web debería conocer un poco sobre su historia y esta serie me parece ideal para eso. Muy recomendado. https://css-tricks.com/category/history/

  • You Don’t Need NPM Scripts

    You Don’t Need NPM Scripts

    If you have done any Node.js development, you’ve likely used NPM, and you should know that on your package.json file, you can add simple scripts that can be executed using npm run <name of script>. At first, this might seem convenient, and since most projects use it, why not use it. In my experience, NPM…

  • Paste JSON as Code

    This is a quick post to recommend the Visual Studio Code extension Paste JSON as Code. The extension does exactly what it says on the name. You copy a piece of JSON, select paste as code, and the extension will generate and paste an interface for that JSON structure. It is super helpful when writing…

  • Custom Hooks in React: The Ultimate UI Abstraction Layer

    Great talk. React hooks look way too hard to get right every time. But I’m no React developer. The suggestion to decouple business logic from UI is good advice, even if you have to write it in react code (hooks) which is not reusable in any other context. Also, what’s up with the whole “it’s…

  • Domain Driven Design Patterns in Python

    Nowadays, I don’t write a lot of Python code, but this talk caught my eye while browsing YouTube. I’m glad I watched it. It’s an excellent and quick intro to DDD and layered architectures. Link: https://www.youtube.com/watch?v=hv-LiKQgN90

  • Your career needs a vision

    Link: https://swizec.com/blog/your-career-needs-a-vision It is well known the drunken sailor who staggers to the left or right with n independent random steps will, on the average, end up about √n, steps from the origin. But if there is a pretty girl in one direction, then his steps will tend to go in that direction and he…

  • Bad names make you open the box

    From the blog post “Bad names make you open the box” by Adam Zerner. Imagine that you open the fridge. You see something labeled “brownie”. You eat it. Then you hop in the car and start heading over to your friends house. But right as you merge on to the highway, you start feeling funny.…

  • Eventually, You Will Need To Upgrade the Crypto

    Eventually, You Will Need To Upgrade the Crypto

    Every hashing and encryption algorithm will eventually become vulnerable and obsolete. Before that happens, you need to stay ahead and use something known to protect your sensitive data. When the algorithm you are using becomes vulnerable, you must act quickly and replace it as soon as possible to minimize the exposure window. Replacing your current…

  • Logging is important

    Getting application logging right is crucial for every software project. When done correctly it makes the maintainers work a lot simpler. There’s no worst feeling than getting an error report and searching for logs to try to understand what happened and not finding a single entry. This is especially bad with difficult to reproduce production…

  • Result y Maybe

    Result y Maybe

    En el post anterior mencioné brevemente que mis value objects implementan un método estático create que utilizo para crear instancias sin temor a excepciones. Este método devuelve un objeto llamado Result que sirve para envolver el resultado de llamar al método create. En este post vamos a ver cómo funciona Result y al final vamos…

  • Debe ser imposible representar estados ilegales

    Debe ser imposible representar estados ilegales

    Este es el tercer post en esta serie sobre arquitectura de software. En los posts anteriores he hablado de mi experiencia aprendiendo sobre este tema y sobre algunos de los problemas que he enfrentado en situaciones donde no hay una arquitectura clara. En este post espero empezar a introducir algunas ideas y técnicas concretas que…

  • Htmx y Lit

    En nuestro equipo, tener un SPA para cada app es mucho trabajo adicional con muy poco beneficio. Muchas veces pasamos trabajo adicional para lograr que nuestros SPAs se comporten como web apps tradicionales con templates en el servidor. Muchos de los beneficios están relacionados a equipos grandes y ese no es nuestro caso. Llevo un…

  • Bolsas llenas de funciones

    Bolsas llenas de funciones

    En este post menciono functional programming (FP) y object-oriented programing (OOP) en el contexto de JavaScript (JS). Hablo de mis experiencias con los dos paradigmas en un proyecto bastante grande. El título del post no es FP vs OOP y no tengo en interés en ese tipo de discusión. Las ideas de FP llevan varios…

  • ¿Dónde está el programa?

    ¿Dónde está el programa?

    ¿Dónde está el programa? Esa fue la pregunta que hice a un programador de nuestro equipo. ¿Dónde está el código que describe como funciona nuestra aplicación? No pudo contestar y no esperaba que pudiera. En el proyecto que estábamos trabajando, la respuesta era bastante complicada. El programa estaba en todas partes y en ninguna a…

  • La gente y sus herramientas

  • Silicon Graphics made awesome computers

    A long time ago, I used to work as a video editor and motion graphics artist. In those days, Silicon Graphics made the most incredible hardware which ran all the best and most advanced software for creating visual effects. I never got to work with any of these machines but I always loved the way…

  • User-defined type guards in TypeScript

    Decided to write this blog post because I couldn’t find any documentation or online examples like the one I’m sharing here. Every example I’ve seen the user-defined type guard is used to replace the whole type definition and not specific properties. Here’s the code without type guard. On #1 firstThing.config. is Config | undefined even…

  • The Scanimate

    Amo este tipo de equipo análogo para video. Aprendí editar video con equipos de esta generación y la verdad es que los extraño mucho. Recuerdo claramente el sonido de las VTR haciendo “rewind” y “pre-roll” para comenzar a grabar donde habías puesto el mark in. Recuerdo los switchers y controles de efectos. Fue una época…

  • Don’t use functions as callbacks unless they’re designed for it

    Quick tip. Link

  • The Mac Malware of 2020

    A great post by Objective-See about a bunch of malware specially made for macOS. Link