Saturday, December 21, 2013

Chau Pollo

Se va un hijo dilecto de la casa. Después de cinco intentos, no nos quedó otra que aceptarle con mucho pesar por fin al pobre su renuncia: El Pollo Santa. Se va a sentir mucho la falta del "ruido lindo" que genera el Pollo, pero desde acá, le enviamos la mejor y queremos que se sepa como él mismo dijo que "ONCE A ROSHKERO, ALWAYS A ROSHKERO".

Salud Pollo! A por más éxitos.



Va una copia de la carta que escribió a todo el DEVTEAM que estoy publicando sin su explícito permiso porque tiene que quedar en nuestro blog para siempre.

Buen día, buen día!

Aquí estoy, junté todas mis cosas, es viernes aún, son las 10:00 y estoy en Roshka juntando mis cosas, más bien, acabo de terminar de juntarlas. 

Qué puedo decir! Esta mañana cuando llegué, le saludé a Majo y a Alfredo no pude evitar pensar que era la última vez que entraba a la Roshka como un Worker Thread! Algo que vengo haciendo por (al menos) los últimos 4 ó 5 años de mi vida. Cuánto pasó realmente! Y no solo tiempo, sino cuántas cosas... No puedo evitar la profunda emoción, del agradecimiento de todo lo vivido aquí en este último tiempo. 

La fiesta de hoy fue increíble, creo que todos estamos de acuerdo con eso, el compartir de todos, el video, juego, risas, todo...

No sé qué es lo que realmente me hace escribir esto ahora. Pienso en cuando esté de vuelta de mi viaje, en los siguientes días, qué raro va a ser empezar a trabajar y no ver a Lucas, a Paul o a Stefano conmigo ahí, tirando algún comentario cago de risa, alivianando el laburo a cada segundo. No sé, es muy raro, honestamente. Levantarme para relajar un segundo, y no está ahí el Niño para un "Buenas noches, buenas noches". Nou Majo either para hacerte el aguante, compartir ahí un flash y sacarte el estrés que tengas. Comprensiblemente, no va a estar ahí el MOD para hacerte un chiste (ñembo amargado) que te hace reír por 2 horas, mínimo, ni Welt para mostrarte el verdadero norte de la vida, servir a los demás de una manera totalmente desinteresada. Claramente, no va a estar Colón para enseñarte las últimas técnicas de negociación (perrito) y mearte de risa con sus historias por un rato. No van a estar Mirnac para darte un consejo de cómo resolver algo, para mostrarte lo sencillo que es todo, sorpresivamente. Pienso que no me voy a cruzar con la buena vibra del Potro, New Fede, Fa, Andre, Karl, Carlitos, Cesar o Sandrita. Ni un "hmmm" de Benxi o una risa de Vivi! Mientras sigo pensando, me doy cuenta que esto no es justo, confirmado que no. Y pienso, bueno, me cruzo a la pieza de adelante y me encuentro con Nancy, sonriente con un certificado de calidad Doña Teresa, o me cruzo una mirada con Ángel o JoeDev, pero no, no señores! Y todo se va volviendo una pesadilla. No está Fede Dau para cagarte de risa un rato, no están Nati ni Mati en los pasillos para tirarte un saludo buena onda, durísimo. Pienso en los chicos de BBVA, en Nandoresh, en Otta, Fer, Angie, Oski, Lili, Kari, Paty, NH, Yisus, y en lo des-informado que voy a estar de fútbol sin Alfredo...

No sé, todo esto pasa por mi cabeza y bueno, sinceramente no sé qué hacer con todo esto. Cuando pasan este tipo de cosas, cuando te ves separado de alguien a quien querés, creo que la única cura es el agradecimiento... No los voy a tener ahí conmigo, es verdad, pero agradezco poder haberlos tenido todo este tiempo.

Last, but not least. 

Un párrafo aparte para mi jefe y hermano. Un ejemplo a seguir en cualquier sentido que se pueda poner sobre la mesa. Un Class (no un Object más). Un orgullo no solamente de la Roshka, sino Nacional, y porqué no, internacional. El 10. El Messi. El Diego. Gracias por mostrar el norte, por tirar siempre hacia delante, por nunca cansarte, por mantener la calma, por estar ahí para todos, incansablemente. Gracias porque el tiempo que comparto con vos es siempre del mejor tiempo que se puede conseguir. Gracias por ser así exactamente como sos (como soy un pésimo escritor no lo puedo expresar ni al 1%).

<heart>
A todos, quiero que sepan que son como una familia para mí, no importa si hablamos 10 horas todos los días, 10 segundos, si trabajamos juntos o no, tienen todos un lugar VIP en mí corazón.
</heart>

Un abrazo grande a cada uno!

Franco@Roshka
(Con todo el orgullo que implica esta firma)

Thursday, October 17, 2013

Calling Oracle Store Procedure with Output Parameters on EntityFramework 4

We were having a lot of issues when trying to run a stored procedure with output parameters in Oracle, using Entity Framework 4 Library.

Finally, we came up with the following solution:

create or replace procedure dummy_proc
    (dummy1 in number, dummy2 in varchar2,
 dummy3 out number, dummy4 out varchar2)
is
begin
      dummy3 := 1508 + dummy1;
  dummy4 := 'This is just sad! -> ' || dummy2;
end dummy_proc;

And its correspondent .NET call:

Entities e = new Entities();
OracleParameter o1 = new OracleParameter("dummy1", OracleDbType.Int32);
OracleParameter o2 = new OracleParameter("dummy2", OracleDbType.Varchar2);
OracleParameter o3 = new OracleParameter("dummy3", OracleDbType.Int32);
OracleParameter o4 = new OracleParameter("dummy4", OracleDbType.Varchar2);
o1.Direction = System.Data.ParameterDirection.Input; o1.Value = v;
o2.Direction = System.Data.ParameterDirection.Input; o2.Value = "test"; o2.Size = 1000;
o3.Direction = System.Data.ParameterDirection.Output; 
o4.Direction = System.Data.ParameterDirection.Output; o4.Size = 1000;
e.ExecuteStoreCommand("begin dummy_proc(:dummy1, :dummy2, :dummy3, :dummy4); end;", o1, o2, o3, o4); 

Additionally, you might have to add a reference to Oracle's ODAC libraries to your project.

Wednesday, August 14, 2013

De Roshka a Amazon


Apenas termine la facultad empecé a trabajar en Roshka y estuve aquí por 2 años y medio, trabaje en varios proyectos, no solamente con desarrolladores Clase A sino también con gente Clase A. Por lejos el mejor grupo humano con el que me toco trabajar en la vida. Me apoyaron para muchísimas cosas, entre las mas claves, enseñar en la UCA y enviarnos a todo el #devTeam a un diplomado de Java en la Universidad Comunera (UCOM), sin dudar un segundo, el mejor curso de Java del planeta.

A finales del 2011 me dieron una beca Fulbright por lo que ya empezaba a despedirme de Roshka y a sentirme alumno de The Ohio State University. Al comienzo del segundo semestre del masterado asistí a una feria de trabajo en la universidad, al ver el cartel de Amazon y de otras empresas grandes ya estábamos todos demasiado contentos, aunque sea con que nos escuchen un ratito y acepten nuestros CV's. Después de un par de semanas me llamaron y me pidieron que vaya a una serie de entrevistas, me hicieron muchísimas preguntas, sobre todo temas de Java, POO y algoritmos. Si no era por el curso de Java de la UCOM (gracias Pollo, Maestro, Mirnac, Angie, Miguel, en fin, todos los profes y la Roshka), sinceramente no tenia ni una chance en esa entrevista. Finalmente, me ofrecieron ir a trabajar el verano en el headquarters de Amazon en Seattle para un internship de 12 semanas.

En los primeros días tuvimos varias presentaciones sobre Amazon y sobre todas las herramientas de desarrollo que utilizan. Ahí recién empecé a dimensionar lo gigante que era la empresa. Amazon tiene 97.000 empleados, de los cuales 1400 éramos interns. No manejo bien estos números, pero creo que solo un 25% de estos empleados son desarrolladores, el resto son de logística, marketing, finanzas, etc. La experiencia estuvo impecable, el trato, la gente y los beneficios por ser solamente un pasante son de otro planeta. La empresa se encarga de absolutamente todo, vos lo único que tenes que hacer es programar, programar y programar.

Amazon - Edificio Port 99, cafetería del piso 21.
Trabaje en el Departamento de Global Payment Systems. Muchísimo Java, Spring, Scala y un poco de Perl. Los dos proyectos en los que trabaje eran sobre DynamoDB, que es un No-SQL database desarrollado por Amazon, parte de los Amazon Web Services. Estuve ubicado en el piso 21 del edificio Port 99, en Virginia y la 8va. En la imagen se ve de fondo Seattle con el clásico Space Needle.



Los temas que mas me impresionaron de la experiencia:

1. Amazon no solamente es el retail website que todos conocemos y sus mas de 160 millones de usuarios activos, tiene muchas otras empresas y emprendimientos, los mas populares en mi opinión: AWS, Kindle, Amazon Studios, IMDb, Zappos. La arquitectura dentro de la empresa es orientada a servicios, cada departamento tiene una serie de clientes y a la vez es consumidor de una serie de servicios. Cada departamento tiene independencia tecnológica, lo que significa que siempre que cumplan ciertas normas pueden elegir las tecnologías que quieran para desarrollar sus servicios.

2. "It's still Day 1 at Amazon", por mas que la empresa haya crecido muchísimo desde su fundación en el 1995, todavía mantienen ese espíritu de startup, de adaptarse rápido a los cambios y de tomar decisiones sin demasiada burocracia. Claro reflejo de esto, en la empresa hay un deploy de software cada 7 minutos.

3. Me impresiono también la calidad técnica de muchos de los desarrolladores y el buen ambiente laboral que hay adentro, muchísima libertad dentro del trabajo, siempre y cuando entregues tu trabajo terminado y bien hecho.
Amazon - Port 99, piso 24.

Todos los pisos con paredes-pizarron por donde mires, de lo mas normal ver a la gente discutir ideas en cualquier momento/lugar. Muchas actividades para distender también como mesas de ping-pong, esos old-school arcade games gigantes, mesas de pool, beer-friday, entre otras.




4. Tienen un build-system que se llama Brazil, al comienzo no entendía los beneficios de un build-system tan complejo, pero después de un par de semanas comencé a apreciar los beneficios. Básicamente un servicio esta formado por N paquetes, vos podes hacer checkouts independientes, es decir, bajas 1 de los N paquetes, modificas, probas en localhost, y estas listo para hacer un deploy. NO necesitas bajar los N paquetes para probar el servicio (siempre y cuando no necesites modificar los N paquetes).

Como parte del build-system hay un plugin para Eclipse e IntelliJ. El plugin te baja los fuentes y te agrega un VersionSet que es el conjunto especifico de las librerías que necesitas para compilar y correr todo localmente. Esto hace que arreglar un bug o agregar una funcionalidad sea extremadamente sencillo. Aquí hay mas detalles de un ex-empleado que en teoría trabajo en el equipo de desarrollo de esta herramienta.

5. Tienen un deployment-system llamado Apollo. Básicamente una vez que haces un check-in de tu código, arma un subconjunto de tu VersionSet para hacer el deploy, y a la par tenes una herramienta web que te muestra en un pipeline como va corriendo el deploy desde la etapa Alpha, Betha, Gamma, Development, Pre-Production hasta Production. Todo haces desde tu IDE, sin distraerte ni un segundo con línea de comandos ni nada extraño.

6. Nadie puede hacer check-in de UNA línea de código antes de pasar por un Code Review. De nuevo, tienen un plugin y todo esto esta integradísimo con el IDE y con una herramienta web que te ayuda a responder a los comentarios que hicieron sobre tu código. Cuidan mucho también los coding/naming conventions. Mucho TDD también dentro de los equipos, cada pedazo de código que escribís, tiene que tener adjunto su conjunto de unit/integration tests.

7. En honor al glorioso #runningTeam de la Roshka le metía un 7K por esta zona los fines de semana, solo en honor, ya que no me considero parte de esa elite de atletas de la Roshka. Entre semana normalmente no había mucho tiempo, a pesar de ser interns, muchos recibimos proyectos que incluso llegaban a Producción, o sea que no era un paseo nomas es el tema.


En fin, a esta altura ya nadie esta leyendo esto, pero no quiero terminar sin decir que aguante La Roshka y toda su gente, ojala tenga el honor de compartir de nuevo la #piezaInternacional o la de #inviernoTodoElAño con el impecable #roshkaDevTeam. Salud!




Todo esto es exclusivamente una opinión mía, en ningún momento escribo en nombre de Amazon ni de ninguno de mis compañeros de trabajo.


Tuesday, July 9, 2013

Staff remoto

Hoy anunciamos que cerramos trato con nuestro primer programador IDE remoto. Es Andrea "Pandita" Mercado.


Es conocida de la casa, había trabajado con nosotros y tuvo que salir por mudarse a vivir a otra ciudad, pero como tanto la extrañábamos, decidimos hacer un plan piloto de trabajo remoto para probar a ver qué tal puede funcionar para nuestro mercado un esquema así.

Ojalá ella sea la primera de muchos otros, porque la vanguardia, es así.

Bienvenida de vuelta, Pandita!