Juanjo Conti: Goodreads review: El Clan Puccio (Rodolfo Palacios)

Al libro me lo prestó mi amigo Juan una tarde en Pellegrini en que la me esperaban varias horas de colectivo. Ese día lo empecé a leer. Me puse muy contento al ver el nombre del autor: lo había leído en la revista Orsai y eso me aumentó las expectativas. Luego, leí en uno de los comentarios que el libro era un rejunte (de notas, cartas, crónicas) publicado a las apuradas para aprovechar el aluvión publicitario de la película y la serie por salir. Tengo que confirmar que es así. De todas formas, como me gusta el autor, lo leí ateniéndome a eso.
Lo leí con regularidad, pero el último capítulo me quedó por la mitad y tardé varios días en encontrar el momento para terminarlo: no había misterio, nada que me llame.

Rating: 2/5

Original: https://www.goodreads.com/review/show/1555168471

Marcos Dione: ayrton-0.7.2.1

ayrton is an modification of the Python language that tries to make it look more like a shell programming language. It takes ideas already present in sh, adds a few functions for better emulating envvars, and provides a mechanism for (semi) transparent remote execution via ssh.

A small update on v0.7.2:

  • Fix iterating over the log ouput of a Command in synchronous mode (that is, not running in the _bg). This complements the fix in the previous release.

Get it on github or pypi!


python ayrton

Marcos Dione: ayrton-0.7.2

This time we focused on making ayrton more debuggable and the scripts too. Featurewise, this release fixes a couple of bugs: one when executing remote code with the wrong Python version and another while iterating over long outputs. The latter needs more work so it's more automatic. Here's the ChangeLog:

  • Fix running remote tests with other versions of Python.
  • Fix tests broken by a change in ls's output.
  • Fix iterating over the long output of a command à la for line in foo(...): .... Currently you must add _bg=True to the execution options.
  • Fix recognizing names bound by for loops.
  • Added options -d|--debug, -dd|--debug2 and -ddd|--debug3 for enabling debug logs.
  • Added option -xxx|--trace-all for tracing all python execution. Use with caution, it generates lots of output.

Get it on github or pypi!


python ayrton

Juanjo Conti: Goodreads review: La Virgen Cabeza (Gabriela Cabezón Cámara)

Me costó leerlo.
Durante los primeros dos o tres capítulos no sabía dónde estaba parado. Luego tomó forma y pude completarlo.
Para mi gusto, quedaron muchos cabos sueltos.
Sin decirlo mucho, la historia se emplaza en un futuro que solo descubrimos porque Susana Gimenez y Maradona tienen más de setenta años.
El capítulo 7 es buenísimo, un cuento en si mismo.

Rating: 3/5

Original: https://www.goodreads.com/review/show/1552507560

Mariano Guerra: LoRaWan Overview

LoRaWAN

  • Network Protocol Candidate Specification
  • Optimized for battery powered end-devices
    • Fixed
    • Mobile (as in, they move, not phones)
  • Network Topology typically is start-of-stars
  • Network Operators can't secretly listen on application data

Communication

All Communication is bidirectional, uplink traffic should dominate:

+---+
|   |
+---+

Device
           LoRa or FSK   +---------+   IP   +---------+
    +---+    (radio)     |         |        |         |
    |   |  <---------->  |         <-------->         |
    +---+                |         |        |         |
                         +---------+        +---------+
    Device
                           Gateway         Network Server
   +---+
   |   |
   +---+

   Device
  • Communication spread out on different frequency channels and data rates
  • Data Rates between 0.3 kbps and 50 kbps
    • Max ~ 45 tweets/s (extended ASCII only ;)
    • Just the text w/o protocol overhead
    • Don't expect audio, video or any kind of streaming
  • Encryption of payload
    • AES 128 bit key length
    • One key for each FPort
  • MAC Commands
    • For Network Management
    • Invisible to Application Layer

