Revisión de objetivos de 2015

1 08 2016

lake

Ha pasado más de un año desde la última entrada y ya va siendo hora de que repase cómo me ha ido con los objetivos marcados.

Salud

Aunque algo ha mejorado, estuve yendo al gimnasio y escalando de manera regular, creo que no he puesto el suficiente empeño en este apartado.

Quiero reducir algo más mi peso, dejar de morderme las uñas y mejorar mi resistencia. Para eso me centraré algo más en el cardio. Me gustaría también retomar la escalada en roca este país. De momento, ya he conseguido subir de primero un V+. Después de tantos años el miedo a caer se intensificó muchísimo pero tras unas cuantas caídas en el rocódromo conseguí reducirlo lo suficiente.

 

Trabajo

Éste es el aspecto que más ha mejorado. He conseguido mudarme a Colorado, Estados Unidos, con un decente aumento de sueldo de por medio. Y, además, he logrado certificarme como Scrum Master (tema relacionado con la gestión de personas y proyectos). Espero que ésto me permita seguir subiendo por la jerarquía en un futuro.

El único “pero” es que mi VISA tiene caducidad de cinco años. Pero mi empresa parece dispuesta a gestionar la Green Card que me permitiría residir aquí de forma permanente. Tendremos que estar muy antentos a este apartado porque podría significar tener que volver a Europa en caso de que la empresa me despidiese antes de dicho límite. Mi VISA sólo me permite trabajar para mi empresa. No puedo aceptar ningún otro puesto de trabajo.

 

Idioma

También estoy contento con el cambio producido. Leo habitualmente en inglés y poco a poco se ha ido ampliando el vocabulario para discusiones informales que hay que usar durante la hora de comer (economía, política, películas…).

Sin embargo, todavía me pierdo muchas cosas al ver películas o series sin subtítulos: Archer, Ricky y Morty, SOA son ejemplos de ello. Hablan muy deprisa😦

 

Variado

Otro apartado donde pude cumplir mis objetivos. En 2015 nos fuimos de vacaciones a Mayorca y este año nos hemos ido a México. Vacaciones sólo para dos donde hemos podido desconectar y disfrutar.

 

¿Hay algo negativo?

Pues sí, en Estados Unidos hay muchas cosas que son mucho más caras que en España o Inglaterra. La diferencia horaria es tan grande (8 horas con Canarias) que resulta díficil poder entablar una conversación con la familia o los amigos.

Hablando de este tema, las visitas se reducen a sólo una al año. Un billete de ida y vuelta a Tenerife puede estar sobre los 1.200 € y puede tener dos o tres escalas por trayecto. Un auténtica pesadilla…

 

Nota: agradezco el ánimo que Yasmina y Ángela me han dado para retomar el blog. Me gustaría seguir escribiendo sobre las diferencias entre España y este país en las siguientes entradas. Si alguien está interesado en saber de algún tema en concreto (lugares que visitar, el trabajo en este país, VISAs, comida…) que lo diga en los comentarios y empezaré por ahí.





Objetivos para 2015

9 01 2015

Can I eat you?

Ha pasado un año desde que llegué a Inglaterra pero antes de hacer un post recopilando todo lo que me ha pasado, quiero escribir mis objetivos para el año que acaba de comenzar. Así no se me olvidan y puedo repasarlos el año que viene para ver si lo he conseguido completar todo.

Salud

No le he dado la importancia que se merece este apartado durante el año 2.014 y he aumentado de peso, a parte de perder vitalidad. Así que hace poquito me apunté al gimnasio (hay uno dentro de mi empresa así que es un chollo).

Reto 1: Ir 100 veces al gimnasio este año.

Reto 2: Correr 5 km en 25 minutos.

Reto 3: Escalar 6a+-

Trabajo

Sigo con mi actitud de no hacer horas extras. Trabajar gratis es una de las cosas que trato de evitar a toda costa. Pero por si acaso, lo dejo aquí por escrito para no olvidarme.

Reto 1: Dedicar 50 horas a aprender C#

Reto 2: Dedicar 20 horas a aprender algo más sobre testing (TDD)

Reto 3: Conseguir un buen aumento de sueldo

Reto 4: Viajar a Asia

Idioma

El inglés lo he mejorado, sí, pero siento que hace tiempo que está atascado en un cierto nivel que me permite hablar de cosas del trabajo pero poco más.

Reto 1: Ver 50 vídeos, películas o podcasts en inglés sin subtítulos

Reto 2: Leer 15 libros de los cuales, al menos, 12 tienen que ser en inglés. Para que no me pille el toro ya tengo empezados Choose yourself y The Passionate Programmer.

Variado

Llevar las cuentas de todos mis gastos mes a mes. Lo he conseguido hacer algunos meses durante 2014 pero me gustaría que se convirtiese en una rutina para este 2015.

Tengo que buscar piso. Necesito encontrar una habitación en los próximos meses. Intentaré que esté más cerca del curro y ahorrar algo de dinero con respecto a lo que estoy pagando ahora.

Reto 1: Irme de viaje por placer al menos una vez al año (a un destino que no sea para ver amigos o familiares).

Reto 2: Escuchar más música. Por dejadez dejo siempre la misma en el móvil y no puedo usar mi cuenta española de Spootify (donde descubría temas de mis amigos). Tengo que remediar este punto ipso facto.

Reto 3: Seguir añadiendo platos a mi lista de recetas. Sólo cocino unos poquitos platos y durante el 2014 sólo aprendí dos nuevas recetas: tiramisú y carne al horno. Necesito añadir platos de cuchara.

Gran reto

Como gran gran reto para este año tengo conseguir una fuente de ingresos adicional. No sé si haciendo un blog y poniendo publicidad, si escribiendo artículos para otros o vendiendo mis dibujos. Pero me gustaría poder empezar algo del estilo de lo que construyó Ángel de viviralmaximo.com

Bueno, son un montón de metas. Me he tenido que hacer una tabla de Excel para poder llevar la cuenta de las veces que hago una tarea del reto para poder comprobar cómo voy en 3 o 6 meses.

¿Que por qué tantas metas? Porque sigo las recomendaciones de Rocco:

En la vida hay que fijarse metas…

cuanto más metas mejor.

Rocco Siffredi

Espero haberte sacado una sonrisa y te animo a que tú también pienses en qué te gustaría que pasara este 2015. Porque sentándote y esperando te garantizo que lo único que va a pasar es que te hagas un año más viejo.

Y sobre todo espero ser más feliz aún que en el 2014. Las metas son sólo una excusa para tratar de no perder tanto tiempo en facebook🙂





Trabajar en UK

16 03 2014

En este post trato de recopilar las tareas burocráticas que hay que hacer nada más llegar a Inglaterra.

Portsmouth

Lo primero de todo, es ver el orden en el que se deberían hacer las cosas (que no es el óptimo como explicaré después):

  1. Hacerte con un número inglés (recomiendo GiffGaff)
  2. Alquilar una habitación (o un piso si te sobra el dinero)
  3. Solicitar NIN (número de seguridad social, necesaria para que te retengan lo que te corresponda del sueldo y no más)
  4. Buscar y encontrar trabajo
  5. Abrir cuenta en el banco

Si haces dichas tareas en ese orden todo debería de resultarte sencillo. Sin embargo, para mí, no es un orden lógico. Por ejemplo, la cuenta del banco deberías tenerla desde el principio para poder transferirte dinero desde España, pagar cosas en Inglaterra o pagar el piso mediante transferencia (en vez de tener que sacar dinero a través de un cajero con una tarjeta española que te fríen a comisiones y te aplican un cambio libra/euro donde sale ganando tu banco). Lo mismo me ocurrió con el piso. Empecé quedándome en casa de un amigo con la intención de encontrar trabajo y luego ya alquilar definitivamente en algún lugar cercano.

