Transición a Android

Después de haber usado teléfonos celulares dirigidos al mercado japonés, hace un par de semanas me decidí a comprar un smartphone de “la nueva generación”. Y como ustedes, quienes me hacen el favor de leerme, seguramente están imaginando, mi opción fue un teléfono con Android.

Antes que nada, he de hacer mención que no es mi primer smartphone. Hace algunos años usé uno estilo “blackberry”, el cual tenía el infame windows mobile 6, pero lo cambié en la primera oportunidad que tuve debido a que en ese entonces el mercado japonés todavía no estaba preparado para esa clase de teléfonos.

Primero fue muy difícil decidirme por un modelo en particular. Tener Android sólo significa una cosa para mí: rootearlo, es decir, alterarlo para tener acceso como súper usuario, lo que significa tener el control absoluto del teléfono. Si hubiera escogido un iPhone también le habría hecho jailbreak. El caso es que había que escoger un teléfono que se pudiera rootear, pero los de fabricantes japoneses se han destacado por no poder hacerlo. Y por otro lado, con un smartphone perdería todas las funciones que han caracterizado a los teléfonos celulares nipones desde hace muchos años: dinero electrónico, televisión, acceso a la red WAP (que es muy usada en este país). Por fortuna, la nueva generación de smartphones con Android contiene también esas funciones, pero siendo de fabricantes japoneses significa no poder rootearlo. Tenía que decidir entre el root o la conveniencia de las funciones arriba mencionadas.

Durante unos días pensé cuál podría ser mi mejor opción, y me decidí al principio por un Aquos Phone de Softbank, que viene con Gingerbread (Android 2.3) y las funciones de los teléfonos japoneses. Sacrificaría el root por ellas.

El hecho de que este teléfono tome fotos en 3D sinceramente me daba lo mismo.

Estuve indeciso, pero aun así fui a una tienda de Softbank a hacer cambio de teléfono, y me dijeron que era mejor que esperara hasta el 1 de julio, ya que el pago del teléfono anterior terminaba en junio y así no sufriría ningún cargo extra por “deshacerme” del teléfono antes de tiempo (por sus contratos raros que te obligan a usar un equipo por mínimo 2 años). Yo iba medio convencido por el teléfono mostrado arriba, pero tener que esperar varios días me dio tiempo para estudiar otras posibilidades.

Consultando en Twitter, Felipe me recomendó un teléfono: el HTC Desire HD. Erick hizo hincapié en lo que ya venía pensando: ¿sacrificaría el root por funciones japonesas? El punto era que yo sí usaba esas funciones, en especial el dinero electrónico y la red WAP, por lo que sí me dolería dejarlas… pero ustedes saben que puede más el lado geek, y después de ver lo que ofrecía el teléfono recomendado, aunado con que los HTC son los teléfonos que tienen de las mejores redes de desarrolladores (y por ende, altas probabilidades de poder ser rooteados), me convencieron y me di a la tarea de buscarlo. Softbank lo maneja como el modelo 001 HT, y al revisar el sitio web, me enteré de que salió a la venta en Japón en diciembre del año pasado. Siendo un teléfono ya no tan nuevo, creí que sería fácil encontrarlo…

Continue reading “Transición a Android”

Ignorancia musical

Aunque desde pequeño escuchaba música y tenía mis canciones favoritas (“el yerberito”, de Celia Cruz, cuando yo tenía unos 4 años de edad, por mencionar un ejemplo), he de confesar que mis conocimientos musicales eran, y aún son, extremadamente parcos.

Muchas de las personas que me conocen personalmente no pueden creer que no conozca a una banda o una canción que, por lo general, todo mundo conoce (o debería conocer). Me pasó hace poco, en una ida a Tokio: fuimos a un karaoke y una amiga puso una canción de Coldplay, a lo que yo pregunté: ¿quién es Coldplay?”. Y así me ha pasado antes en incontables ocasiones.

Sé que los gustos musicales varían con cada persona: desde los que gustan de música clásica (que me encanta), hasta lo que odian el mainstream, pasando por ritmos como reggaeton, bandas norteñas, y un largo etc. Pero créanme que mi caso es grave…

Por ejemplo, no a todo mundo le gustan los Beatles, pero al menos pueden identificar algunas de sus canciones, aunque sea las más famosas, ¿cierto? Yo no podía hacerlo hasta hace unos años, ya que estaba aquí, en Japón, Y no es que conociera las canciones y no supiera quién las cantaba: simplemente no las conocía.

Algunos artistas o grupos me sonaban de nombre, y en algunos casos sí conocía las canciones pero ignoraba quién las cantaba, pero en general siempre he sentido que me falta mucho conocimiento en lo que a música se refiere.

Me puse a pensar cuál podría ser la razón. La música me gusta, incluso tengo canciones favoritas… ¿entonces? Le di varias vueltas al asunto, y a lo que llegué fue a mi familia.

Ya he mencionado en ocasiones anteriores que mi padre fue muy estricto con nosotros, aclarando claro que no es malo ser estricto pero sí lo es serlo de más; obviamente la música que a él le gusta a nosotros no nos agradaba del todo, pero hasta ahí todo es “normal”. La cuestión es que mi papá asociaba los grupos modernos con rebeldía, anarquía y, en algunos casos, hasta con satanismo (la famosa frase de “esas son cosas del diablo”). Mi mamá también entra en esta última categoría, pues siendo mi abuelo (q.e.p.d.) mariachi, sus gustos musicales estaban orientados hacia ese tipo de música. Por lo anterior, la música moderna que escuchaba cuando era chico era limitada.

Hasta la secundaria nunca me importó realmente todo esto, aunque recuerdo que tenía un cassette de Thalía que escuchaba muy seguido (la nena me encantaba 😛 ); en la secundaria, uno de mis compañeros idolatraba a “The Cure”, pero yo ni por enterado de quiénes eran, y por el puro nombre y la influencia de mi padre, yo también lo asociaba a que era música que “no debía de escuchar”. Sin embargo, cuando entré a la prepa comencé a notar que cuando se hablaba de música yo estaba completamente perdido. Conocía lo más común (el mainstream) sólo hasta cierto punto, pero cuando se trataba de hablar de grupos (preparen risas) como Maná (pueden reirse, gracias) yo ni siquiera los conocía. De hecho, cuando hacían fiestas con música en la prepa (lo que comúnmente se conoce/conocía como “luz y sonido”) notaba que la mayoría de la gente interpretaba o tarareaba las canciones. ¿Y yo? Calladito. Sin saber qué onda.

Por influencia de algunos amigos en la misma prepa comencé a escuchar más música. Por mencionar algunos ejemplos, conocí a Ace of Base, Toni Braxton, Aerosmith, entre otros. No obstante, no nacía en mí el sentimiento de querer escuchar más música: si escuchaba por casualidad algo nuevo, me interesaba, pero si no, ni enterado de su existencia. Recuerdo que un amigo, súper aficionado a los Beatles (¡saludos Pablo!) no podía creer que no supiera quiénes eran ellos ni tampoco que no pudiera decir el título de al menos 5 canciones de ellos.

De ahí en delante comenzó un cambio: escuchaba más música, pero no me preocupaba por saber quién la interpretaba. Me gustaba la música clásica y conocía piezas como la quinta o novena sinfonía de Beethoven… pero no sabía quién era el autor. Supongo que a muchos les ha pasado que han escuchado una canción y hasta se saben partes de ella, pero no se acuerdan o no saben el nombre, ¿cierto? Más o menos era el pan de cada día en lo que a música se refería para mí.

Todo dio un giro importante cuando me encontré con el idioma japonés. Gracias al boom de la animación japonesa en México era relativamente fácil conseguir música en japonés, no necesariamente relacionada con la animacion. Y a mi familia realmente no le importaba que escuchara música japonesa. Digamos que lo veían “diferente” a escuchar a algo como “U2”.

Uno de los primeros CD que recuerdo haber comprado fue el de endings de Ranma 1/2:

Continue reading “Ignorancia musical”

Cultura laboral en Japón

Durante toda la aventura respecto al cambio de trabajo, reafirmé mi entendimiento sobre la cultural del trabajo en el país del sol naciente.

Lo que sigue es una visión totalmente personal. Sabemos que cada quien habla de la feria dependiendo de cómo le fue en ella, por lo que no tomen todo esto como verdad absoluta y lean más experiencias de otras personas que trabajen en Japón. Más opiniones = mejores conclusiones.

En algún lugar de este blog (que de momento no recuerdo) ya he mencionado que la perspectiva que los japoneses tienen de ti cambia mucho cuando eres estudiante y cuando te conviertes en persona económicamente activa. En cuanto comienzas a trabajar, comienzas a ser parte de la sociedad, te comienzan a tomar más en serio, a tener más respeto.

El trabajo en Japón es el mejor pretexto para evitar ir a compromisos que no te llaman la atención, para cancelar citas (hay chicas a quienes no les importa que le des toda la prioridad e importancia al trabajo) y en general para excusarte. Con simplemente decir “no puedo, tengo que trabajar ese día / a esa hora”, es raro el japonés que no te comprenda. Incluso las 飲み会 (nomikai, idas a beber en grupo) son consideradas parte del trabajo, por lo que es casi a fuerzas que tienes que cancelar cualquier compromiso que tengas para asistir  a ellas, a menos claro que el compromiso sea realmente urgente. Son pocas y contadas las ocasiones en las que alguien te cuestiona respecto a tu trabajo, puesto que entre más tiempo trabajes la gente te percibe como mejor empleado, y al trabajo hay que darle prioridad.

Entrar a laborar a una empresa japonesa significa que implícitamente te vuelves propiedad de ella. Aunque tu horario de trabajo está perfectamente establecido, la realidad es que te vas a la hora en la que tu jefe te permite que te vayas. Se ve “mal” que alguien salga justo a su hora, y las razones que dan para no hacerlo son:

  • El jefe todavía no se va. ¿Cómo te vas a ir tú antes que él?
  • El jefe no te ha dado permiso de regresar.
  • No muestras suficiente esfuerzo en tu trabajo.
  • Se “ve mejor” cuando alguien trabaja de más.

He comentado antes también que existen casos en los que los empleados no hacen realmente mucho durante el día pero comienzan a trabajar en serio después de su hora de salida. ¿Por qué? Porque así les tienen que pagar horas extra. Y lo anterior me lo dijo una persona que trabaja en una institución gubernamental.

Continue reading “Cultura laboral en Japón”

¿Cambio de rumbo?

Como mencioné hace poco, estos últimos 3 meses han sido muy pesados. Terminaba cada día prácticamente en calidad de bulto. Afortunadamente, hubo un resultado, pero desafortunadamente todavía no hay nada concreto. Es hora de contar los pormenores del asunto.

Creo que no hace falta mencionar que lo que voy a contar aquí no incluye ningún tipo de odio. Estoy muy agradecido por el trato y las atenciones recibidas; eso es muy aparte de lo que a continuación describo.

Resulta que, después de considerarlo por mucho tiempo (un año más o menos), de aguantarme varias cosas y de ser ignorado en tomas de decisiones importantes en las que mucho de mi trabajo tenía que ver, decidí aventurarme en la azarosa tarea de cambiarme de trabajo en Japón. Sabía que sería una tarea larga y difícil, pero la realidad superó mis expectativas.

Agarren palomitas, refresco y pónganse cómodos. No, esto no tiene nada que ver con “Los años maravillosos”, pero advierto que es una lectura larga.

Antes que nada, mi primer deseo es quedarme en Japón por un poco más de tiempo. Cierto es que existe la opción de irme a otro país, pero todavía siento que tengo asuntos que tratar con el país del sol naciente. Bajo esa premisa, continúo:

¿Universidad o empresa?

La primera decisión difícil fue elegir el tipo de camino que eligiría: académico o laboral. El primero sinceramente me llama mucho la atención, y es hasta cierto punto una parte de mi meta final (ser investigador y profesor), pero el segundo incluye una parte más grande de un sueño que quiero alcanzar en algunos años (y que en su momento relataré por acá). El problema de elegir regresar al mundo académico es no haber publicado nada en estos 2 años después de obtener el doctorado, y si aunamos a que no me gusta ninguno de mis papers (que saqué más a fuerzas que por convicción), mi perfil en esa área es débil. Pero como no hay peor lucha que la que no se hace, me incliné por ahí.

Comencé por platicar con algunos profesores de la universidad donde estudié (después de todo, está enfrente del trabajo); el panorama que me dieron no fue nada alentador: casi todos los puestos que se anuncian en los journals son nada más “estéticos”, es decir, para adornar esas páginas, puesto que por lo general los puestos ya están decididos desde antes de sacar el anuncio, y los agraciados son los estudiantes del profesor del laboratorio que lanza la oferta. Regresar al mundo académico no sería fácil, pero tampoco imposible.

Me puse a buscar puestos en los que podría entrar. Ni siquiera estaba esperanzado en encontrar algo sobre procesamiento de lenguaje natural; algún puesto como profesor de una materia como inteligencia artificial, programación concurrente, etc., eran suficientes: el chiste era estar dentro, y una vez ahí continuar investigando sobre mi área. ¿Qué fue lo que encontré? Casi casi nada.

Uno de los profesores a los que consulté me envió unas ofertas de trabajo en un instituto en la prefectura en Nara, y una de ellas era en traducción automática. “Ni mandado a hacer”, pensé, y me apresuré a reunir los requisitos y enviar los documentos necesarios. El problema era que no tenía mucho tiempo, y armar un plan de trabajo, incluso con una idea ya más o menos establecida, requiere de varias revisiones y correcciones. Los profesores me apoyaron con todo, dándome incluso cartas de recomendación. Como quieran y gusten, alcancé a enviar todo.

Resultado: rechazado. Lo veía venir, pero creía tener posibilidades. La realidad fue otra, y me tocaba seguir buscando.

Seguí buscando trabajo en el ramo académico por un par de semanas más, pero al ver que no había nada claro dentro de Japón, y habiendo escuchado comentarios muy malos de amigos míos que están como investigadores y en postdoctorado en universidades japonesas, la investigación en Japón parece estar estancada. Incluso llegué a escuchar los mismos comentarios de gente que está fuera de Japón pero tiene o ha tenido contacto con investigadores japoneses en los últimos años. Me costó trabajo abandonar esa idea, pero teniendo en mente que es parte de la meta final, opté por dejarla en stand by hasta que sea requerido.

No había de otra: había que buscar trabajo fuera de las universidades, en las empresas, en el mundo laboral, como lo he venido haciendo en estos años.

Doctor en Japón: no muy buena combinación

Quienes me hacen el favor de seguirme en twitter han leído esto antes, pero buscar trabajo en Japón como doctor es una tarea titánica. Olvídense de que uno sea bueno o malo en el área. Eso no importa. El simple hecho de ver en el currículum que tienes un doctorado hace que una gran parte de las empresas te digan que no sin siquiera darte oportunidad de hacer o decir algo. Cierto: habrá quien tenga suerte y pueda entrar a una gran empresa, de esas que sí contratan doctores, pero las oportunidades son muy pocas y contadas, por lo que los puestos son muy peleados.

Las empresas japonesas inmediatamente relacionan doctorado = investigación. La idea es que un investigador ha tenido muy poco (o nulo) contacto con el mundo laboral, por lo que carece de experiencia aunque tenga firmes conocimientos teóricos. Y aunque esa forma no está tan alejada de la realidad, deja fuera a la mayoría de extranjeros que vienen a estudiar un posgrado a Japón después de haber trabajado por cierto número de años.

El caso es que busqué trabajo por donde se dio oportunidad, pero no salía nada. Mi última opción era trabajar como desarrollador, labor que puedo desempeñar sin problemas, pero quería algo más cercano a mi área. Busqué, busqué y busqué, pero nada. Incluso salió una oferta de trabajo en Google, pero también me mandaron a volar. Y hay que mencionar que es la 2da. vez que intento entrar ahí y la 2da. que me rechazan. Definitivamente Google y yo no nos llevamos bien 🙁 . También envié mis documentos a IBM Japón. Ahí se vieron más buena gente, y me respondieron que no tenían ningún puesto por el momento, pero que tendrían mis documentos en cuenta por si algo de mi área salía (sí, yo sé que es una forma cortés de decirte que no, pero al menos dieron una razón). De ahí en fuera, nada.

Me deprimí. Comencé a optar por el plan B: salir de Japón. No era parte de mi plan para los próximos años (aunque sí lo es para más adelante), pero si de plano aquí no había oportunidades más allá de ser desarrollador o ingeniero (no porque les haga feo, sino porque eso debe leerse como “esclavo“), a lo mejor en otro país podría tener más suerte. Estuve en modo zombie durante aproximadamente una semana. Fue cuando estuve a punto de rendirme que, por un artículo en un blog, fui a dar a una página japonesa para buscar trabajo.

Fiesta mexicana en Gifu

El pasado 21 de mayo, muchos miembros de la comunidad mexicana en Japón que usamos Twitter nos reunimos en Gifu, todo por el simple hecho de pasar un buen rato juntos y comer carne asada, quesadillas y picadillo hasta hartarnos.

El anfitrión fue Erick, un mexicano originario de Sinaloa que vive con su familia en Gifu desde hace un par de años. Y claro, no puedo dejar de mencionar al buen Javier, ya que también sus atenciones hacia con nosotros fueron muy buenas e hicieron de nuestra estancia en Gifu una experiencia inolvidable.

Participantes, su twitter y lugar donde radican en Japón:

  • Gifu
    – Erick (@AWD_Maniac), Perla (@PerlaKibou) y familia
    – Javier (@Gifurama) y familia
    – Meri
    – Christian
    – Rubén
    – Juan
    – Daniel
  • Osaka
    – Roberto (@Piroshi)
    – Jorge Blanco (@jorgeblanco)
    – Christian (@chpesa)
  • Hyogo
    – Megumi (@menchiesp, prácticamente mexicana honoraria)
  • Shizuoka
    – José Antonio (@jantoniovaldez)
  • Nagano
    – Esdras (@esdrasgrau)
  • Tokio
    – Azael (@ayotl_)
    – Miriam (@minavg)
    – Luisa (@huichis_mx)
  • Chiba
    – Rigo (@rigomm) y su esposa Saeko (@saekotk)
    – Elena (chica rusa amiga de Rigo)
  • Fukuoka
    – Carlos (@Sea_Jackal) y familia
    – Haydee (@angel_haydee)
    – Su servidor (@medinamanuel)

El plan de la fiesta comenzó a formarse un mes antes. Se decidió la fecha tratando de evitar la semana dorada en Japón porque así saldría más caro viajar y sería más difícil conseguir lugares. El 21 parecía buena fecha para todos y así quedó. Yo en ese momento no sabía si realmente podría asistir, ya que vislumbraba que estaría muy ocupado y muy gastado, y no podía decidir en ese momento. De hecho, yo daba prácticamente por hecho que no podría ir, pero decidí no perder las esperanzas hasta el último momento y creo que fue lo correcto.

IMG_0905

Continue reading “Fiesta mexicana en Gifu”

La gente se vuelve a ir

Hace un par de años escribía lo que fue la despedida de mi amigo de Bangladesh al terminar el doctorado. Aunque ya estamos en junio, en marzo de este año también hubo despedidas.

El otro mexicano que estaba en la ciudad, Jorge, se mudó a Osaka a continuar su maestría, dejándome otra vez como al principio: siendo el único mexicano en la ciudad. Jorge pasó 4 años acá estudiando su carrera, y según vi con su proyecto final sí le sacó provecho. Lo mejor para él apenas comienza, pues ya tiene una nueva y mucho mejor oferta que la que la universidad de Osaka le puede ofrecer.

Otro latino que también se fue es el hondureño: Gilberto. Él se ha quedado a laborar en Japón, y desde que se hizo persona económicamente activa en Japón prácticamente ha desaparecido de la faz de la tierra, tuiteando de vez en cuando.

Otros conocidos también se fueron, pero la mayoría le dijeron adiós a Japón, algunos por gusto y otros porque se vieron forzados.

Casi toda la gente con la que convivía se ha marchado. He de confesar que siento un poco de nostalgia al voltear a la ventana y ver enfrente a la universidad que me acogió por 6 años; todavía hay conocidos ahí (algunos estudiantes, otros empleados de la universidad), pero cada vez son menos.

La semana pasada hubo un convivio entre todas las empresas que están dentro de este edificio. El dueño de la compañía donde trabajo estaba sorprendido al ver cuánta gente me conoce, incluyendo el top de este lugar. Y no, no es que sea famoso, pero gracias a que he participado (o me han pedido que participe) en muchas actividades culturales y también he fungido como voluntario en otras, la gente se acuerda de uno, y no tanto porque sea alguien que participa siempre, sino más bien porque soy extranjero y hablo japonés. En un lugar como Tokio eso sería totalmente X, pero por acá, todavía es valorado.

Mientras esté en un lugar donde pueda desarrollarme, no hay problema. ¿Esta ciudad? Es linda, la he llegado a apreciar (con todo y que sigue siendo el rancho :P), pero poco a poco se acerca la idea de ver otros horizontes.

Aire fresco en junio

No sé exactamente a qué hora, pero ya se hizo junio. Estamos a mitad del año y ni cuenta me había dado.

Notarán que he andado ausente del blog (de escribir nada más, porque los comentarios siempre los leo), y es que después de la parte 5 de los años maravillosos he estado trabajando en un proyecto, y no precisamente en el buscador de formspring. Pasé 2 semanas sin salir (excepto por la Gifufiesta, que ya relataré en otro post) y reduciendo mis horas de sueño a un promedio de 5 por día. ¿Será por eso que tengo mucho sueño diario?

Algunos me han dicho que es porque elegí ser salaryman. Pero la realidad es todo lo contrario: precisamente porque no quiero convertirme en uno es por lo que trabajo en proyectos personales que me sirven para aprender más y escapar de la rutina y de la vida de trabajador estilo japonés (no porque tenga algo de malo, pero sinceramente no es mi estilo). Y mientras son peras o manzanas, aquí seguimos echándole ganas para no caer en el conformismo.

En tan sólo 2 semanas he hablado con personas que son el vivo ejemplo de que hay cosas buenas de ser extranjero viviendo y trabajando en Japón. No es que lo haya olvidado, pero con eso de que el contacto con personas reales por acá en el rancho es muy reducido, encontrar a alguien con quien escuchar y discutir respecto a nuestra posición en la sociedad nipona da un respiro más que bienvenido.

Conversando con un extranjero que obtuvo su doctorado y ahora está trabajando como asistente de su profesor, me decía que en cuanto su esposa terminara el doctorado (también en Japón), lo primero que haría sería salir de aquí. Él es muy bueno en su área, y de hecho tiene ya ofertas para postdoctorado en otros países, y como no se termina de acostumbrar a la forma de trabajo japonesa, su paciencia ya llegó al límite, porque lo limitan. Sabemos que nunca hay que generalizar, pero la media japonesa es que la gente de arriba siempre tiene la razón y uno no puede contradecirla (so pena de caer de su gracia o de plano de que te manden a volar). La sociedad está inmersa todavía en la idea de que lo que dice el de arriba es inamovible, y si está mal, hay que buscar la forma de decírselo sin decírselo, incluso si eso significa echarse la culpa de uan idea que ni propia es (porque los de arriba no se pueden equivocar, claro está…).

Otro extranjero me dejó ver la prueba de lo que siempre he creído: penetrar en el mercado japonés es muy difícil, y como extranjero más; pero una vez que estás dentro, es muy difícil perder tu posición (salvo que la riegues en serio). Hacer una empresa en Japón es una tarea titánica, pero es la segunda vez que me demuestran que es posible, animándome con ello a seguir adelante con mis planes y no claudicar, por muy pesada que esté la situación actual.

Dentro de todo este mar de ideas y vaivenes, haberme encontrado en Gifu con muchos del grupo de mexicanos en Japón fue quizá el evento que más oxígeno me dio. Y ver que hay compatriotas a quienes les está yendo muy bien en Japón es todavía más reconfortante.

El futuro todavía es incierto, por lo que me abstengo de hacer algún comentario al respecto en este momento. Lo que sí puedo comentar es: aquí sigo. No perdido, pero sí pensativo.

Agradecimiento a todos quienes hacen el favor de leerme. Sus comentarios, tweets, y correos electrónicos siempre son bienvenidos 🙂

Referencia dinámica a tipos de clase en Java

Necesitaba aplicar una serie de operaciones en distintos tipos de datos que comparten ciertas características. Hice lo lógico: creé una clase abstracta que implementa las funciones básicas de las características en común e hice que las demás clases fueran subclases de ella.

public abstract class BaseClass {

   // Propiedades y métodos comunes implementados aquí

}
public class SubClass1 extends BaseClass  {

   // Propiedades y métodos exclusivos
}
public class SubClass2 extends BaseClass {

    // Propiedades y métodos exclusivos
}

En los métodos que aplican las operaciones en cuestión declaré como parámetro la super clase (la abstracta) para que pudiera recibir cualquier subclase. El código quedó más o menos así.

public PriorityQueue<BaseClass> operation1 (List<? extends BaseClass> list) {
    // Hacer algo con los elementos en la lista
}

Hasta aquí todo bien.

El problema surgió cuando dentro de una de las operaciones tenía que modificar varias propiedades comunes de los objetos incluidos en la lista. Debido a la forma en la que Java pasa los parámetros (por valor,  aunque los objetos siempre pasan por referencia. Ver aquí), modificar en el método una de las propiedades del objeto no serviría de nada. Lo primero que se me vino a la mente fue crear clones de los objetos de la lista, pero muchos dicen que hay que evitarlos en la medida de lo posible, en especial cuando se tiene una estructura de clases compleja y algunos objetos no implementan la interface Clonable.

Ya he trabajado con clones antes y no hubo mucho problema. Sin embargo, quería ver si podía aplicar la solución de crear copy constructors para cada clase en la estructura y llamarlos dinámicamente. El problema es que necesitaba saber en tiempo real a qué clase pertenecían los objetos en la lista. Cierto: puedo hacer una serie de if con instanceof para probar cada una de las clases, pero se me hacía que había una mejor solución. Un simple:

BaseClass copy = new BaseClass(originalobject)

está fuera de contexto porque la clase base es abstracta (no se puede instanciar directamente).

La solución es relativamente sencilla: después de crear el copy constructor y de llamar en él al copy constructor de la superclase, en las operaciones tomo la clase de los elementos de la lista y creo dinámicamente una instancia de su copy constructor, la cual puedo llamar para crear una nueva instancia de la clase que contendrá los elementos del objeto original más lo que haya necesitado modificar. Al final meto todo en una cola que se ordena solita (basada en el compare de la clase) y es lo que regreso.

Los métodos que se usan:

  • Object.getClass() : para obtener en tiempo real la clase del objeto en cuestión.
  • Class.getDeclaredConstructor(Class) : para obtener el constructor que reciba los parámetros indicados. Como en este caso se trata de copy constructors, el único parámetro es un objeto de la misma clase, determinado con el getClass().
  • Constructor.newInstance(Object): para obtener una nueva instancia de la clase. En este caso, el constructor debe recibir como parámetro un objeto de la clase BaseClass o alguna de sus subclases.

Algo más o menos así:

public abstract class BaseClass {

   protected BaseClass() {
      // Inicialización de propiedades en común
   }

   // Copy Constructor
   protected BaseClass (BaseClass bc) {
       // copiar los datos de bc a esta instancia
   }

}

public class SubClass1 extends BaseClass {

    public SubClass1 {
       super();
       // Inicialización de propiedades exclusivas
    }

    // Copy Constructor
    public SubClass1 (SubClass1 sc1) {
        super(sc1);
        // Copiar los datos exclusivos de sc1 a esta instancia
    }
}

public class SubClass2 extends BaseClass {

    public SubClass2 {
       super();
       // Inicialización de propiedades exclusivas
    }

    // Copy Constructor
    public SubClass2 (SubClass2 sc2) {
        super(sc2);
        // Copiar los datos exclusivos de sc2 a esta instancia
    }
}

Y las operaciones:

public PriorityQueue<BaseClass> operation1 (List<? extends Searchable> list) {

    Class<? extends BaseClass> objclass = null;
    Constructor<? extends BaseClass> theConstructor = null;
    BaseClass newElement = null;

    for (BaseClass bc : list) {
       // Hacer algo con los datos

      objclass = bc.getClass();
      theConstructor = objclass.getDeclaredConstructor(objclass);
      newElement = theConstructor.newInstance(bc);

       // Hacer las operaciones restantes, crear la cola y devolverla
    }
}

Una alternativa más para la referencia dinámica a las clases y sus constructores.

Plugin de Veetle 64 bits

Muy de vez en cuando quiero ver un video o transmisión en vivo que necesita el plugin de veetle, pero el download que viene por default en la página de descargas es para arquitecturas de 32 bits. Intenté instalarlo con ndiswrapper, pero aun así no funcionaba.

Buscando en internet, me encontré que veetle también tiene plugin para arquitecturas de 64 bits, pero no está fácil encontrarlo. Por acá la liga:

http://veetle.com/download.php/veetle-0.9.17plus-linux-install.sh

Instálenlo como usuario normal. Lo que hace es copiar los plugins necesarios al directorio ~/.mozilla/plugins

Listo. VeetleTV funcionando en 64 bits. Rara vez lo uso, pero nunca está de más tenerlo.

Cabe mencionar que vlc también puede reproducir y grabar streams de Veetle. Hay muchos tutoriales en internet, por ejemplo:

http://netimports.blogspot.com/2010/10/how-to-record-watch-veetle-broadcasts.html

Queda para el registro 🙂

Los años maravillosos – Parte 5

A estas alturas creo que no se necesita introducción, ¿verdad? Agarren palomitas, refresco y pónganse muy cómodos, porque creo que ahora sí me extendí.

Si es la primera vez que leen un escrito de esta serie, por acá pueden leer las entregas pasadas:

Ingeniero – Parte 3

Desde octubre de 2001 estuve sin trabajo, buscando a ver en dónde podría conseguir algo. Justo a principios de año (2002), Omar me dijo que la empresa donde laboraba estaba buscando contratar gente. Omar me recomendó, me hicieron entrevista y, de forma por demás rápida, ya tenía trabajo.

La empresa ya tenía planeado en qué proyecto iba a participar, pero para ello necesitaba estudiar una tecnología llamada COM, la cual utilizaría en el trabajo que se me iba a asignar… o al menos ésa era la idea.

Entré a trabajar en un proyecto dentro de Hewlett-Packard Guadalajara, pero los administradores de proyecto estaban en Boise, Idaho, por lo que la comunicación sería totalmente en inglés. Además, mi lugar de trabajo serían las oficinas de HP. Me tenía que levantar más temprano, haría más tiempo en los camiones, pero no importaba; el trabajo era bueno, se veía interesante y parecía que podría crecer profesionalmente.

Algo curioso de este trabajo fue que, por primera vez desde que egresamos de la universidad, Omar y yo estábamos en el mismo lugar (mismas oficinas), pero trabajando en proyectos diferentes.

No pasaron más de 2 meses desde que entré cuando me enviaron a Idaho, a la planta de HP, para entrenamiento. Estuve por allá 3 semanas, viviendo en medio de nieve, frío… Big Brother y un trabajo que no tenía nada que ver con lo que me habían dicho que haría.

Enfado

Creo que no es apropiado contar punto por punto lo que viví en Idaho en lo que respecta a la vida fuera del trabajo. Lo que sí es preciso mencionar es que la empresa quería ahorrarse dinero a toda costa y no le importaba sacrificar la comodidad de sus empleados con tal de que no se gastara tanto.

El trabajo no era nada de lo que me habían dicho que era. Lo que había estudiado solamente sirvió para entender lo que internamente se usaba, pero nunca me tocó jugar con eso. En vez de programar, seríamos prácticamente testers (personas que se dedican a hacer pruebas de algo que ya está terminado, y en muy remotoso casos se le puede meter mano al código). Yo me quejé con mi jefa de México creo que al segundo o tercer día de estar allá, pero la respuesta que recibí fue que conforme el proyecto avanzara iba a tener oportunidad de programar, cosa que era totalmente diferente a lo que habían mencionado al principio.

Las 3 semanas pasaron. Aprendimos lo que había que aprender y regresamos a Guadalajara. Mi jefe inmediato (un ingeniero en electrónica) sugirió que nos dividiéramos el trabajo, ya que eran 4 proyectos y lo conveniente sería que cada uno estuviera a cargo de 2. Yo le di prioridad a él y lo dejé que escogiera, y me quedé con los 2 proyectos restantes. Mi jefe en Idaho resultó ser una persona muy inteligente, muy sociable, muy amable y muy comprensivo; mi trabajo se convirtió en algo realmente sencillo, pues los 2 proyectos que tenía asignados para estar probando rara vez daban problemas. Y no exagero: había días en que llegaba y en 3 horas terminaba el trabajo, por lo que me desocupaba temprano y me quedaba mucho tiempo libre. Pero no puedo mencionar lo mismo sobre mi jefe inmediato: tenía muchos problemas con un proyecto, y no le daba tiempo de atender otro, por lo que me lo asignó voluntariamente a fuerzas. Quedamos 3-1, y no precisamente en un marcador en el que me hubiera gustado ganar. Pero incluso así, yo sacaba el trabajo de las pruebas de 3 proyectos sin muchos problemas mientras él le sufría con el otro (que él mismo escogió).

Lo anterior puede sonar divertido, pero realmente no lo era. Quizá lo que más disfrutaba del trabajo era la cotorreada con los compañeros. Nos poníamos a jugar Magic a la hora de la comida, platicábamos, criticábamos, sufríamos los estragos de la empresa. El ambiente era genial, y conocí gente muy talentosa, entre ella a un chavo que es (y desde entonces lo era) una eminencia en programación en Windows, al grado que fue contratado por Microsoft y terminó yéndose a residir a Redmond, y hasta la fecha aún está por allá.

Me tocó regresar a Idaho varios meses después, en verano (la primera vez fui en invierno y conocí lo que era el frío verdadero). Boise, la capital, es un lugar muy bonito y muy campirano. De hecho, broméabamos diciendo que la mitad de la gente que vive en Boise trabaja para HP y la otra mitad trabaja para la gente que trabaja para HP. Eso sí: las baked potatoes son deliciosas. Pero desde antes de volver a Idaho, yo me quejaba y buscaba la forma de salirme de ese proyecto y que me asignaran otro. El ambiente de trabajo era bueno y la paga no era mala, por lo que nunca me pasó por la mente renunciar. Lo único que me haría salirme de ese trabajo sería que me dieran la beca a Japón, en cuyo caso renunciaría no por gusto, sino porque la ida a Japón era mucho más importante… y de hecho casi sucedió así, y los detalles de mi renuncia los pueden leer por acá. Por cierto, ahora que vuelvo a leer eso que escribí hace 6 años y comparándolo con mi estado actual, he comprendido mucho más el móvil de las empresas respecto al trato a sus empleados.

He de recalcar que no odié (ni odio) a nadie de esa compañía. Mi jefe inmediato le echaba ganas, y mi jefa pues… actuaba porque así tenía que actuar. Por ahí me habían dicho que la empresa había quebrado, pero echándole un vistazo a internet parece que todavía anda por ahí, lo cual me da mucho gusto. Ojalá que sigan echándole ganas, y que en todos estos años haya mejorado el trato y la relación con los empleados.