viernes, 31 de agosto de 2018

¿Un robot en la cocina?

Moley es un innovador robot que nos facilita la vida en la cocina, en 2014 Mark Oleynik (Fundador de MoleyRobotics) tuvo la grandiosa idea de diseñar un robot chef, desde ese entonces ha desarrollado una prototipo inteligente capaz de cocinar por nosotros imitando las técnicas de los mejores chefs del mundo, equipado con 2 brazos robóticos, sensores táctiles, estufa eléctrica, lava platos, y una pantalla táctil permiten a Moley trabajar de manera espectacular en la cocina, según el propio Mark Oleynik, Moley es uno de los productos más espectaculares del mercado, ya que gracias a él el consumidor tiene acceso a la "cabeza" de los grandes chefs, ya que gracias a Moley, es posible imitar cualquier platillo. 





Para que Moley pueda imitar cualquier platillo es necesario que aprenda la receta, y esto lo hace gracias a unos guantes con sensores de movimiento, luego de procesar la información obtenida y "aprender" todos los pasos hechos por el chef, Moley puede crear una replica casi exacta de cualquier platillo, en un inicio este robot únicamente es capaz de interactuar con los diferentes elementos de la cocina como las ollas, palas, batidora, licuadora, horno, incluso puede mover, triturar y emplatar los alimentos, sin embargo se pretende que en un futuro pueda hacer un "trabajo completo", exacto, también limpiar la cocina.  

Moley está pensado idealmente para todas aquellas personas que por "falta de tiempo", conocimiento o interés no pueden realizar platillos tan elaborados en casa, otra parte importante es que el robot puede ser programado para hacer el desayuno comida o cena a una hora determinada, elegir que platillo va a cocinar en su menú, incluso puede conectarse a internet para que así, sin importar en donde estés, puedas preparar la cena sin ningún contratiempo. 



Pero no todo es miel sobre hojuelas, para poder tener a Moley en tu casa tienes que tener alrededor de 50,000€, que son más o menos $1,108,957 (pesos mexicanos), que en pocas palabras, es casi imposible comprarlo!, pero podría ser una gran inversión para un restaurante, imagina tener acceso a las mejores recetas de los mejores chefs del mundo ... Increíble, no? 

Cómo empezar a programar?

Uno de los retos más grandes al empezar un proyecto de programación es el análisis del problema, en este punto es necesario que el programador tenga una idea clara de la situación así como de los datos que se manejarán durante el proceso, tanto las entradas así como también de las salidas y el tipo de datos que se manejará en cada una de ellas.



Una definición clara del problema y la descripción detallada de la entrada de los valores tanto de entrada como de salida son los elementos clave para poder realizar una programación eficaz, en este punto también es necesario comprender y determinar qué lenguaje de programación es el óptimo en cada caso, puesto que no todos los lenguajes se pueden usar para resolver TODOS los problemas. En la mayoría de los casos los problemas complejos pueden dividirse en problemas más pequeños (sub problemas), los cuales pueden resolverse de manera más fácil y en conjunto poder llegar a la solución general del problema. 

viernes, 24 de agosto de 2018

Microcontroladores

Estar viviendo en la era de los chips en donde están presentes en casi todos los elementos con los que nos relacionamos en nuestra vida cotidiana desde el momento en el que despertamos hasta la hora en que nos vamos a dormir me hace forzosamente explicar lo que es un micro controlador, un micro controlador no es es un circuito integrado que en su interior contiene los mismos bloques de procesamiento que una computadora tal como CPU ROM y RAM, los micro controladores tienen un gran número de aplicaciones debido a que son dispositivos que pueden ser programables, los micro controladores son la parte principal en los sistemas embebidos, puede decirse que un micro controlador es una mini computadora, capaz de procesar información en su interior, la función principal de estos componentes es el de automatizar procesos y procesar información para así realizar alguna función específica.



Una de las principales funciones de estos dispositivos es el ejecutar las instrucciones dadas por el usuario o programador a través de un código, el cual puede escribirse en distintos lenguajes de programación, haciéndolo muy accesible para casi cualquier usuario. A diferencia de los microprocesadores, los micro controladores son unidades auto suficientes y en comparación con los primeros, éstos tienen un precio más accesible, un menor consumo de energía y, además pueden ser reprogramados infinitas veces, permitiendo su uso en casi cualquier cosa, siendo el "cerebro" en gran cantidad de sistemas.


Como dije anteriormente los micro controladores están presentes en casi todo lo que hacemos, debido a que puede dar cierto grado de inteligencia a casi cualquier dispositivo electrónico, su uso de manera individual como en conjunto crece de manera exponencial, teniendo su mayor aplicación en dispositivos usados en el hogar, seguidos por elementos usados en la oficina o escuela y finalmente en los vehículos.

Uno de los usos que a mi parecer es de los más atractivos en donde se usan micro controladores es en la domótica, que no es más que el "arte" que se lleva a cabo para automatizar una casa utilizando tecnologías de control y automatización (como lo son los micro controladores). Mediante el uso de sensores y algunos otros dispositivos electrónicos es posible medir las condiciones en las que se encuentra una vivienda o algún otro espacio cerrado y así poder ejecutar tareas pre establecidas facilitando el ahorro energético, mejorando la seguridad, pero sobre todo creando un espacio más confortable para los residentes.



Más sobre programación

 Como vimos en el post anterior (Lenguajes de programación y tipos de dato) las variables tienen un rol fundamental dentro de la programación, es por esto que ahora vamos a definir  los tipos de operadores...
Los operadores son elementos que nos permiten manipulas a las variables (o constantes) que se tienen dentro de un programa, los operadores se representan mediante símbolos, los cuales indican la acción o el tipo de operador que se está utilizando, es importante mencionar que los operadores tienen una prioridad definida, de tal modo que al momento de colocarlos dentro de nuestro código se debe tomar en cuenta lo anterior, debido a que el resultado que se obtiene puede ser o no el correcto. En programación se pueden dividir en tres grupos.


Los operadores aritméticos nos permiten realizar operaciones matemáticas con los valores (variables), al momento de utilizar éste tipo de operadores es posible manipular los datos como si fueran enteros o reales, cuando todas las variables involucradas pertenecen a la categoría de los enteros el resultado será entero y si alguno de los datos es real (decimal/flotante) el resultado también lo será. A continuación se presenta una lista con operadores aritméticos: 

  • + (Suma)
  • - (Resta)
  • / (División)
  • * (Multiplicación)
  • % (Residuo/modulo)
  • ++ (Incremento)
  • -- (Decremento)

Por otro lado tenemos a los operadores relacionales, que son aquellos que se usan para comparar dos valores, en donde si el resultado de la comparación es correcta la sentencia será verdadera y si la comparación es incorrecta el resultado de la sentencia será falsa, a continuación 
  • < (menor que)
  • > (mayor que)
  • <=(menor igual que)
  • >=(mayor igual que)
  • == (igual que)
  • != (diferente que) 
Por otro lado, los operadores lógicos son aquellos que se utilizan con más frecuencia en la lógica proposicional y álgebra booleana, en este tipo de sentencias el resultado se obtiene después de determinar si la condición propuesta se cumple o no, teniendo como resultado únicamente VERDADERO o FALSO. A continuación se muestran los operadores lógicos vistos en clase: 

  • && And
  • || OR
  • ! NOT



viernes, 17 de agosto de 2018

Tecnología y Transporte público


Hoy en día el uso de la tecnología juega un papel fundamental en la vida del hombre moderno, desde hace algunos años los avances tecnológicos se han aplicado al tema de los transportes, haciendo de ellos un servicio más eficiente y seguro, lo cual refleja un beneficio también tanto para el usuario, así como para el concesionario o dueño de dicho transporte. Debido al incremento en el uso de vehículos particulares a nivel mundial, la necesidad de buscar alternativas para el transporte en la ciudad se ha vuelto indispensable, resultando en la construcción de métodos alternativos para viajar, como lo son las bicicletas /vehículos compartidos(as) e incluso mejoras en el transporte público, así como la inclusión de aplicaciones móviles para todos estos sectores, resultando éstas últimas nuestras mejores aliadas al momento de salir de casa.


Con la entrada de estas tecnologías al mercado se ha visto que el impacto ha sido favorable, tan solo en Querétaro el uso del sistema para el transporte público “Qrobus” promete mejorar la infraestructura que se tiene, además de facilitar el método de pago a través del uso tarjetas de prepago el cual pretende sustituir el uso de papel moneda, contar con unidades monitoreadas vía remota, reducir considerablemente los tiempos de espera y transbordare e incluso mayor seguridad durante los trayectos, lo cual seguirá generando un beneficio para todos sus usuarios.



Por otro lado en el resto del país el uso de las tecnologías también es aplicado, un ejemplo de ello es la aplicación móvil “Sibive” (Sistema de Bitácora Vehicular), la cual permite conocer en “tiempo real” (a través del GPS) el comportamiento de las unidades del transporte público, así como obtener estadísticas del trayecto para así poder realizar una toma de decisiones más acertadas, pues con base en los resultados permite generar u optimizar las rutas para así generar rutas más eficientes, reduciendo costes operativos y maximizando las ganancias.



Otro ejemplo es Moovit, app que resulta ser una de las mejores aplicaciones en el mercado mundial en cuanto al transporte público debido a que basa su infraestructura en Google Maps y Here Maps; mediante el uso de ésta aplicación permite al usuario conocer la mejor ruta o rutas que deberá tomar antes de iniciar un viaje, además de esto permite visualizar en tiempo real la ubicación de la ruta seleccionada para así reducir el tiempo de espera, ofrece también información detallada acerca del viaje como las paradas restantes hasta antes de llegar al destino, entre algunas otras.




Como éstos ejemplos existen en el mercado un gran número de ellos, en donde la principal funcionalidad es informar al usuario acerca de las rutas que seguirá el vehículo con base en una trayectoria específica, la ubicación en tiempo real de la unidad, el tiempo estimado de espera y trayecto del viaje, entre otras…mejorando la experiencia al usuario al momento de hacer uso principalmente del transporte público, lo cual reflejará a un largo plazo ventajas significativas en cuanto a ganancias y preferencia.






Lenguajes de programación y tipos de datos.


Los lenguajes de programación hoy en día nos permiten hacer casi cualquier cosa, a través de ellos podemos controlar el comportamiento de una máquina (siempre y cuando lleve a cabo algún proceso lógico), en el mundo de la informática existe una gran variedad de lenguajes de programación, los cuales están destinado a cumplir con ciertas tareas en específico, es decir, es necesario conocer las aplicaciones de cierto lenguaje y así determinar si es óptimo para implementar alguna tarea haciendo uso de él.

Los lenguajes de programación pueden clasificarse de varios tipos, existe la clasificación por nivel así como también la forma en la cual se ejecutan, por ejemplo, los lenguajes de programación de alto nivel nos permiten realizar varias acciones con pocas palabras, mientras que en los lenguajes de bajo nivel es necesario especificar claramente lo que se quiere hacer de manera más extensa.

Los lenguajes de programación vienen acompañados por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y significado tanto de sus elementos, así como también de sus expresiones. Los lenguajes de programación por lo general se dividen en dos grupos: Lenguajes imperativos y lenguajes funcionales.

Para poder lograr que la máquina comprenda las órdenes que se le dan al momento de realizar un código, es necesario recurrir a un compilador, que es quien se encarga de "traducir" las instrucciones que se tienen en código fuente a un lenguaje comprensible para la máquina.


En programación las variables tienen un rol muy importante pues pude decirse que gracias a ellas es como se puede tratar la información dentro de un programa, las variables son espacios reservados de memoria que como su nombre lo indica pueden cambiar de contenido, es decir la información que contienen puede cambiar después de ejecutar alguna instrucción, recibir un dato, etc. las variables permiten manejar la información de acuerdo a su tipo y permite identificar tanto para el programa como para el programador la clase de datos que pude procesarse dentro de ellos.

Tipos de variables
Los tipos de variable manejados en la mayoría de los lenguajes son los siguientes:
·       INT: almacenan valores numéricos de 16 bits enteros sin decimales entre (-32768 y +32767).
·       CHAR: Maneja caracteres alfabéticos, signos especiales, etc. Su rango es (0 y 255), ocupan un byte de memoria, a las variables de este tipo se puede tratar como si fueran de tipo entero, ya que son convertidas automáticamente a ese tipo cuando aparecen en expresiones. Un carácter se puede identificar por estar cerrado en comillas simples.
·       FLOAT: Trabaja con números decimales comprendidos entre (3.4E-38 y 3.4E+38), este tipo de dato ocupa aproximadamente 4 bytes de memoria.
·       DOUBLE: Permite utilizar números decimales entre (1.7E-308 a 1.7E+308) con 16 dígitos de precisión, ocupa aproximadamente 8 bytes de memoria.
·       VOID: Es un tipo de variable especial que indica la ausencia de tipo, se usa para indicar el tipo del valor que deberá regresarse en funciones en donde no se devuelve ningún valor y también para indicar la ausencia de parámetros en funciones que no los requieren, por otro lado, su uso también se aplica en punteros genéricos.
·       BOOL: Las variables de éste tipo únicamente pueden tomar valores de verdadero y falso, este tipo de variables suelen utilizarse al momento de evaluar expresiones lógicas, o almacenar respuestas cortas (Sí y no).
·       DOUBLE: Este tipo de datos permite almacenar números en formato de coma flotante, muy similar a la forma en como los maneja la variable float, sin embargo su precisión es mayor y por lo tanto necesitará mayor espacio para poder almacenar información, de modo que además de aumentar la precisión de los datos almacenados en ella también necesitará una mayor cantidad de memoria.

A continuación, se presenta una tabla con la información mencionada con anterioridad y se complementa con algunas otras variables que aunque son menos comunes de utilizar también están incluidas dentro de la categoría de variables.



Es importante mencionar que la cantidad de memoria ocupada por cada tipo de dato depende del compilador que se esté utilizando, en cualquier caso, mediante la función sizeof(tipo de dato) es posible determinar en número de bytes ocupados por la variable en cuestión.





viernes, 10 de agosto de 2018

Marketing Bluetooth (Beacons)

Por Alonso Camacho: 

Podemos definir el marketing como un conjunto de actividades que permiten lograr satisfacer las necesidades y deseos de los mercados y así poder obtener un beneficio. Según la Asociación Americana de Marketing con sus siglas en inglés American Marketing Association (A.M.A), “el marketing es un proceso, un conjunto de procedimientos para crear, comunicar, entregar e intercambiar ofertas que tienen valor para los clientes, socios y la sociedad en general”. Dicho de otro modo, el marketing es un conjunto de actividades que analiza detalladamente las necesidades de un grupo de personas y trata de satisfacer dichas necesidades a través de algún producto o servicio y así obtener un beneficio, principalmente para una empresa u organización. (American Marketing Association (AMA), 2017)

A lo largo del tiempo se han ido desarrollando diferentes tipos de marketing. De acuerdo al sitio web “Marketing Zaragoza” (Zaragoza, 2016), existen los diferentes tipos de Marketing:
  • Marketing de atracción: Es una técnica que está diseñada para mostrar al cliente qué es lo que tu producto o servicio hace, así como los beneficios que puede otorgar, todo esto antes de que él lo compre.
  • Marketing de destinos: se puede llamar también como marketing turístico, en donde el sector turístico (restaurantes, bares, hoteles, empresas…) intenta atraer a los clientes por medio de la imagen de ese lugar.
  • Marketing directo: Éste tipo de marketing establece una comunicación directa entre la empresa y el cliente, para ello se puede utilizar el mailing, que consiste en la comunicación por medio del correo electrónico, por otro lado está también el telemarketing, el cual utiliza el teléfono para hacer llegar el mensaje al cliente.
  • Geomarketing: Se basa en la toma de decisiones que se tomen en la empresa a partir del punto de vista del usuario dada la ubicación de éste.
  • Marketing Sectorial: Establece las diferentes formas de realizar el marketing en función del sector económico al cual pertenece la empresa (Bancario, Financiero, Hospitalario, Agrícola, Industrial…)
  • Marketing móvil: Marketing Bluetooth, marketing mediante comunicación vía SMS o llamada directa.

