100 días codificando #100DaysOfCode


El día de hoy mientras tomaba mi café en mi taza de gato enojado y leía tweets, me encontré en la publicación de un amigo el HT  Lo primero que pensé fue: “esto es una señal para ideas que traigo en mi mente desde hace semanas”, y es que a pesar de que estoy desarrollando algunas aplicaciones interesantes sé que debo seguir mejorando, y aunque considero que mi nivel de programación es bueno, tengo mis deficiencias en ciertos temas, además que necesito cambiar de lleno a Python y adquirir un nivel experto.

Así que  llega perfecto con lo que deseo hacer. Las reglas son 1) codificar al menos una hora diaria en el lenguaje que tú desees, 2) reportar tu avance diario utilizando el HT mencionado anteriormente y 3) enviar un mensaje a dos personas que de igual manera estén participando en el desafío. Para cumplir el paso 1) les recomiendo WakaTime, el cuál lo utilizo para saber cuántas horas al día y en qué proyecto las trabajo.

Y debido a qué deseo mejorar mis habilidades en algoritmos haré esa hora de codificación en resolver problemas en LeetCode y HackerRank. Si lo hago así, al final tendré al menos 100 horas aplicadas a mi aprendizaje.

Si te unes no olvides enviarme un mensaje en Twitter a mi cuenta @silvercorp, éxito y adelante.

taza

Anuncios

Los errores que comenten los Líderes de Proyecto


He tenido la oportunidad de colaborar en diversos proyectos y con diferentes roles, es por ello que he notado que en ocasiones los Líderes de Proyecto (LP) cometen (cometemos) los mismos errores, y es ahí cuando los más afectados son los colaboradores y en muchas ocasiones es por ego, favorecer al cliente o en definitiva por gusto.

  • Poco o nulo respeto del tiempo. Todos tenemos vida afuera del trabajo y es irrespetuoso que le envíes a los colaboradores un mensaje si ellos ya terminaron su jornada de trabajo; a menos que sea totalmente necesario (se cae producción), y aún así después de cierta hora como Líder de Proyecto es tú responsabilidad solucionar el problema.
  • Mensajes constantes vía Whatsapp. Es de las peores acciones que he visto, no mandes msjs por Whatsapp a menos que la persona te de la pauta para preguntarle detalles de trabajo, y aún así respeta los horarios.
  • No pidas que programen como tú. Recientemente vi que un LP asignó tareas y en una en particular mencionó una posible solución, para mí es adecuado que brindes una pequeña guía y brindes ideas, sin embargo todos abordamos las implementaciones de forma diferente. Si algo no está totalmente como tú lo decidiste pero te presentan una solución adecuada respeta la decisión del programador, o en otro caso hazlo tú.
  • Acepta tus errores. Si como LP tuviste un error acéptalos y no los minimices o eches la culpa a alguien más.
  • Planea mejor y no afectes a los demás. El LP es el responsable de llevar el control adecuado de las tareas, asignaciones y entregas. Sin embargo, muchos incurren en decirle al Cliente que Si a todo sin importar si las tareas son alcanzables o no, al final quienes la pasan mal son los desarrolladores. Se honesto con tus tiempos y el tiempo de los demás y asigna solo aquello que sabes no afectará en el tiempo de entrega.

Debemos recordar que la vida va más allá del trabajo.

 

Disfruta lo que haces


Soy de la idea de buscar y aprovechar las oportunidades que me acerquen a hacer lo que me gusta, y para mi el dedicarme a programar me tiene en esa zona en que me siento feliz por lo que hago. 

Como ya se los había contado en otros posts soy trabajadora independiente o freelancer, y regularmente me contratan cuando se inician los proyectos para llevarlos a cabo, y en el momento en que se encuentran estables entra otro equipo que da mantenimiento, y básicamente así voy de proyecto en proyecto.

Disfruto mucho cuando debo trabajar con tecnologías novedosas o lenguajes de programación que no considero mi fuerte y sin embargo sé que puedo hacerlo. Y ese es el caso del proyecto en dónde me encuentro actualmente, el cuál está desarrollado en Ruby on Rails, utilizamos la API de pagos electrónicos OpenPay, integramos AWS entre otras cosas. Lo mejor de todo es que está relacionada con otro de mis grandes gustos que son los deportes.

El nombre del proyecto es Go Challenge y te invito a visitarlo, básicamente es un servicio de eventos deportivos, donde personas de otros lugares o tus amigos pueden crear un desafío, ingresa dinero por su equipo o jugador favorito y espera a un contrincante, o en todo caso lo puedes compartir a un amigo para que se una. Cuando el desafío está completo (tiene desafiante y contrincante) entonces debes  esperar a que se lleve a cabo el evento deportivo y al final se envía a tu cuenta el dinero que ganaste o en todo caso descontamos el dinero que perdiste.

Realmente estoy contenta por lo que se ha logrado y sobre todo esperando que las sorpresas que vienen sea del agrado de todos.

Hasta un siguiente post.

TweetPop: Una herramienta para el monitoreo de tweets


Las redes sociales se han convertido en una fuente de interés para aquellos que quieren escuchar lo que la audiencia habla de ciertos temas, analizar datos y finalmente aplicarlo al negocio. Sin embargo, la extracción de la información y el procesamiento de la misma no es una tarea trivial, por lo que herramientas de monitoreo son útiles para realizar dichas tareas.

Si eres un experto o estás interesado en tal tema, te presento una propuesta llamada TweetPop, aún en su versión beta y que libero para su uso y evaluación.

Te agradezco unos minutos de tu tiempo para visitar la herramienta, entrar a la sección de demo y registrarte, una vez que lo hagas ingresa el email y contraseña que ingresaste el formulario. Podrás visualizar en la herramienta un combo llamado Categories que contiene datos iniciales como demo. Una vez que selecciones la categoría y el término podrás visualizar los tweets con mas RTs y Favs, una nube de términos y los días con mayor actividad.

Una vez que hayas probado la herramienta te agradecería si puedes responder el siguiente cuestionario.

A todos mis seguidores gracias, la idea a partir de esto es hacer un tutorial explicando como usar la API de Twitter y la nube de términos de D3.js

Distancia euclidiana en Python


La distancia euclidiana es la distancia “ordinaria” entre dos puntos de un espacio euclídeo, esta se deduce a partir del teorema de Pitágoras (Wikipedia).

Sirve para definir la distancia entre dos puntos en espacios bidimensionales, tres o más dimensiones, permite hallar la longitud de un segmento definido por dos puntos de una recta, del plano o de espacios de mayor dimensión.

 

Sus bases se encuentran en la aplicación del Teorema de Pitágoras sobre triángulos rectángulos, donde la distancia euclideana por lo general es la longitud de la hipotenusa del triángulo recto conformado por cada punto y los vectores proyectados sobre los ejes directores al nivel de la hipotenusa.

Expresado matemáticamente:

distancia-euclidiana

La implementación en Python es la siguiente:

def squareEuclideanDist(self, p_vec, q_vec):
 """
 Este método implementa el cuadrado de la distancia
 :p_vec: primer vector
 :q_vec: segundo vector
 :return: La distancia euclidiana al cuadrado de los vectores uno y dos
 """
 diff = p_vec - q_vec
 return max(np.sum(diff ** 2), self.e)

def euclideanDistance(self, p_vec, q_vec):
 """
 El método implementa la métrica de la distancia euclidiana
 :p_vec: vector uno
 :q_vec: vector dos
 :return: La distancia entre vector uno y dos
 """
 return max(math.sqrt(self.squareEuclideanDist(p_vec, q_vec)), self.e)
A %d blogueros les gusta esto: