Mi juego de Spaceships en CodeSkulptor

Hace bastante tiempo, termine mi primer MOOC en Coursera: Interactive Programming in Python. Lo recuerdo como uno de los mejores básicamente por la manera como los proyectos semanales crecían sobre la base del anterior.

Recientemente encontré el código usado en mi entrega final. Es nada más y nada menos que mi versión de Asteroids en CodeSkulptor. Para correrlo, solo hace falta ir aquí y hacer click en ►

Spaceship Game
Spaceship corriendo en Chrome!

Programacion Funcional en Python

Como parte de mi colaboración con el grupo de Meetup de PyData Panama, he creado una pequeña presentación a manera de introducción a los conceptos de la programación funcional que pueden ser usados en Python.

Además, como compañía, adjunto el excelente libro de Stephen Lott, «Functional Python Programming» publicado por PACKT Publishing.

Functional Python Programming – Steve Lott

GraphQL: La nueva (y mejorada) forma de construir API’s

En la última conferencia de desarrolladores de GitHub, la empresa hizo un gran anuncio: Su nueva API GraphQL, la cual ha sido publicada para su acceso a través del programa de acceso temprano. En este post, hago un esfuerzo por explicar qué es GraphQL y por qué es importante para la comunidad.

"Un lenguaje de consultas para tus API's"
«Un lenguaje de consultas para tus API’s»

Primero, un poco de historia.

GraphQL fue creado en Facebook y liberado como un proyecto Open-Source, de igual manera que React.js. La idea original era permitir que los clientes de los servicios Rest pudieran decidir qué información le interesa en un particular end-point.  Quienes han trabajado desarrollando servicios REST, sabrán que muchas veces la cantidad de información que termina devolviendo un end-point particular es enorme, y no todos los casos de uso la consumen en su totalidad.

¿Por qué importa?

¿Por qué si los servicios REST de GitHub son tan alabados en la industria, ahora se mudan a GraphQL?. Por la misma razón que otros gigantes de la industria han comenzado a adoptarlo. Los detalles están en su anuncio, pero el resumen es el siguiente:

  • REST requiere varias consultas, GraphQL requiere solo una.
  • Con REST, se consulta o mucha o muy poca data. Con GraphQL se consulta exactamente lo que se necesita.
  • REST por lo general se convierte en un laberinto de endpoints mal documentados. GraphQL es altamente tipado y auto-documentado.

En las palabras del equipo responsable de la plataforma en GitHub:

GraphQL representa un masivo salto en el desarrollo de API’s. Tipado seguro, introspección, documentación generada y respuestas predecibles, van a beneficiar tanto a los desarrolladores como a los consumidores de nuestra plataforma. Ansiamos una nueva era de plataformas respaldadas por GraphQL y esperamos que ustedes también.

¿Cómo se ve?

Si se firma el acuerdo de pre-release, tendremos acceso al explorador de API’s. Es básicamente GraphiQL, un IDE para explorar API’s GraphQL.

La primera consulta de prueba.
La primera consulta de prueba.

Después de un par de segundos experimentando, mi primera consulta me devuelve una respuesta –Funciona!. Se puede consultar la documentación del API para saber cuáles mutaciones o consultas se pueden hacer. Es básicamente lo esperado: Se pueden buscar usuarios, organizaciones y obtener información de nuestra propia cuenta GitHub.

Obteniendo información de mis Repos
Obteniendo información de mis Repos…

Y claro, también realicé un comentario desde el API!:

Comentar desde el API? Hell yeah!
Comentar desde el API? Hell yeah!

¿Cómo Aprender?

Si GraphQL te emociona como a mi, entonces probablemente estarás preguntándote la mejor manera de implementarlo en tus proyectos. Acá dejo algunos recursos y tutoriales para comenzar.

Tutoriales:

Recursos:

Spark y Project Tungsten

Sin duda alguna, Spark es el nuevo gran protagonista en la escena Big Data. La meta de Spark siempre ha sido ofrecer una plataforma unica donde los usuarios puedan obtener los mejores algoritmos distribuidos para cualquier tarea de procesamiento de datos.spark-logo-trademarkPara hacer esto, Spark cuenta con una herramienta llamada RDD, o Resilient Distributed Dataframe. Sin embargo los RDD’s han sido completamente mejorados con Project Tungsten. Los beneficios de Tungsten podran verse a partir de Spark V 1.6+ y lo mejor: Cloudera Manager lo tiene disponible desde la version 5.8.

Acceder data en HDFS desde Python

Cuando se trabaja con Big Data, independientemente de si usamos Spark o trabajos Map-Reduce, generalmente nos encontraremos con el sistema de archivos distribuidos de Hadoop, HDFS.

El problema con HDFS siempre ha sido que acceder/modificar la data es un proceso tedioso, que casi siempre involucra realizar comandos dfs en una consola. Esto dificulta muchísimo automatizar scripts (a excepción de shell scripts) para realizar nuestras consultas.  Por esta razón, el equipo de Hadoop creó HttpFs, el cual es un portal hacia HDFS haciendo uso de servicios Rest que corren en el Namenode.

hdfsstatus

Para Python, les recomiendo el excelente proyecto Open-Source HdfsCLIEl mismo no es más que una atadura al propio servicio de HttpFS (y WebHDFS) que provee la mayoría de los métodos relevantes a través de un API y una interfaz de CLI.

La documentación está disponible en: https://hdfscli.readthedocs.io/en/latest/

Toma la mejor clase de Harvard en Realidad Virtual!.

Desde hace un tiempo, la que es considerada la mejor y mas popular clase en Harvard, Computer Science 50 (CS50 ) ha estado disponible online para los alumnos de la institución, o para el mundo a través de EDX, donde es por mucho la clase mas popular, CS50x.

Desde la semana pasada, sin embargo, el Canal de Harvard en Youtube ha estado subiendo las clases en formato VR 360. Esto significa que las mismas pueden ser visualizadas con la ayuda de un Google Cardboard, un Oculus Rift, un Samsung Gear VR o cualquier otro dispositivo similar y sentir que estás en el aula, en primera fila. Ya no hay excusas para entrar en Harvard…

Por cierto, que las mismas fueron capturadas con una cámara Nokia Ozo de $45000, que proporciona videos en perfecto 3D, y un sonido espacial que ofrecen altos grados de inmersión.

La cámara VR de Nokia
La cámara VR de Nokia

Herramientas para ahorrar tiempo en el desarrollo.

Les presento una pequeña colección de las herramientas mas útiles para ahorrar tiempo en el desarrollo para diversas tecnologías y lenguajes.  Si tienes un proyecto con tiempos de entrega cortos, te interesará ver que hay en la lista para tu necesidad.

developertools_icon

Prototipado (Mockups)
Marvel – https://marvelapp.com/
Invisionapp – http://invisionapp.com/
Origami (Facebook) – https://facebook.github.io/origami/
Codiqa – https://codiqa.com/
Precursor – https://precursorapp.com/
Flinto – https://www.flinto.com/
Framer – http://framerjs.com/

Móvil
PhoneGap – http://phonegap.com/
Ionic – http://ionicframework.com/

iOS
Framework7 – http://www.idangero.us/framework7/

Front-end
Twitter Bower – http://bower.io/
Twitter Bootstrap – http://twitter.github.com/bootstrap/
HTML5 boilerplate – http://html5boilerplate.com/
ReactJS – http://facebook.github.io/react/
AngularJS – http://angularjs.org/
JQueryUI – http://jqueryui.com/
JQuery – http://jquery.com/
EmberJS – http://emberjs.com/
Backbonejs – http://backbonejs.org/
CanJS – http://canjs.com/
YUI library – http://yuilibrary.com/
Gumby framework – http://gumbyframework.com/
xchema xtyle – http://xtyle.xchema.com
NinjaUI – http://ninjaui.com/
CoffeeScript – http://coffeescript.org/
Less css – http://lesscss.org/
SaSS css – http://sass-lang.com/
Cappuccino – http://cappuccino.org/
Jasmine – http://pivotal.github.com/jasmine/
Mocha – http://visionmedia.github.com/mocha/
QUnit –http://qunitjs.com/
CodeKit – http://incident57.com/codekit/
Grunt – https://github.com/cowboy/grunt
Yeoman – http://yeoman.io/
ComponentJS – http://component.io/
TodoMVC – http://todomvc.com/
SpaceBase – http://spacebase.space150.com/

Servidores y Redes
Vagrant (virtualizacion) – http://vagrantup.com/
Puppet (automatizacion) – http://puppetlabs.com/
ZeroMQ (sockets) – http://www.zeromq.org/
RabbitMQ (mensajes) – http://www.rabbitmq.com/

PHP
Laravel Framework – http://laravel.com/
CodeIgniter Framework – http://codeigniter.com/
Wordpress Framework – http://wordpress.org/
Joomla Framework – http://www.joomla.org/

JavaScript
nodeJS – http://nodejs.org/
Express Framework – http://expressjs.com/
Socket.io – http://socket.io/
Meteor – http://www.meteor.com/
Derby – http://derbyjs.com/
TowerJS – http://towerjs.org/
Geddy – http://geddyjs.org/

Python
Flask – http://flask.pocoo.org/
Django – https://www.djangoproject.com/

Ruby
Rails – http://rubyonrails.org/
Sinatra – http://www.sinatrarb.com/

Java
Hibernate (ORM)- http://www.hibernate.org/
Play framework – http://www.playframework.org/

Panama PyData 2: Spark vs Pandas Dataframes

Comparto con los asistentes al Meetup del 24 de Septiembre de PyData Panama, la presentación que acompaña mi taller: Pandas vs Spark Dataframes – Una introducción a las arquitecturas distribuidas.

Los notebooks de iPython que acompañaron el taller están disponibles en mi repo en GitHub: https://github.com/sansagara/Panama-PyData

PySpark Talk
PySpark Talk

Los invito entonces a unise al grupo  http://meetu.ps/e/C15vZ/xHDxP/f

Cómo ser un Hacker en 5 minutos.

Primero, una renuncia de responsabilidad: El título de este post se supone que sea una broma. Si es que su absurdidad no es obvia.  Es una burla de todos esos libros, cursos y material que prometen enseñarnos a <inserte skill técnico aquí> en 1 semana.

Sin embargo, estoy seguro que http://hackertyper.net/ realmente los hará sentir como un hacker sin el menor esfuerzo! Una vez dentro, solo se debe teclear lo más rápido posible. ¡Y reír un poco!

Sin esfuerzo!
Sin esfuerzo!

Angular 2 es oficial!.

Noticias emocionantes para los seguidores del proyecto Angular y los desarrolladores front-end en general: Angular 2 tiene versión oficial!.

Angular 2
The Angular2 Shield

 

Comparto acá algunos excelentes recursos de Angular 2: