Narciso Cerezo

Tecnología y emprendizaje

Abril del 2007

Sneak preview: desarrollo de aplicaciones móviles con BaseMovil

Este seguramente será el primero de una serie en la que quiero ir profundizando en cómo se pueden hacer aplicaciones móviles, realmente rápido, con BaseMovil.
Todavía no está abierto, de ahí lo de "sneak preview", pero lo estará dentro de poco. De hecho habrá dos fases: una primera para los "betatesters" que podrán empezar a trastear y hacer sus aplicaciones, y una segunda en la que se abrirá a cualquiera que quiera hacer aplicaciones con nuestros sistema e infraestructura.
Hoy voy a hablar simplemente de la creación de la interfaz de usuario.
El desarrollo es puramente conceptual, desapegado de la implementación final de la que se encarga el generador de vistas. De esta forma el código que hay que hacer está exclusivamente en el controlador y el modelo, ya que las vistas son sólo una definición vía XML.

El caso quizás más simple es un menú, implementado como una lista de selección, y al que se le pueden poner iconos a la izquierda de cada opción.
Cada opción del menú lleva asociado un código numérico que es el que permite al controlador saber que opción ha seleccionado el usuario.
Para crear un menú basta con definir la vista de esta forma:

<menu id="100" name="mainMenu" title="mainMenu.Title" >
    <menuItem title="mainMenu.Customers" action="100"/>
    <menuItem title="mainMenu.Options" action="101"/>
    <menuItem title="mainMenu.Exit" action="102"/>
</menu>

Para mostrar el menú necesitaríamos hacer esto desde el controlador:

final MenuView view = ViewFactory.getMenu( "mainMenu" );
view.show();

Y nos mostraría un menú de selección simple, con tres opciones.
Los campos title pueden ser un texto concreto, pero en este caso son una referencia a un recurso, de forma que el texto concreto dependerá del idioma seleccionado.

Otro caso típico es querer hacer un listado de una consulta (del motor de datos hablaré en el siguiente post de la serie). Digamos que queremos listar los clientes cuyo nombre contiene "bar".
Para definir el listado que mostrará el resultado sólo tenemos que definir la vista mediante el siguiente fragmento de XML (ya haremos un editor gráfico para los más vagos):

<listBrowser id="110" name="customerList" title="customerList.Title" pageSize="20">
    <field name="cust_name" />
    <field name="phone" />
</listBrowser>

Y para mostrarlo haría falta un pedazo de código Java similar a esto:

final RowSet result = CustomerModel.findCustomersByName( "bar" );
final ListBrowserView view = ViewFactory.getListBrowser( "customerList" );
view.bind( result );
view.show();

Con eso ya nos mostraría una pantalla de listado con los campos especificados, con paginación cada 20 elementos.
Si decidimos mostrar además del nombre y el teléfono la dirección sería tan sencillo como variar la definición por esto:

<listBrowser id="110" name="customerList" title="customerList.Title" pageSize="20">
    <field name="cust_name" />
    <field name="address" />
    <field name="phone" />
</listBrowser>

Y aunque los listados están muy bien como ejemplo de "data binding" sencillo, también se puede hacer un data binding más complejo con los formularios.
Una vez que hemos seleccionado el cliente queremos poder editar algunos datos de su ficha, y para eso nada mejor que un formulario de datos:

<form id="120" name="customerEditor" title="customerEditor.Title">
    <text name="name"
            
label="customer.CommercialName"
             bind="cust_name"
    />
    <text name="fiscalName"
            
label="customer.FiscalName"
             bind="company_name"
    />
    <integer name="code"
            
label="customer.CustomerCode"
             bind="custom_id"
             readOnly="true"
    />
</form>

Para mostrar el formulario, podríamos hacer algo similar a esto:

final ListBrowserView listView = ViewFactory.getListBrowser( "customerList" );
final
DataFormView form = ViewFactory.getDataForm( "customerSelector" );
form.bind( listView.getSelected() );
form.show();


Eso nos mostraría un formulario con una casilla de texto editable para el nombre comercial, otra para el nombre fiscal, y una no editable para el código de cliente. El formulario tiene automáticmente también una acción de aceptar y otra de cancelar, y si pulsamos en aceptar actualiza la fila de datos con los contenidos del formulario y los graba de nuevo en la tabla correspondiente.

¿Sencillo, no?

En próximos artículos exploraremos un poco más las posibilidades, sólo estamos arañando la superficie, pero como comienzo creo que está bien.
La enorme ventaja de esta forma de crear las pantallas, además de la rapidez, es que es algo completamente conceptual y que nos despega completamente de la implementación final de las pantallas y sus complejidades. Entre ellas, el discernir entre diferentes dispositivos para hacer la presentación más adecuada.
Y además brinda opciones adicionales, tales como que podemos hacer que cada cliente final de la aplicación pueda definir que campos quiere ver en cada pantalla, ya que la definición de las vistas es algo dinámico y que puede descargarse remotamente.


¿Qué te parece? ¿Alguna sugerencia? ¿Te gustaría hacer de beta tester para luego comercializar tus propias aplicaciones?

Mi primera inexperiencia con el capital riesgo

Todavía voy fatal de tiempo, pero se me acumulan los temas sobre los que quiero escribir, así que ahí va uno (un tanto largo, como siempre).

Como continuación a mi anterior post sobre la entrevista con unos capitalistas de riesgo globales, os cuento ahora algunas conclusiones sobre el desenlace del asunto.
Como imaginaréis por el título el desenlace ha sido negativo, en el sentido de que finalmente no les interesamos como inversión.
Sin embargo, todo tiene su parte positiva y es lo que hemos aprendido en el proceso.
Esto se junta también con la respuesta de algún Business Angel con el que hemos contactado, español en este caso, y que ha ido en la misma dirección.
Con los VC, la primera impresión de fría profesionalidad no ha sido muy real, ya que no han cumplido y he tenido que "perseguirlos" para conseguir una respuesta. De hecho fui bastante duro en mi último correo, ya que creo que todo el mundo merece una respuesta, aunque sea negativa. Y si encima te has gastado la pasta en viajar para ver al VC, pues con mayor motivo.
Finalmente su respuesta fue que creen que tenemos un buen producto para el mercado español, pero que no lo ven en el mercado internacional. Yo creo que no es así, ya que en los últimos estudios sobre movilidad empresarial en USA y EEUU los problemas y frenos para la implantación de la movilidad son derivados de las soluciones actuales y son justamente los que viene a paliar nuestro sistema. Así que hueco hay, con lo cual está claro que el error viene de mi exposición.
No he sabido comunicar correctamente lo que hacemos y sus posibilidades. Y en este caso concreto creo que es por el enfoque que le dimos a la reunión, ya que mis conversaciones iniciales eran con una persona con sede en EEUU pero la entrevista fue con una de Israel. Yo, ingenuo de mi, creí que esta persona era únicamente una especie de "proxy" para pasarle la información al primero, pero lo cierto es que no lo era.
La exposición fue de caracter demasiado informal, sin diapositivas ni nada, y creo que ese fue el mayor error. Creo que dimos la imagen incorrecta.
Lección: sólo tienes una oportunidad, así que hazlo formal y utiliza todos los medios a tu alcance para vender tu proyecto. Si vender, de eso se trata.
Lo cierto también es que yo no me dedico en cuerpo y alma al tema del capital, como todos me dicen que hay que hacer. Ahora tengo cosas más importantes que hacer, como dedicarme a mis clientes. Vamos, que no me quita el sueño lo del capital.
La otra cuestión, que tiene que ver con el BA es que este me dice que también que es muy interesante, pero que buscan crecimientos exponenciales. En otras palabras, mass market.
Nuestro mercado es empresarial, pero tiene potencial como para generar cerca de 200 millones de euros de ingresos anuales dentro de cinco años, claro está con la inversión adecuada. La rentabilidad sería buena, pero lo que al final parece que todos buscan es el dichoso mass market.
Me da que pensar sobre la supuesta racionalidad de este renacer del capital tras la burbuja punto com. Es como que todos quieren el siguiente Google o el siguiente YouTube para ser más exactos, y me temo que de esos hay pocos y además se originan al otro lado del charco.
Me consta que hay quien invierte en mercado empresarial, pero si ya es complicado para mass market, pues reducir potenciales hace que sea aún más complicado.
Entre los consejos que he leído sobre como entrarle al capital, decia un capitalista que hay que darles pinceladas y productos concretos, y dejar que sean ellos quienes imaginen lo que se podría hacer con eso. Que aunque tu creas que se puede usar para muchas más cosas, que les dejes eso a ellos que les hace ilusión. Después de esto tengo serias dudas sobre este consejo.
Por todo ello, he pensado en hacer algunas aplicaciones para mass market, totalmente gratuitas, aprovechando la potencia y facilidad de nuestra plataforma. La idea es crear algo de tracción y demostrar que lo que hemos hecho tiene en realidad muchas aplicaciones.
Todavía tengo que convencer al resto del consejo de que puede ser una buena idea. ¿Qué opinas? ¿Usarías tu móvil para anotar cosas cotidianas si tuvieras la facilidad para ello?
Las posibilidades son muchísimas, pero en una primera fase podemos abarcar cosas razonablemente sencillas: seguimiento de dietas, de constantes de salud (peso, ejercicio, tensión, etc), listas de la compra, radares fijos, seguimiento de rutas de ejercicio vía gps, etc...
La gracia del asunto es que la información la llevarías en la memoria de tu teléfono, que puede ser un teléfono razonablemente sencillo (con Java), con lo que no te costaría nada mantener tu información. Pero siempre tendrías la posibildiad de sincronizar esa información con una aplicación web, en ambos sentidos, y podrías acceder a la inforamación desde ambas partes.
Claro esto último tiene el coste de la conexión, pero eso es cada vez más barato, y si tu móvil tiene wifi puede ser gratutio.
Ejemplo tonto, confeccionas tu dieta desde la web con la comodidad del ordenador, te la bajas al móvil y así siempre puedes consultar lo que te toca cada día y hora. En el móvil haces el seguimiento de si realmente has cumplido la dieta y tu peso. De nuevo en el ordenador, puedes consultar los datos de forma agregada y ver gráficos de evolución del peso, correlaciones entre cambios de la dieta y evolución en el peso...
Mi duda con todo esto es si realmente alguien usaría cosas semejantes, así que tu opinión cuenta mucho, por favor, haz algún comentario al respecto.

PS: El post de tecnología está en borrador, ya está llegando (y de hecho son dos)...