Aprendizaje en tiempo de cuarentena

Ya llevamos más de un mes en cuarentena, donde las alegrías ahora se basan en pequeñas cosas, cosas simples, básicas, que seguramente siempre les hemos dado importancia pero sin ser algo que este de forma permanente en nuestra mente como en mi caso, por ejemplo les confieso que mis alegrías son: Que sigamos todos sanos (mi mamá, mi esposa que es la más expuesta, mis hijas, mi hermano y el resto de mi familia y amigos), el ir a botar la basura (¡en serio!) y poder contar un poquito de tiempo para leer y hacer cosas en el ordenador.

De lo último es que quiero compartirles un poco. El año pasado fui durante un pequeño periodo autónomo y en dicho periodo trabajé con un grupo de gente de distintos lugares del mundo que estaban diseñando e implementando una nueva cryptomoneda en esa aventura una de las tareas a las que me dediqué fue en realizar un blockchain explorer, para ello me decanté por elixir y phoenix solo conté con 1 mes para llevar a cabo esa prueba de concepto y en dicho periodo pude hacer una versión alfa (muy muy cruda) de un blockchain explorer (está en mi GitHub) y realmente después de 4 años volví a disfrutar del desarrollo Web, debido a la premura del proyecto no hubo oportunidad de seguir desarrollando el explorador y tuvimos que acudir a Github y reutilizar uno existente (elaborado con NodeJS). La sintaxis del lenguaje y las características del framework (elaborado con cierta similitud a RoR) resultaron en un mundo totalmente nuevo para mí pero de nuevo insisto disfruté ese mes. Ahora bien de vuelta al 2020, al ocurrir todo esto de la cuarentena pasadas las primera y segunda semana me empecé a dar cuenta que contaba con un poquito de más tiempo de lo habitual (o será mejor decir que me falta menos tiempo que de constumbre?) teniendo oportunidad de leer algunos artículos que tenía pendientes, charlas, etc. y fue entonces cuando me plantee ¿Y si retomo de nuevo la lectura de los libros de phoenix y elixir? y si culmino el blockchain explorer? y si me hago una API en elixir/phoenix con varios nodos y me hago un benchmark con spring-boot, quarkus y otros. Es así que hace quizás unas 2 semanas empecé de nuevo a leer de phoenix y a hacer todos los ejemplos del libro, a ver vídeos de su nuevo componente liveView (no dejen de buscarlo por Internet se ve fantástico, una especie de Ajax mediante websockets, sin tener uno que hacer el javascript), también estuve investigando acerca de herramientas de maquetación Web y empecé a practicar un poco con Adobe XD para conocerlo y darle un vistazo a otras herramientas como Overflow (esta particularmente me encantó y puede ser un complemento de Adobe XD), en fin, ha sido un mes y medio difícil y para muchos incluso triste y trágico, pero los informáticos debemos agradecer que muchos de nosotros hemos podido seguir trabajando desde nuestros hogares, pero sobre todo lo que quiero transmitirles es que no debemos dejar de investigar, de leer, de probar, dentro de todo lo malo aprovechar este tiempo para seguir creciendo a nivel personal y profesional aprendiendo nuevas herramientas, nuevos idiomas, nuevos lenguajes de programación, nuevas metodologías, preparar una certificación, aprovechando que incluso muchas plataformas están ofreciendo cursos gratuitos, lease coursera, edx, Udacity, Udemy, pragmaticstudio.com (curso de phoenix liveView) entre muchas otras, pero recuerden, «crecer», seguramente tomará un tiempo para que volvamos a ser los mismos (sino es que esto genere un cambio para siempre en nosotros), pero también trabajemos en no ser los mismos (profesionalmente hablando) y volver siendo perfiles más completos, mas profesionales y muy muy muy por encima de todos más humanos.

Pronósticos para el 2018

