Prueba de manejo: Estacionamientos

La prueba de manejo consiste en tener en cuenta 3 factores:

Las consideraciones generales para los estacionamientos son las siguientes:

Las luces de emergencia hay que prenderlas siempre (SIEMPRE) que vayas de retroceso.

Si te equivocas alineandote en el paralelo (p.e. quedas muy fuera), no lo corrijas. Equivocarse es -30, correjirlo es -30 y estás fuera.

Al salir del estacionamiento paralelo hay que encender la direccional izquierda.

Al entrar al estacionamiento diagonal hay que encender la direccional derecha.

Estacionamiento paralelo

el veedor te dará 3 instrucciones. Alinear, estacionar y salir.

Alinear:

Estacionar paso 1

Colocar el banderin (del número que nos desinaron) en la mitad de la luna pequeña. Girar todo hacia la derecha. Encender las luces de emergencia. Poner el retroceso.

Tip: en este punto la llanta trasera estará pisando la línea blanca.

Paso 2

El banderin posterior estará arriba de la línea roja del seguro de la puerta trasera:

Girar todo hacia la izquierda y seguir retrocediendo.

Paso 3

Detener cuándo el banderin delantero esté en la mitad del volante. Girar completo a la derecha y avanzar.

Paso 4:

Avanzar hasta que el auto esté paralelo con la línea horizontal. Verificar retrovisor.

Para salir, poner retroceso, encender la luces de emergencia, cruzar todo el volante a la derecha, retroceder hasta que el banderín esté al centro del volante.

Poner luces de cruce a la izquierda, poner D, sacar la cabeza por la ventana y verificar que tenemos preferencia. Salir.

Este vídeo está bueno, pero no explica las luces de emergencia porque son un requisito más nuevo

Estacionamiento Diagonal

Al esperar indicaciones poner intermitentes derechas.

Al recibir el número, avanzar acercandonos a la línea izquierda, hasta que la línea derecha de nuestro puesto esté a la altura del retrovisor:

Girar todo a la derecha. Avanzar hasta que el poste asignado esté en el centro del tablero:

Comenzar a devolver el timón. En este vídeo explican el proceso con pasos, pero la verdad es que si ya manejas es más fácil dejarse llevar por la memoria muscular que tengas. Avanzar hasta que las llantas toquen el tope. Poner parking

Esperar la indicación para salir. Al retroceder recordar encender las luces. Verificar la prioridad. Mirar que la línea blanca esté en el marco de la ventana pequeña trasera. Girar todo a la derecha. Seguir retrocediendo.

Mirar por la ventana trasera hasta que el semáforo esté entre las dos cabeceras. Frenar. Ponder D. Quitar las luces de emergencia. Seguir con la ruta.

Suerte en el exámen!!!

Prueba de manejo: Preferencias

La prueba de manejo consiste en tener en cuenta 3 factores:

Las consideraciones para las preferencias son las siguientes:

En los ovalos: si ya hay carros transitando, y si tienes que entrar, tienes que esperar hasta que puedas ver las luces traseras, y luego entrar

En los estacionamientos: Si tienes autos detrás de ti, tienes que esperar que ellos salgan primero. Hay que voltear a ver hacia atrás antes de salir.

Casos pendejos:

Un auto ruta a sale, un auto ruta b entra.

En la siguiente imágen el auto amarillo ruta B tiene prioridad para cambiar de canal antes que el rojo cambie de canal. El rojo se tiene que detener al terminar la jiba (el montículo).

Si dos autos se encuentran frente a frente para salir del circuito

El que sale de la ruta B tiene preferencia para salir.

Curva pendeja. Caso A (esperar siempre si eres amarillo)

Tú eres el carro amarillo. El coche azul entra al circuito B, El coche rojo va a salir del circuito A. Tú tienes que esperar que azul salga, luego va a pasar rojo, de último tú pasas. Si estás delante del rayado, no importa si el semaforo arriba de ti está en rojo o verde, eso es para los que están detrás del rayado.

En uno de mis intentos de prueba el coche rojo se quedó estacionado ahí, yo conté unos 10 segundos y como no se movió, yo seguí. En esos casos donde la gente tiene un colapso en la pista, tienes que contar hasta 10 y seguir.

Curva pendeja, caso B (esperar siempre si eres amarillo)

El auto naranja va a salir de la ruta B. Hay que dejarlo pasar en ambos casos

Suerte en el exámen!!!

Prueba de manejo: Luces direccionales y de emergencia.

La prueba de manejo consiste en tener en cuenta 3 factores:

  • Luces direccionales y de emergencia (este post)
  • Preferencias
  • Estacionamientos

Las consideraciones para las luces direccionales y de emergencia son las siguientes:

Si la ruta no implica una toma de decisión (como al salir de la ruta a, la primera curva hacia la izq) entonces no hay que prender la lúz.

Lo contrario a esto es al salir del ovalo por primera vez en al ruta A. En este caso es posible (teoricamente) salir del ovalo hacia la derecha, o volver a girar en el ovalo hacia la izquierda. Esta es una decisión que hay que indicar al conductor detrás.

Las luces de emergencia hay que prenderlas siempre (SIEMPRE) que vayas de retroceso.

Hay un caso especial: al salir del estacionamiento paralelo hay que encender la direccional.

Las luces direccionales

Para la ruta A se encienden acá:

Y para la ruta B se encienden acá:

Las luces de emergencia

Se encienden al retroceder. En el estacionamiento paralelo se retrocede para estacionar y para salir. En el estacionamiendo diagonal sólo se retrocede para salir.

Suerte en el exámen!!!

Diseñar un billete

Este es otro post donde aprendo algo que no tiene mucha aplicación práctica en la vida.

Hace tiempo mi novia me introdujo al universo de los juegos de mesa, y lo he estado disfrutando bastante. En particular me han gustado juegos como Godfather o Architects donde tienes que mejorar tu posición, mientras desmejoras la posición de tus oponentes.

Un detalle que me gustó mucho de Godfather fue el dieño de sus billetes; Un billete es algo que usamos a diario, y que damos por sentado, pero que seguramente debe ser un dolor de cabeza para la persona que los diseña:

Me dio curiosidad de disectar/diseñar un billete por mi cuenta usando Paint.net y los resultados no están tan mal para mi que no tengo ninguna experiencia de diseño, aunque sí uso el paint.net a diario para cortar/pegar cosas.

Paso 1: ¿Qué modelo imitar?

Quería algo parecido al billete del juego, porque me parece genial. Lo que no entiendo (o no entendía) es el proceso de cómo generar algo parecido. Entonces me puse manos a la obra. En paint.net creé una capa para ver el original para buscar pistas.

Prime paso.

Luego vi que hay un patron de capas claras y oscuras:

Y luego reproduje una estructura parecida, con cada elemento en una capa:

Primero coloqué un patron Guilloche de fondo :

Los guilloche son una locura. Quién diseña estas cosas????

En otra capa dibujé un borde blanco:

Hay una capa de textura, para aparentar que el papel tiene… textura: (para que se aprecie acá la textura hay que seleccionar el modo de fusion como multipilicación, y la opacidad bajarla un poco para que el efecto sea sútil)

luego hice otro rectangulo blanco interior:

y dentro de él puse otro patron guilloche:

Luego busqué una foto en alta resolución de un billete de 1 dollar y le robé el patron del número 1 de una de las esquinas:

Y por último, la capa 10 de color tiene modo de difusión de cubierta

y esto le da un tinte azulado a las capas negras de abajo. Los colores negros de las capas inferiores no debe ser 100% negro, si no un grís 80% o menor para que que al aplicar la capa azul se note el «tinte». También quería que el billete se viera como de la década de los 40 cuando no habían tantos colores ni características de seguridad.

