Extensión VLC: MMP

lunes 21 de febrero de 2011 por Alfredo

Hace unos meses, oyendo una emisora de radio local, nos percatamos que durante varias horas al día la música y anuncios que sonaban lo hacían en bucle, es decir había una lista de reproducción que combinaba una serie de canciones con unos anuncios de manera predefinida y que se repetía todos los días (cosa comprensible pensando que era pleno verano y que mucha gente trabajando no debería de haber ;)).

Fue entonces cuando pensamos en la posibilidad de poder crear algún sistema que permitiera combinar varias listas de reproducción indicando el número de canciones consecutivas de cada lista. De esta manera, a partir de las mismas listas fuente se podrían realizar varias combinaciones mezcladas con una supuesta lista de anuncios. Y de ahí nació MMP: Manage Multiple Playlist, la que es nuestra primera extensión para VLC.

Por supuesto, su uso va mas allá del meramente radiofónico, ya que la posibilidad de mezclar listas de reproducción de diversas fuentes puede venir muy bien. ¿O es que nadie ha hecho una fiesta y todo el mundo se ha peleado por poner sus canciones? 🙂

Hace unos días publicamos la segunda beta (0.6b). Descárgala y ayúdanos a mejorarla.

Empezando a programar aplicaciones para dispositivos móviles

domingo 26 de diciembre de 2010 por Alfredo

«¡Por fin! Ya tenemos una idea para crear alguna aplicación para un móvil.  ¿Y ahora qué?» Eso mismo nos preguntamos hace unos meses, cuando empezamos a pensar en desarrollar aplicaciones para móviles: ¿por dónde empezamos?.

Tal vez la primera pregunta a hacerse sea para qué dispositivo trabajar. No cabe duda que el mercado está cada vez más lleno de opciones y cada una con un sistema operativo, unas herramientas de desarrollo y una serie de recursos disponibles. Pero no sólo eso. Además de la parte técnica hay una importantísima parte comercial, en la que hay que contestar a preguntas como ¿a qué tipo de personas va dirigido el software que  desarrollamos? ¿qué dispositivo(s) es mayoritario en ese sector? ¿cómo funciona el canal de distribución (AppStore, OVI, Android Market…)?, etc. En esta serie de posts vamos a olvidar esta parte comercial y vamos a centrarnos en la parte técnica. Es decir, una vez elegido el sistema de destino ¿cómo se programa para él?.

Y para empezar lo primero es centrarnos en intentar hacer un resumen de lo que hoy en día podemos encontrar en la calle, especificando, aunque sea de manera muy superficial, que tipo de lenguajes y con que herramientas es posible programar cada una de ellas. ¿Preparados? Empezamos 🙂

Hoy por hoy tenemos 7 Sistemas Operativos para móviles que copan el mercado:

  • iOS (iPhone, iPad)
  • Windows 7 Phone (HTC, Samsung, LG, Sony Ericsson, ..)
  • Android (HTC, Motorola, Samsung, Nexus…)
  • RIM (BlackBerry)
  • Symbian (Nokia)
  • MeeGo (Nokia, algunos coches, )
  • WebOS (Palm, HP)

La programación sobre iOS y sobre W7P va aparte y merece una atención especial (incluso porque las herramientas de desarrollo sólo existen en sus «hermanos mayores» MacOS y Windows). El primero permite el desarrollo con Objective-C, sobre Cocoa, con XCode como herramienta de desarrollo principal. El segundo parece que se centrará en la plataforma .Net con lenguajes como C# o en Silverlight, aquel framework que creó Microsoft para hacer la competencia en el desarrollo de aplicaciones web enriquecidas a Flash y a Ajax y que, visto lo visto, parece que va a terminar centrándose en ser el sistema de desarrollo de aplicaciones para Windows Phone. Su IDE de trabajo es Visual Studio y Expression Blend.

WebOS es un sistema relativamente reciente. Está desarrollado por la Palm, Inc que ahora pertenece a HP y basado en Linux (como Android y MeeGO). Para programar sobre él se requiere básicamente conocimientos de creación de paginas web: HTML, Javascript, CSS, JSON … y como entorno de programación se dispone de Ares, un IDE integrado en un navegador web, con un editor visual bastante útil.

De MeeGO podríamos decir que es la descendencia de Linux para móviles ya que, a diferencia de Android y WebOS, Meego esta apoyado por la Linux Foundation. Un aplicación para MeeGo es como una aplicación normal escrita para KDE, es decir con las librerías Qt, sólo que con las características especiales que supone programar para dispositivos con recursos limitados.

Por su parte Symbian desarrolla en C++ y Java (aunque de esta opción hablaremos más adelante), normalmente sobre Eclipse. Aun así, existen otras opciones como Origo IDE, que permite la creación de aplicaciones de manera rápida y visual con un lenguaje de script propio o lenguajes más comunes como python o ruby,

Por último, programar en el resto (BlackBerry, Android o incluso en Symbian) puede tener similitudes que hagan que nuestros programas «puedan» ser ejecutados en un sistema u otro. ¿por qué? por el uso de Java , en concreto de J2ME, común, en principio, a todas las plataformas. Será sobre estos últimos sistemas sobre los que hablaremos en las próximas entradas.

Más información | Visual Studio, Eclipse, OrigoIDE, Ares, Silverlight

Pods CMS

lunes 25 de octubre de 2010 por Carlos

Al empezar la creación de una página web siempre nos habíamos preguntado cual sería la mejor opción a la hora de elegir un CMS.

Nuestras investigaciones por internet y después de barajar varias opciones hizo que descubriéramos Pods CMS. Pods es un plugin para WordPress que lo convierte en un cms cómodo, rápido y muy fácil de configurar.

Para empezar a trabajar con Pods simplemente hay que bajar el plugin y activarlo en una instalación de WordPress. Podéis encontrar el plugin Pods CMS en la web de plugins para wordpress.

Pods funciona principalmente como un generador de tipos de contenido, desde el punto de vista del programador podríamos verlo como un generador de clases, esto es, permite definir un modelo y asignarle varios campos de diferente tipo para luego poder crear objetos de dicha clase e interaccionar con ellos. Simplemente con esta funcionalidad ya es suficiente para dejarte con los ojos abiertos, pero hay mucho más.

Con Pods puedes hacer cualquier cosa, ya que tienes muchas formas de sacar la información introducida en la base de datos:

  • Mediante páginas desde Pods en el área de administración. En estas páginas se puede poner tanto código php como caracteres comodín en las URL. Por ejemplo la página recetas/* será el handler por defecto de todas las páginas que empiecen por recetas/. Una forma de routing sencilla para el usuario…
  • Se puede también añadir código en php directamente en los templates del tema que estés utilizando en WordPress.
  • Utilizar shortcode de WordPress para incluir instancias de Pods o detalles de un Pod específico dentro de páginas o entradas de WordPress.
  • Y por último y la más importante de todas creo yo, la API de Pods, que te permite hacer CRUD directamente de cualquier Pod que tengas creado en el sistema. Esto viene de perlas por ejemplo para hacer plugins que utilicen el sistema Pods como entrada de datos en las tablas.

Por poner un ejemplo, estamos trabajando en una web donde utilizamos Pods como entrada de datos en el sistema. Una de las partes de la página principal muestra los servicios más llamativos que proporciona nuestro cliente cada mes. Para ello creamos un Pod (que llamaremos Servicios destacados) que contendrá los siguientes datos: nombre, imagen, activa, oferta del mes, enlace.

Una vez creado el Pod podemos introducir datos desde la sección Add Servicios destacados que aparece en el menú principal de Pods (esto puede cambiarse mediante Pods UI o creando un menú nuevo mediante un plugin, pero eso lo comentaremos en otro post):

Ya introducidos los datos podremos asociar una página de WordPress a un template concreto y modificar ese template para que lea los datos del pod que queremos. En este caso creamos un template con este código:

<?php
/*
Template Name: Servicios destacados
*/
<?php get_header(); ?>
<?php
	// Consultamos la base de datos en Pods. 4 servicios destacados que estén activos
	$imagenes = new Pod('servicios_destacados');
	$imagenes->findRecords('name ASC','4','t.activa = 1');
	$total_imagenes = $imagenes->getTotalRows();
?>

//Bucle por los servicios destacados encontrados para crear la página
<div id="servicios-destacados">
<?php if( $total_imagenes>0 ) : ?>
	<ul>
	<?php while ( $imagenes->fetchRecord() ) : ?>
		<?php
			// iniciamos nuestras variables
			$id        	= $imagenes->get_field('id');
			$nombre      	= $imagenes->get_field('name');
			$imagen  	= $imagenes->get_field('imagen');
			$imagen_url     = $imagen[0]['guid'];
			$enlace		= $imagenes->get_field('enlace');
			if($enlace=="") $enlace = "#";
		?>

		<li>
			<a href="<?php echo $enlace; ?>">
			<img src="<?php echo $imagen_url; ?>" alt="<?php echo $nombre; ?>" />
			</a>
		</li>
	<?php endwhile ?>
	</ul>
<?php endif ?>
</div><!-- #servicios-destacados-->
<?php get_footer(); ?>

En este template lo que hacemos es:

  1. consultar cuatro productos destacados activos
  2. hacer un bucle por los productos para mostrarlos en pantalla

Con esto hemos visto lo fácil que es meter contenido propio en una base de datos utilizando el gran backEnd que tiene WordPress y consultar ese contenido con un template. Todo esto gracias a Pods.

Por último os dejo con un video de uno de los autores rascando un poco por encima las posibilidades de Pods y de su creciente documentación:

 
 

Hola mundo, hola Uhuru

viernes 1 de octubre de 2010 por Alfredo

¡Por fin! ¡Ya estamos aquí! Bienvenidos a Uhuru Labs.

Hace varios años que Carlos y yo venimos dándole vueltas a la posibilidad de crear «algo», «algo» que nos permitiera llevar a cabo con libertad nuestras ideas, probar nuevas tecnologías, aprender, juguetear e intentar sacarle a ello rentabilidad. Y la oportunidad se ha presentado ahora.

Así nace Uhuru Labs. Tal vez la mejor manera de definirlo sea como un laboratario de tecnologías informáticas, con el objetivo de ser aplicadas en la creación de los mejores proyectos posibles. Nuestro campo de investigación es amplio, desde las ya casi olvidadas aplicaciones de escritorio, hasta las aplicaciones móviles, pasando por páginas y aplicaciones web, pero sin olvidar elementos tan relacionados con estas últimas como el diseño o la fotografía.

El trabajo ya ha empezado. Ya podeis encontrar en el portafolio, algunas de las páginas web que hemos desarrollado. Pero viene más, mucho más :). Afortunadamente las ideas siguen llegando, así que esperamos en poco tiempo ir dejando nuevos recursos para que podais utilizarlos y ayudarnos a mejorarlos.

Por cierto, para los curiosos: uhuru es una palabra suajili (lengua que se habla en gran parte del África negra, principalmente en Kenia y Tanzania) y significa libertad… a buenos entendedores 😉