En ese caso, éste es el orden que a mi me parece ideal:

  1. Hacerte con número inglés
  2. Solicitar el NIN
  3. Abrir cuenta banco
  4. Encontrar trabajo
  5. Alquilar piso

El problema es el banco. Abrir cuenta sin trabajo y sin proof of residence será complicado. Sobre todo ahora que han cambiado la ley para evitar el fraude fiscal. Pero yo lo conseguí, ¿quieres saber cómo?

Al solicitar el NIN te mandará una carta a la dirección en la que estés. Ésa será tu proof of residence. Sin embargo, a muchos bancos no les vale. Tendrás que patearte varias sucursales a ver si así consigues algo. Yo fui al TSB (sin trabajo no me querían abrir cuenta normal, sólo la cash account que habría que intentar evitar). Luego pasé por el HSBC, pero sólo aceptaban contrato de alquiler o factura a mi nombre como proof of adress. Por último, encontré una oficina de Barclays donde aceptaron mis papeles y me abrieron la cuenta.

Eso no significa que allí lo hagan siempre. Mi consejo es que te patees todas las oficinas de todos los bancos hasta que des con un dependiente agradable. Importante, cuando vayas te darán cita para otro día. Así que te aconsejo que conciertes varias citas simultáneamente y, una vez que consigas la cuenta, canceles el resto.

Por último, pero no menos importante, recordarte que necesitarás el pasaporte para estos trámites. Una vez tengas la cuenta, tardarás otra semana en poder usarla pues te irán mandando cartas con tu tarjeta, tu pin, tu nombre de usuario, contraseña online… Y para hacer transferencias a tu nueva cuenta desde España, te recomiendo Transferwise.

Para solicitar el NIN tendrás que llamar a un número. Ahí te preguntarán desde cuándo estás aquí, qué haces en UK (busco trabajo), tu nombre y tu dirección. Luego te concertarán cita para una entrevista (en unas dos semanas). Una vez allí, tan sólo deberás llevar la carta con la cita previa, pasaporte y DNI, y la proof of residence (la carta del banco sirve).

Encontrar trabajo es un mundo en sí mismo. Dependiendo de tu rama tendrías que buscar de una forma u otra. En mi caso, informática, resulta tan sencillo como darte de alta en páginas como cwjobs, jobsyte y monster. Aplicar (enviar tu CV) a muchas ofertas laborales cada día y esperar las llamadas de los recruiters.

Una vez lo tengas, a buscar alojamiento. Y para eso nada mejor que gumtree (prueba también con easyroommate, spareroom…).

Espero que sirva de ayuda😀





Book review: Web Crawling and Data Mining with Apache Nutch

18 02 2014

I have received a copy of the book “Web Crawling and Data Mining with Apache Nutch”.  Dr. Zakir Laliwala and Abdulbasit Shaikh are the authors. When I took a look to its tittle some memories crossed my mind. Some years ago I was dealing with Nutch and I was impressed with its power. You could create your own “Google” searcher effortless. However, I couldn’t go deep due to the lack of resources in that time. But now, you could save a lot of time in your learning of web crawling and data mining using this book.

Imagen

They explain how to install Apache Nutch as well as Apache Solr. But instead of just pointing their websites there is a list of steps collecting all the commands and files that you have to modify in order to have a proper installation. I think that this example is the best feature of the book. Authors really wanted to avoid people being stuck in a middle point, looking for helping in the web… So don’t be worried if you are just starting to study this field.

However, there is something I didn’t like. The book mentioned some tools that required the installation of a previous version of Nutch. I know it isn’t authors’ fault but it’s a bit confusing.

Some of interesting subjects covered in the book are the creation of a specific Nutch plugin so you could adjust it to your requirements, how to deal with what people called ‘big data’ and how to create a fronted page using JavaScript.

Are you an expert in web crawling? This book includes too how to use Nutch and Apache Hadoop for running applications in a cluster environment.

In my opinion, if you are interested in this field I would recommend you this book. You could save a lot of time and focus in your data instead of installation problems.

Note: I have received a copy of the book for creating this review but I haven’t received any money or gifts. So this is just my personal opinion.





Different approaches for profiling your CUDA application

16 01 2014

If GPUs are so amazing new stuff, why is everybody not developing software for this architecture? There are some reasons, for example, not all applications should be offloaded into a GPU. The first question to think about is the possibility of parallelizing the code. If the answer is affirmative it could be a good starting point. However, some problems arise in this first step. Transferring data between GPU and CPU is quite slow so depending on how heavy the computations are against the transfers you are going to speed up your code or not.

However, the main difficulty that remains is the complexity of GPU developing. During the first years, when this technology was immature, the GPU works as a black box for the programmer. Data was transferred, the kernel was executed and the developer had to take a look to the output to try to figure out what was happening in the GPU. When the output was wrong he had to start a very unpleasant work of debugging.
Cuda-gdb was almost the only tool for helping in such tasks but had a high learning curve. Nowadays tools are more helpful and with an intuitive GUI like Allinea DDT’s.

allinea-ddt

Correctness is the first challenge that a GPU developer has to face but the application could be slower than the CPU version. In that moment, efficiency is the key of the future work. We should know which parts of the code are more time consuming, how much time is spent in transfers and computing… And that is profiling.

First approach

Nvidia provides two simple ways of measuring time in our applications: timers and events. They are quite similar and easy to understand as shows the following example:

  cudaEvent_t start, stop;
  float time;
  cudaEventCreate(&start);
  cudaEventCreate(&stop);

  cudaMalloc((void **) &a_d, size);   // Allocate array on device
  cudaMemcpy(a_d, a_h, size, cudaMemcpyHostToDevice);
  cudaEventRecord(start, 0);
  // Do calculation on device:
  square_array <<< n_blocks, block_size >>> (a_d, N);
  cudaEventRecord(stop, 0);
  cudaEventSynchronize(stop);

  // Retrieve result from device and store it in host array
  cudaMemcpy(a_h, a_d, sizeof(float)*N, cudaMemcpyDeviceToHost);
  cudaFree(a_d);
  cudaEventElapsedTime(&time, start, stop);
  printf ("Time for the kernel: %f ms\n", time);

The ouput:

$ ./cuda_app
Time for the kernel: 0.041632 ms

The main pro about using this approach is its simplicity. You don’t need any other tool. In the other hand you have to create graphs by your own to show the results. This task is time consuming and, being frank, quite boring.

Second approach

The Barcelona Supercomputing Centre has developed some profiling tools: Extrae and Paraver. The first one lets you measure time in different points of the application and the second one is focused in data presentation. The following lines give an example of Extrae’s callings:

for (i = 1; i <= MAX_ITERS; i++)
{
Extrae_event (1000, i);
[original loop code]
}
Extrae_event (1000, 0);

You have a lot of different calls for creating event types, start and stop the profiling,  network and task monitoring (MPI)…  You could use a XML configuration file with different types of measurements. Extrae’s output file can be used as the Paraver’s input as you can see in the following figure:

Imagen

Using the information shown in the picture you could understand better how the application performance is in a given hardware.

In conclusion, this approach is better than the first one but you still need to modify your code and learn how to use both tools. And I could say that it isn’t a trivial task.

Third approach

The last tool revised in this post is Allinea Map. This tool tries to ease profiling avoiding all the cons shown in the first two approaches.

Using it is as simple as you can see in the following line:

$ map ./cuda_app datafile.in

Map application has a very intuitive GUI that displays a lot of useful information:

Imagen

Using this tool you could truly understand your application performance. It is important to highlight that, frequently, developers are not always specialised people but scientifics from a wide range of fields: physics, chemistry, biology… For this kind of people Allinea shows its main feature, the mixture of a powerful and an easy-to-learn tool. The next figure could be seen as an illustrative example of the previous words:

map1
In the main panel you could find the source code and it’s annotated with performance percentages for both computation and communication time. Developers could focus in just such functions that are more time consuming.
Another important Allinea Map panel is the one that shows CPU versus GPU computation. Opportunities have arisen to perform future computations  in the CPU instead leaving it idle while the GPU is working.

Charts are not static ones, a developer can zoom in on any part of the chart to view a shorter period of time. He could verify if the application is properly using the hardware. For example, he could look for signs of a cache-related bottleneck.
Summing up, here are the key features of Allinea Map:

  • No need to instrument your code
  • A little runtime overhead (around 5%)
  • An intuitive GUI with low learning curve
  • Easy way to find opportunities to improve your application speed up

As you could see in the previous paragraphs, Allinea Map could become the programmer’s best friend for profiling and tuning GPU applications.





Tráfico en una red

30 04 2013

Como administrador de sistemas uno de los primeros problemas a los que tuve que hacer frente es el temido:

La red va lenta.

Y claro, me conecto al firewall y veo que sí, que alguien está descargado a tope y la conexión está al 100%. Pero eso sólo certifica el origen del problema pero no la solución. ¿Cómo puedo saber quién de los casi 100 pcs que hay conectados a mi red está saturando la conexión?

Hay multitud de programas que te permiten ver el tráfico desde un PC en concreto. O que requieren que instales algo en cada uno de los ordenadores que quieres gestionar. Ninguna de las soluciones era factible para mí.

Yo necesito controlar, desde un único punto, qué cantidad de ancho de banda me consume cada usuario. Para ello y teniendo una configuración típica como la siguiente:

red

Hay que realizar los siguientes pasos:

Entrar al último switch, al que se conecta el Firewall o el Router ADSL y hacer un port mirroring. Es decir, que el switch envíe por una boca (a nosotros) una copia de lo que se envía/recibe de Internet. Para conectarnos al switch (en el dibujo un 3COM pero en mi caso particular un D-Link) hay que prepara la conexión como se muestra a continuación (obtenida del manual del fabricante):

Imagen

Yo recomiendo hacerlo con un portátil ya que tendremos que ir al armario de servidores y conectarnos con un cable de red a una de las bocas libres del switch (en mi caso usé la 46).

Con dicha configuración podremos abrir un navegador y conectarnos a la web de configuración del switch: 10.90.90.90 y pedirá contraseña. Si no has configurado ninguna será “admin” pero te recomiendo encarecidamente que la cambies. Esta dirección es la que trae por defecto mi switch D-Link. Consulta el manual de tu fabricante para conocer los parámetros a configurar para poder gestionar el switch.

Cierra la ventana de configuración inicial y podrás acceder a la web de gestión. En ella, tendrás que realizar el port mirroring:

portMirroring

En mi caso, he realizado una copia de todo lo que “se mueva” por la boca 6 hacia la boca 47. ¿Por qué? Porque la boca 6 se conecta con el firewall de salida. En caso de no tener, tendrías que seleccionar la boca que va hacia el router de Telefónica/Ono/Jazztel y que te da conexión a Internet. El puerto 47 es una boca del switch cualquiera que estaba libre.

Ya podemos cerrar todo, volver a establecer nuestra configuración de red usual y conectarnos a dicha boca: la 47. Usando un software que haga de sniffer es posible obtener un gráfico detallado de quién está generando más tráfico.

Yo he optado por el Network Protocol Analyzer de SoftPerfect que ha funcionado a la perfección. Basta con elegir qué tarjeta de red quieres usar (en el caso de que tengas más de una) y sospecho que automáticamente pone la tarjeta de red en modo promiscuo para poder realizar la captura de todo el tráfico.

En la siguiente imagen se puede ver una captura del programa ejecutándose y donde se puede comprobar como un usuario está acaparando casi el 75% de los datos de bajada.

pruebaOK

¡Justo lo que buscábamos!





Conocer el nombre de un PC en una lan

18 03 2013

Conocer el nombre de un PC en una lan

nbtstat -a