obviamente todavía falta mucho trabajo, pero con esto tengo una base para construir otros billetes, sólo necesito cambiar el monto, y el color, y ya tendría con qué trabajar.

Conclusiones finales:

La gente que diseña billetes está loca.

Es importante jugar con la regla de una zona clara, luego la siguiente que sea oscura o un patron. Y algo que es muy importante es que hay que ser creativo, pero tener cuenta que una capa debe tener suficiente constraste con la anterior, y una ayuda para esto puede ser mirar la miniatura del diseño en Paint.NET:

si los detalles que estás introduciendo no se aprecian acá, entonces creo que se debería incrementar el contraste o el brillo de tu capa actual para hacerla que resalte.

Conclusiones finales 2:

Todavía faltan muchos detalles por incluir, algunos que me han gustado son las palabras del banco de la reserva y la denominación

Y creo que voy a ver más vídeos del diseño de las «nota bancarias» en youtube para agarrar inspiración https://www.youtube.com/results?sp=mAEB&search_query=banknotes+Design+

Tip de trabajo: Da trabajo, quita trabajo.

Recientemente luego de una reunión de trabajo mi jefe me recomendó «quitarle» trabajo. Yo había retomado un tema viejo y esto requería que compañeros leyeran un hilo de correo largo y aburrido. En principio lo entendí como un comentario rudo o mal educado. Se me quedó en la cabeza dando vueltas.

Me gusta creer que una dificultad que yo resuelvo es la de interactuar con personas de idiosincracias diferentes. Y creo que esto es a lo que mi jefe se refería. Al forzar a que mis compañeros leyeran ese hilo de correo, sin querer los forze a hacer mi trabajo por mi. Les di mi trabajo.

En el futuro, voy a pensar un poco más lento antes de responder. Un resumen breve del problema, y de la posible solución puede quitarle trabajo de encima a un compañero. Es importante aprender a delegar, y también es importante aprender a apropiarse.

Transductor fuerza vs desplazamiento

Estos días estoy con el bichito electrónico otra vez. Mi trabajo no está muy relacionado a lo que estudié en la Uni, y estoy haciendo proyectos personales que corrijan eso xD

Todo comenzó con este twitt:

El problema es que cuando se prueba la calidad de un teclado, muchas cualidades entran en consideración. Subjetivo vs Objetivos. Dos aspectos que comunes son el sonido de las teclas al escribir, y la sensación de las teclas al presionarlas.

Dependiendo del tipo del interruptor, unas suenan, unas son silenciosas, otras dan un golpecito cuando las presionas, unas son duras, unas suaves, unas duras y después suaves.

Normalmente los switch de los teclados mecánicos tienen un perfil de comportamiento. Este perfil es una curva que presenta el desplazamiento de la tecla en función de la fuerza que se le aplica. Estas gráficas son normalmente proporcionadas por el fabricante de la tecla.

Tener el perfil de fuerza-desplazamiento ayuda a tener una idea de cómo se va a comportar una tecla antes de usarla. Si tenemos dos perfiles parecidos, entonces las teclas parecidas en la sensación que dan al presionarlas.

Hay otras cosas que influencian esto: si la tecla está montada en una base plástica va a tener un perfil ligeramente diferente al de una montada en una base metálica. O dependiendo del material de construcción de la tecla y de su forma, cada tecla puede sonar diferente.

Con esto dicho, tengo dos ideas que pueden ayudar a caracterizar una tecla, y por extensión, a un teclado.

  1. un creador de perfiles mecánicos de teclas: un sensor para hacer las gráficas de movimiento vs fuerza aplicada.
  2. un creador de perfiles acústicos de las teclas. un sensor para analizar cómo suena una tecla. Esto también podría usarlo para analizar el sonido de un teclado.

La ventaja es entender mejor cómo interactúan diferentes elementos del teclado, objetivamente.

Sensor de movimiento vs. fuerza

El algo que empuje estoy pensando que sea algo así:

Rotary to Linear Motion | MISUMI Blog

para poder hacer muchas series de movimientos.

El sensor son dos sensores en realidad. Primero una celda de carga para medir la fuerza que se está ejerciendo sobre la tecla:

Typical Binocular Spring Beam Load Cell [4] | Download Scientific Diagram

Un sensor de desplazamiento. Esto puede venir incorporado en el algo que empuje, o puede ser un acelerómetro que registre la variación de movimiento.

Opcional podría tener un micrófono conectado junto a la tecla para registrar los sonidos y construir un perfil de sonido de cada tecla.

Primer intento

Usando el acelerómetro de un microbit. No estoy muy seguro de que medir posición con un acelerómetro puede no ser la solución acá para este intervalo tan corto.

El pico en la imagen de arriba es un empujón que le di al acelerómetro para moverlo un varios centímetros. Pero para leer un movimiento de menos de 1 cm que ocurre lentamente, creo que esta idea no va a servir.

Intento número 2

La siguiente idea fue hacer un dispositivo de movimiento lineal. Hora de sacar mis habilidades con bloques de lego:

Supongo que con un poquito de trigonometría puedo convertir ángulos a distancia. Ahora necesito integrar una galga extensiométrica ahí en alguna parte.

PD: el motor lo pegué a una pieza de lego con silicona.

Efectos de espectro de luz rojo lejano en las plantas.

Este post es una interpretación del vídeo Far-red: The Forgotten Photons https://www.youtube.com/watch?v=sS7aAcacfgk donde el Dr. Bruce Bugbee explica las implicaciones de el espectro de luz infrarroja en las plantas.

La definición tradicional de fotosíntesis normalmente considera los fotones en el rango de 400 a 700 nm de longitud de onda. Ademas, típicamente la luz se divide en tres colores: Rojo (400-500 nm), Verde (500-600 nm) y Azul (600-700 nm).

Es común que la luminaria comercial para cultivos se comercialice como Azul-Roja, debido a que tradicionalmente se considera que la luz verde no favorece tanto a la fotosíntesis. La ventaja de no usar luz verde es que una lámpara Azul-Roja consume menos energía, al no tener que generar el color verde.

En esta gráfica se aprecia cuánta energía absorbe la clorofila A (en azul) y la clorofila B (en rojo) en función de la longitud de onda. Nótese que en el rango de 500 a 600 nm hay muy poca absorción de luz.

Pero la luz del sol tiene presente también luz verde, y en la bibliografía más actualizada, se incluyen otros pigmentos vegetales que absorben luz en otros segmentos de longitud de onda más complejos:

Tomado de http://hyperphysics.phy-astr.gsu.edu/hbase/Biology/ligabs.html

Aunque la fotosíntesis en el rango de 500 a 600 nmm es baja, la luz verde puede utilizarse, y no es que se pierda. La ventaja de usar luz verde es que mejora mucho la visibilidad de la planta, y hace más facil

Efectos de la luz en las plantas según el espectro utilizado

Azul: inhibe la expansión celular. Más luz azúl, plantas más pequeñas, con hojas más pequeñas.

Verde: Facilita la visión humana. Es mucho más fácil realizar diagnósticos, ubicar desórdenes nutricionales, o ver insectos.

Rojo: Fotosíntesis eficiente.

Rojo-lejano: Promueve la expansión celular. Plantas más altas, hojas más grandes. Los tallos se mantienen del mismo grosor. Floración temprana.

Cuál es la función de la luz roja en la naturaleza

En la naturaleza, la luz roja existe principalmente debajo de las sombras de los árboles. El árbol refleja la luz verde y la luz roja le atraviesa, y llega al suelo. Las plantas que crecen en la sombra tienen normalmente dos respuestas:

  1. Algunas plantas crecen con tallos alargados: buscando sobrepasar a la planta que les hace sombra
  2. otras plantas crecen con hojas más grandes: buscando capturar más luz.

