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.

Convocatoria para EmprendeWeb 30 Julio del 2009

Aunque no lo he puesto en la web oficial, me gustaría convocar a aquellos emprendedores tecnológicos o personas que tengan proyectos relacionados con tecnologías en internet, para tomar una cervezas en Bilbao el 30 de Julio del 2009 a las 19:00.

Estaría bien ser al menos 8 personas, sin contarme ni a mí y ni a Sergio, para que salgan temas interesantes a debatir tanto de programación, metodologías, sistemas, herramientas de promoción y marketing, tecnologías de streaming, caché o cualquier cosa que nos resulte realmente interesante.

Comentar que estamos intentando organizar un evento más largo en Septiembre, con ponencias, talleres y demás, por lo que nuestro objetivo es también recoger feedback para poder hacer algo en condiciones.

Podéis dejar comentarios aquí o en el grupo de noticias.

Error al validar inserción en formularios en asp.net mvc: A value is required

Esto sucede porque mvc espera todos los campos especificados para una tabla antes de insertar un registro, incluido el campo de identidad que suele ser autonumérico.

Podemos excluir uno o varios campos a la hora de insertar un nuevo registro, mediante un filtro en la declaración del método para la acción responsable de hacer el insert.


[AcceptVerbs(HttpVerbs.Post)]

public ActionResult Insert([Bind(Exclude="Id")] Object object)
{

//lógica para el insert aquí

}

Instalar extensión pecl de sphinx para php en debian

Aunque se puede utilizar para más cosas, Sphinx es principalmente un motor de búsqueda de texto completo que puede usarse al trabajar normalmente con sistemas de bases de datos mysql y postgresql.

Sphinx trae, en el paquete donde incluye su código fuente, una serie de librerías con las que se puede atacar a su demonio searchd, el encargado de hacer consultas a los índices que hayamos creado.

Aunque una de esas librerías está escrita en php, quizá nos interese más usar la librería escrita en c desde php, con el fin de comunicarnos de una forma más eficiente contra searchd.

Para ello lo primero que tenemos que hacer es compilar la librería libsphinxclient, que encontramos en el directorio que tiene su mismo nombre dentro de la carpeta api, en el código fuente de sphinx.

CXXCPP="gcc -E" ./configure --prefix=/opt/sphinx
make
make install

Si no tenemos phpize, lo instalamos

apt-get install php5-dev

Ahora nos bajamos la extensión pecl más reciente de sphinx, descomprimimos el paquete y usamos phpize:

cd sphinx-1.0.0
phpize

Configuramos y compilamos la extensión

./configure --with-sphinx=/opt/sphinx
make
make install

Y por último, podemos añadir un archivo sphinx.ini en /etc/php5/conf.d/ donde habilitamos la librería:

[sphinx]
extension=sphinx.so

Tras reiniciar el servidor web ya podemos trabajar con esta librería.

Ajax entre dominios con jsonp y jquery

Uno de los principales problemas que tienen los desarrolladores web a la hora de desarrollar aplicaciones RIA con ajax, es la limitación de javascript para cumplir la política de mismo origen.

Teóricamente, debido a esta política, JavaScript no puede lazar peticiones o consumir datos entre dominios distintos. Digo teóricamente, porque esto puede conseguirse con algunas técnicas de hacking como csshttprequest.

Para no tenir que recurrir a estas técnicas existe una forma más elegante de conseguir esto y es mediante jsonp.

Básicamente se basa en una técnica en la que entran en juego tanto el frontend como el backend, en la petición/respuesta json.

El cliente envía una petición de tipo jsonp con un parámetro en la url que tendría como valor el nombre de la función que manejará la respuesta de dicha petición. En el servidor se retorna una respuesta json como valor de una variable con el Mismo nombre de dicha función.

Jquery puede trabajar con jsonp, el proceso sería el siguiente:

Javascript en el frontend con jquery


$(document).ready(function () {

$.ajax({
dataType: "jsonp",
data: "",
url: "http://example.com/json?method=?",
success: function(json){ alert(json.key); }
});

/*

Si el método que se le pasa en la url

tiene un valor "?" jquery generará

un valor aleatorio para la función que

manejará la respuesta. Esto nos evita

problemas con la cache

*/

})

Código de respuesta en backend en php


header('Content-type: text/json');

$respuesta = array('key'=>'valor');

echo $_GET['method']."(".json_encode($respuesta).")");

exit();

Esto nos permitirá trabajar con ajax entre dominios y gestionar la respuesta json a  nuestro antojo.

Experiencia de usuario en dispositivos móviles para diseñadores web

Pocas presentaciones de las que he visto últimamente tienen tan buena calidad y provocan tanta reflexión como esta de Rachel Hinman, directora de experiencia de usuario en Adaptative Path, sobre usabilidad en desarrollo de aplicaciones para dispositivos móviles.

Consejos y un nuevo punto de vista a la hora de afrontar el diseño de interacción en este tipo de proyectos, con respecto a los proyectos web habituales.