jueves, agosto 29, 2013

Porqué usar herramientas obsoletas puede perjudicar tu empresa

Hace poco más de medio año que estoy trabajando en una transnacional que ha cambiado su nombre 3 veces. La promesa inicial era innovación, proyectos atractivos y proyección a futuro. La triste realidad es que todos los desarrollos son sobre una plataforma tan probada y archi-probada que estancó su evolución.

El escenario:

  • Un equipo de ingenieros, programadores y desarrolladores, con buena formación académica.
  • Una empresa, con promesas muy atractivas
  • Proyectos de diversa índole (siempre en el contexto TI)
  • Una  plataforma históricamente probada


La combinación de estos  elementos, no debiera ser mala, y no debiera NO funcionar... PERO:

  • Cada nuevo proyecto demanda funcionalidades que no necesariamente están cubiertas por la plataforma base.
  • Los componentes de la plataforma base se van actualizando con el paso del tiempo, mejorándose y corrigiendo errores.
  • La oferta laboral siempre ofrece propuestas que SI tienen innovación.


El éxito de un proyecto, y por transitividad de la empresa, no radica en la capacidad de cautivar a tus clientes con una plataforma que solo la empresa puede manejar y mantener. Radica en la capacidad de poder sacar adelante los desafíos a los que se enfrenten, de manera eficiente (ya definiré eficiente), y poder responder a los requerimientos del cliente.

¿Qué entendemos por eficiente? EFICIENTE  es no reinventar la rueda. la rueda ya existe y lo más probable es que el problema base que se resuelve esté solucionado de mejor manera de lo que se podría conseguir. Claramente hay cosas que hay que desarrollar, pero en lo relativo a los componentes base ya existen muchos productos con una madurez no despreciable y comunidades sólidas que los respaldan.

¿Qué sucede cuándo usas herramientas obsoletas?



  • La mayoría de los errores que se puedan detectar se solucionan con alguna actualización de versión.
  • Agregar nuevas funcionalidades implicará repetir un desarrollo que ya se incorporó en nuevas versiones.
  • Te enfrentas a problemas no menores de rendimiento.
  • Limitas el crecimiento de tus desarrollos, sobre todo si los niveles de acoplamiento de la plataforma son muy altos.
  • No existe una comunidad que ofrezca soporte a tu plataforma.
  • Basta un cliente que haga una auditoría sobre los códigos y la plataforma para poner en tela de juicio la filosofía de desarrollo.
  • Y finalmente, si tu equipo abre los ojos, probablemente se dé cuenta que si no se mejora ese esquema "seguro y probado", se estancará profesionalmente. Y una empresa sin un equipo  que la sostenga no funciona.


Dejemos la resistencia al cambio a los clientes, y no como una constante dentro de las propias empresas, menos si son las propias jefaturas las que la amparan escudándose en tener al cliente cautivo.

Si insisten en sobrevivir en torno a desarrollos sobre plataformas obsoletas háganlo en caso que estén prontos a jubilar (y en realidad poco les interese la continuidad de la empresa), o si la vida útil de los proyectos desarrollados es baja (menor a un año).

En materia de TI, y siguiendo una línea de tiempo, se avanza hacia adelante. No te quedas estancado en un punto fijo, ni tampoco caminas hacia tus espaldas.





martes, agosto 20, 2013

Diseño orientado al pixel vs Diseño web

Hace algún tiempo que me vengo relacionando con varios amigos diseñadores. Debo decirlo, sus trabajos gráficos son increíbles, pero lamentablemente tienen poca o nula idea de diseño web.

En cuanto a mi apreciación, ¿porqué tan radical? se preguntará el honorable lector. Muy simple, la mayoría de ellos dibuja muy bonito, sabe usar Photoshop (cosa que yo no sé), pero son todos obstinados en cuanto a su diseño. Cuando se ponen a diseñar sitios web, insisten en usar anchos fijos, ubicaciones estáticas, todo orientado al pixel.

Y esto es herencia de su escuela, muchos aprendieron diseño en papel, o diseño digital. Saben a la perfección de paletas de colores, colores complementarios, balance en la imagen, y muchos otros conceptos que claramente yo NO manejo ni conozco. Pero no saben de diseño web, y de como focalizar un trabajo gráfico increíble en la atención de los visitantes del sitio.

Con el tiempo he desarrollado la capacidad de poder pasar un diseño en PSD, o una simple imagen, a una versión web con HTML y CSS, sin demasiado esfuerzo. Pero ello implica saber, y sobretodo entender que el diseño orientado al pixel aplicado a web es contraproducente. Hay un desgaste no menor tratando de alinear todo a la perfección, y si el diseñador no está consciente de esto, y el cliente tampoco, entonces puede ser un factor bastante negativo para el proyecto.

Para web el diseño que sirve es netamente conceptual:

  • Paleta de colores adecuada
  • Ubicación referencial de los elementos importantes de cada página
  • Imágenes de fondo
  • Tipografías
Incluso muchos de esos elementos ya son la sintonía fina del diseño. 

No es tan necesario esforzarse tanto en que el diseño esté pensado para pantallas de 1024x768 con un contenedor de 980px y un espacio útil de 960px, y que todo encuadre perfectamente en esas dimensiones. Tarde o temprano alguien con otra resolución verá el sitio y este se verá mal, y lamentablemente, siempre pensando en diseño web,  no se puede satisfacer todas las necesidades de diseño. Pensemos solamente en los distintos dispositivos móviles en los cuales se podría ver el sitio, y la orientación del dispositivo (vertical u horizontal).

No digo que para el diseño web no sirva ajustarse a una resolución, pero no pensar en el pixel. Es hora de que, ustedes amigos diseñadores, empiecen a distinguir cada elemento y cuál es su importancia en el diseño web, más que solamente ver si debe estar 10px a la derecha de la imagen principal y cuadrar dentro de un espacio de 960px.

miércoles, julio 10, 2013

Web 2.0 y tus clientes - Parte 1

Hay empresas y particulares que captan clientes, promocionan sus productos y servicios, y han hecho su reputación en función de la llamada Web 2.0 , y que sin embargo no entienden, ni saben aprovechar su intrínseco aspecto social.

Lo ejemplificaré con 2 casos a los que me enfrenté, ninguno relacionado con el otro, con la salvedad de haberme afectado a mi.

Primer caso) Luthier del Sur

Uno de mis hobbies es tocar guitarra y bajo, y tengo a mi haber algunos instrumentos que por un tema de espacio tenía que almacenar en otra disposición. Navegando por internet encontré un luthier de la VIII región de Chile, Lutheria Vettan.
Debo reconocer que Víctor Rivera hace un trabajo increíble con la madera, y ha sabido sacar un enorme provecho del aromo australiano, árbol que crece casi como la maleza en la VIII región.

Mi requerimiento, comparativamente a lo que es construir un instrumento, era sencillo, un soporte de muro para 5 guitarras (en rigor 3 guitarras eléctricas, una guitarra acústica y un bajo). Algo como esto:


Lo contacté por primera vez el 5 de abril (fecha de mi cumpleaños) del 2011, y en esa oportunidad Víctor había ganado unos fondos concursables y debido a todo lo que estaba realizando no pudo atender mi requerimiento.
Comprendiendo la situación dejé pasar un mes y le recordé el tema. En esta oportunidad Víctor me solicitó comprar unos soportes metálicos para guitarra que encontré en una empresa llamada Vroka y lo hice. Esto fue la última semana de mayo de 2011.

A eso de mediados de junio, envié los soportes y supuestamente ahí empezaría el trabajo.
Después de darnos cuenta que estábamos pensando en soportes distintos determinamos que le enviaba los soportes, ya que él podría darles un mejor uso que yo, y que me depositara el costo. Siempre de buena fe. Como de todas formas yo necesitaba un soporte seguí confiando en el profesionalismo de la cabeza de Luthería Vettan. Durante Julio fueron varios correos del tipo "Estoy avanzando", "Ya te envió fotos de lo que llevo", etc. Finalmente en Agosto hice mi última consulta y me dijo que no había podido avanzar.

Decidimos dejarlo en nada, y sólo en enero de 2012 le consulté si podía visitarlo, ya que estaría de visita en la región, para hacerle nuevamente el encargo. Ese correo NO recibió respuesta.

¿Qué tiene que ver esto con la Web 2.0?

La Web 2.0 es la visión social de Internet, te haces de una reputación, muestras tus productos, haces de tu negocio algo con integración social.
Si como empresario, proveedor o emprendedor, adoptas esto como parte de tu negocio, mínimo que respondas acorde, y que no mates esta vía.

Ya que nuevamente me quedaba sin soporte en marzo de 2012 decidí intentar nuevamente, pero con otro luthier. Mestizo Luthier de Valdivia (al sur de Chile) había comentado en un foro que disponía de herramientas para hacer trabajos de tipo CNC en madera, y también tiene trabajos muy lindos.
Lo contacté, le envié un plano bastante rudimentario de como quería el soporte, confié en la experticia Luis Carrasco, el luthier, y cuento corto, los primeros días de abril tenía un hermoso soporte en mi poder.


Comunicación constante y transparencia desde el principio. Sin tanta promoción, Mestizo sabe como fidelizar a sus clientes.

Al poco tiempo, y dado que las redes sociales son bastante gritonas, y dado también que mi soporte de guitarras causó cierta revolución, Vettan publicó un comentario tipo "me copiaron el diseño/este diseño me resulta familiar", y yo, con cierta molestia arrastrada por casi un año, le dije que él mejor que nadie sabía porque las cosas se habían dado de esa manera. Por interno tuvimos réplicas, pero finalmente le pedí disculpas por el impasse.

Quiero dejar claro que no me cabe duda que Víctor Rivera, de Luthería Vettan, es un excelente luthier y artesano, por eso fue que lo elegí como primera opción y confié en el trabajo que ví en fotos y en su sitio web . En esta oportunidad simplemente no se dieron las cosas, y no se supo manejar a un cliente que se mostró más que paciente.
Culpemos a la distancia y al conocimiento informal del manejo empresarial y del marketing.

La Web 2.0 es un tema complejo, y no estoy hablando de diseño con brillos y reflejos, sino de la parte social intrínseca a la definición. Si adoptas este aspecto de la "mal-llamada" Web 2.0 entonces tienes que entender que si no eres el único proveedor, y no cumples, las mismas redes que te han hecho increíble publicidad pueden generar un innecesario ruido negativo.



lunes, julio 01, 2013

Acceso vía REST a listas de Sharepoint 2013

Por un proyecto que estamos siguiendo en mi actual trabajo tenemos que realizar una serie de integraciones con MS Sharepoint 2013. Entre ellas una interfaz "algo" compleja para las búsquedas, que demandó realizar un WebPart particular que se encarga de realizar la búsqueda con una toxi-consulta CAML, y luego se rescata el detalle de cada registro usando el  plugin jQuery SPWebServices.

Debido a un error que prefiero no mencionar para no perjudicar a los inocentes, estuvimnos mirando que maneras alternativas teníamos para rescatar esta misma información, y en esta búsqueda llegamos a la API REST de Sharepoint 2013.
Esta API nos provee de una vía bastante intuitiva para abordar temas como la recuperación de registros, sobretodo si hay conocimiento de la lista a la que pertenece y su correspondiente Id (siempre del registro).

Nosotros hicimos algunas trampas, en la lista de origen teníamos en las etiquetas data de los enlaces de cada registro tanto la lista como el id que he mencionado.

Básicamente los pasos a seguir son:

  • Identificar las listas disponibles, de modo de poder identificar el nombre de la lista (su título). Para ello pueden abrir la URL:
    http://[servidor sharepoint]/_vti_bin/listdata.svc
  • Recuperar el registro utilizando la interfaz REST, abriendo la URL:
    http://[servidor sharepoint]/_api/Web/lists/getByTitle('[nombre de la lista]')/Items([id numérico])
  • Otra manera de hacer exactamente lo mismo es usando la URL:
    http://[servidor sharepoint]/_vti_bin/listdata.svc/[nombre de la lista]([id numérico])

Notar los paréntesis en la llamada.

Con esto se recuperará un XML bastante tóxico y sin embargo bastante legible, sobre el cual pueden realizar las operaciones que determinen convenientes según sus requerimientos.
Si esto lo combinamos con un poco de jQuery, AJAX, y eventualmente algo de JSON (entiendo que haciendo la llamada adecuadamente se puede recuperar el resultado en JSON, pero por tiempo no lo verifiqué) se podrían hacer cosas bastante entretenidas.

Eso lo dejamos o para el pedido del público o para otro artículo más adelante.
Dudas, comentarios, aportes y observaciones son siempre bienvenidas.

Cabe advertirles que mi paso por Sharepoint es netamente circunstancial debido a este proyecto que espero se termine pronto.

miércoles, junio 19, 2013

Integración Fancybox y Flowplayer (en Sharepoint)

Advertencia: Este artículo no necesariamente está pensado para el lector casual

Por un desarrollo Sharepoint en el que me ha tocado participar por la empresa donde trabajo, se tuvo qeu hacer una integración de Fancybox con Flowplayer, JavaScripts para una galería de fotos en ventanas modales y un reproductor de videos respectivamente, ambos para desarrollos web. Personalmente ni Fancybox ni Flowplayer son santos de mi devoción, hubiera preferido optar por PrettyPhoto y algún otro reproductor de video en HTML5 .

El consultor que se está encargando de los desarrollos Sharepoint (y el responsable indirecto de esta publicación) me señaló que había un script llamado FancyPlayer que hacía la mencionada integración. El problema es que esta integración se hace con versiones algo desactualizadas de ambos script.

Con las versiones más actuales la integración en realidad es bastante directa.
Paso a paso:
1.- Agregar los siguientes estilos solamente para el ajuste:
.flowplayer { margin: 1em auto; height: auto; text-align: center; }
.flowplayer video { width: 90%; }
.fancybox-nav { top: 35%; height: 30%; width: 40px; }
.fancybox-next { right: -1.3em; }
.fancybox-prev { left: -1.3em; }

Aquí hay varios estilos que son para el ajuste de los botones de navegación en las galerías. Loss estilos importantes son los referentes al tamaño del contenedor flowplayer.

2.- Hacer que cada bloque de código que lleve la clase flowplayer (normalmente un div con el atributo class="flowplayer") especifique en el atributo style el ancho y alto del video (esos parámetros se pueden obtener usando Sharepoint).

 

3.- Agregar el siguiente código en el bloque $(document).ready( function(){ /* aqui */}); :
$('.flowplayer').flowplayer({ swf: '/_layouts/15/js/flowplayer.swf' });
$('div.gallery div.photo a').fancybox({ scrolling: 'no', autoSize:true , helpers: { overlay: { locked:false}} });

Aquí lo importante es que los videos se desplegarán del tamaño que especifique el elemento contenedor.
Y sería. El resto es solamente referirse a la documentación de ambos plugins.

Esta integración no es exclusiva para Sharepoint, claramente la pueden extrapolar a desarrollos no-Sharepoint, y claramente pueden mejorarla.

lunes, junio 17, 2013

Escritorios múltiples en Windows al estilo de Compiz

La advertencia habitual: Es probable que este artículo no sea del interés común. Léalo y vea si le interesa (nunca se sabe).

En mi ambiente de trabajo Linux tengo un Compiz ligeramente personalizado.
4 escritorios dispuestos en una "pared" de 2x2.

  • La esquina superior derecha me muestra las ventanas abiertas
  • La esquina inferior izquierda me muestra la pared de escritorios
  • La combinación Control+Alt+Flecha Derecha me desplaza al escritorio siguiente
  • La combinación Control+Alt+Flecha Derecha me desplaza al escritorio anterior
  • Los botones laterales de mi mouse funcionan igual que las combinaciones de teclas antes mencionadas


En la oficina estoy condenado a utilizar Windows (de hecho Windows 8 :-S ), y mi idea era poder tener algo similar, que no consumiera demasiados recursos extra.

Ya había explorado un poco el tema de los escritorios múltiples sin encontrar una solución decente, hasta que repetí la búsqueda y encontré el programa Dexpot.
Provee las mismas funcionalidades de Compiz, salvo por los efectos visuales, y la configuración de teclas.

La configuración de teclas quise manejarla utilizando los controladores de mi mouse, un descontinuado A4Tech X-750F, y su software Smart-X7, sin embargo Windows 8 se mostró reacio a aceptar las configuraciones que indiqué.
Realizando una nueva búsqueda llegue al programa X-Mouse Button Control (no confundir con el XMBC, que es una media center).

Con ese programa es muy fácil configurar las acciones para los distintos botones del ratón, de hecho lo que hice fue simplemente mapear los botones adicionales a los atajos de teclado.



Lo mejor de todo es que funciona, y no hay una pérdida sustancial de rendimiento en mi máquina (esto puede variar de una máquina a otra, dependerá de las especificaciones de hardware).

domingo, junio 09, 2013

eSata en Ubuntu

Advertencia: Lo habitual, esto es un artículo técnico sin relevancia para el lector casual. De hecho es caso un recordatorio en caso que llegara a olvidar la secuencia de comandos.

Problema: Tienes a tu disposición una unidad de disco duro externa con capacidad de conexión eSata, lo que es muy positivo considerando que la velocidad de transferencia de datos (lectura y escritura) es mucho muy (intencionalmente mal redactado para denotar la ganancia) más rápida que por USB. Lo conectas a la entrada eSata y Ubuntu no la reconoce a menos que reinicies con la unidad conectada (lo que es absurdo si piensasa que un eSata es hotplug).

Solución (paso a paso):
  1. Instalar las scsitools con el comando:
    $ sudo apt-get install scsitools
    Va a pedir la clave ya que la estamos ejecutando en modo root a través de sudo.
  2. Conectar la unidad eSata.
  3. Ejecutar el comando:
    $ sudo rescan-scsi-bus
    lo que va a refrescar las unidades conectadas.
  4. Montar la unidad eSata (suele funcionar el click derecho y montar, sino derechamente explorar la unidad) y a trabajar.

Suerte.