Está característica puede utilizarse para fines comerciales. Tallos más altos permiten mejor circulación de aire y prevenir enfermedades. Hojas más grandes hacen más productivas a las plantas cuyo producto es la hoja misma.

No todas las especies reaccionan igual, así que hay que probar con la variedad de planta en cuestión.

¿Es nuestra definición de luz sintética correcta?

Una búsqueda rápida en google nos mostrará que mucha de la luminaria led actual tiene espectros de generación de luz como el siguiente:

El problema de la luz blanca led

Note que hay un pico grande en el espectro de luz azul, y otro pico más grueso en el segmento de los 500 a 700 nm. no hay una participación importante arriba del espectro de los 700 nm. Esto se debe principalmente a dos hechos: primero, se considera que ese espectro no aporta nada positivo a la planta, y segundo generar luz en ese espectro hace que la luminaria sea más costosa de fabricar y consume más electricidad.

Obviamente no estaríamos hablando de la luz si no existiera algún tipo de incentivo. Tomemos en cuenta la siguiente gráfica de eficiencia en función color de luz que incide sobre la planta:

How to Measure Horticultural Lighting Performance - Part Two - Growers  Network

La gráfica nos dice que mayormente las plantas aprovechan el espectro de luz arriba de 300 nm, y debajo de 800 nm. Si tuviéramos una fuente lumínica que generara luz afuera de ese espectro (luz infrarroja y luz ultravioleta) esta luz sería desperdiciada. Esa fuente de luz sería más costosa porque requiere energía eléctrica adicional para generar esos espectros. Por esto, la luz comercial se concentra en un espectro definido entre 400 y 700 nm:

Layer Birds Light Led Poultry Shed Lighting In Layers - Buy Layer Birds  Light,Led Poultry Shed,Lighting In Layers Product on Alibaba.com

La luz más eficiente será la que tenga un espectro que la planta pueda usar, y que rechace los espectros que la planta no use. Pero ¿cómo determinar el espectro optimo?

Si consideramos el siguiente diagrama del proceso de la fotosíntesis:

En el lado izquierdo de la imagen (fotosistema 2) tenemos 4 fotones que excitan los electrones del agua a un estado de mayor energía, esta energía es aprovechada para almacenarla en forma de ATP, luego una segunda etapa de fotosíntesis (en la derecha, fotosintesis 1) toma luz tradicional, o luz roja, para estimular 4 electrones a un nuevo nivel de energía que es almacenada como NADPH.

Entonces, incluir una fuente de luz roja puede ser útil para la fotosíntesis.

Async / Await?

Este post es una transcripción para estudiar de este vídeo de Fireship 🔥🔥🔥

Cómo funciona el event loop?

Tanto el browser como NodeJS corren siempre un hilo de proceso.

En una vuelta van a correr todo el código sincrónico. Pueden haber eventos asincrónicos que se correran luego como macrotareas y micro tareas.

Las macro tareas se ejecutan al comienzo del próximo ciclo del hilo. Las microtareas (p.e. promesas) se ejecutan antes de que el ciclo presente termine.

Promesas

fetch: es un API del navegador que ‘pide’ a una dirección y nos deja ver cuál es la respuesta (como una promesa).

const url = 'https://jsonplaceholder.typicode.com/todos/1'
const promesa = fetch(url)

Promesa no va a tener el valor de la respuesta hasta que no sea resuelta (es asincrónica) por lo que tenemos que ponerla en cola (queue, o esperar a que se resuelva)

const promesa = fetch(url);
promesa.then( res => res.json() );
// mapear a json tambien es una promesa porque puede
// tomar mucho tiempo

Una caracteristica de esta promesas encadenadas (primero el fetch, luego el json, luego otra cosa) es que se pueden ‘desencadenar’

