domingo, 16 de marzo de 2014

Actualizando el mac mini con nuevo ssd, memoria ram y OSX Lion

Hace unos días Apple anunció que deja de dar actualizaciones de seguridad de Snow Leopard, un sistema muy elogiado por algunos pero que a mi y a muchos otros nos ha dado bastantes quebraderos de cabeza. Como soy el afortunado poseedor de un mac mini core 2 duo, el SO máximo al que aspiro es el OSX Lion, así que compré una licencia en la Apple Store y he actualizado mi máquina. Por otro lado aprovechando que iba a hacer una instalación desde cero, decidí ampliar la ram a 3Gb y puse un ssd para darle un poco de vidilla.


Mi nuevo hardware

Aquí el nuevo hardware incorporado, 1 Gb de ram y un ssd de 120 Gb.


No está nada mal :D

Sé que hay gente que hubiera elegido otros componentes, pero mi criterio ha sido comprar lo que estuviera a la venta en la tienda. Lo comento porque hay algunos que para actualizar la ram o el ssd abren hilos infernales nivel master. Yo simplemente le pregunté al que si no me funcionaba era posible el cambio por otro y me dijo que sí. Pero vamos, que una vez instalado todo el mac funciona muy pero que muy bien.


Bricomanía con mac mini

El procedimiento seguido para actualizar mi mac mini ha sido un poco errático, en plan a ver qué pasa si quito o no este tornillo :D Esto es porque no encontré una guía para mi modelo de mac mini, sino de modelos parecidos. Por eso de esta parte no os pongo enlace externo. De todas formas si tenéis un modelo similar los pasos deberían ser parecidos.

Lo primero es abrir el ordenador. Para ello he usado una espátula de cocina. Simplemente metiéndola por los laterales y dando pequeños tironcitos se saca la carcasa.


Muy importante que a la espátula no le queden restos de comida :D

Como se puede ver la carcasa está sujeta por unas pestañas de plástico, no hay ningún tornillo ni nada que impida abrir el ordenador una vez salvado este obstáculo.


Mac mini abierto. Por fuera más bonito que por dentro.

Después me encontré con tres tornillos, que no sé para qué son. Yo los he quitado, por si acaso.


Están sujetando el DVD. Igual para una próxima actualización a blueray si se pudiera...

También quité cuatro tornillos que bordean la carcasa. Estos sí eran necesarios, o eso creo. Quitar el que está debajo de la placa del muelle es un poco jodido. Al final quité la plaquita.


Aquí la plaquita de las narices

Buscando por internet creo que es la antena wifi, aunque no lo aseguro. Daba un poco de miedo, pero un buen tirón y plaquita fuera. Por cierto que es recomendable también quitar el muelle. Yo no lo quité y saltó sólo como a los 10 minutos dándome un pequeño susto :D


Imagen de la antena quitada

Antes de separar el los componentes del mac para llegar a la ram y al hd, hay que quitar un pequeño cable negro que está junto a la pila.


El cable se quita muy fácil con un destornillador plano.

Aquí el mac abierto. En un lado la ram y al otro el hd. El cambio de ram ya se puede realizar. Sólo hay que presionar las pestañas metálicas que la sujetan.


De paso podemos limpiar un poco por dentro, que el mío tenía bastante polvo.

Para quitar el disco duro aún nos quedan cuatro tornillos. Una vez quitados hay que empujar el hd hacia atrás y debería salir.


El trozo de plástico con forma de “T” que está pegado al hd yo lo despegué y lo pues en mi nuevo ssd. Tampoco sé si era necesario, pero por si acaso.

Como me estaba costando quitar el hd, decidí quitar el resto de cables para poder realizar el cambio de discos más fácil. La verdad es que soy un poco patoso y con mis dedos gordacos era complicado quitar el hd.


Ojo que al quitar el cable dorado no se debe perder un trozo de plástico que hace presión sujetándolo. Para volver a montarlo hace falta ese plástico.

Y esto fue todo del bricomanía de hoy. Otro día más.


Instalando OSX Lion

La instalación del OSX Lion fue muy sencilla. Una vez descargado el SO de la App Store lo grabé a un pendrive que conecté a un usb libre del ordenador . Como el ssd estaba sin formatear y el pendrive estaba formateado en “Guid”, arrancó el ordenador mostrando la siguiente imagen.


No hay que ser muy impacientes, tardó unos minutos.

Elegí la opción de “utilidades de disco” para darle formato al ssd. Una única partición en formato guid de arranque y unos minutos de espera para completar este paso.


Formateando el ssd

Hay que seleccionar modo guid

Después se puede comenzar con la instalación de OSX Lion, seleccionando el nuevo disco como destino.


Menú de instalación de Lion mostrando el SSD de destino.

Y aquí el resultado final. Mac mini core 2 duo con 3 Gb de ram y 120 gb SSD :D


Información del mac mini actualizado.

Por último, para activar el TRIM, usé la aplicación gratuita “TRIM ENABLER”.

Saludos.

lunes, 3 de marzo de 2014

Migrando un proyecto desde android a Microsoft Project.

Una de las características interesantes de CProjectPro es la posibilidad de exportar datos en formato .xml estándar importable con Microsoft Project, GanttProject, Merlin (OSX) o cualquier otro programa compatible.


Paso 1. Obteniendo el xml

El proceso es bastante simple. Partimos de un proyecto creado desde CProjectPro.

En mi ejemplo he creado uno muy simple con dos tareas y un hito. A continuación vamos a las opciones de exportación y elegimos xml. El archivo se exporta en la ruta:

/mnt/sdcard/cproject/ con la siguiente nomenclatura fecha.hora.minutos.segundos-TítuloReducido.xml



Kanban con las dos tareas e hito de ejemplo


CProjectPro exportando el proyecto a xml


Representación del gantt en CProjectPro

A continuación os pongo el xml generado por la aplicación



12
20140203.0.53.32-Desde_andr.xml
Charlicode - CProyect
1
1
0
0
0
1984-01-01T00:00:00
1
2014-03-03T09:00:00

 
  1
  Estándar
  1
  -1
  
   
   1
   1
   
    
     09:00:00
     13:00:00
    
    
     15:00:00
     19:00:00
    
   
   
   
   2
   1
   
    
     09:00:00
     13:00:00
    
    
     15:00:00
     19:00:00
    
   
   
   
   3
   1
   
    
     09:00:00
     13:00:00
    
    
     15:00:00
     19:00:00
    
   
   
   
   4
   1
   
    
     09:00:00
     13:00:00
    
    
     15:00:00
     19:00:00
    
   
   
   
   5
   1
   
    
     09:00:00
     13:00:00
    
    
     15:00:00
     19:00:00
    
   
   
   
   6
   1
   
    
     09:00:00
     13:00:00
    
    
     15:00:00
     19:00:00
    
   
   
   
   7
   1
   
    
     09:00:00
     13:00:00
    
    
     15:00:00
     19:00:00
    
   
   
  
 


 
  1
  1
  Inicio
  0
  0
  1
  2014-03-03T09:00:00
  2014-03-06T19:00:00
  PT16H0M0S
  0
  
  2014-03-03T09:00:00
  PT2H0M0S
 
 
  2
  2
  task one
  0
  0
  1
  2014-03-05T09:00:00
  2014-03-08T19:00:00
  PT24H0M0S
  0
  
  2014-03-05T09:00:00
  PT0H0M0S
 
 
  3
  3
  end
  0
  0
  1
  2014-03-08T09:00:00
  2014-03-08T09:00:00
  PT0H0M0S
  0
  
  2014-03-08T09:00:00
  PT00H0M0S
 




Paso 2. Importando el xml

Microsoft Project

En este ejemplo voy a importar los datos en un proyecto vacío. Lo que hay que hacer es desde el menú “Archivo\nuevo” de Microsoft Project elegimos en la caja de selección la opción “Formato XML (*.xml)”.


Abriendo un xml en Microsoft Project

Después de seleccionar nuestro archivo Microsoft Project nos pregunta si queremos importar el archivo como proyecto nuevo, anexar los datos al proyecto activo o combinar los datos en el proyecto activo. En este ejemplo elegiré como proyecto nuevo.

Después de pulsar finalizar los datos ya se pueden usar desde Microsoft Project.


Microsoft Project mostrando los datos exportados desde CProjectPro.

En Merlin

En Merlin es igual de simple. Desde el menú File elegimos Open y seleccionamos el archivo .xml


Merlin en OS X mostrando el proyecto.

En GanttProject

La importación del proyecto en GanttProject se realiza desde el menú “Proyecto\Importar”. A continuación se elige la opción “Archivos de Microsoft Project”. Después se selecciona el archivo y pulsa “Aceptar”.


GanttProject mostrando los datos. La interfaz es un poco espartana.

Pues esto ha sido todo. Como se puede comprobar la exportación desde CProjectPro es muy sencilla, y la importación en los distintos programas también ha sido fácil. Obviamente el archivo xml generado sólo contiene los campos necesarios para que el xml sea compatible y se exporten las opciones de la aplicación android CProject.

Saludos.

martes, 25 de febrero de 2014

Midiendo la productividad

Ahora que he terminado el sprint de CProject, he publicado su página web y he tenido tiempo para responder unos cuantos emails, voy a hablaros de un tema que tarde o temprano sale en la empresa: la productividad.

Este es un tema muy complejo, no hay más que ver los más de cuatro millones de resultados de búsqueda que salen en Google. Y es que medir la productividad no es tarea fácil.


Planning Poker - Poker face

Os voy a contar una historia verídica que me sucedió en un proyecto:

Hace un tiempo, teníamos que entregar un proyecto y para calcular el tiempo en el que se realizaban las tareas usábamos cartas scrum o planning poker. Para el que no lo conozca este método consiste en que cada miembro del equipo elige una carta que simboliza el tiempo que cree que va a tardar en realizar la tarea. Cuando todo el mundo tiene elegida su carta hay que darle la vuelta a la vez. Si los programadores tienen experiencia los valores normalmente son muy parecidos. El problema surge cuando los valores de las cartas varían de forma significativa.

En mi caso el equipo estaba formado por tres personas, de las cuales dos evaluamos la tarea en unas 8 ó 13 horas y uno la evaluó en 2 horas. Según mi experiencia esto es un problema, ya que la magia no existe. Desde mi punto de vista esto significa que el programador tiene un as en la manga o hay algo que se nos escapa a los demás. Así se lo hice ver al jefe de proyecto en una reunión posterior.

Evidentemente esa tarea fue asignada al programador de 2 horas, y para mi sorpresa la acabó en dicho tiempo.


Cuántos de vosotros os habéis sentado delante del monitor nada más llegar al trabajo y os habéis puesto a leer el periódico, twittear, leer blogs, etc. Cuando estaba en Viavansi un compañero me enseño el método Getting Things Done (GTD). Al principio me costó establecer mi rutina, ya que es fácil distraerse, pero una vez acostumbrado es una manera genial de establecer los objetivos del día. No hace falta una aplicación compleja para seguir el método. Mi amigo usaba OpenOffice con unas plantillas que se había hecho. Yo posteriormente conocí wunderlist y doit.im, fantásticas herramientas de organización. Desde que me acostumbré me di cuenta de que esos 5 ó 10 minutillos que se perdían en leer el periódico eran los mejores para organizar el día.

En muchos de los resultados de google aparece una formula de productividad del empleado tal como:

Productividad = (Productos o servicios producidos) / (Recursos Utilizados)

Esa a simple vista parece una buena forma de medir la productividad.


Developer troll

Cuando mi compañero entregó la tarea, no puedo negar que me quedé perplejo. Evidentemente fue felicitado por los jefes y a los demás se nos puso como ejemplo de empleado productivo. Incluso llegué a plantearme mi forma de hacer las cosas, ya que había fallado por muchas horas, casi en una jornada laboral. Y esto cuando un proyecto va muy justo de tiempo es importante. El tiempo pasó, el proyecto avanzó tres o cuatro meses y próximo a una entrega me tocó integrar la parte de mi compañero con una que había realizado yo y optimizar un “problemilla” (así lo llamó mi jefe) ya que la aplicación se bloqueaba aleatoriamente. En ese momento encontré la trampa.

Resulta que tanto mi compañero como yo cuando evaluamos la tarea lo que hicimos fue pensar en la futura integración, las clases que hacían falta, el patrón de diseño a seguir, etc., planteando el desarrollo para no tener futuros problemas. Pero la persona que había hecho la tarea en dos horas, directamente “se había pasado todo esto por el forro”. No solamente esto, sino que me encontré con que muchos de los problemas que estaban ocurriendo eran debidos a ese código, ya que la aplicación tenía concurrencia y esto era lo que producía los bloqueos. Por no mencionar las malas prácticas de programación, ausencia de VO y pojos, todo devuelto en maps con maps en su interior, que a su vez tenían maps en su interior, y un etcétera para ahorrar tiempo.


Genius boss

Cuando hablé con mi jefe el cabreo fue enorme, pero para mi sorpresa cayó sobre mí, ya que él sigue la filosofía de El último que lo toca es el que lo ha roto. Con lo que hubo que hacer muchas horas extras con malas caras.


Volviendo al tema del post, en mi opinión medir la productividad del trabajo de otro es muy complicado. Con técnicas como GTD medir si el día de uno mismo ha sido productivo es fácil, pero medir el del compañero es muy complicado si el proyecto tiene una duración de meses. Si un proyecto sale bien se sabe que ha sido productivo, pero si un proyecto sale mal, o no ha sido tan bueno como se pensaba en un principio que iba a ser es una tarea complicadísima saber quien fue productivo y quien no (obviamente dentro de un entorno en el que todos son profesionales).

Y es que en mi opinión la productividad no se debe medir por tareas concretas, sino que haría falta añadir una variable más a la fórmula de manera que se midiera la productividad a lo largo del tiempo. O lo que es lo mismo, que el trabajo entregado no deje de funcionar a los X meses.

Hay que ser conscientes de que en programación no todo vale. Los patrones de diseño están para algo, no se debe abusar de ciertos tipos de datos, y una serie de normas que cualquier persona con sentido común y experiencia no debe olvidar.

Un amigo decía: Si empleo más de 20 minutos en leer un código propio que escribí hace meses y no lo entiendo, es que el código no era bueno. Creo que no hay que ser tan drástico, pero en términos generales estoy de acuerdo.

Saludos.

Related Posts Plugin for WordPress, Blogger...