Manuel Kaufmann (Humitos): Mi paso por PyCaribbean

En este post voy a tratar de dejar plasmada mi visión, en general, de lo que fue la primera conferencia de Python en el caribe: @PyCaribbean, a la cual tuve la oportunidad de asistir y además poder dar a conocer el trabajo que venimos realizando con Argentina en Python en una de las charlas del schedule.

Voy a empezar diciendo que estuvo increíblemente buena, que la disfruté muchísimo, que fui solo y volví con un montón de amigos de muchos países del mundo. Me estuve codeando con gente grossa de verdad, charlando con ellos como si fuésemos amigos de toda la vida, y compartiendo momentos que sé que, aunque tenga muy mala memoria, nunca voy a olvidar.

IMG_20160222_173556.thumbnail.jpg

@pollitosabroson, @reydelhumo, @raulcumplido, @jacobian y @angelmejiabrito

Ahora bien, soy Argentino y como tal, soy criticón. Así que aquí voy a desplegar algunas pequeñas particularidades que noté, algunos problemas que hubo, y también cosas que me gustaron mucho y creo que debemos copiar con la idea de que entre todos mejoremos en las próximas PyCones. Sí, ya sé el esfuerzo increíble que lleva hacer una primera conferencia de semejante magnitud, por eso la intención de estas críticas es en pro de mejorar entre todos.