promesa.
  then( res => res.json() ).
  then( user => console.log('😀', user.title ) )

Por ejemplo,  atrapar un error durante la resolución de las promesas es una promesa especial llamada catch

promesa.
  then( res => res.json() ).
  then( user => console.log('😀', user.title ) ).
  catch(err => console.error('😰',err))

Non-Blocking code

Imagina esto:

const Bloqueadora = () => {
  let i =0;
  while(i<1000000000) i++;
  return 'ya terminé de entorpecer tu hilo de proceso'
}

Esta tarea frenará el hilo de proceso hasta que culmine de contar. Como es algo que nos va a retrasar, podemos hacerla una promesa, y que retorne luego en el futuro

const Bloqueadora = () => {
  return new Promise((resolve, reject) => {
    let i =0;
    while(i<1000000000) i++;
    return 'ya terminé de entorpecer tu hilo de proceso'
  })
}

Pero hacerlo de esta forma está metiendo a la promesa en el ciclo principal. Lo que necesitamos que esté en el ciclo es la resolución  de la promesa.

const Bloqueadora = () => {
  return Promise.resolve().then( x => {
  let i =0;
  while(i<1000000000) i++;
  return 'ya terminé de entorpecer tu hilo de proceso'
})

Async / await y la magia de ES6 🔮🔮🔮

async y await son una forma de hacer más bonita la sintaxis de promesas, sobre todo cuando hay promesas encadenadas:

promiseHell.png

para evitar esto se pueden crear funciones que retornen promesas así:

const getFruta = async (name) => {
  const fruta = {
  pineapple: '🍍',
  peach: '🍑',
  strawberry: '🍓'
  }
  await delay(1000)
  return fruta[name];
}

const hasJugo = async () => {
  const a = await getFruta('pineapple');
  const b = await getFruta('peach');
  return [a, b];
}

Pero esto introduce otro problema, que ahora hasJugo está creando dos promesas consecutivas, en vez de ser paralelas. Para hacer promesas concurrentes no hay magia :(:

const hasJugo = async () => {
  const a = getFruta('pineapple');
  const b = getFruta('peach');
  return Promise.all([a, b]);
}

Ese Promise.all hace que todas las promesas se realicen de manera concurrente.

Normas de buena educación

Es de buena educación que toda la promesa tenga manejo de posibles errores:

const hasJugo = async () => {
try{
  const a = getFruta('pineapple');
  const b = getFruta('peach');

  throw 'la fruta estaba rancia!!!'

  return Promise.all([a, b]);
} catch(err){
    console.error(☠,err)
    //y aca se puede o lanzar un error ó
    //retornar un mensaje
    //return 'el cliente no se va a dar cuenta'
    //throw 'sabe a 💩'
    //return: no modifica la lógica del programa
    //throw: el programa tendrá que hacer un catch
  }
}

Tips de cierre:

hacer await dentro de un map, o cualquiera de esas higher order functions no espera a la resolución de la promesa, la deja ejecutando concurrentemente.

Si se quiere que un loop espere a la resolución de cada promesa antes de continuar con la siguiente se debe hacer un ciclo for:

const fruits = ['peach', 'pineapple', 'strawberry']
const getPromesa = async () => {
  for(const f of fruits){
    const emoji = await getFruta(f);
    console.log(emoji)
  }
}

si se quiere que la cosa sea concurrente, se puede usar el map (que dije que no se usaba)

const fruits = ['peach', 'pineapple', 'strawberry']

const promesas = fruits.map(v=>getFruta(v));
const forFrutas= async () => {
  for await (const fruta of fruits){
  console.log(fruta)
  }
}

o se pueden ejecutar ciertas partes del programa a que esperen la resolución de una promesa sin bloquear así:

const inspection = async () ={
  if(await getFruit('peach') === '🍑'){
    console.log('tiene forma de pompis')
  }
}