Ocho pasos para programar en serio

13 septiembre, 2011 por AgusQuiroga Sin comentarios »

Hace unos días en uno de los grupos de PHP argentinos, PHP-Arg, alguien hizo una pregunta interesante: ¿Qué hay que saber para trabajar en una empresa y en equipo como senior?

Varios mails después Mariano Garcia Berrotarán envió una de los mejores resúmenes que ví de lo que un programador Senior debe ser. Transcribo a continuación.

0 – Sabes usar un framework? alguna vez hiciste una aplicación entera usando el framework? deberías. Muchos arrancan con Symfony, Zend, Cake, Codeigniter, etc. Elegí el que mas te guste y aprendelo entero.

 

1 – Control de versiones: Una cosa es laburar uno solo o de a dos, pero cuando empezás a agregar gente es fundamental conocer *BIEN* un sistema de control de versiones. Git, Bazaar, Mercurial, SVN(Puaj). A mi lo que me sirvió fue elegir uno y aprenderlo (relativamente) bien, después es como mas fácil moverte (aunque a veces no). Conocer bien el workflow del cvs que estas usando te ahorra mucho tiempo y muchas horas de puteadas.

 

2 – Coding standards: Así como saber como mover el código entre muchos, también hay que saber como comunicarse con los otros. Hay tantos coding standards como programadores dando vuelta, Si estás usando un framework en particular, lee todo el coding standard trece millones de veces. Léelo mientras te lavas los dientes. Hasta que te salga natural. El código coherente es mucho mas fácil de leer. lo que nos lleva al siguiente punto:

 

3 – Aprendé a documentar: sabes usar phpdocumentor, dyoxigen? siempre es bueno saber documentar

 

4 – Aprendé a usar una tracking tool. Trac me ayudó a entender muchas otras herramientas. Planificá tu día con respecto a la cantidad de tickets que tenés.

 

5 – Planeamiento y manejo de los tiempos: Normalmente para agarrar una tarea y empezar a hacerla primero tenes que saber *que tenes que hacer* y *como lo tenes que hacer* y después tenés que planificar en cuanto tiempo lo vas a hacer. Eso es lo mas complicado para mi.

 

6 – Unit Testing: lo que no tiene tests está roto. Aprendé a hacer unit tests y correr una suite.

 

7 – Metodología: Si enganchas en una empresa relativamente grande, vas a tener que aprender las metodologías que usan. Agile es la mas común (aunque cada uno aplica el Agile como quiere). Tiene que haber documentos de cada procedimiento. Es importantísimo saber como te tenés que manejar, a quien tenés que escalar las cosas y a quien no tenés que joder.

 

8 – Buen Humor: La buena onda en un grupo grande (bueno, en cualquier lado en realidad) es fundamental. Normalmente los que mas se amargan y se calientan son los que primero se embolan y se van

Gracias, Mariano. ;)

Ensayos de Verano II “Buscar”

20 mayo, 2011 por AgusQuiroga Sin comentarios »

Estaba debiendo subir esto, algunas locuras de un verano pasado. Esta vez con la incomparable ayuda de Ana Watson y su impecable voz.

Sigo con ganas de que vuelva al país solo para que pueda cantar algo más!!

Buscar

Clip de audio: Es necesario tener Adobe Flash Player (versión 9 o superior) para reproducir este clip de audio. Descargue la versión más reciente aquí. También necesita tener activado Javascript en su navegador.

Descargar

Si te gusto esto, puede que te guste esto otro: “Ensayos de Verano”

Nueva home de navidad

27 diciembre, 2010 por AgusQuiroga Sin comentarios »

Home navideña

Home navideña

Compresión en Linux

4 octubre, 2010 por AgusQuiroga Sin comentarios »

Se que a muchos no les importará, pero la verdad que es bueno tenerlo en cuenta. Regla de vida:

Compriman lo que no usan

Varias veces me encontré con el mismo problema auditando sistemas o servicios: los backups explotan en tamaño por que no se hace compresión de los datos antiguos de los sistemas. Por ejemplo, es común mantener copia o respaldo de las transacciones en los sistemas de pago online, eso es bueno. Pero no esta bueno cuando esta información que solo se consulta una vez por mes nos insume el 80% de la capacidad de backup existente.

Para eso, por ejemplo, es bueno tener a mano algún script que nos de una mano para mantener los logs de trabajo de las aplicaciones livianitos para no molestar en disco ni en los backups.

find /var/log/apache2 \( -name "access_*" -o -name "error_*" \) -type f -mtime +1 -exec gzip {} \;

Simple y útil.

Fact: Los sitios que vuelan son los sitios optimizados

9 julio, 2010 por AgusQuiroga Sin comentarios »

roadrunner Todo sitio web tiene en su lista de prioridades dos cosas: ser lindo y ser cómodo. Eso se traduce en buen diseño y buena interfaz. Pero ¿que pasa cuando por hacer cosas lindas y con mucha interfaz de usuario empezamos a tener cosas que no se pueden usar por que tarda mucho en cargar? A medida que un sitio posee más diseño y más interfaz su peso se va incrementando.

¿Cual es el problema? Imagina que diseñas un sitio de primera línea visual, buenos gráficos, excelente programación de interfaces (muchos pop-ups, elementos animados, todo el paquete) si te tomás el trabajo de hacer un poco de análisis sobre el producto final seguramente descubras que cada carga de página requiera de descargar más de 300 Kb. Ahora piensa que ese sitio va a ser utilizado por 200 personas por día y que cada una de ellas navegara unas 3 a 4 pantallas. Parecen números pequeños, pero ahora hagamos cuentas.

200 usuarios x día a 30 días = 6.000 visitas al mes
3.5 páginas x 6.000 visitas al mes = 21.000 cargas de páginas
21.000 cargas x mes a 300 Kb. x carga = 6 GB. y monedas

Es verdad, no parece amenazante cuando hoy los proveedores de hosting rematan por 30 o 40 dólares planes con 10Gb. de transferencia. Pero ¿Que pasa si estamos pensando en un sitio que va a tener 1000 usuarios diarios, y si estos usuarios les gusta el sitio y consumen el doble de páginas? Es este escenario estaríamos pensando en un consumo mensual de 60Gb. de información solamente. Eso puede no solo ser costoso, si no que problemático en infraestructura. Si tenés bolsillo profundo y esto no te asusta, hagamos otro ejercicio pero esta vez offline: a la voz de “ahora” contá 15 segundos. Ahora !

¿Esperarías ese tiempo para ver un contenido en un sitio cada vez que entras? Claro que no.

Optimizar los recursos de los sitios pocas veces es una prioridad en la cabeza de los desarrolladores o diseñadores, para para un negocio online puede ser la diferencia entre una reseña positiva o un usuario que no vuelve por que no puede lograr su objetivo en el sitio.

Optimizar es el proceso de generar aplicaciones web rápidas que cumplan con las expectativas de los usuarios.

Por suerte para nosotros, hoy existen buenas soluciones y optimizar se ha convertido en un trabajo bastante sencillo. En las viejas épocas una optimización podía requerir varias versiones de un mismo recurso, pasar un buen rato frente a un editor de imágenes quitando y poniendo compresión, y otras cosas más molestas.

¿Cómo se puede optimizar? Hay principalmente dos maneras de optimizar un sitio web:

  • Cargar menos cosas
  • Cargar cosas mas livianas

Cargar menos cosas se puede traducir en cargar menos imágenes, cargar menos hojas de estilos, utilizar redes de distribución de contenidos para tener menor responsabilidad sobre la carga de los mismos (dejar que otro se ocupe de servirlos), y algunos secretos más complejos como tener una política de cache (indicar inteligentemente que es lo que los navegadores tienen que descargar del sitio y que pueden reutilizar cuando ya lo cargaron).

Cargar cosas más livianas es básicamente que las recursos (imágenes, código, estilos, etc.) sean más pequeñas. Esto implica, no incluir código que no se utiliza, siempre escribir los códigos de la manera más corta posible, imágenes mas pequeñas en peso. Dato curioso: los primeros compresores de HTML solo removían los espacios en blanco y tabulaciones innecesarias, parece tonto pero con esta estrategia se puede reducir un 30% el peso de un HTML.

Hace ya un tiempo que los grandes jugadores de internet se han propuesto dar una mano a los desarrolladores para mejorar la calidad de los sitios que se producen, así surgieron librerías como la API de bibliotecas AJAX de Google que centraliza en un solo lugar las librerías más usadas de javascript, o herramientas del estilo de Smushit.it, actualmente de Yahoo, que se encarga de disminuir el peso de las imágenes de nuestro sitio. De modo que podemos dejar en manos de Google la responsabilidad de hospedar grandes archivos de código o estilos quitándonos el peso de cargar con estas transferencias, o generar imágenes optimizadas de forma automática y con poco riesgo.

Y como para muestra basta un botón les puedo mencionar como ejemplo que mientras pensaba en este post me dedique a optimizar las imágenes de un sitio que hoy se encuentra productivo y con más de 500 visitas diarias, como resultado de la tarea logre disminuir un 45% la transferencia en la primer página vista. Mejorando la velocidad de acceso a todo el sitio en un 30%. ¿Cómo impacta esto? Los usuarios llegan más rápido a lo que quieren y nuestro sitio no se esfuerza demás al complacerlos. Optimizar es ahorrar costos y es hacer mejores aplicaciones.

Ah, si no les avise: es un post para geeks como uno.

Ensayos de verano

1 abril, 2010 por AgusQuiroga 4 comentarios »

Hace ya unos cuantos años, por el verano del 2005 si no me equivoco, me hubo de agarrar la loca y con algo de dinero que tenia ahorrado me fui a comprar una guitarra, un microfono, una consola y algunos cables para experimentar un rato. Esto sumado a otra guitarra y un bajo prestados mas una computadora con una humilde placa de sonido produjo algunos experimentos extraños pero interesantes.

Este tema es uno de ellos. Grabado enteramente en un departamento vacio de San Telmo con mucho calor y tabaco de por medio.

Clip de audio: Es necesario tener Adobe Flash Player (versión 9 o superior) para reproducir este clip de audio. Descargue la versión más reciente aquí. También necesita tener activado Javascript en su navegador.

Descargar

Más adelante pondré alguno más realizado con artistas invitados.

El estado de Internet en 2009

12 febrero, 2010 por AgusQuiroga Sin comentarios »

Periodicamente la compañia de datos Akamai hace púbico un reporte sobre el estado de internet en el mundo (State of the Internet Report). Actualmente se puede encontrar en su sitio el historico de los reportes además de su última edición sobre el último cuarto de 2009 (4Q 2009).

Es interesante tomarse el tiempo para contrastar los resultados a lo largo del tiempo. Les recomiendo dos cosas: la aplicación para ver los datos que se encuentra en la página de Akamai y la infografía que aquí ven, tomada el sitio Masheable.

» Leer más: El estado de Internet en 2009

Peugeot lanza un auto con WiFi en México

11 febrero, 2010 por AgusQuiroga Sin comentarios »

Hace ya un tiempo me sorprendió descubrir que la portatil Dell de mi esposa tenía la posibilidad de instalarle un chip de telefonia 3G para proveerle acceso a internet inalámbrica, eso me hizo preguntarme por que nadie había pensado ya en instalar modems de 3G en otros dispositivos. Aparentemente ya lo habían pensado otros.

Hace unos días se revelo que la automotríz Peugeot de México lanzará este mes el primer coche con wifi del mundo. La unidad, una edición limitada del model compacto 207 de la marca, contará con un modem inalámbrico y un router WiFi para proveer a los pasajeros de una conexión constante a internet.

Algunos pensarán que es inutil, pero seguramente todavia no conocieron la remera que detecta WiFi.

iFreeTablet: tablet con acento español

10 febrero, 2010 por AgusQuiroga Sin comentarios »

A veces es verdad que una imagen vale más que mil palabras, en este caso una imagen vista por mucha gente vale mucho mas que cualquier otra cosa. Hace poco nos enteramos por cadena mundial del lanzamiento de la nueva tablet de Apple, la iPad, y pocos fuimos los que sabiamos que aun antes ya hay alternativas.

iFreeTablet

iFreeTablet es un sistema compuesto por un PC de bajo coste que se puede conectar a una pantalla de TV, convirtiéndose en un set-top-box o en un sistema de control de dispositivos y electrodomésticos digitales.

iFreeTablet es un proyecto humanitario sin ánimo de lucro del grupo de investigación EATCO de la Universidad de Córdoba, la Fundación Red Especial España (FREE) y
la Asociación de Entidades de Tecnología de Apoyo para la Autonomá Personal (AETAP) en colaboración con las empresas de base tecnológica CPMTI S.L. y CIMA S.L. (Centro de Innovación Multimedia y Animación).

En palabras del director de EATCO, Carlos de Castro, Siesta “es un sistema especialmente fácil de usar, pensado para las personas mayores y discapacitados, ya que permite acceder a las diferentes aplicaciones, no sólo de manera táctil, sino a través de gestos, voz o sonido”

Seguramente no es tan bonito como el iPad, pero veremos la relación precio/bonito por estos paralelos.

Iconos para el IPhone lindos y sombreados

7 febrero, 2010 por AgusQuiroga Sin comentarios »

Investigando un poco por ahí buscando alguna forma linda de navegar este blog desde dispositivos móviles me encontre con este sitio:

iPhone Icon, Favicon, .ico Generator.

Realmente muy útil, el sitio te permite generar desde una imagen cualquiera un paquete de iconos al estilo de los que vemos en los IPhones y IPod Touch.

En menos de 10 segundos podes disfrutar de lindos iconos, solo tenes que cargar tu imagen y listo. Se que lo voy a aprovechar.