Las charlas a las que asistí

  • Opening Statements, de Leonardo Jimenez: este tipo sí que sabe como hablar. No solo en la pequeña charla de apertura, sino cada vez que necesitaba hacer un anuncio, presentar a los disertante de las Key Notes y demás, siempre tenía algo pequeño y concreto para decir pero relacionado a lo que se venía. Me gustó cada aparición que tuvo.
  • When languagues meet, de Brandon Rhodes: me dejó helado. No era una charla puramente relacionada con Python, sino con historia de los lenguajes naturales en general y cómo cuando esos lenguajes se conocen y mezclan se crean nuevos errores que luego son naturalmente usados. Así, explicó cómo Python adoptó las mejores cosas de otros lenguajes y descartó las malas para ser hoy lo que es.
  • Build a one page with Django and angular, de Jose Alejandro Hernandez Rosales: simple y sencilla, pero como no sé nada de nada de Angular no la pude apreciar ya que por algún motivo no utiliza los templates de Django y hacía comparaciones con otras formas de utilizar Angular y él consideraba que lo mejor era no usarlos para este caso puntual.
  • Argentina en Python, de Manuel Kaufmann: si no iba a la mía, estaba frito. Salió bien. Podría haber salido mejor. Me quedaron muchas cosas para decir, pero me sentí cómodo con la audiencia. Creo que les gustó.
  • Python y .Net, de Pablo Mercader: una de las mejores para mí. No iba a ir al principio, después terminé yendo con Raúl Cumplido y me divertí muchísimo con Pablo. Si bien no me interesa ni un 0.01% .Net me hizo reir tanto durante toda la charla explicando su investigación de diferentes formas de usar .Net con Python para tratar de poco a poco ir metiendo Python en el banco en que trabaja actualmente, que no me arrepiento para nada.
  • La máquinaria de import, ese mágico desconocido, de Raúl Cumplido: muy interesante. Era algo que desconocía totalmente y que nunca me había preguntado nada sobre eso. Me dió a conocer nuevas herramientas que me ayudaron a tener nuevas ideas. Además, se nota que el tipo sabe de lo que está hablando y tiene experiencia. Y como si fuera poco, dice "No sé", cuando no sabe :D
  • Odoo 9.0 Functional & Tecnical Overview, de Eneldo Serrata: muy interesante lo que mostró. Odoo es un herramienta que desconocía totalmente, y cuando dijeron que era un ERP le hice la cruz. Luego de ver la charla de Eneldo, me quedé anonadado y creo que es algo muy útil. Él, siendo ferretero, nos contó como Odoo le cambió la vida y cómo resuelve mucho de los problemas típicos y complejos de los negocios.
  • Django Girls, de Ola Sitarska: no me gustó. Me esperaba otra cosa. Ola era una referente para mí por toda su trayectoria y lo que han logrado con su proyecto. Sinceramente, quería que le saque chispas al escenario. Lamentablemente, terminó dando una charla poco natural, sin pasión y donde el 90% de las cosas que dijo las leyó de su laptop. Creo que tiene toda la capacidad para dar una charla muchísimo mejor; esperaré la próxima.
  • Python documentation: past, present and future, de Eric Holscher: me tocó el alma. Me emocioné al saber que hay tanta gente preocupada por la documentación, que se lo toman tan en serio y tratando de cambiar el mundo desde la ahí. Me pareció un tipo súper sencillo, con ganas de ser un héreo y transformar las cosas para el bien de todos. Nos habló de porqué la documentación importa, del estado de Read the Docs, de la falta de colaboradores, del apoyo e Microsoft y algunas cositas más.
  • Realidad Aumentada y Realidad Virtual, de Jose Elias: un pantallazo muy rápido sobre todas las tecnologías de Realidad Aumentada y Realidad Virtual. Las diferentes formas de utilizarlo y en lo que las grandes compañías están trabajando. Estuvo muy interesante. Sin embargo, tuvo un pequeño derrape cuando "actuó" un pequeño uso de la Realidad Virtual: el porno. Estaba bien mencionarlo y demás, el acting no era necesario.
  • Ambientes de Desarrollo usando Docker, Rene Olivo: otra de las charlas que más me gustó. Un programador front-end me explicó muchos conceptos de Docker que no sabía y además comentó la importancia de ser front-end y manejar estas tecnologías. Una charla clara, divertida, con acento dominicano e interesante.
  • Metaprogramación en Python, de Raúl Cumplido: interesante conocerlo. No sé en dónde lo aplicaría. Creo que no era necesario complicarla tanto Raúl ;). De cualquier forma, de nuevo, sabía de lo que estaba hablando y mostró cosas que eran muy rebuscadas de una forma clara.
  • How to teach Git, Georgia Reh: una charla básica, pero basada en valiosa experiencia personal sobre qué cosas funcionan y cuáles son un error gigante a la hora de explicar Git a una persona que no lo conoce, nueva en la programación o que nunca lo haya usado.
  • Jupyter + Pandas for an intuitive, beginner-friendly data analysis workflow, de Melissa Lewis: como siempre que voy a este tipo de charlas con Pandas y toda esa bola: entiendo el código Python que veo, parece súper sencillo y demás, pero toda la matemática que hay por detrás...
  • Digital Signal Processing Demystified, de Amy Boyle: súper interesante sobre cómo procesar audio desde Python con numpy y otras cositas. Me hice agua un poco con el inglés y me perdí muchas pequeñas cosas. Como la anterior, saber de Python no es suficiente.
  • How to be an expert, de Jacob Kaplan-Moss: una charla muy interesante sobre cómo convertirse en un experto en una determinada tarea, ya sea programar o tocar música: "todo funciona mejor cuando trabajamos en equipos". Me encantó, salí muy motivado y con ganas de tener un equipo al lado todos los días. ¡Quiero ser un experto!

Las cosas buenas

  • Grupo de Whatsapp: a los disertantes que estaban interesados en participar en un grupo de Whatsapp nos agregaron al mismo. Ahí pudimos compartir y organizar actividades por afuera de todo lo que correspondía a la conferencia en sí y conocernos entre los disertantes que llegamos días antes a la conferencia y luego organizar más actividades los días siguientes a la misma.
  • Guidebook App: uno de los Sponsors era guidebook por lo que desde la organización utilizaron esa app para armar el schedule, publicar el mapa de lugar, enviar mensajes push a todos los asistentes de la conferencia con novedades, cambios de horario y más. Me pareció interesante porque tenía toda la información de la charla, el disertante, los horarios y el aula.
  • Guía impresa con lugares de la ciudad: en el Welcome Bag venía incluído un pequeño libro de muy buena calidad con lugares turísticos de la ciudad de Santo Domingo. Me gustó que uno que va de afuera se puede poner al tanto de alguna particularidades de la ciudad y puede organizar para visitar esos lugares en los días libres.
  • Se hizo un evento post conferencia: estuvo bueno que el Martes inmediato a la conferencia (dos días después) se organizó algo más pequeño en las oficinas de Microsoft con la idea de presentar pequeñas charlas para la comunidad local y los disertantes/asistentes que todavía estábamos en el país.
  • Beach Trip: además de la conferencia, también organizaron un día entero de relax, charlas, cervezas y piñas coladas en una playa muy linda al norte de la isla. Si bien el precio no era accesible para mí (USD 100, todo incluído) decidí hacerlo porque me pareció que iba a ser un momento en comunidad, donde se podría compartir y charlar más distendido con los otros disertantes/asistentes; y así fue. ¡Estuvo excelente!
  • Organizadores atentos: en todas las situaciones me trataron muy bien. Incluso me sentí que tuve un trato preferencial. Desde los emails que intercambié con ellos durante los meses previos a la conferencia, como los días que estuve allí. Me hicieron sentir importante.
  • Beca para disertantes: inmediatamente me enteré de esta conferencia, le envié mi propuesta de charla y les pregunté si iban a tener la posibilidad de dar becas para el ticket. A los pocos días, me habían aprobado la charla y me dijeron que me podían brindar la plata del ticket de avión y también la entrada a la conferencia. ¡Estoy infinítamente agradecido por esto! Sin embargo, creo que esta posibilidad no estuvo anunciada en ningún lado.
  • Descuento para miembros locales: los miembros de Python Dominicana pagaban una pequeña parte de la entrada a la conferencia que incluía desayuno, almuerzo y merienda los dos días.
  • Buena comida: abundante, rica y nutritiva. Además, ¡había opciones para elegir! Eso es tener nivel.
  • Grabación de las charlas: unos días antes de la conferencia nos enviaron un email diciendo que si queríamos que graben nuestra charla debíamos instalar obs y que el día anterior a la conferencia ellos lo iban a configurar. Estuvo perfecto, lo resolvieron de una forma sencilla con un software multiplataforma, un micrófono corbatero inalámbrico y una webcam full hd.

