@ agnasg

agnasg


Viejas practicas

05-07-2015 10:22 AM

I-refuse-to-use-mallocLuego de muchos años y con el advenimiento de C++11 (y sus nuevas encarnaciones C++14 y C++17) me resultada realmente molesto ( o quizás hasta bochornoso) que mi vieja rutina strsave () continuara pululando dentro de mis aplicaciones y juegos. La primera versión la escribí en 1981 basado en el texto de K & R, y algo parecido se puede encontrar en casi cualquier aplicación desarrollada en C.

char *strsave (const char *id)
{
    char *str;

    if ((str = (char *) malloc (strlen (id) + 1)) == NULL) {
            g_write_debug ("strsave: out of memory");
            return NULL;
    }
    strcpy (str, id);
    return str;
}

La pregunta es ¿por qué? Con std:string esto dejó de ser necesario por lo menos hace 15 años. Viejas prácticas supongo, y que el programador C sigue escondido en alguna parte dentro de mí. std:string se puede encargar complemente del negocio de manejo de la memoria. La explicación clave es la siguiente: “std::string usa el allocator por defecto std::allocator, dado que std::allocator usa new y delete, la memoria heap es usada, así que el string es permanente hasta que el programa termina, o el programador hace algo al respecto.

Cuéntame uno de freelancing

03-07-2015 8:50 AM

… soy bailarina y traficante de armas.

Sofía Serrano

Leo con fruición la lección número 6 de este blogguer sobre freelancing: hacer crecer el negocio es más difícil de lo que usted piensa – Traté de comenzar un equipo de escritura  y por un tiempo funcionó.  Tenía 10 sub-contratistas (no todos trabajando al mismo tiempo) y estaba devorando negocio tras negocio como nadie. Pero se derrumbó. Rápidamente aprendí que el tiempo que dedicaba a entrenamiento, corregir sus errores y compensar las metas no cumplidas estaba excediendo la ganancia extra que estaba obteniendo. (Scaling is harder than you think it will be – “I tried to start a little writing team – and for awhile, it worked. I had 10 subcontractors (not all busy at once) and was passing off work like nobody’s business. But it fell apart.I quickly learned that the time I was spending trying to train them, fix their mistakes and compensate for their missed deadlines was easily offsetting the extra income I was making.“)

No sé cuántas veces tengo que explicar esto cada vez que alguien me pregunta por qué después de 10 años trabajando freelancing no me he expandido, por qué no he formado un equipo de trabajo. freelancing es diferente. No es obvia la estrategia para crecer y la razón está insinuada arriba: para crecer tienes que dejar de hacer freelancing y pasar a ser un gerente de proyectos, manejar recursos, etc., lo cual es exactamente lo que no queremos hacer cuando nos transformamos en freelancers. Yo formé o ayudé a formar variar compañías y mi rol fue básicamente ser el de líder de proyectos. Ya yo me sé ese capítulo. Ya vi esa película. Me transformé en freelancer justamente porque no quiero más reuniones con un equipo de trabajo los lunes o peor, los viernes por la tarde, para oír excusas y coartadas. Claro esto no está muy a la altura de las enseñanzas de Warren Buffett, y justamente  ahí está el punto, al decidirnos como freelancers le estamos diciendo see you later a Warren, y comenzamos a hacer nuestro propio camino.

Hay que ser coherente. O aprender a decir mentiras. Ejemplo: estoy trabajando un complicadísimo proyecto cuyo objetivo es una librería que sirva como wraper del api de una compañía que presta servicios de impresión de fotografías. Antes tenían un servicio basado en soap, ahora es REST. (hacer google SOAP vs. REST conduce a un montón de páginas con publicidad que no dicen nada útil, as usual, stackoverflow tiene una excelente respuesta). La primera pregunta que le hice a la persona que me está contratando fue “¿qué rol tiene usted en el equipo? ¿es usted el lider?”. La respuesta fue un “yes” tan poco creíble que no me sorprendió en lo absoluto cuando descubrí poco después que él no tenía idea de que C++ REST SDK no soporta SSL. Es decir, él no es el líder del proyecto, es un contratista que me está sub-contratando. De cuentos como este está lleno el ambiente de freelancing. Así que tenemos que desarrollar algo así como una caparazón para protegernos. Porque de nada sirve responder/corregir o entablar una discusión (¿cómo es que no sabes que C++ REST SDK no soporta SSL?). Es inútil. Sheldon no sobreviviría ni una semana como freelancer.

Se me olvidaba

30-06-2015 2:51 PM

En mi defensa entre más de 800 posts que hay en este blog, este es el primero llamado “Se me olvidaba”. Eso es algo.

Pues olvidaba mencionar ayer algunos puntos. Me acordé leyendo los links del mes de Emily Short, y  una nota en reddit esta tarde que me resultó interesante. Más de esto el próximo mes.

  • No tengo tiempo en este momento para escribir sobre el tema, porque voy saliendo a ver Jurasic World, pero un juego que debe aclarar que this is not a zombie story (esta no es una historia de zombies) me resulta verdaderamente perturbador.
  • Tampoco tengo mucho tiempo para hablar sobre el UI que estoy trabajando en  psyblast, y que ya no se cuántos de estos he hecho a lo largo de los años, ya perdí la cuenta. La regla aquí es reutilizar viejos componentes, de los cuales tengo toda una biblioteca. psyblast usa irrlicht así que no puedo sacar ventaja de lo que he hecho en Qt.
  • Lo que me lleva al cuasi-leit-motiv de este blog, reinventar la rueda etcétera. Pero esta vez lo voy a decir de una forma diferente. Resulta que en la serie de libros de Asimov, Fundación, se narra la historia de que toda la civilización va a colapsar (porque sí basicamente) y  como solución se debe plantar el germen para que la civilización renazca al otro lado del universo. El resto del primer libro y buena parte del segundo si recuerdo bien trata sobre cómo determinar qué significa eso, qué significa el otro lado del universo. Ciertamente puede ser el sitio más distante conocido (lo cual sería una solución bastante obvia) pero resulta que quienes determinaron lo de “el otro lado del universo” era algo así como socio-estadisticos, es decir, especialistas en el comportamiento estadístico de las masas sociales (o algo por el estilo). Así que “el otro lado del universo” tiene una connotación diferente. Por ejemplo, el planeta menos desarrollado socialmente. El cual resultó ser Terminus, un planeta poco avanzado, todo lo contrario de Trantor que era la capital del universo y consistía de una ciudad que abarcaba todo el planeta (algo así como Coruscant). Pues toda esta larga introducción es para mencionar que este desarrollador de juegos que desarrolló 340 juegos en 18 años debe estar al otro lado de mi universo. Lo digo no solamente por la cantidad sino por la calidad. Creo que el 95% es kk digital.

Junio está terminando, hora de resumir

29-06-2015 8:56 AM

Como Junio está terminando, ya hora de hacer un resumen rápido de lo más relevante. Estuve bastante inactivo en este blog porque me tomé unas vacaciones por los lados de Hollywood, pero no el de los ángeles sino el que está cerca de Miami. Realmente divertido. También fue divertido este mes como Blizzard anunció que no se iba a poder volar en Draenor y después anunció que sí. Parece que esto se ha vuelto una practica de mercadeo, decir no para luego decir si pero con ciertas condiciones. Creo que mi ex-esposa usaba esta técnica con frecuencia. Pero luego salió el patch 6.2 y todo el mundo está trabajando en el logro para poder volar, y todo el mundo olvidó de cómo se llegó a esto. Yo actualicé el juego (1.6gb ?) pero todavía no he renovado la suscripción. Lo que me lleva a lo ocupado que he estado luego de regresar de vaca.

El problema de tomar vacaciones es que para retomar el trabajo se tiene que trabajar duro. El secreto lo puedo compartir, gratuito como un servicio especial para los lectores de este blog: para retomar el trabajo sin mucho trabajo el secreto es comenzar. ¿Comenzar qué? Comenzar a trabajar bozo! Una vez que comenzamos y adquirimos velocidad de crucero ya se nos olvidó que no teníamos ganas de trabajar. Así en menos de una semana completé un proyecto (una simulación de un radar para detectar cambios climáticos). Y como es usual el cliente resultó ser complicado con un exceso de personalidad. Me pregunto si existe alguna correlación entre el regreso de vacaciones y tener problemas de compatibilidad con el estado anímico de los clientes y colegas. Un tema de reflexión dejado como tarea para la casa.

weather-radar

También hay otras cosas que pueden guardar relación con el regreso de vacaciones, por ejemplo, el tiempo que permanecemos concentrado en un proyecto. Para mí eso se traduce en cuanto tiempo estoy mirando, tecleando y cambiando de archivos en el IDE de mi proyecto. En estos últimos días (y en particular hoy) ese tiempo tiende a ser un minuto o menos, pues 9gag.com y las noticias de la jungla de Tanaan me llaman constantemente. Pero tengo que luchar contra estas distracciones. Quizás.

Enlaces mientras vacacionabas…

  • 5 problemas que todo ingeniero de software debe poder resolver en menos de 1 hora.
  • Algunos puzzles en C. Yo no sé por qué siente una fascinación tan persistente con estas travesuras. Quizás porque en nuestro día a día nos encontramos con tantos problemas como estos que…
  • Porque los puzzles los encontramos en nuestro día a dia. Este sitio que describe como encontrar un punto random en una esfera me ayudó a contruir en Treejs un haz de rayos centrados en un punto. Parecen dos cosas no relacionadas pero si lo están, si lo intentas.