Devices Classes

  • Class A: Baseline
    • Uplink transmission
    • Followed by two short downlink receive windows (RX1, RX2)
  • Class B: Beacon
    • Allow more receive slots at scheduled times
    • Synchronize by a beacon from the gateway
  • Class C: Continuous
    • Nearly continuos open receive windows
    • Only closed when transmitting
    • Lower latency, but more energy usage
  • All devices implement at least class A

Receive Windows

  • After uplink at configured periods
  • If msg received for current device on RX1, RX2 doesn't happen
    • Max one downlink per uplink on Class A
  • Can't transmit from last transmit until after RX2 window
+------------------+                  +-----------+              +------------+
|                  |                  |           |              |            |
| Transmit         |                  | RX1       |              | RX2        |
|                  |                  |           |              |            |
+------------------+                  +-----------+              +------------+

<------------------><---------------->
   Transmit Time         Receive
      on Air             Delay 1

                    <------------------------------------------->
                                      Receive
                                      Delay 2

MAC Message Types

  • Join Request/Accept
    • For Over the air Activation
  • Unconfirmed Data Up/Down
    • No ACK required
  • Confirmed Data Up/Down
    • ACK required

MAC Messages

  • Can be standalone messages
    • Always encrypted
  • Or "Piggyback" on next message
    • No encryption
  • Unknown messages ignored

ACK Messages

  • Can be standalone messages
  • Or "Piggyback" on next message

End Device Activation

To participate on a LoRaWAN network

Over the Air Activation

  • Needs join procedure
  • Requires fields set on device
    • DevEUI
    • AppEUI
    • AppKey (AES 128, derived from root AppKey)
  • Network Key provided
    • Allows network roaming

Activation by Personalization

All info stored on device on setup

Information Stored after Activation

  • Device Address
    • Two parts: Network Id and Network Address
  • Application Identifier
    • Global ID, uniquely identifies owner
  • Network Session Key
    • Used for MIC generation
    • Used for MAC only message encryption/decryption
  • Application Session Key
    • Used to encrypt/decrypt payload and for MIC

Class B Devices

  • Devices mobile or fixed that require to open receive windows
    • At fixed time intervals (ping slots)
  • Class B implements Class A
  • All gateways must synchronously broadcast a beacon
  • Provides timing reference to devices
  • Devices start as Class A and can switch to B when detect a beacon
  • If no beacon is detected for 120 minutes, devices switches back to Class A

Class C Devices

  • Used for applications that have suficient power available
    • cannot implement Class B
  • Will listen with RX2 window parameters as often as possible
  • No message to tell the server that it is a class C node
    • App must know
  • Like Class B, can receive multicast downlink frames

Manuel Kaufmann (Humitos): Crear GIFs de comandos en terminal

Hace un tiempo que tengo curiosidad por saber cómo crean esos "screencast" de los comandos que van tipeando en una terminal y los meten en un blog en formato gif.

Hoy encontré ttygif que te deja crear un GIF a partir de lo grabado con ttyrec -que basicamente permite grabar los comandos que vas tipeando en la consola y luego reproducirlo con el comando ttyplay.

Bueno ttygif mientras lo va reproduciendo va grabando una pequeña imagen de lo que se va mostrando junto con un tiempo en milisegundos. Luego, ejecutando su comando concat.sh te permite guardar eso en un gif.

Para instalarlo:

sudo apt-get install imagemagick ttyrec gcc
git clone https://github.com/icholy/ttygif
cd ttygif
make

Para usarlo:

ttyrec fades-django
./ttygif fades-django
./concat.sh fades-django.gif

¡Listo!

Aquí en el resultado, muestro fades con Django:

fades-django.gif

Manuel Kaufmann (Humitos): Crear GIFs de comandos en terminal

Hace un tiempo que tengo curiosidad por saber cómo crean esos "screencast" de los comandos que van tipeando en una terminal y los meten en un blog en formato gif.

Hoy encontré ttygif que te deja crear un GIF a partir de lo grabado con ttyrec -que basicamente permite grabar los comandos que vas tipeando en la consola y luego reproducirlo con el comando ttyplay.

Bueno ttygif mientras lo va reproduciendo va grabando una pequeña imagen de lo que se va mostrando junto con un tiempo en milisegundos. Luego, ejecutando su comando concat.sh te permite guardar eso en un gif.

Para instalarlo:

sudo apt-get install imagemagick ttyrec gcc
git clone https://github.com/icholy/ttygif
cd ttygif
make

Para usarlo:

ttyrec fades-django
./ttygif fades-django
./concat.sh fades-django.gif

¡Listo!

Aquí en el resultado, muestro fades con Django:

fades-django.gif

Manuel Kaufmann (Humitos): Actualizar a una versión nueva de Nikola

Nikola es un generador de sitios web estáticos que está buenísimo. Además, es el que uso para mantener este blog y el sitio web de Argentina en Python de una forma sencilla y sin mucho esfuerzo, que me permite focalizarme en el contenido sin molestarme en recursos de máquina, base de datos y otros dolores de cabeza. Además, como trabaja con reStructuredText me permite aprovechar todo su poder.

Como decía, es muy simple. Y así también lo es su actualización:

pip install -U nikola

Sin embargo, si tenés un custom theme y querés beneficiarte de los cambios en el tema del que heredás (yo me baso en bootstrap3) es necesario hacer un paso extra. Ese paso extra consiste en ver las diferencias de los templates que nosotros hemos modificado con respecto al tema heredado contra los originales y agregar los cambios que sean necesarios/compatibles. Para eso yo uso meld:

meld nikola-git-repo/nikola/data/themes/bootstrap3/templates themes/elblogdehumitos/templates

Y luego contra el theme del que hereda bootstrap3 que es base:

meld nikola-git-repo/nikola/data/themes/base/templates themes/elblogdehumitos/templates

De esa forma controlo las diferencias que haga falta y voy copiando hacia mis templates las que me benefician.

Por último, es posible que hayan agregado algunas características nuevas que requieran alguna configuración extra. Para saber cuáles son esas configuraciones podemos leer el CHANGES.txt para buscar algo puntal y agregar la que necesitemos, o bien podemos hacer un proyecto demo (con la última versión de Nikola instalada) y comparar su archivo conf.py:

nikola version
nikola init --demo -q /tmp/nikola-demo
meld /tmp/nikola-demo/conf.py conf.py

¡Ahora sí! Tenemos nuestro sitio Nikola actualizado a la última versión disponible.

Manuel Kaufmann (Humitos): Actualizar a una versión nueva de Nikola

Nikola es un generador de sitios web estáticos que está buenísimo. Además, es el que uso para mantener este blog y el sitio web de Argentina en Python de una forma sencilla y sin mucho esfuerzo, que me permite focalizarme en el contenido sin molestarme en recursos de máquina, base de datos y otros dolores de cabeza. Además, como trabaja con reStructuredText me permite aprovechar todo su poder.

Como decía, es muy simple. Y así también lo es su actualización:

pip install -U nikola

Sin embargo, si tenés un custom theme y querés beneficiarte de los cambios en el tema del que heredás (yo me baso en bootstrap3) es necesario hacer un paso extra. Ese paso extra consiste en ver las diferencias de los templates que nosotros hemos modificado con respecto al tema heredado contra los originales y agregar los cambios que sean necesarios/compatibles. Para eso yo uso meld:

meld nikola-git-repo/nikola/data/themes/bootstrap3/templates themes/elblogdehumitos/templates

Y luego contra el theme del que hereda bootstrap3 que es base:

meld nikola-git-repo/nikola/data/themes/base/templates themes/elblogdehumitos/templates

De esa forma controlo las diferencias que haga falta y voy copiando hacia mis templates las que me benefician.

Por último, es posible que hayan agregado algunas características nuevas que requieran alguna configuración extra. Para saber cuáles son esas configuraciones podemos leer el CHANGES.txt para buscar algo puntal y agregar la que necesitemos, o bien podemos hacer un proyecto demo (con la última versión de Nikola instalada) y comparar su archivo conf.py:

nikola version
nikola init --demo -q /tmp/nikola-demo
meld /tmp/nikola-demo/conf.py conf.py

¡Ahora sí! Tenemos nuestro sitio Nikola actualizado a la última versión disponible.