Recent Posts

Guía de PlantUML

Guía de PlantUML

Hace poco estuve hablando con varias personas en el trabajo sobre PlantUML, me dieron ganas de escribir un artículo en español para contribuir un poquito a dar visibilidad de esta herramienta tan útil y genial. ¿Qué es PlantUML y para qué me sirve? Seré breve: 

¿Cómo exponer un servicio web local desde un RPi?

¿Cómo exponer un servicio web local desde un RPi?

Para variar, hace muuucho tiempo que no escribía por acá ???? Hoy vengo a hablar de un par de servicios que permiten disponibilizar un servicio web alojado en tu localhost (en mi caso RaspberryPi), a internet :D. Primero que todo, ¿Cuál era mi necesidad? Simple, 

En búsqueda de la vacuna

En búsqueda de la vacuna

Después de todo lo que pasó, poco a poco todo va mejorando… pero bueno, este es un cuento enfocado en mi experiencia con la vacunación COVID en Bogotá.


Para ponerme la primera dosis fue bastante sencillo, ingresé al portal de https://vacunacionbogota.com, anoté mis datos, lugar de vacunación, horario, y todo fluyo bastante bien; el día de la vacunación, visité el centro comercial, y cuestión de dos horas aproximadamente ya estaba vacunado (no tan rápido pero bueno… 2 horas es un tiempo aceptable).

Y bueno, pensé que la segunda dosis iba a ser igual de fácil y pues… no. Después de intentar agendar mi cita varias veces como una persona normal, no lo logré; el proceso era bastante aburrido de realizar, para poder validar si había o no disponibilidad era requerido escribir mis datos y luego dar un par de clicks.

Me dio curiosidad ver el código de la página y encontré que hacía un par de llamados HTTP a una API pública sin credenciales, me di cuenta también que que si cambiaba el nombre del centro comercial y el día, podía saber la disponibilidad de vacunas. Y bueno… aquí entró python en acción, hice un pequeño script que automatiza el proceso y pude conseguir mi turno (y el de una persona muy especial :)) de vacuna en el momento en el que estuvo disponible.

Para terminar con el cuento inicial, igual no me pude vacunar de esta forma, terminé haciendo una fila de 8 horas (Sí, 8 horas….).

Pero lo logré…

 

 

In this changing world…

In this changing world…

Song: Nakareyuku Sekai no Naka de feat. MONGOL800By: Tokyo Ska Paradise Orchestra ALBUM Nakareyuku Sekai no Naka de feat. MONGOL800 Yawaraka na hizashi no naka de jikan wo wasureteMayotta koto mo kidzukazu ni aruki tsudzuketaKotoba mo jama shinai basho de futari wa shizuka niDare ni 

Amoretti LXXV: One Day I Wrote her Name

Amoretti LXXV: One Day I Wrote her Name

What a way to become immortal… One day I wrote her name upon the strand, But came the waves and washed it away: Again I wrote it with a second hand, But came the tide, and made my pains his prey. “Vain man,” said she, 

A Life Without Music

A Life Without Music

I just found out this from last.fm

… what a year

Calidad de código en Python

Calidad de código en Python

Hoy decidí hacer un post sobre Flake, Black y Pre-Commit. ¿Existe alguna relación? ¿Me sirven para algo en particular? ¿Debería comenzar a usar estas herramientas en mis proyectos? Hace un buen rato había querido investigar un poco más al respecto de esto y bueno, este 

Linux Sucks

Linux Sucks

Some years ago a coworker (Julian E.) shared this video with us, unfortunately I lost the link, weeks ago I was trying to find it because I find it interesting and I share some ideas with its author (Bryan Lunduke), but I could not find 

Ventajas y desventajas de Python

Ventajas y desventajas de Python

Siempre es bueno conocer por qué utilizar un lenguaje de programación, hoy estaré comentando un par de cosas respecto a python.

Ventajas

Fácil aprendizaje

He visto que muchas personas, blogs, escuelas y universidades manifiestan lo fácil que es aprender python, personalmente tambien considero a python un lenguaje de fácil aprendizaje. Revisando en stackoverflow, veo que en la encuesta de tecnologías más populares python se encuentra en el cuarto lugar, https://insights.stackoverflow.com/survey/2019#technology.

Open Source

Una de las grandes ventajas del lenguaje es que es de código abierto (open source), esto implica que es transparente de cara a usuarios y que es posible saber “cómo funciona por dentro”, puedes echar un vistazo por acá: https://github.com/python

Versátil

Existe una gran cantidad de frameworks/micro-frameworks los cuales permiten desarrollar en diferentes ámbitos, acá algunos de los misa conocidos:

Tipado del lenguaje

Python es un lenguaje fuertemente tipado y de tipado dinámico. ¿Qué significa esto? 

  • Tipado débil: Significa que el lenguaje permite cambiar el tipo de dato por otro tipo de dato de forma “automática”. Podría verse como que “el lenguaje permite combinar tipos de datos”, por ejemplo:

  • Tipado fuerte:  Significa que el lenguaje no permite operaciones entre tipos de datos diferentes. Si intentamos realizar la operación anterior en Python, generará un error, tal y como se puede ver aquí:
> 'bla' + 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: must be str, not int
  • Tipado dinámico: Generalmente se refiere a que una variable puede ser de diferente tipo, por ejemplo, ser inicializada como entero, pero luego cambiar a string. Ejemplo: Python. Sólo hasta cuando se ejecuta el código se puede conocer el tipo de dato que una variable tiene. Aquí un ejemplo en python:
>>> name = 'Manre'
>>> print(name)
Manre
>>> print(name.__class__)
<class 'str'>
>>> name = 1
>>> print(name)
1
>>> print(name.__class__)
<class 'int'>
  • Tipado estático: Generalmente implica que el tipo de dato almacenado en la variable, no puede ser cambiado. Ejemplo: Java.

String s = “bla”;
System.out.println(s);
s = 1;
System.out.println(s);
Main.java:5: error: incompatible types: int cannot be converted to String
    s = 1;
        ^
1 error
compiler exit status 1

Decir que es una ventaja o desventaja depende mucho de la persona quien lo esta evaluando, personalmente considero que es una ventaja, pero algunas personas y autores lo consideran desventaja.

Desventajas

Lenguaje Interpretado

Python es un lenguaje interpretado, ¿qué significa esto?

Un lenguaje interpretado (Python, Javascript) es convertido a lenguaje máquina a medida que es ejecutado.

Un lenguaje compilado(C, C++), necesita de un paso intermedio para poder ser ejecutado, es decir, es necesario compilarlo, luego de la compilación, es posible ejecutarlo.

En temas de rendimiento, esta es una razón por la cual se considera una desventaja.

Manejo de memoria

En comparación con otros lenguajes, Python consume gran cantidad de memoria RAM, esto es debido a cómo funciona su GB (Garbage Collector), sugiero el siguiente artículo el cual describe cómo funciona con mayor claridad, https://rushter.com/blog/python-garbage-collector/

 

Map, Reduce y Filter en Python 3

Map, Reduce y Filter en Python 3

Hace un buen rato conocí las funciones map, reduce y filter, escribo este post ya que como no las utilizo muy menudo, siempre que necesito utilizarlas, gasto algo de tiempo volviendo a recordar su uso. So… este es mi forma de recordar cómo utilizarlas, espero les