Las cosas "malas"

  • No hubo carteles de tiempo: los típicos carteles de "Quedan 20 minutos", "Quedan 10 minutos" y demás no estuvieron presentes. Yo, que no había puesto el cronómetro, no supe en qué momento de mi charla estaba hasta que me dijeron que no tenía más tiempo. Por suerte no fue un problema.
  • No hubo Lightning Talks: si bien tenían su lugar en el schedule, debido a que algunos disertantes faltaron, otros se adelantaron, algunos tiempos se corrieron y demás, al final no quedó tiempo para las Ligthning Talks.
  • El registro de LT era por la web: y además debían ser previamente aprobadas por un commité. La forma de hacer esto que a me gusta es la típica pizzarra en el medio del hall de la conferencia con los slots en blancos y cada uno pone título de la charla y su nombre durante el mismo día de la conferencia.
  • No había programa/schedule impreso: si bien se utilizó guidebook para el schedule, no es un reemplazo al papel que se lo puede hacer un bollo y meter en el bolsillo.
  • Cambio de horario de mi charla: el disertante de la charla previa a la mía tuvo un inconveniente y no pudo llegar a tiempo para la suya. Lamentablemente, adelantaron un slot mi charla y avisaron por mensajes de guidebook. Sin embargo, luego me dijeron que muchos fueron al horario que estaba pactada y no había nada :(
  • La conferencia fue en inglés: no me gustó. Principalmente porque estábamos en República Dominicana, un país donde el idioma nativo y que se habla en la calle es el Español. No sólo el sitio web, sino las redes sociales, los emails, y todo lo proveniente de los organizadores era en Inglés. Además, hubo 4 tracks en Inglés y uno solo en Español. Entiendo que el objetivo de la conferencia era hacer crecer la comunidad local, pero lamentablemente por esta decisión creo que justamente a la comunidad local se la dejó de lado y fue más una conferencia para extrajeros o "desarrolladores avanzados" / "no iniciantes" de Santo Domingo. De hecho, no hubo una "Introducción a ..." nada.
  • Precios de hospedajes: totalmente inaccesibles para personas de América Latina. Si yo hubiese vivido en otra ciudad de República Dominicana, me hubiese sentido totalmente excluído aquí. El hospedaje con precio más bajo que sugerían era de USD 70, luego le seguía USD 126 y finalmente USD 134. Esto me hace pensar un poco más en lo anterior: una conferencia para extranjeros. Yo, como buen integrante de un proyecto que se mueve con monedas, busqué por AirBnb y pagué USD 15 la noche.
  • Precio de la conferencia: el ticket de entrada salía USD 150. No sé si es mucho o poco la verdad. Las PyCon de Python Argentina han sido siempre gratuitas (no incluye comida) y me cuesta pensar que tengo que pagar, incluso para ser disertante.
  • Prohibido el ingreso con short: un pequeño detalle que dió mucho que hablar. No se podía ingresar al edificio donde se realizaba la conferencia con pantalones cortos, y muchos de los asistentes no sabíamos.
  • No se tomó una foto grupal final: es una pena esto ya que no tenemos un registro visual de todas las personas que asistimos a la conferencia.

Aunque haya escrito estas pequeñas cosas "malas", que en realidad no son malas sino que son cosas que debemos tener en cuenta en las próximas ediciones -y no solo de @PyCaribbean, puedo decir que la conferencia estuve excelente, con muy alto nivel de charlistas, profesionalismo por parte de los organizadores y un excelente trato de todo el equipo de colaboradores. Me sentí en mi propia tierra y con mis amigos de toda la vida. Quiero agradecerles principalmente a Leonardo y Vivian que se pusieron al hombro semejante evento y de muy alta calidad. Si el primero estuvo tan bueno, ¡no me quiero perder el que viene!

Muchas gracias por hacer que se siga contagiando la buena onda en todo el mundo y darme la posibilidad de participar y compartir esos 10 días con ustedes y su gente.

Manuel Kaufmann (Humitos): Dichos y refranes (1)

Mi abuela Lidia, de 92 años, es una de esas personas que no ha terminado ni siquiera la escuela primaria -siempre cuenta que estudió 6to grado en el tren con sus propios libros mientras iba a trabajar, y que siempre me dejó helado con todo lo que sabe y la capacidad de adaptación al mundo: de viajar en caballo del campo a la ciudad a volar en un avión sola en un tour por Europa.

Siempre valoré mucho su conocimiento, sus historias, sus dichos y refranes. También las peleas y discusiones que hemos tenido a lo largo de todos nuestros encuentros mensuales. Esas discusiones que me han hecho crecer y desarrollarme como persona.

Así, sin embargo, a uno lo termina cansando escuchar siempre los mismos dichos y refranes. Esa continuidad hace que algunos nos queden grabados para siempre y que otros pasen desapercibidos por el cansancio: "Ya basta abuela, otra vez con la misma historia".

Hace un tiempo leí en el blog de Gastón Ramos un post escrito por Marisa Ramos llamado Cerrazón que habla un poco de esta situación:

Mi abuela, doña Angela Ramos, tenía entre tantas otras virtudes, la de recordar muchos refranes y dichos populares que viene a ser mas o menos lo mismo. A lo largo de los treinta y tantos años que compartimos en esta vida pude aprenderme algunos, hubiera tenido que aprenderme más pero esas cosas que se tienen, que parece que nunca te van faltar y de puro cómoda nomás no me los aprendí.

Ese párrafo me hizo pensar mucho en todo lo que sabe mi abuela y que, hablando con mucha gente durante estos años de viajes por diferentes países, me dí cuenta que no es algo "común" y que "todo el mundo sabe". Sino que yo era un privilegiado al tener esa fuente de información entre mis familiares. Es por eso que le encargué una tarea simple a mi abuela:

Escribir a mano un dicho/refrán diferente por día en un cuaderno

Así esa información, cuando tenga la posibilidad de recolectarla la iría publicando en mi blog. Aquí viene la primera parte:

  1. Si te he visto, no me acuerdo.
  2. Haz el bien y no mires a quien.
  3. Al que nace barrigón es al ñudo que lo fajen.
  4. Dime que pregonas y te diré que sientes.
  5. Mas vale pájaro en mano que cien volando.
  6. No digas lo que vas a hacer, hazlo.
  7. Genio y figura hasta la sepultura.
  8. Yo te bautizo, chancho petizo.
  9. Mas contento que perro con dos colas.

¡Una genia!

Manuel Kaufmann (Humitos): Dichos y refranes (1)

Mi abuela Lidia, de 92 años, es una de esas personas que no ha terminado ni siquiera la escuela primaria -siempre cuenta que estudió 6to grado en el tren con sus propios libros mientras iba a trabajar, y que siempre me dejó helado con todo lo que sabe y la capacidad de adaptación al mundo: de viajar en caballo del campo a la ciudad a volar en un avión sola en un tour por Europa.

Siempre valoré mucho su conocimiento, sus historias, sus dichos y refranes. También las peleas y discusiones que hemos tenido a lo largo de todos nuestros encuentros mensuales. Esas discusiones que me han hecho crecer y desarrollarme como persona.

Así, sin embargo, a uno lo termina cansando escuchar siempre los mismos dichos y refranes. Esa continuidad hace que algunos nos queden grabados para siempre y que otros pasen desapercibidos por el cansancio: "Ya basta abuela, otra vez con la misma historia".

Hace un tiempo leí en el blog de Gastón Ramos un post escrito por Marisa Ramos llamado Cerrazón que habla un poco de esta situación:

Mi abuela, doña Angela Ramos, tenía entre tantas otras virtudes, la de recordar muchos refranes y dichos populares que viene a ser mas o menos lo mismo. A lo largo de los treinta y tantos años que compartimos en esta vida pude aprenderme algunos, hubiera tenido que aprenderme más pero esas cosas que se tienen, que parece que nunca te van faltar y de puro cómoda nomás no me los aprendí.

Ese párrafo me hizo pensar mucho en todo lo que sabe mi abuela y que, hablando con mucha gente durante estos años de viajes por diferentes países, me dí cuenta que no es algo "común" y que "todo el mundo sabe". Sino que yo era un privilegiado al tener esa fuente de información entre mis familiares. Es por eso que le encargué una tarea simple a mi abuela:

Escribir a mano un dicho/refrán diferente por día en un cuaderno

Así esa información, cuando tenga la posibilidad de recolectarla la iría publicando en mi blog. Aquí viene la primera parte:

  1. Si te he visto, no me acuerdo.
  2. Haz el bien y no mires a quien.
  3. Al que nace barrigón es al ñudo que lo fajen.
  4. Dime que pregonas y te diré que sientes.
  5. Mas vale pájaro en mano que cien volando.
  6. No digas lo que vas a hacer, hazlo.
  7. Genio y figura hasta la sepultura.
  8. Yo te bautizo, chancho petizo.
  9. Mas contento que perro con dos colas.

¡Una genia!

Alejandro Santos: Compilers construction resources


However, those who wants to be serious about compilers should consider acquiring the books: 
  • Compilers: Principles, Techniques, and Tools. Either 1st or 2nd Edition. I've got the 1st edition from AbeBooks, the basics are still the same today compared to 30 years ago (tokenizer, parser, syntax driven translation, intermediate code generation). 
  • Engineering a Compiler, Second Edition. This one is a good book too, and it talks in more detail about Recursive Descent Parsers, which in practice is what many compilers are doing today (ie, gcc for C++). It is a simple technique, and you can write a RDP by hand easily.

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