Apuntes sobre seguridad y privacidad en la web (charla de Tim Bray – GOTO Aarhus)

footprintsHoy estuve en una charla de Tim Bray sobre seguridad y privacidad y no quería dormir sin compartir en una entrada algunos puntos que me parecieron interesantes:

  • Ofrecer nuestros servicios en HTTPS es nuestra responsabilidad como desarrolladores de tecnologías/software.
  • Es increíble la cantidad de páginas que no ofrecen sus servicios en https (prueba cambiando el protocolo manualmente).
  • Usa autenticación de dos factores siempre que sea posible.
  • Podemos ofrecer la autenticación de dos factores para nuestros sitios utilizando google authenticator.
  • Es importante comprender aunque sea de manera básica cómo funciona la criptografía de clave pública y privada.
  • Hay muchas librerías fáciles de usar para criptografía de clave pública y privada.
  • Dejar de utilizar certificados sha-1. Google anunció en semanas recientes que comenzará a promover la transición de sha-1 a algoritmos de hash más seguros (sha-256). Así que en unos meses quizás, las páginas que todavía tengan certificados sha-1 portarán también un signo de interrogación junto al candado de la barra de direcciones del navegador.
  • Una manera de detectar ataques de tipo “man in the middle” es utilizando una técnica llamada certificate pinning.
  • Los gobiernos y algunas empresas quieren tener acceso a nuestra información. No lo hagamos fácil. Tenemos dos armas en contra de eso. La política y las matemáticas.
  • El monitoreo de los datos/actividades es considerado un ataque y se deberá de tomar en cuenta en el diseño de nuevos protocolos (IETF RFC 7258).
  • Para Geeks que quieren más detalles, una lectura interesante puede ser el formato de mensajes OpenPGP (IETF RFC 4880).
  • Uno de los problemas con la criptografía de claves públicas y privadas es que tienes que conocer la clave pública de la otra persona para poder encriptar un mensaje que le envías. Keybase.io es un directorio de claves públicas que soluciona este problema.
  • Para Android, la aplicación OpenKeyChain se puede utilizar para enviar y recibir mensajes encriptados. El uso de estas tecnologías todavía no es tan sencillo, pero se está trabajando en ello.

* La imagen del zorro con la lupa es de Caroline Hadilaksono

Etiquetado , ,

Las 7 charlas que me parecen más interesantes del Devoxx 2013

Devoxx

Hace unos días recibí un correo del sitio Parleys.com anunciando que todas las charlas del Devoxx 2013 ya están disponibles en su página.

Parleys.com es un sitio que se especializa en combinar y sincronizar los videos y las diapositivas de charlas en eventos sobre temas de tecnología e informática.

Devoxx es un evento anual europeo dedicado a temas de desarrollo de software.

En total, los videos publicados del Devoxx 2013 son más de 200. Así que decidí leer los títulos y la descripción de cada uno, hacer un filtro y seleccionar las 7 charlas que me parecen más interesantes.

Acabé con una lista de 10 charlas y decidí eliminar 3 por tratar sobre el mismo tema (interfaz de usuario en Android).

Las 7 charlas que me parecen más interesantes del Devoxx 2013:

Al final esta lista contiene una capirotada de temas: HTML5, CSS3, JavaScript, jQuery, Angular JS, Bootstrap, Mobile, CoffeeScript, GitHub, programación funcional, Page Speed, Apache, JSON con Jackson, caching, REST, seguridad, load testing, profiling, Wro4j, Heroku, Cloudbees, AWS, Android, Dependency Injection para Android, Dagger, Java 8, expresiones lambda en el JDK8, JDK8 collection API, JDK8 Stream and Collector APIs, Flyway, Hazelcast, clustered HTTP sessions, sistemas distribuidos,  efectos gráficos y animaciones en Android.

Etiquetado , , ,

¿Andas hipster? – Prueba JHipster: lo mejor de Javascript con un backend en Java

hipster-bow-tie

Es increíble la cantidad de herramientas que existen hoy en día para crear aplicaciones web de manera súper profesional, rápido y fácil. Listo sólo algunas de estas herramientas: node.js, grunt, gulp.js, bower, angular, yeoman, socket.io, karma, jasmine, sass, less, haml, coffescript, etc…

La mayoría de estas herramientas son desarrolladas en  javascript/node.js o en ruby. Todo este rollo poliglota puede resultar un poco intimidante para quienes se autodenominan “desarrollador java” o “desarrollador backend”. Incluso algunos “desarrolladores java senior certificados nivel 3GS” (nótese el tono sarcástico) quizás opinen que todas estas tecnologías no están suficientemente maduras para ser utilizadas en aplicaciones empresariales a gran escala. Yo opino que son lo más sexy que he visto en mi corta carrera y me encanta descubrir cada día nuevas creaciones.

Pues si tu perteneces a esta categoría (desarrollador java, java y sólo java) y no has tenido la oportunidad de probar el mundo alternativo, joven, hippy y feliz de power-javascript, te invito a dejarte de prejuicios y darle una probadita a este rollo.

JHipster al rescate

Una manera muy cómoda de hacerlo es usando JHipster, un generador o scaffolder que combina muchas de estas tecnologías en un workflow que nos resulte familiar a los javeros: maven o gradle + spring + jetty o tomcat.

Puedes leer más acerca de JHipster en su sitio pero te recomiendo no leer mucho, instalarte los pre-requisitos (node + yeoman + grunt o algo así), crear una aplicación JHipster y comenzar a jugar con ella. Si alguna parte del workflow te gusta y quieres integrarlo a tu proyecto, puedes encontrar los detalles en el pom.xml o build.gradle

Etiquetado , ,

Pair programming sin tortícolis: un sencillo consejo para no sufrir con la programación en pareja

Pair programming

Practicar programación en pareja (o pair programming en inglés) es muy divertido y efectivo. Pero también es muy extenuante, tanto física como mentalmente.

Una de las cosas que más me molesta de programar en pareja es el no encontrar la postura corporal adecuada.

Cuando estoy con otro colega sentado frente al mismo escritorio leyendo código del mismo monitor, uno de los dos tiene que hacer un esfuerzo especial para alcanzar a ver el monitor. Al final terminanamos los dos acurrucados en torno a la pantalla con los ojos entrecerrados y el cuello torcido.

Sigue leyendo

Etiquetado , ,

La guía de estilo de Google para código Java

Google publicó a inicios del 2014 su “guía de estilo” para código Java. Estas convenciones resultan interesantes no sólo para quienes planean trabajar en el Googleplex sino para cualquier profesional trabajando en projectos con un equipo de desarrolladores.

Considero importante que en un proyecto existan ciertos lineamientos en cuanto al estilo del código; siempre y cuando no se abrume al desarrollador con una lista interminable de reglas sin sentido. Por eso me gustó esta lista de recomendaciones de Google: porque es una lista pequeña y muy sencilla.

Échale un vistazo a la guía de estilo de Google para código Java

Para usuarios de eclipse

También es posible importar el perfil del “code formatter” para eclipse:

  1. Bája una copia del perfil del “code formatter”.
  2. Importa el perfil en eclipse: Window -> Preferencies -> Java -> Code Style -> Formatter -> Import

Imagen

Etiquetado , , ,

Monitoreo de errores en el cliente: un enfoque práctico para aplicaciones web

monitoreo-errores-en-el-cliente

Hace unos días atendí a la presentación en Hamburgo del radar tecnológico 2014 de Thoughtworks. Este documento, que publica la empresa Thoughtworks cada año, contiene una colección de tecnologías que el consejo técnico de la empresa considera interesantes; ya sea por haber servido para desarrollar mejores soluciones en los proyectos de sus clientes o por haber causado problemas.

Una de las técnicas que se encuentra este año en la lista de recomendaciones es la captura de errores de javascript que suceden en el cliente con el fin de identificar problemas de incompatibilidad entre navegadores o problemas con plugins y extensiones de navegador.

Sigue leyendo

Etiquetado , , ,

Quitándole el tedio a las pruebas unitarias en Java

tedio-de-pruebas-unitarias-java

Escribir pruebas unitarias en Java puede resultar muy tedioso y repetitivo si no se cuenta con la preparación adecuada del entorno de desarrollo (IDE). En este breve artículo se dan algunos ejemplos de esta situación y se presentan herramientas que ayudan a hacer de las pruebas unitarias en Java una experiencia más agradable.

Sigue leyendo

Un Raspberry Pi más en México

Mi novia se me adelantó y me regaló un raspberry-pi modelo B de navidad. De buenas que yo todavía no lo había comprado. Después de encontrar las piezas faltantes en mis cajones logré echarlo a andar con una tarjeta SD de 2 GB corriendo archlinux. Lamentablemente no encontré ningún cable de red y hoy todas las tiendas están cerradas por ser 1 de enero. Así que la diversión duró sólo unos cuantos minutos. Lo que sí hice luego lueguito es registrar mi nueva mini-computadora en el directorio online de raspberrys. Así que México tiene un nuevo raspberry-pi en el mapa  (lo registré en Monterrey ya que ahí es donde estudié mi carrera).

Image

Es interesante observar que en este directorio no hay más de 200 raspberrys registrados en México. Lo cual coloca a nuestro país muy por detrás de países líderes en adopción de nuevas tecnologías e innovación tecnológica como Estados Unidos, Inglaterra, Alemania, Francia, entre otros; en donde se cuentan miles y hasta decenas de miles de estas interesantes mini-computadoras.

Raspberry Pi, mi juguete para esta navidad

Se acerca la navidad y ya decidí qué me regalaré este año. Tengo ganas de uno desde hace meses (en especial desde que comencé a leer la biblia de administración de sistemas unix y linux) pero por desidioso no lo había pedido. Quiero un Raspberry Pi modelo B.

Raspberry Pi

Raspberry Pi

Sigue leyendo

Etiquetado , ,

5 cosas que quisiera haber aprendido en la universidad acerca del desarrollo de software

Imagen compartida bajo licencia Creative Commons 2.0

Después de algunos años trabajando como desarrollador de software para distintas empresas, me he visto en la necesidad de aprender conceptos y tecnologías para mí nuevas, pero que al parecer son “el pan de cada día” en la industria del software.

Quiero en este post listar lo que me gustaría haber aprendido durante mis estudios universitarios, compartir algunas propuestas creativas e ideas concretas al respecto e invitar a los ahora responsables de la educación universitaria en México a considerar la inclusión de los temas aquí listados en los currículos de las carreras relacionadas con el desarrollo de software:

Sigue leyendo

Seguir

Recibe cada nueva publicación en tu buzón de correo electrónico.