Hoy en día uno de los más importantes está enfocado al marketing online debido al alcance de éste y la capacidad de alcanzar a una mayor cantidad de público, sin embargo, durante estos últimos años se han desarrollado dispositivos que permiten la difusión de información (orientada principalmente al marketing) como lo son los Beacons.

De acuerdo a la publicación hecha por Trío Tecnológico, se tienen en la actualidad 3 grandes herramientas para el envío-recepción de información: el WiFi, el Bluetooth y el infrarrojo. El primero de ellos es la transferencia de datos por medio de rayos infrarrojos, esta tecnología se creó en 1993 por Hp, IBM, Sharp… la transferencia de datos por puertos infrarrojos permiten la comunicación bidireccional y era muy utilizada en los años 90’s incluso en la primera década del 2000 y debido a sus limitaciones fue sustituido por el Bluetooth. Por otra parte el Bluetooth, es una especificación industrial para las redes inalámbricas a nivel persona (WPAN), dicho de otro modo permite la comunicación entre dos o más dispositivos mediante el uso de radiofrecuencias, ésta tecnología se encuentra comúnmente en los celulares, computadoras, vehículos… en donde es necesario sincronizar datos de manera rápida o crear pequeñas redes inalámbricas, también se utiliza como manos libres cuando se conecta a un dispositivo que ofrezca esta herramienta, enviar pequeñas publicidades e incluso como enlace inalámbrico entre sistemas de audio y dispositivos móviles. Finalmente se encuentra el WiFI el cual hace se refiere a la conexión libre de conexiones alámbricas, ésta categoría utiliza el estándar 802.11 el cual permite conectar ordenadores u otros dispositivos a distancia, como su nombre lo indica es posible utilizar la red sin necesidad de realizar la conexión física entre el dispositivo (celular u ordenador) y el punto de acceso. La conexión WiFi es una red confiable y muy rápida, funciona de la misma forma que lo hacen los teléfonos celulares, por tal motivo es posible encontrarla en casi todos lados como punto de acceso a internet. (Trío_Tecnológico, 2012) (ebanking news, 2014 )
Los Beacons son pequeños dispositivos de bajo consumo, los cuales emiten señales de radio a smartphones, tablets o algún otro dispositivo capaz de recibir esta señal, por lo general es emitida por un dispositivo Bluetooth de baja energía (BLE).

Dentro de la categoría de marketing por proximidad, en donde se utilizan códigos QR o sistemas NFC, los Beacons, además de ser, como se mencionó anteriormente, de bajo costo, tienen la capacidad de tener un mayor alcance siempre y cuando el receptor se encuentre dentro de la zona de influencia.





Ilustración 1. Ejemplo del funcionamiento de los Beacons en un establecimiento


Además del marketing, los Beacons tienen un gran número de aplicaciones. Estos dispositivos pueden ser utilizados para guiar gente dentro de entornos urbanos, tanto interiores como en exteriores, proporcionar información de gran relevancia como emergencias, salidas de emergencia, planes de evacuación, etc., todo esto en tiempo real y usando la ubicación del usuario (Mendelson, 2011).
Ilustración 2. Ubicación de un dispositivo mediante Beacons

Además de tener la capacidad de desarrollar marketing, los Beacons ofrecen también otras herramientas como lo es la geolocalización dentro de entornos cerrados, que a diferencia del GPS, nos permite determinar la localización de algún dispositivo u objeto de manera más precisa, es decir, nos permite realizar la microlocalización, dicho de otro modo, los Beacons nos permiten ubicar “algo” de manera muy precisa, teniendo un rango de error muy bajo, en centímetros, en comparación con el GPS. Nos permiten también la posibilidad de realizar pagos virtuales, en donde nuestro dispositivo móvil estará vinculado a una de nuestras cuentas y al momento de pasarlo por alguna terminal en específico se podrá realizar el cobro sin la necesidad de utilizar dinero en efectivo.
Ilustración 4. Uso de los Beacons

En el año 2013, la compañía ESTIMOTE Inc. presentó la patente de sus dispositivos los cuales permiten la distribución de notificaciones emergentes en dispositivos móviles así como también la microlocalización, en donde a través de la emisión de información por parte de un dispositivo con un identificador y conectividad Bluetooth (balizas) es posible llevar a cabo una comunicación entre el dispositivo móvil y la baliza, logrando así el intercambio de información (datos).



jueves, 9 de agosto de 2018

Algoritmos?

Los algoritmos juegan un papel crucial en nuestra vida cotidiana, están presentes a pesar de si quiera darnos cuenta de ello, un algoritmo no es más que una secuencia ordenada y finita de pasos o instrucciones las cuales nos permitirán llegar a un resultado u objetivo en específico. En nuestro día con día utilizamos algoritmos en todo momento, para mover nuestro brazo, caminar, hacer una receta de cocina o procedimientos algebraicos son solo algunos del sin número de aplicaciones que tienen los algoritmos, que dicho de otro modo, los algoritmos no son más que una eficaz herramienta que utilizamos a diario para encontrar la solución de problemas a los que nos enfrentamos. 

Los algoritmos se han convertido en una de las herramientas lógicas más importantes de la tecnología del siglo XXI, pues en la mayoría de los casos el funcionamiento de dichos dispositivos (herramientas) basan su funcionamiento en complejos algoritmos que facilitan la realización de ciertas de tareas, ahora, con el crecimiento exponencial de la era de la información, los algoritmos juegan cada vez más un papel importante, puesto  que se apropian cada vez  más de los procesos tecnológicos que se involucran en nuestra vida cotidiana, en especial al manejo de grandes cantidades de información, la cual permite optimizar las tareas realizadas por cierto programa o buscador, teniendo como resultado el poder resolver problemas en específico.



Como dije con anterioridad, hoy en día los algoritmos son los encargados de manejar grandes cantidades de información, en donde todo aquello que se  muestra en nuestras Redes Sociales (Facebook, Twitter, Instagram) o algún otro medio electrónico dependen en su mayoría del uso de complejos algoritmos que nos permiten visualizar en nuestro dispositivo lo que a nosotros nos interesa con base en la información que le hemos proporcionado anteriormente.

Desde mi punto de vista considero que los algoritmos han jugado un papel muy importante desde el inicio de la humanidad puesto que gracias a ellos hemos podido encontrar la manera más eficaz de resolver los problemas a los que nos enfrentamos día con día, sin embargo estos evolucionan de acuerdo a los requerimientos que se tengan, por ello, en algunas ocasiones, resulta inútil utilizar un algoritmo "viejo" para solucionar problemas actuales.



viernes, 3 de agosto de 2018

Un poco acerca de mi...

Para empezar...


En éste blog estaré compartiendo un poco acerca de mis gustos y cosas de la escuela, más en específico de la materia de introducción a la programación, como primer paso, empezaré contando un poco acerca de mi.


Me llamo Alonso Camacho, tengo 22 años, soy originario de la ciudad de Santiago de Querétaro, anteriormente estuve estudiando Ingeniería en Automatización en la Facultad de Ingeniería en la Universidad Autónoma de Querétaro, fue ahí en donde tuve mi primer contacto con la programación y a partir de ahí me llamó muchísimo la atención, ahí aprendí algunos lenguajes de programación como C++ y un poco de Java, además de HTML (aunque ese es más como un lenguaje de etiquetas), después de tomar un curso de programación para dispositivos móviles (Android) fue cuando decidí tomar un rumbo diferente y decidí cambiar de carrera, ahora estoy cursando el primer semestre de Ingeniería en Software de la Facultad de Informática también de la UAQ.


Desde que tengo memoria siempre me ha llamado la atención saber cómo y por qué funcionan las cosas (todas) y es ese un gran motivo para inclinarme hacia las ingenierías!!

También me gusta mucho la música, toco varios instrumentos pero el que más me gusta es el acordeón, llevo tocando ese instrumento desde los 12 años, he estado en varios grupos, incluso cuando entré en ingeniería hice un grupo norteño con mis amigos :D



Me gusta ver Netflix y jugar algunos videojuegos (para la compu o para el celular)!

Me gusta practicar deporte, estuve en el equipo representativo de la prepa (Prepa Sur) y también en el de la Facultad de Ingeniería, juego también un deporte poco conocido llamado Ultimate Frisbee (les dejaré un video para que lo conozcan)...



Si quieres conocer más de mi te invito a mantenerte al tanto de este blog...