Primer post del año 2018 y es un deber para mí empezarlo deseándoles a todos un 2018 de mucho provecho, salud y éxitos tanto en lo personal como en lo profesional. Dicho esto voy a dar paso a mis pronósticos que más que predicciones son intuiciones personales que sencillamente las haré publicas:

  1. Criptomonedas, es más que obvio que el auge que han tenido las criptomonedas encabezadas por la ya muy conocida BitCoin (BTC), pero esta no es la única, hay otras cuyos proyectos lucen interesantes, sin dejar de lado la popular tecnología que da soporte a la descentralización de estas, el blockchain o cadena de bloques que seguramente en los próximos años de el pelotazo. Siguiendo con las criptomonedas no esta de más decir que son un montón y cada vez sale un proyecto nuevo, tanto es así que el gobierno de Venezuela está preparando la emisión de una moneda llamada petro sustentada en sus reservas internacionales (¿bono de deuda enmascarado?), pero no es de esta moneda que les quiero hablar sino de otras sobre las que sugiero investigar y seguir de cerca: LiteCoin (LTC), IOTA, Ethereum (ETH) y SmartCash, no solo con fines económicos y utilizarlas para la inversión ya que todas han tenido una revalorización espectacular sino también como tecnologías y la hoja de ruta de cada una de estas. Ahora mismo la transacción de LiteCoin es mucho más rápida que la de un BitCoin (BTC), así como también lo es SmartCash que pronto comenzará a trabajar con sus SmartNodes lo cual implica ir un paso más allá en la velocidad de las transacciones que junto a su InstantPay la hará mucho mas atractiva para utilizarla en el comercio electrónico (sin dejar de mencionar su compromiso en proyectos dentro de la comunidad el cual alcanza el 70% de su presupuesto). No debemos olvidar a Ethereum que con sus smartContracts de igual manera abre un mundo nuevo de posibilidades y es una plataforma interesante para conocer la cadena de bloques y por última IOTA con su nuevo modelo de blockchain que desea ser el nuevo «esqueleto» del IoT (Internet of Things) donde entre sus objetivos están las transacciones a coste 0. Claro se habla mucho de las criptomonedas sobre si es una burbuja o el mal uso que le dan algunas personas, pero yo creo que estas han llegado para quedarse y aunque no soy un experto en la materia, creo que es necesario que estas empiecen a ser utilizadas como medios de pago común para que sean tomadas más en serio, pero también porque creo que hay gente que las compra pensando que otro le seguirá y por ende comprará mas caro, es decir, un fin que pareciese algo especulativo y yo soy de los que piensa que está muy bien guardar e invertir dinero pero tarde o temprano darle a este un fin.
  2. La nube, Desde hace 1 año me convertí en un enamorado de la nube, la flexibilidad y rapidez que nos aporta para el desarrollo de nuevos proyectos me parece una maravilla, prueba de esto es que hasta he migrado mi blog desde un hospedaje tradicional a la nube de Amazon. Existen varios proveedores como son AWS, Azure, GCP por solo mencionar algunos, pero lo que a mi parecer luce como una sana competencia está derivando en un muy interesante abanico de servicios y posibilidades para el usuario, para los emprendedores y para las PyMEs y creo que lo seguirán siendo este 2018 sobre todo con las tendencias serverless, microservicios (ojo a kubernetes) y servicios de inteligencia artificial.
  3. Big Data, pienso que seguirá siendo uno de los términos de moda este año, sobre todo porque el aprendizaje automático y los modelos predictivos, se sustentan en este, además creo que ha llegado para quedarse, porque cada día es mayor la cantidad de información que guardamos y pareciera que creciese de forma exponencial con los años, además la sinergia que crea al combinarse con la nube a mi modo de ver es un caballo ganador y en el futuro cuando ya entre en juego el analizar la información de los blockchains entonces si que será un trio que nos dará de que hablar por un buen tiempo.
  4. Por último creo que los lenguajes funcionales aún no han dicho su última palabra, entre estos creo que todavía veremos cosas interesantes. Actualmente hay lenguajes de uso general que han venido pegando fuerte como lo son Go, Python, Scala, pero creo que lenguajes como Haskell, Erlang, Clojure y Rust tendrán mas cabida y podremos ver cosas verdaderamente interesantes sobre todo en cuanto a concurrencia.

Dentro de 1 año revisaré este post y analizaré cuan acertado o errado estuve pero lo que realmente me llenará es haber podido dedicar este año al estudio de estas tecnologías.

¿Tienes algún pronostico tecnológico para este año? lo compartirías con nosotros

¿Valen la pena las certificaciones?

Tiempo atrás me hicieron la siguiente consulta en el blog:

«Hola Jose,

estoy muy indecisa en si prepararme para la certificación de Java. Mucha gente me dice que es absurdo porque las preguntas son del api, y tipo trozos de código que tienes que hacer de compilador y que al final se vuelve en un absurdo porque eso al fin y al cabo en nuestro día a día con un compilador es intuitivo. También me han dicho que a la hora del mundo laboral apenas lo valoran porque como debemos pagar para certificarnos, como que los empresarios lo ven como un título comprado.«

Antes que nada disculparme con la persona que me escribió ya que ha pasado algo de tiempo y apenas ahora es que le respondo, pero aquí voy y con la sinceridad que me caracteriza.

En más de una vez he recalcado estar a favor en realizar certificaciones, pero así como lo he dicho alguna vez, ahora lo repito, «no es por el papel», el papel o el certificado es lo de menos, bueno (pausa de 1 seg), es un premio o mejor dicho un reconocimiento al esfuerzo y a la dedicación que has puesto en estudiar y aprender cierta tecnología o idioma, es como cuando presentábamos un examen importante (para obtener créditos especiales o en una materia electiva de particular importancia) y después de tanto estudiar te otorgaban un aprobado pero que goza de cierto cache, ya que no se aprueba con la mitad de la nota sino con un poco más (por ejemplo si las notas van de 1 a 10 se otorgue únicamente el aprobado con 6.5). Lo que a mí particularmente me parece fascinante de las certificaciones y me entusiasma a realizarlas es todo el proceso de preparación, es como te planteas y organizas los objetivos para estudiarlos, como al cabo de un tiempo empiezas a darte cuenta de que algunos temas los tienes bien cubiertos mientras que hay otros donde necesitas hacer énfasis y repasarlos de nuevo, todo ese proceso de estudio con ese poquitín de presión añadida pero sobretodo con la ambición de aprender y mejorar tus habilidades profesionales, creo que hace méritos más que suficientes para presentar una certificación, y voy a plantear par de ejemplos para intentar hacerles llegar mi punto de vista.

Imaginemonos que empezamos a prepararnos durante algunos meses en presentar un examen de inglés, por ejemplo el FCE (también llamado el first). Si nos hemos esforzado digamos que durante unos 5 meses estudiando, leyendo muchos verbos, conjungandolos y utilizándolos en frases, escuchando mucho inglés, etc… ya habremos ganado, porque independientemente de que al presentar aprobemos o no el examen, el premio lo recibiremos cuando nos toque hablar con una persona de habla inglesa y hayamos podido entender a esta persona y a su vez hayamos logrado expresarnos con cierta fluidez, que si no fue tal, pues sencillamente no importa porque estoy seguro de que nos expresaríamos mucho mejor que antes de haber empezado a estudiar para la certificación.

Otra razón de presentar las certificaciones, es el saber, porque para mí «el saber es poder», el saber te da confianza, y si vas a presentarte para una entrevista de trabajo o para un cargo, créeme que la confianza es importante (te desenvuelves mejor, yo sinceramente creo que hasta te cambia la cara y hasta la forma de expresarte) y ahora bien ¿recuerdas cuando en la escuela tenías que hacer una exposición? a la mayoría nos daba algo de miedo escénico, pero había una cosa que siempre era palpable independientemente de que fueras el mejor en el escenario o no, y es que siempre se sabía quien había estudiado y quien no. ¿Crees que las personas de RRHH no se dan cuenta? y si tuviste suerte y pasaste esa entrevista recuerda que luego seguramente tendrás una entrevista técnica y a esta persona será difícil que le engañes o mejor dicho dejaras mejor imagen si le demuestras a esa persona que sabes de lo que hablas.

Entonces, ¿valen la pena las certificaciones? SI

¿Los empresarios lo ven como un titulo comprado? No conozco ninguno que lo vea de esa manera y en dado caso desde mi humilde punto de vista te diría corre y vete de esa empresa porque allí no te valorarán ni como profesional ni tu deseo de ser mejor.

Yo particularmente he visto como últimamente empresas dedican una «bolsa» de dinero para fomentar la certificación de sus empleados, ya que a la hora de escoger un perfil entre un grupo de candidatos, la certificación y el haber aprobado la entrevista técnica puede que pongan la balanza a tu favor. Además no olvidemos que las empresas son las principales beneficiadas de que nosotros los empleados nos certifiquemos, ya que a priori están ganando, teniendo en el staff mejores profesionales.

¿Algunas preguntas son muy complejas y debemos actuar como si fuésemos un compilador, ya que incluyen código? Si hay preguntas que incluyen código y debemos actuar como un compilador pero ni son muchas y tampoco todas son extremadamente difíciles, estas la mayoría de las veces son conchas de mango, que si has estudiado, las vas a pillar de inmediato.

Así que amiga no lo pienses 2 veces certificate si tienes interés en hacerlo, que en el peor de los casos lo que harás es aprender 😉 y serás bien valorada por el gremio profesional y por tus colegas por interesante en afrontar retos de este tipo.

Por último confesar que ya he empezado a preparar mi próxima certificación y como adelanto les dire que va enfocada en tecnologías Big Data.

PD: La de Java 8 me hace mucho ojito, jejejeje, pero ya he estudiado por mi parte las expresiones lambda, los streams, los default methods de las interfaces, entre otras cosas, por lo cual no siento tanto interés como otras veces en presentarla, así que quizás cuando salga Java 9 me meta de cabeza a estudiar de nuevo.

Qué es Big Data

Hace una semana en una clase del máster mas enfocada a negocio, retos y oportunidades del Big Data, hicimos un ejercicio bastante interesante, este consistió en que cada uno de nosotros brevemente plasmara su definición de Big Data, donde podría aplicarse y que beneficios podría arrojarnos.

Pudimos ver las definiciones de algunos compañeros, coincidir y discrepar en algunos puntos pero para mí fue una actividad muy enriquecedora sin importar si coincidíamos o no, es por eso que comparto con ustedes mi definición de Big Data.

