Se necesita algo más que tecnología

“Software is a conversation, between the software developer and the user. But for that conversation to happen requires a lot of work beyond the software development.

It takes marketing, yes, but also sales, and public relations, and an office, and a network, and infrastructure, and air conditioning in the office, and customer service, and accounting, and a bunch of other support tasks.”

Joel Spolsky en su artículo The Development Abstraction Layer

Tú, tu propio usuario

En el desarrollo de proyectos web, sobre todo en el desarrollo de proyectos que lideran emprendedores en internet, existe un factor con el que me encuentro a menudo y  que lleva a la mayoría de los mismos, al más contundente de los fracasos. Es un factor que es muy fácil de reconocer y que puede darte la cualidad de adivinar qué proyecto puede pasar de una primera fase y cuál no, en el 95% de los casos.

Dicho factor radica, en que el promotor del proyecto (que raramente coincide con el desarrollador del mismo) no sea, ni tenga el interés de ser, usuario del mismo.

Y es un factor muy típico, algo que lleva a muchas personas o empresas a forzar la innovación en áreas que ni conocen ni les interesa conocer.

Para muchas personas, el éxito de su proyecto en internet depende exclusivamente de los medios tecnológicos que lo sirven a los usuarios finales. Se habla de tecnologías, de metodologías de desarrollo, de financiación, de seo, de marketing… pero desde mi punto de vista por muy bien que se haga el trabajo en esas áreas, no sirve de nada si no se comparte el punto de vista de la demanda y en lugar de eso, nos encerramos en los argumentos que hemos creado para respaldar nuestra oferta. Sinceramente pienso que eso no tiene base alguna y cae, tarde o temprano, por su propio peso.

Es muy difícil, si no has trabajado en un área concreta antes o si no has consumido/disfrutado de los servicios o productos que buscabas en dicho área, que puedas detectar una forma de cambiar las reglas de juego. Es evidente que puede haber excepciones, pero sin duda veo necesario que al menos se parta de una base o de experiencia en otro área directamente relacionada a la que se pretende atacar.

Esto hace precisamente que la idea carezca de valor, por mucho que se invierta en ella económica o tecnológicamente. Y se nota claramente cuando un emprendedor se sabe desenvolver en el área por el que apuesta, conoce y le apasiona, ya que rompe las barreras que otros no saben detectar, con pequeños o grandes detalles que demuestran la solidez de su proyecto.

Sin más, esto era una pequeña reflexión que siempre me hace echar el freno cuando pienso en desarrollar algo en un campo sobre el cual no tengo ni idea.

Hosting 1.0 para la web 2.0

En internet las cosas han cambiado. Hace años se avecinaba un cambio, una evolución en internet, al que muchos bautizaron con el criticado nombre (con razón) “web 2.0”.

Al margen de la oleada cool que se ha generado, provocado por dicha evolución, se ha notado un cambio en el uso y desarrollo para internet, el usuario ahora tiene más facilidades para automatizar la obtención y divulgación de información.

Tan importante es ese cambio, que realmente una persona que quiera competir en internet y no sea capaz de integrarse y aprender de él, estará fuera de todo éxito.

Las empresas dirigidas por personas medianamente inteligentes se han dado cuenta hace ya bastante tiempo que deben no sólo adaptarse al cambio, sino cambiar de una forma real en su forma de trabajar y sobre todo de acercarse al consumidor.

Se ven nuevas formas de hacer las cosas, nuevas proezas en forma de aplicaciones y servicios web enfocados de una forma cada vez más humana y cercana al usuario.

Sin embargo todos esos servicios y aplicaciones dependen de algo sumamente importante y crítico: infraestructura de sistemas.

Esa infraestructura en España es suministrada actualmente por empresas de hosting, pero no terminan de adaptarse de una forma clara al cambio que sus propios clientes ya están asumiendo y demandan.

De nada sirve una aplicación desarrollada respetando buenas prácticas, patrones de diseño y optimizada al máximo si los servicios que consume no están preparados para aguantar la demanda que puede tener por parte de sus usuarios.

Ya no vale con migrar a una máquina más grande o escalar horizontalmente, se necesita un respaldo por profesionales con experiencia en sistemas que sean conscientes y entiendan las preocupaciones de los arquitectos de la nueva web.

Por supuesto, los obsoletos planes compartidos que encontramos en servicios de Hosting de este país, no tienen sentido para este tipo de escenarios.

Los desarrolladores web cada vez requieren tecnologías más versátiles y se ven necesitados sobre todo de las útimas versiones de sus herramientas con las que poder crear y ofrecer servicios realmente innovadores.

Muchos de esos desarrolladores se ven obligados a considerar otras opciones fuera del país, que ofrezcan servicios aparentemente mejor enfocados a lo que demandan o que sean más baratos.

Pero esto no es una solución o una opción para algunos de ellos, ya sea por la necesidad de disponer de un soporte cercano o un tiempo de respuesta de red aceptable, y finalmente se ven limitados por empresas que no les interesa o que no pueden adaptarse a sus necesidades.

Supongo que no soy el único que piensa de esta forma o que ha visto esta necesidad de cambio. ¿Qué experiencia tenéis vosotros en ese sentido? ¿Echáis de menos o necesitaís algun servicio que ahora mismo las empresas de hosting en España no os ofrecen?

Emprende Web Bilbao

Hace algunos meses intenté organizar un evento para desarrolladores php en Bilbao. La idea era juntar a personas que desarrollasen aplicaciones web para compartir experiencias.

El problema fue que el mismo tema del evento limitaba a los asistentes y no atraía al resto de la gente que no desarrollaba en php, pero si desarrollaba en otras tecnologías web.

Emprende Web surge como una posibilidad para el que esté interesado en charlar con emprendedores y profesionales técnicos de la web de tu a tu, mientras se toman unas copas.

En Bilbao es muy difícil encontrar eventos tipo a Iniciador o First Tuesday y también lo es encontrar a profesionales y emprendedores inquietos con ganas de desarrollar y exponer sus ideas al resto.

Javi Jiménez y yo creemos que aunque los primeros eventos empiecen con pocos asistentes merecerán la pena, ya que en este tipo de cosas cada persona que conozcas es toda una experiencia.

De momento el próximo Jueves 24 a las 19:30, os esperamos en el Pub Dubliners. Nos vemos en el Emprende Web ;)

emprendeweb.org

Más información: Primera quedada Emprende Web en Bilbao

Dominios WildCard en aplicaciones web php sin problemas con las variables $_SESSION

Muchos os habréis fijado en servicios web que usan subdominios dinámicos (wildcard) para las cuentas de sus usuarios, como por ejemplo jaiku.

Sin embargo, una vez configurados los subdominios dinámicos, tenemos un serio problema y es que, las variables de sesión por defecto se pierden cada vez que ejecutamos la aplicación web desde un subdominio distinto al que hemos utilizado para crear dicha variable de sesión.

Podemos comprobar esto en algunos sitios web que no usan subdominios dinámicos pero, si hacemos login en su www.dirección.com, si después vamos a su dirección.com sin las ‘www’ nos encontramos con que no hemos iniciado sesión. El problema es similar y tiene la misma solución que en el caso de los wildcard domains.

Voy a explicar cómo solucionar este problema y como hacer funcionar subdominios dinámicos.

Los pasos:

1 – Configurar el dns

2 – Configurar el servidor web

3 – Configurar bien el ámbito de las variables $_SESSION en la aplicación php para que se compartan las variables de sesión entre los subdominios.

Configurar el dns.

Basta con crear una entrada tipo host es decir, “A” apuntando a *.tudominio.com . También vale con crear un CNAME * apuntando al registro A del dominio principal (“tudominio.com”).

Si hacemos un ping a “loquesea.tudomino.com” debería ya resolver (a menos que tengas capado el tráfico ICMP claro)

Configurar el servidor web.

En Apache httpd, debemos configurar en el vhost de nuestro dominio un ServerAlias que atienda a “*.midominio.com”

En Nginx, debemos configurar en la sección Server un valor server_name como “*.midominio.com”

En IIS, debemos dejar un sitio virtual sin headers y ese es el que atenderá las peticiones de vuestro wildcard dns, es la única forma.

Se ha discutido sobre este tema en el foro oficial de IIS y según los propios desarrolladores, aunque ha sido demandada durante años, no se piensa implementar dicha funcionalidad por ahora, ni siquiera en IIS7.

Nota: sólo podemos disponer de un sitio web sin headers por servidor web IIS.

Configurar nuestras variables de $_SESSION en php

El truco esta en configurar la directiva session.cookie_domain como “.midominio.com” (importante el . delante del dominio).

Podéis hacerlo en tiempo de ejecución, antes de llamar a session_start(); siempre que tengamos deshabilitado el autoarranque de sesiones en el php.ini (como es lógico y viene por defecto)

ini_set("session.cookie_domain",".midominio.com");
session_start();

Ahora ya podéis crear servicios web tan útiles como este.

Recuperar último id insertado en SQL Server desde php con el Driver Oficial de Microsoft

Microsoft ha publicó hace unos meses la versión RTM de su driver oficial para php que permite conectarse a sus bases de datos SQL Server.

Vamos a usar dicho driver para mostrar cómo recuperaríamos el último id insertado en una tabla.


//Especificamos el servidor
$server = "HOSTINSTANCIA";
//Especificamos los datos de acceso y la base de datos
$info = array( "Database"=>"bd","UID" => "user","PWD" => "pass");

//nos conectamos
$c = sqlsrv_connect( $server, $info);
//especificamos el código sql para la consulta parametrizada
$sql = "INSERT INTO tabla (valor) VALUES (?);";
//Scope_Identity nos devuelve el último id insertado
$sql .= "SELECT Scope_Identity() as id;";

/*
especificamos el valor o valores que se pasarán como
parámetros en la consulta anterior
**/
$param = array($valor);
//preparamos la consulta
$s = sqlsrv_prepare($c, $sql, $param);
//ejecutamos la consulta
sqlsrv_execute($s);

/**
*
En este momento se ha ejecutado la consulta pero, al contrario
de lo que podamos deducir, no se devuelve ningún valor 'id'
aunque hagamos un fetch
para obtenerlo debemos hacer un sqlsrv_next_result();
**/
sqlsrv_next_result($s);
//Ahora sí, hacemos un fetch
$r = sqlsrv_fetch_array($s, SQLSRV_FETCH_ASSOC);
//Mostramos el resultado
echo "Hemos insertado una fila con el id: ".$r['id'];

//liberamos la variable de estado
sqlsrv_free_stmt($s);
//cerramos la conexión
sqlsrv_close($c);

Carlos Sánchez, El valor de las redes sociales en la gestión de contenidos web

Carlos Sánchez, fundador y director de nvivo internet (nvivo.es), hizo algunas semanas una ponencia sobre redes sociales.

En una red social lo más importante es pensar en el usuario y hacer lo posible para que encuentre la información que busca (y la que no busca directamente, pero que creemos pueda resultarle interesante) de una forma rápida y sencilla.

Cambio de servidor en nvivo.es

Tras la acogida que está teniendo nvivo.es (con una media de 10.000 visitas diarias sólo de usuarios en España), plantear los nuevos cambios y ampliaciones tanto en la arquitectura del site como en el proyecto en sí, hemos decidido mudar la plataforma a un servidor dedicado en ferca que cumpliese con nuestros requisitos, y el cual administraremos nosotros.

El servidor es un Dell PowerEdge 1950 con 4Gb de Ram y 2 procesadores Intel Low Volt Xeon 5148 de doble núcleo a 2,33GHz.

La tecnología más importante usada en nvivo es la siguiente:

Debian. Nos ha parecido una opción cómoda y estable, que podríamos administrar de una forma ágil y cumple con nuestras necesidades.

Nginx. Hemos podido comprobar que apache consume demasiados recursos incluso tras adaptar su configuración al tráfico de nuestro sitio, por ello hemos decidido implementar nginx, un servidor web y reverse proxy bastante más optimizado y ligero desarrollado por Igor Sysoev, que a pesar de estar en beta y contar con muy poca documentación en inglés, está ganando adeptos gracias a su demostrada eficiencia.

Por nuestra experiencia hemos podido comprobar que no es nada dramático implementarlo y su configuración es bastante cómoda e intuitiva. Los cambios se pueden hacer en caliente, sin parar el servicio, tanto en configuración como en actualización del propio binario del servidor.

PHP en FastCGI. Es requisito para servir aplicaciones php en nginx, y dicho requisito hace que la aplicación se sirva de una forma mucho más potente que si se sirviese en modo cgi normal. Esto es posible ya que trabajando en Fastcgi, no es necesario levantar el proceso cgi de php por cada petición, sino que php se mantiene levantado y responde de inmediato a las peticiones que le llegan desde el servidor.

Smarty. Además de permitirnos separar la lógica de presentación y el html del resto de capas de la aplicación, juega un papel fundamental tanto en la caché del sitio como en su modularidad.

MemCached y eAccelerator, que hacen posible que nuestra aplicación se ejecute mucho más rápido sin molestar a la base de datos.

Mysql 5.0, próximamente con sphinx para búsquedas de texto completo.

Ahora lo tenéis más difícil para perderos un concierto ;)

PHPBilbao.org

Desde que empecé a programar en php llevo preguntándome el por qué no existe ningún evento, en éste país, relacionado con el desarrollo web en éste lenguaje de programación.. siendo éste el más usado en internet desde hace ya unos cuantos años.

logo_phpb.pngPensaba que éste problema era únicamente propio del País Vasco, donde apenas se celebran eventos de carácter técnico y la formación de éste tipo suele escasear o no hay suficiente gente interesada. Lo cierto es que actualmente no existe ningún evento oficial ni se ha organizado (que yo sepa) ninguna PHP Conference en éste país.

En noviembre del 2007 en el Congreso de Webmasters, se demostró claramente que éste tipo de eventos son muy interesantes, que pueden reunir a profesionales y emprendedores con las mismas inquietudes/”ganas de crear”, que proporcionan un valor didáctico, social e innovador que muy dificilmente se podría conseguir con una comunidad exclusivamente online.

Con phpbilbao.org pretendo crear, con la ayuda de las personas que se apunten y estén realmente interesadas, una comunidad de profesionales de internet que estén interesados directa o indirectamente con php y, organizar charlas, eventos o quedadas más informales detrás de unas cervezas (beers & php).

No pretendo solamente reunir una comunidad de desarrolladores web, una aplicación web escrita en cualquier lenguaje no funciona nunca por sí sola y requiere el trabajo y la experiencia de:

  1. Hosters
  2. Administradores de sistemas (Servidores web, Bases de datos, Servidores de directorio… cualquier sistema que conviva con una aplicación web)
  3. Ingenieros/Diseñadores/Analístas de interacción, usabilidad y accesibilidad.
  4. Analístas / Desarrolladores de php o de otros lenguajes de programación web que estén interesados en éste lenguaje.
  5. Diseñadores web
  6. Personas que quieran hacer networking o busquen profesionales con los que llevar a cabo su proyecto.

Ésta es mi idea de una comunidad interesante y es lo que busco con phpbilbao (y creo que a la gente le puede interesar).

Mucha gente me ha comentado que Bilbao le queda muy lejos para apuntarse. El nombre php Bilbao se ha escogido pensando en que las primeras charlas que organicemos en un principio sean en ésta ciudad (creo que es más fácil organizar algo entre gente de una misma zona y luego, en base a lo que ocurra, ampliar horizontes). Ésto no quiere decir que sólo sea una comunidad exclusiva para la gente de Bilbao. Mi idea es la de crear una comunidad online donde también se podrán hacer cosas, si vemos que se empiezan a animar más personas de otras zonas, no descartamos organizar algo a nivel nacional.

Existe otro grupo en Barcelona que también se está moviendo en una dirección parecida, pero que cuentan ya con una serie de quedadas a sus espaldas. He pensado que en un primer momento sería más adecuado crear una lista de interesados y posteriormente crear el sitio web, en base a las necesidades que vayan surgiendo. Como requisito para empezar a plantear “una primera fase” he puesto un mínimo de 14 interesados cerca de Bilbao. (Actualmente estamos 10)

Una vez ya estando >= 14 creo que se podría pensar en cómo organizarnos, crear la aplicación web e ir presentándonos poco a poco. Sinceramente y viendo las personas que están apuntadas, creo que las charlas van a estar muy interesantes.

Me gustaría saber vuestra opinión sobre ésta iniciativa y me encantará leer cualquier sugerencia