Comunicación Satelital a la medida

Standard

Que tal amigos lectores, es un placer como siempre volver a tener la oportunidad de compartirles un poco de conocimiento. Esta vez hablaremos de una tecnología que puede ser de mucha utilidad para algún proyecto que planeen capitalizar.

Imaginen que necesitan supervisar el estado de un proceso en otro país, o en un lugar muy lejano donde no tengan acceso a ningún tipo de red como Internet, redes móviles como 3G, en fin, ustedes entenderán a lo que me refiero. Para este tipo de situaciones existe la posibilidad de utilizar la tecnología de comunicación Satelital.

iridium_next_605px Continue reading

Software + Hardware = ?

Standard

Que tal amables lectores, me da gusto compartirles un poco de información nuevamente.

Esta vez el contenido de esta publicación está dirigido a todos aquellos profesionistas electrónicos/mecatrónicos y también para informáticos/sistemasComputaciones/TIC’s.
Personalmente yo como mecatrónico en muchas ocasiones he presenciado y también he experimentado algunos roces con profesionistas afines a la informática cuando trabajamos en conjunto para un determinado proyecto. Sobre todo en cuanto a programación se refiere. Los mecatrónicos y electrónicos somos personas que utilizamos plataformas  de sistemas embebidos como Arduino, (la cual ya he publicado bastante anteriormente) que nos sirve para realizar una serie de acciones como respuesta a ciertos eventos utilizando programación, y nos va muy bien ya que el manejo de software nos brinda mucha flexibilidad ante cualquier modificación funcional. Esto es muy importante, ya que si desarrollamos utilizando solamente hardware para lograr nuestro objetivo, hay que tener en cuenta que cualquier modificación implica agregar y/o quitar dispositivos físicos lo que ocasiona prolongar bastante los tiempos de desarrollo. Es por esa razón que las plataformas de software embebido se mantienen en crecimiento constante.

Continue reading

Android: Reproducir vídeo desde URL de Google Drive usando VideoView

Standard

google_drive_logo_3963Qué tal. En el post de hoy, retomaré un tema visto antes en este mismo blog pero en una faceta diferente a la del ejemplo anterior. Hablamos antes sobre como reproducir un vídeo en la vista VideoView de Android, pero en aquella ocasión, para fines prácticos, solo se reprodujo un vídeo previamente añadido a los resources de nuestra aplicación.

Hace unas semanas uno de nuestros lectores solicitó ayuda sobre cómo reproducir un vídeo mediante una URL de Google Drive directamente en la vista VideoView, y me parece una buena idea compartir con ustedes la solución que se encontró para ese caso específico. Para esto, se tomó como referencia una respuesta de StackOverflow consultada para la decodificación de la URL en cuestión.

Entonces, sin mayor preámbulo, pasemos a la implementación de nuestro ejemplo. Pueden encontrar en GitHub el CÓDIGO COMPLETO DEL PROYECTO, ya que en el presente post sólo se mostrarán las partes importantes del mismo.

Continue reading

Hablando de API’s (Parte 2)

Standard

Hola de nuevo, ¿cómo están?

Vamos a retomar el tema de las API’s. Como quedamos la entrega anterior, vamos a empezar a desarrollar una API REST, esto para que nos quede un poco más claro todo este tema. Desarrollaremos nuestra API sobre el tema medico, con la cual podremos ofrecer a un profesional de la salud un servicio donde pueda registrar a sus pacientes, llevar a cabo una consulta y que pueda agendar dichas consultas. Esto con el fin de que pueda tener un registro de sus pacientes con información básica; así como también un historial por cada paciente de los hallazgos en sus consultas y los temas que se trataron en ella. Como ya les había mencionado, para el desarrollo de nuestra API utilizaremos Ruby on Rails en su versión 5. Sin mas que decir, empecemos nuestro desarrollo.

Lo primero que haremos sera crear un nuevo proyecto en Rails, especificando que utilizaremos una base de datos mysql, al cual yo nombrare como healthcareapi

rails new healthcareapi -d mysql --api

Continue reading

Web Scraping With Python and BeautifulSoup Library

Standard

apython

Some time ago i wrote a post about web crawling using google´s api (See here). However, it lacks of HTML labels recognition support and it becomes tedious to find key components on web pages.

In this post, i will try to show you how to successfully recognize web page’s key HTML labels such as title, div, etc using a library named BeautifulSoup using the programming language Python. For this reason, we need to have basic HTML and python knowledge. For experiment purposes i will be using the native python installation on OSX 10.11.5 “El Capitan”. Continue reading

Aprender a Programar Jugando

Standard

Hola a todos, en mi post anterior nos pusimos serios revisando los tipos de competencias que un buen programador debe de contar en su arsenal de conocimientos y habilidades. En este post vamos a enfocarnos en el aprendizaje continuo, pero jugando. 😃

Habiendo actualmente tantos recursos donde aprender como:

  • Libros.
  • Blogs.
  • Tutoriales.
  • Videos.
  • MOOC (Massive Online Open Courses)
  • Degrees y Nanodegrees. (De estos dos últimos hablaré en algún post a futuro).
  • otros…
Destaca uno en particular que son los juegos, que te ayudan a reforzar los conceptos de programación, inteligencia artificial (AI)  o herramientas, tratan de hacerlo divertido en el proceso y promueven que aprendas “ensuciandote las manos”.
Les voy a compartir tres juegos que he usado y estoy usando actualmente en tres plataformas y herramientas diferentes: VIM, R y Ruby.
zelda-nes
Zelda NES Screenshot (tomada de http://www.EmuParadse.me)

Continue reading

Teoria de Grafos I

Standard

Hola a todos espero y tengan un buen día, el día de hoy en esta primera parte de este blog vamos a empaparnos un poco acerca de a teoría grafos, espero y les sea útil, bien pues comencemos.

¿Que es un grafo?

Pues un grafo es una colección finita de vértices o nodos(nodes) y aristas (edges).Seguramente se preguntaran, ¿lo usamos en nuestra vida diaria?. Vamos a poner un ejemplo: Facebook. La inmensa red social que seguramente usamos casi a diario, es considerada un grafo social (social graph). En este grafo, cada persona es considerada un nodo del grafo y cada arista es la encargada de relacionar a dos personas. En facebook un amigo tuyo es una relación bi-direccional. Ejemplo A es amigo de B => B es amigo de A, entonces estamos hablando de un grafo no­-dirigido.

Cada arista de un grafo es representado como un par ordenado (u,v) donde (u,v) indica que existe una arista del vértice u al vértice v. Las aristas es posible que contengan un costo(cost), un peso (weight) o longitud (length). La valencia de un vértice es es el numero de aristas que conectan a este mismo. Continue reading

Hablemos de API’s (Parte 1)

Standard

Hola que tal, espero se encuentren muy bien! Hace algún tiempo que no escribía en el blog, espero que este tema sea de su interés y que lo disfruten.

En esta ocasión, abordaremos un tema de moda desde hace algún tiempo, en el cual he tenido la oportunidad de involucrarme desde hace algunos proyectos: Las API’s

Las API (Application Programming Interface, por sus siglas en ingles), son interfaces que nos permiten interactuar con un sistema de una manera mas practica y escalable, sin necesariamente saber que sucede detrás. Desde métodos para realizar acciones de un CRUD, hasta solo mandar una cantidad mínima de datos y que la API nos resuelva todo un proceso que seria extremadamente complejo o tardaríamos una eternidad en completar por nuestra cuenta. Nos permiten encapsular y separar los componentes de un sistema para poder compartirlos con otros usuarios (personas o sistemas). Si lo ponemos en términos mas simples, una API son una serie de acuerdos y requisitos de como una aplicación se comunicara con otra. Continue reading

Android: Conexión simultánea con múltiples dispositivos BLE + sensor Acelerómetro

Standard

 

Imagen tomada de: http://pocketnow.com/2013/01/17/bluetooth-low-energy

Imagen tomada de: http://pocketnow.com/2013/01/17/bluetooth-low-energy

¡Qué tal, gente! Después de un algún tiempo sin publicar, traigo para ustedes este ejemplo práctico y resumido (aunque usted no lo crea) de una implementación a la medida que fue realizada recientemente para un proyecto en el que me encuentro colaborando.

La situación—brevemente explicada— es esta: es necesario, mediante una app Android para móvil, conectarse como mínimo con 3 dispositivos BLE 4.0 vestibles de manera simultánea y leer los datos de sus diversos sensores en tiempo real. Los dispositivos en cuestión no cuentan con el sistema operativo Android instalado.

Para fines prácticos, en el presente ejemplo sólo se leen y muestran los datos del sensor acelerómetro de los dispositivos BLE 4.0 utilizados. Cabe destacar, además, que se consiguió conectar con hasta 4 dispositivos simultáneamente, esto ya que no se contaba con una cantidad mayor de los mismos. Por lo tanto, me aventuro a conjeturar que es probablemente viable el conectar con más de 4 dispositivos sin problema mediante esta aplicación.

Y bien, sin mayor preámbulo, pasemos a la descripción de las clases y layouts necesarios para construir nuestra aplicación de prueba. Pueden encontrar en GitHub el CÓDIGO COMPLETO DEL PROYECTO.

Continue reading

Matriz de Competencias del Programador

Standard

Esta publicación es el resultado de la experiencia como programador y de la lectura de varios libros, no tanto de una tecnología o plataforma en concreto, si no más bien de conceptos, patrones y buenas prácticas.

En particular decidí escribir al respecto por un par de blogs y un libro que fueron seminales para esta idea:
– La discusión por la cuál nació la idea de este post, aquí se referencia la matriz, y a aparte hay una discusión muy interesante a favor y en contra de estos puntos.
– La matriz de la cual me tomé la libertad de traducir y agregar mis comentarios.
– 97 cosas que todo programador debería saber. A través de historias y anécdotas de programadores experimentados, van ilustrando algunos de los puntos considerados en esta matriz.
Cabe mencionar que más que volvernos expertos en herramientas, yo valoro los atributos como que este fuerte en los conceptos necesarios para ser programadores exitosos, ya que debido a la experiencia, las herramientas, frameworks, etc., pueden variar, pero las buenas bases y prácticas aceleran la adopción de nuevas tecnologías y mejora el desempeño de los equipos.
Gran parte de estos puntos los estamos utilizando activamente en Hunabsys, para definir que buscamos en nuestros equipos de desarrollo, en qué los vamos a entrenar y como base para seleccionar algún nuevo integrante.

Continue reading