Inicial Setup para Trabajar con tu equipo Oracle Functions




Desplegando funciones utilizando la plataforma

Serverless denominada Oracle Functions


Author: José Díaz @jamdiazdiaz


¿En tu equipo están evaluando trabajar con Funciones?. Oracle Functions es una interesante propuesta de Oracle Cloud.



Te invito a revisar el documento indicado arriba en Self-link y dejar tus comentarios. Si tienes problemas para configurarlo, no dudes en hacerme llegar tu consulta.


Enjoy!

Joe
Share:

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:

Oracle OpenWorld 2019

Hola a todos los que llegan a mi blog. Hoy voy a escribir sobre el evento Oracle OpenWorld 2019 y  Oracle Code One 2019,  que divide a los que van en dos grupos (explicare en breve esto en el siguiente apartado) y que se desarrolla en la ciudad de California - San Francisco todos los años en Septiembre u Octubre.  En este artículo nos centraremos en Oracle OpenWorld 2019.

El viaje super largo porque inicio en Lima - Dallas (7 horas), Dallas a San Francisco (3 horas).



¿Por qué 2 grupos diferentes?


Oracle OpenWorld - Es para clientes y partners de Oracle.  Esta dirigida a ver casos de éxito, soluciones o herramientas de Oracle. En este grupo participan los CEO, CIO, CTO, Directors, Clientes, Empleados, Oracle Ace, Oracle GroundBreakers y Java Champion.


Oracle CodeOne - Es para developers de distintas comunidades en especial la de Java, marcas o vendors como IBM/REDHAT/Microsoft/SalesForce, etc.  La comunidad Java tiene mucha fuerza en este grupo porque si recuerdan antes a este evento se le denominaba JavaOne hasta el 2017 (la última vez que se le llamó de esta forma) y ahí tenemos a los Java Champion, Oracle GroundBreakers, Consultores independientes, etc.


En mi caso, este año si fui como cliente de Oracle, así que participe de sesiones, keynotes por parte de Oracle para sus clientes. Asimismo de algunas reuniones privadas para ver con sus expertos temas de interés para el negocio farmacéutico.

Pero, como Java Champion (JC) también me daba un tiempo para ir al hub de Oracle GroundBreakers (OGB) para ver a mis compañeros, escuchar sus sesiones y/o conocer a nuevos miembros de estas 2 comunidades. Yo no soy Oracle GroundBreaker, pero, muchos son tanto JC y OGB, así que era fácil ubicarlos ahí o en algunas sesiones comunitarias de interés para todos (incluidas after-party).


Oracle Cloud Free Tier


Este año Oracle ha mostrado gran crecimiento porque renovó muchos de sus servicios (Generación 2). Sus números han mejorado y ha anunciado muchos servicios free para que sus clientes de Oracle Cloud sientan un gran ahorro frente a sus competidores como Amazon.  En las siguientes fotos puedes ver los números que a todos nos gusta:
















Durante el evento estuvieron dando un trial de 500$ para quienes sacaran cuenta en Oracle Cloud. Claro esta, tienes que registrar tu tarjeta de crédito, pero, no te debitarán a no ser que quieras terminado tu trial pasar a la modalidad de pago. En general, esta 300$ y te lo dan por un mes. 



Adicionalmente a lo anterior, los servicios "always free" incluyen Oracle Autonomous Database, Compute VMs, Block Volumes, Object y Archive Storage y Load Balancer. Es decir, los usuarios obtienen:

- 2 base de datos autonomas (Autonomous Data Warehouse o Autonomous Transaction Processing), cada uno con  1 OCPU y 20 GB storage 
- 2 Compute VMs, cada uno con 1/8 OCPU y 1 GB memory 
- 2 Block Volumes, 100 GB total, con hasta 5 free backups 
- 10 GB Object Storage, 10 GB Archive Storage, y  50,000/month API requests 
- 1 Load Balancer, 10 Mbps bandwidth 
- 10 TB/month Outbound Data Transfer 
- 500 Million ingestion Datapoints y 1 Billion Datapoints para monitoreo de servicios
- 1 million Notification delivery options por mes y 1000 emails por mes
- Los servicios Always Free están disponibles en todas las regiones, para todos -- esto incluye a los que tienen cuentas pagadas (clientes con contrato)  como los que tienen cuentas trial.

Más información en este link.

Y para que haya mas desarrolladores usando los servicios de Oracle Cloud, estos servicios también estarán disponibles vía Oracle Academy.


Oracle Generación 2 Cloud


Larry comentó sobre la dirección y estrategia de sus servicios y aplicaciones. Están cada vez haciendo más uso de Machine Learning para hacerlos autónomos y evitar errores humanos.


A continuación la lista de servicios integrados.



Más información, vídeos y casos de éxito en este link.

Oracle Analytics



Oracle Analytics combina 3 poderosas fuerzas - augmented analytics, self-service analytics, y governed analytics. Con machine learning embebido y IA, Oracle nos da una simple solución que escala, a través, de su organización haciendo uso de los datos. 

Mas información en este link

Open Connectivity


Oracle anuncia los distintos conectores disponibles a cualquier fuente de datos.



Oracle Digital Assistant


Plataforma y herramientas para construir asistentes potenciados con IA que se conectan a tus aplicaciones backend.  Estos asistentes digitales usan IA para procesamiento natural del lenguaje, automatizar acuerdos con interfaces de conversación que responden inmediatamente, mejorar la satisfacción del usuario e incrementar la eficiencia del negocio.





Mas información en este link.

Guerra Declarada a Amazon


Larry no fue nada discreto en su presentación y todo lo que mostraba lo comparaba con Amazon.  Es por eso que siempre repetía que con machine learning y autonomía se evitan muchos errores humanos.  Vean el Support Policy de AWS. ¿Qué opinas?



Automatic Scaling

Esto sorprendió mucho a los asistentes, porque, es ELASTICO. Necesitas que tu BD crezca, pues ya es soportado según el uso que le des. Si no hay mucha carga puede bajar a 0 y ahorrarte muchos gastos.




Oracle Autonomous Linux


Esto fue una gran noticia. Si bien tus servicios o aplicaciones son autónomas o elásticas, estas tambíen tienen dependencias en el sistema operativo. Y oh!! maravilla, el siguiente anuncio fue: Oracle Autonomous Linux. 




Sistema Operativo que usa el mismo Oracle en Cloud para todos sus servicios.



Oracle Linux esta presente en otros proveedores también.



Oracle Linux es free en Oracle Cloud. En otros providers tiene costo.




Base de Datos Autónoma y Serverless


Serverless y Elastic. Genial. El slide vale más que mil palabras.


Infraestructura dedicada


Exadata rules!!!



Una sola BD multi proposito vs 10 BD de AWS 

Una sola bd que converge todos los tipos de formato vs Amazon que tiene 1 BD por cada tipo de formato.



A continuación los formatos de datos soportados por 1 sola BD en Oracle:




Oracle Data Safe


Servicio de seguridad de datos ofrecido por Oracle. Sin costo adicional en oracle cloud.



Ninguna de estas features están en las 10 DB que Amazon soporta.



Modalidades para tener Oracle Database en tu empresa






Exadata - nueva versión


Exadata X8M que usa el Intel processor Memory




La única BD que es serverless en Amazon es DynamoDB, pero, las otras no.




Mas comparaciones:



Cluster Networking




Partnership con Microsoft


Gracias al partnership de Oracle con Microsoft, ya tenemos MSQL Server en OCI.



Nueva generación de Block Storage







Anunciando Instance Resize





Instancias Elasticas




Virtual Machines dedicados





Partnership con otras empresas





Amigos de Microsoft





Partnership con VMWare






Con esto puedes hacer lift and shift a Oracle cloud de tus apps en on premise.


40,000 clientes medianos a grandes a la fecha




Más centros de Datos - Chile.


También me sorprendió que han abierto más centros de datos. Hay uno ahora en Chile y ha prometido invertir billones para abrir cada 23 días otros centros de datos. Esto si es agresivo. 



Ultimo anuncio - Free Tier



De esto hablamos al inicio del post.



Oracle anunció nuevas herramientas



Oracle también sorprendió ofreciendo el uso de herramientas como Oracle APEX y SQL Developer Web de forma gratuita.



Ultima comparación con Amazon





Sobre las Sesiones

De todas las sesiones a las que asistí me quedo con las que hablaron sobre Retail y Omnicanal.




Y sobre Omnicanalidad - Retos Claves para Retailers:




Fiesta del Evento

Llegamos tarde con mi partner Carlos Ramirez, pero, vimos a Flor Ida. La rompió, casí nos tomamos fotos con él, pero, cuando paso por nuestra tribuna, se nos acabo a ambos la batería del celular.







Conclusión

Se ha aprendido mucho con este viaje, pero, ahora tenemos la responsabilidad de poner en práctica todo lo aprendido. Esto es lo que me encanta de mi carrera y/o profesión, siempre hay mucho para hacer.



---

En el siguiente post hablare sobre el Oracle Code One 2019.  Este también viene lleno de muchas anécdotas, noticias y con una comunidad que sigue vibrante y con muchos años por delante.  Java nunca muere, sólo se acomoda como el agua en una taza de café.

Enjoy!

Joe



Share: