5 añitos de Danielito



Danielito es mi último hijo. Cumplió 5 años este 20 de Octubre. Es amante de los legos y los personajes de comics. Su favorito es Hulk.

Es un chico con una energía que nos desborda. Es definitivamente el engreído de la casa. Aquí en la foto feliz con su regalito.

Te amo hijo y espero en unos años veas esta foto y sepas que tu Papá atesora todos estos momentos contigo.



Joe
Share:

Microservicios - Comunicación por Eventos con Kafka


Este nuevo artículo lo elabore para explicar cómo usar Kafka para comunicación asíncrona entre micro servicios.



Los datos para acceder al artículo son:

Author: José Díaz @jamdiazdiaz
Source Code:  https://github.com/joedayz/microservices-with-kafka





Enjoy!

Joe


Share:

Acceso a wifi públicas en Starbucks, hoteles o aeropuertos después de actualizar a Mac OSX Catalina

El upgrade a Mac OS Catalina te trae sorpresas. Una de las cosas que me trajo problemas es que ya no podía hacer uso de las redes de Starbucks, hoteles, o centros comerciales, etc. Porque si bien me conectaba a la red, el problema era que no me cargaba la página del proveedor de internet para ingresar la clave de acceso al wifi. Lo único que me funcionó fue: > rm -f /Library/LaunchAgents/* > rm -f /Library/LaunchDaemons/* Restart o reiniciar y al volver a intentar ingresar a una página web, se levanta el captive.apple que te carga la página del hotel o de Starbucks para ingresar el password. Y listo. Enjoy! Joe
Share:

Eclipse Collections para impacientes


Eclipse collections es una librería de colecciones para Java. Su foco esta en la productividad y performance, y para ello nos brinda un conjunto de APIs y tipos. El protocolo de iteración fue basado en el framework de colecciones de Smalltalk y es totalmente compatible con los tipos del framework Collection de Java. 

¿Porqué Eclipse Collections?


  • Productividad 
    • Enriquecido, funcional y APIs con gran simetría
    • List, Set, Bag, Stack, Map, Multimap, BiMap, Interval Types
    • Tipos Readable, Mutable e Inmutable
    • Collection Factories Mutable e Inmutable
    • Adaptadores y clases utilitarias para tipos JCF
  • Performance
    • Contenedores eficientes en memoria
    • Optimizado Eager, Lazy y APIs Parallel
    • Collections de Primitivos para todos los tipos primitivos.
  • Desarrollo activo desde el 2005.


Aprender eclipse collections


La guía en github esta super detallada, pero, mi intención es facilitarles aún  más la prueba de este gran proyecto.


1. Creamos un proyecto maven con esta configuración:


Y muy importante el plugin para trabajar con compiler versión 1.8+:



2. Creamos una Clase Person.java y un test para validar que esta todo ok.

En src/main/java creamos la clase Person.java: 



El src/test/java el test correspondiente:


Y al ejecutar el resultado es:



La intención del ejemplo es:

Crear una lista MutableList con tres instancias de la clase Person. Luego se coleccionara sus apellidos (lastName) en una nueva lista  MutableList, para finalmente obtener como salida los nombres separados con coma usando makeString.



        MutableList people = Lists.mutable.with(
                new Person("Sally", "Smith"),
                new Person("Ted", "Watson"),
                new Person("Mary", "Williams"));
        MutableList lastNames = people.collect(person =>; person.getLastName());
        Assert.assertEquals("Smith, Watson, Williams", lastNames.makeString());
El lambda se puede reemplazar con:


MutableList lastNames = people.collect(Person::getLastName);


3. Se puede crear también una lista Inmutable ya que Eclipse Collections lo soporta.




        ImmutableList people = Lists. immutable.with(
                new Person("Sally", "Smith"),
                new Person("Ted", "Watson"),
                new Person("Mary", "Williams"));
        ImmutableList lastNames = people.collect(person ->; person.getLastName());
        Assert.assertEquals("Smith, Watson, Williams", lastNames.makeString());





4. Eclipse Collections viene también con un lazy API, el cual esta disponible cuando invocamos el método asLazy. El método collect retornara ahora un LazyIterable. Dicho LazyIterable retornado no evaluará nada hasta que algún método terminal sea invocado. Con lo dicho anteriormente, la llamada a makeString forzará recién que el  LazyIterable coleccione los apellidos.


...
LazyIterable lastNames = people.asLazy().collect(Person::getLastName);
Assert.assertEquals("Smith, Watson, Williams", lastNames.makeString());



5. Select / Reject (filtrar / no filtrar)

Podemos filtrar a las personas con el apellido "Smith" usando el método select.




MutableList people = Lists.mutable.with(
        new Person("Sally", "Smith"),
        new Person("Ted", "Watson"),
        new Person("Mary", "Williams"));
MutableList smiths = people.select(person -> person.lastNameEquals("Smith"));
Assert.assertEquals("Smith", smiths.collect(Person::getLastName).makeString());








Si a la inversa, queremos encontrar a las personas que no tienen apellido "Smith", usamos el método reject.




        MutableList people = Lists.mutable.with(
                new Person("Sally", "Smith"),
                new Person("Ted", "Watson"),
                new Person("Mary", "Williams"));
        MutableList notSmiths = people.reject(person -> person.lastNameEquals("Smith"));
        Assert.assertEquals("Watson, Williams", notSmiths.collect(Person::getLastName).makeString());




6. Any / All / None

Nosotros podemos también probar any (alguno), all (todos) o none (ninguno) de los elementos de una colección dada una condición.

Any:

    MutableList people = Lists.mutable.with(
                new Person("Sally", "Smith"),
                new Person("Ted", "Watson"),
                new Person("Mary", "Williams"));

        Assert.assertTrue(people.anySatisfy(person -> person.lastNameEquals("Smith")));
        Assert.assertTrue(people.anySatisfyWith(Person::lastNameEquals, "Smith"));



All:



  MutableList people = Lists.mutable.with(
                new Person("Sally", "Smith"),
                new Person("Ted", "Watson"),
                new Person("Mary", "Williams"));

        Assert.assertFalse(people.allSatisfy(person -> person.lastNameEquals("Smith")));
        Assert.assertFalse(people.allSatisfyWith(Person::lastNameEquals, "Smith"));




None:



        MutableList people = Lists.mutable.with(
                new Person("Sally", "Smith"),
                new Person("Ted", "Watson"),
                new Person("Mary", "Williams"));

        Assert.assertFalse(people.noneSatisfy(person -> person.lastNameEquals("Smith")));
        Assert.assertFalse(people.noneSatisfyWith(Person::lastNameEquals, "Smith"));




Katas de eclipse collections


De aquí ya puedes continuar con las excelentes katas que existen en este repositorio de github: https://github.com/eclipse/eclipse-collections-kata

Hay dos en particular:  Pet Kata (sigue las  instrucciones de dicha Kata) y Company Kata con sus instrucciones también.


Enjoy!

Joe









Share:

Elías cumple 14 años

El 17 de Octubre fue el cumpleaños número 14 de mi primogénito: José Elías Díaz Ramirez. Un buen hermano mayor e hijo. Responsable y de buenos sentimientos.



Hijo mío, te amo muchísimo y espero verte crecer y apoyarte en lo que Dios me permita.
El esta feliz porque ahora ya tiene su propio celular, sus audífonos con Bluetooth para escuchar su propia cuenta de Spotify, claro, está siempre supervisado con Family Link de Google jajaja.


Este es uno de los grandes regalos que Dios me ha dado y por lo cual puedo decir, que no necesito más.

Joe.
Share:

The Developer Conference en Brasil

Hoy quiero hablarles sobre esta gran conferencia de varios días por diferentes estados de Brasil.

The Developers Conference


http://www.thedevelopersconference.com.br/en

Felicito a las comunidades de Brasil, porque han hecho y hacen un extraordinario trabajo. Realizan varias conferencias en distintos estados como: Sao Paulo, Fioranapolis, Belo Horizonte, Recife, Porto Alegre, etc. Y lo mejor es que los tracks no se restrigen a una sola tecnología, sino que invitan a otras comunidades y tienen tracks diversos para todos los gustos. Hoy no solo se dan charlas en portugues, sino también en Español.



En el siguiente vídeo se los explica mejor Bruno de Souza, un reconocido miembro de estas comunidades y activo promotor de las nuevas generaciones.






Si han visto el vídeo. Lo que han logrado es el resultado de la unión, camaredería y respeto por sus miembros más antiguos como Bruno de Souza (@brjavaman) , Yara  Senger(@yarasenger), entre otros. Como los envidio chicos, en serio, pero envidia sana.

Me gustaría ver algún día esa  fraternidad en nuestros países de Latinoamérica.
Un nuevo miembro por más capo o hábil que sea, no anda  hablando mal de miembros antiguos o comparando su trabajo con el de otros. No anda diciendo: "yo soy mas cool que él".
Esto es lo que destruye comunidades. Divide, Resta, pero, en definitiva, no suma.

He visto a lo largo de estos años como dentro de una comunidad se pelean y se crean nuevas a raíz del cisma y no se invitan entre ellos para nada en sus conferencias o meetups. Buscan contactar a miembros que le son útil de otras comunidades para seguir dividiendo. Esto incluso cruza hasta fronteras de otros países.

Hace años logramos en Lima un evento parecido, este se dió con el titulo: CodePassion.pe, el cual se realizo en IBEROTEC. En dicho evento se invito a comunidades de Python, Php, Ruby, Android, Java, Mozilla, etc y fue un MEGA EVENTO.  Después de eso, nunca más nos hemos vuelto a juntar. Qué recuerdos carajo!.

Luego llegaron las conferencias ágiles y se termino de joder todo. Pero, esto es tema de otro artículo: "Los vendedores de Herbalife de la Gestión de Proyectos".

Volviendo a nuestro tema. Pasaron los años y salieron  nuevas comunidades. Y al igual, cómo pasa en el futbol,  se empezaron a pelear entre estas, entre miembros internos/externos, como si fueran la "U" y "Alianza" (Equipos de futbol de la liga Peruana). Yo soy la mitad + 1, tú no llenas estadio (salas, local), etc. etc.

¿Han visto los estadios de Futbol de Europa?. No hay rejas, la gente mira tranquilamente los partidos, por más clásico que sea. Aquí es imposible. La gente se mataría o pasaría cualquier desgracia con los jugadores, prensa o público en general.  Lo mismo pasa en las redes sociales. He visto comunidades burlarse de otras, porque a una en su evento se le fue la luz, o yo haría en Ruby lo que tú haces en 50 líneas, etc etc. Puedo dar mas ejemplos, pero, amigo lector, Ud. me entiende.

Espero se nos quite este gran defecto, porque, no vamos a lograr cosas tan grandes como la TDC nunca, ya que no existe unión y estamos en un "paseo" donde lo único que importa es alimentar el ego y "ser mas cool" que los otros. Basta con ver sus mensajes de twitter: "Esta ha sido la mejor conferencia en Pelotillehue, nadie más se compara a nosotros...". Qué Mierda.

Definitivamente, por más Java Champion, Commiter de Frameworks Cool, Manager, Developer Advocate, Arquitecto, etc. Si no hay humildad no sirve de nada.  Ademas que aburrido debe ser siempre saberlo todo, ¿no?.

Bueno muchachos, igual no nos desanimemos, esperemos las nuevas generaciones sean mejores, con mejor educación y valores. Que busquen compartir con la comunidad, ser maestros y alumnos. Y si vez a alguien con un Ego muy grande, dile que vaya al psicólogo o la asociación de EA (Ególatras Anónimos). Hijos de su pinche madre.


Vuestro amigo Joe.
Share: