danirod

Actualizaciones - page 2

Duración
58:20 min
Distancia
10.02 km
Calorías
714 kcal
Ritmo de vuelta
05:49 min/km

Hoy hacía mejor día que otros días. Lo voy a flipar cuando llegue la época de lluvias.

Duración
57:23 min
Distancia
10.03 km
Calorías
677 kcal
Ritmo de vuelta
05:43 min/km

Una explicación simplificada del algoritmo Wavelength Collapse →

Hace un tiempo encontré destacado en GitHub un repositorio con una implementación muy trabajada del algoritmo Wavelength Collapse, enseñando mediante vistosas imágenes cómo el algoritmo en el que se basa el programa compartido en el repositorio es capaz de transformar una pequeña imagen en una imagen procedural más grande, lo cual es de utilidad para fabricar mapas y otro tipo de imágenes.

Imagen generada de manera procedural
Ejemplo de uso del algoritmo generando un tablero más grande a partir de una imagen de entrada. (Fuente)

El repositorio contiene un README bastante exhaustivo donde detalla el funcionamiento del algoritmo, pero si buscas una aproximación más sencilla que te ayude a entenderlo, hace poco Robert compartió en su blog una aproximación al algoritmo utilizando ejemplos de andar por casa.

Imagine that you are planning your wedding. […] You need to design the seating plan for dinner. Your family can be very argumentative and volatile, so this will be difficult. Your dad can’t sit within 2 tables of your mum. Your cousin will get grumpy and lonely if she doesn’t sit with your other cousin. And it’s probably for the best if Uncle Roy doesn’t sit with the environmentalist wing of your partner’s family. – §

El algoritmo realmente no es complicado. Se trata de asociar a cada una de las posiciones del espacio disponible (como los píxeles de una imagen) el candidato que mejor se ajuste teniendo en cuenta una serie de restricciones. Esta entrada de blog explica fácilmente en qué consisten esas restricciones y cómo se pueden computar para una imagen, y muestra un ejemplo práctico de uso.

Duración
55:12 min
Distancia
10.02 km
Calorías
702 kcal
Ritmo de vuelta
05:31 min/km

Hoy he empezado a correr por un parque que hay cerca de mi casa y que me permite correr apartado de coches y de lugares peligrosos (aceras, esquinas), en un entorno iluminado, y que es lo suficientemente largo como para permitirme hacer sesiones de 10 kilómetros incluso cuando ya es de noche. Parques así no hay donde vivía antes (si acaso plazas y da gracias), así que este privilegio es nuevo. Y es revolucionario porque significa que probablemente levantarme 50 minutos antes por las mañanas para salir a entrenar 5 kilómetros probablemente tenga los días contados, así que dejaré de mejorar mi salud haciendo deporte a costa de destrozarla dormiendo menos. ¿No es estupendo?

Duración
55:04 min
Distancia
10.01 km
Calorías
673 kcal
Ritmo de vuelta
05:30 min/km

Sí, este año he sido de los flipados que salen el primero de enero a hacer ejercicio, pero porque me lo he podido permitir ya que por cuestiones, este año no salí a ninguna parte la noche anterior. Esto tiene pinta de ir años pares y años impares.

Un selfie hecho delante de un tunel.

Dani vuelve a correr por el túnel por Navidad.

Una imagen del monitor de ordenador junto a una fiambrera con comida.

Martes. Planaso ahí.

If you’re working on a Git repository and your team makes exhaustive use of branches, every time you run git fetch, Git will download new commits on those remote branches, even if you don’t plan on having local branches tracking their remote pair. Once those branches are removed by your teammates in your remote repositories, git fetch won’t download new commits for those branches, but it won’t notify you that the branch has been removed either.

If you want to remove remote branches in your local repository that have been already removed from the remote repository, you can run git fetch --prune. This will download new commits from existing or new branches, but also if a branch has been removed from the remote repository, you’ll have that branch removed from your local copy as well.

If you don’t want to forget about prune, you can also configure your Git repository to automatically prune removed branches by running git config remote.origin.prune true. Replace origin with the name of the remote repository you have the setting to have effect on. Every time you run git fetch on that remote, deleted branches will get removed too.

NandGame →

As seen this morning in Hacker News, NandGame looks like a cool game where you have to implement a circuit on each level. You start the game on level 1 without nothing but a NAND gate, and you have to build different logic gates and arithmetical circuits to pass to the next level.

Requires a mouse, don’t know how will it work on touchscreens.

I made a pre-commit hook that forbids committing directly to master or devel branches on Git. This is something that you don’t want to do if you find yourself working under some Git model such as GitFlow or GitHubFlow. Specially if you are using GitFlow. Specially if you are not alone in your project.

Yes, I know that you can fix this after you make the commit by creating a new branch and then moving back the branch pointer for devel or master a few commits back, but I would waste less time if Git actually forbid me to make the commit in first place.

#!/bin/bash

FORBIDDEN_BRANCHES="master devel"
BRANCH=$(git rev-parse --abbrev-ref HEAD)

BOLD=$(tput bold)
YELLOW=$(tput setaf 3)
GRAY=$(tput setaf 8)
RESET=$(tput sgr0)

for branch in $FORBIDDEN_BRANCHES; do
 if [ "$branch" == "$BRANCH"  ]; then
  echo
  echo "${BOLD}You are currently in branch ${YELLOW}$BRANCH${RESET}."
  echo "    Committing from this branch would be a bad idea."
  echo "    Would you mind... changing to a different branch first?"
  echo
  echo "${GRAY}(Or you know, using the -n flag to bypass this message."
  echo " Hey, don't look at me! I'm a script, not a police officer!)"
  echo $RESET
  exit 1
 fi
done

You can also download the hook as a shell script. I don’t mind. It wouldn’t be that long if I didn’t declare all these variables but, hey, colors!

The hook in action
The hook in action. Note that I can still force the commit if I need or want to by using `git commit -n` (read the docs).