¿Qué es Big Data?

Big Data contempla las nuevas herramientas, tecnologías y (nuevos) los conceptos relacionados con la adquisición de (mucha) data (volumen), de distinto tipo (variedad) que a su vez podría estar no estructurada, con unos aspectos opcionales pero que también puede marcar la diferencia para definirlo como “really Big Data” como la movilidad (por ejemplo la adquisición de información mediante IoT o dispositivos móviles) y el tiempo real. De hecho contemplo el Big Data como unas 2 vertientes que pueden o no trabajar en conjunto:

  • Ingeniería: Enfocado en el uso de las herramientas por ejemplo al tratar verdaderamente mucha data con poco o nada de análisis, un rol de esta vertiente sería el Data Arquitect, esa persona encargada de manipular estructurar los datos, manipularlos, masticarlos y dejarlos bien preparados para aquellos encargados de hacer análisis sobre los datos, esta persona trabajaría con Hadoop, Pig, Spark.
  • Científica: Donde sin que estrictamente se tenga que trabajar con muchísima data (podría ser tanto small Data como Big Data) se lleva a cabo análisis mayormente de tipo estadístico como análisis predictivos, construyendo modelos, un rol de esta vertiente sería la del Data scientist, esa persona encargada de hacer data mining, machine learning, etc.

Y ¿yo qué quiero? ¿qué busco?

YO aspiro a convertirme en un Big Data Architect y seguir aprendiendo y profundizando mis conocimientos en Data mining, Machine learning, estadísticas e investigación de operaciones para forjarme un perfil mas científico.

¿Qué es lo que mas me ha interesado?

Aprendizaje automático (machine learning) y los nuevos enfoques para el procesamiento y almacenamiento de grandes volúmenes de datos (Spark, Flink, Hadoop, Cassandra, HBase).

¿Donde creo que podría aplicarse?

A nivel de ingeniería para almacenamiento por ejemplo de data del hogar (IoT), por ejemplo un termostato inteligente y configurable donde poder gestionar a través de una plataforma de Internet poder gestionar cuando se encienda/apague la calefacción, ver histórico de funcionamiento de la calefacción y sobre estos datos hacer análisis estadísticos.

¿Qué beneficios podría arrojar ?

En base al ejemplo anterior Dinero (ahorro de energía siguiendo con el ejemplo del termostato) o clientes (sistemas de recomendación de productos), otros casos serian por ejemplo tiempo (aprendizaje automático para la elaboración de prestamos preconcebidos o análisis de un cliente al momento de solicitar una hipoteca o préstamo por internet).

Ahora bien, una vez conocido mi concepto de Big Data ¿Coincides con mi definición? ¿discrepas?,  ¿Cual es tu concepto del Big Data?

Gephi una herramienta de visualización de redes

Esta semana en el Master empezamos con una nueva materia denominada «Análisis de redes sociales», el inicio ha sido bastante interesante, de hecho me pareció chévere, pero lo que quiero compartir con todos ustedes es la herramienta que vimos el primer día, esta se llama Gephi, es una herramienta open source hecha en Java para la visualización  de redes y pues nosotros empezamos analizando nuestra red social Facebook.

Visualización de mi red social Facebook

Visualización de mi red social Facebook

 Para que la herramienta funcione correctamente en Mac OSX hay que ser una serie de «trucos» y apaños (como ejecutarlo en Java 6) porque en caso contrario seremos incapaces de ni siquiera arrancar la aplicación. Aquí les dejo el enlace donde aparecen los pasos necesarios de configuración para poder ejecutarlo en Mac OSX.

La imagen de mas arriba es una perspectiva de todos los nodos que forman parte de mi red social Facebook. Para poder visualizar mi red de Facebook tuvimos que descargarnos un fichero de extensión .gml desde esta página donde podemos indicar que información queremos obtener de nuestra red de contactos, como sexo, lenguaje, entre otros.

Me gusto la herramienta no solo por lo versátil al momento de visualizar el diagrama y los resultados que obtuve (como las agrupaciones de nodos que son fácilmente identificables), sino porque tenia (y tengo) en mente hacer una visualización de mi red de Twitter, pero con Java y Neo4j, aunque ya compañeros del master me han hecho llegar un proyecto que genera el fichero .gml, por lo cual quizás visualice antes en Gephi mi red de Twitter. Sin mas dilación aquí les dejo el componente gigante de mi red donde señalo sus agrupaciones.

Componente gigante de mi red de Facebook

Componente gigante de mi red de Facebook

¿Alguno de ustedes ha hecho un análisis de alguna de sus redes sociales? ¿Que herramienta utilizaste? Si te animas a analizar alguna de tus redes sociales con Gephi, no dudes en compartir tu resultados con nosotros