Fork me on GitHub

Miquel Camps Orteza

Soy programador web. Estoy especializado en desarrollo web (php, js). Estoy aprendiendo a desarrollar apps para iphone/ipad.
Organizo betabeers en Madrid.
Sobre mí     Metas     Hacks     Contactar     LinkedIn     Twitter    
Fin de una etapa, me voy de nvivo.es

Dejar nvivo.es ha sido una decisión difícil.. hace 3 años lo dejé todo para venir a trabajar a Madrid, durante este tiempo me he acomodado muy bien en el trabajo y con los compañeros.

El problema ha sido acomodarse, han pasado 3 años casi sin darme cuenta y la verdad es que mi aspiración en la vida es montar mi empresa.
He intentado compaginar mi vida con el trabajo, mi pareja y todo mi tiempo libre lo he dedicado para arrancar proyectos para poder independizarme del trabajo, al final ningún proyecto ha funcionado por no dedicarle el tiempo necesario.

Algunas personas me preguntan si me lanzo al 100% como emprendedor..

En la situación que está el país va a sonar feo, pero quería ir al paro para pensar que hacer con mi vida e intentar centrarme en un proyecto.
Como soy yo quién se va de la empresa, no consigo el paro y como de momento no me veo como autonomo, mi intención es buscar un trabajo de media jornada para poder pagar gastos y compaginarlo con freelance e intentar iniciar una startup.

BUSCO

  • trabajo de media jornada relacionado con apps móviles en madrid.
  • me quiero especializar en apps nativas de iOS no tengo buenas experiencias con android.
  • me interesa también webapps y html5.
EXPERIENCIA EN APPS
  • Tengo algunas apps en la appstore pero no son nativas, están hechas con titanium.
  • Estoy haciendo un curso de ios en imaginagroup donde tengo que presentar una app final.
  • Sé que soy novato con esto, pero me voy a esforzar mucho!
EXPERIENCIA EN WEB
  • php
  • javascript (jquery)
  • symfony2
  • wordpress
  • facebook connect y opengraph
  • APIs
Para saber más de mi tenéis mi linkedin, twitter, mi perfil betabeers y para contactar conmigo mi email es gafeman-a-gmail.com.
Voy a tomarme diciembre para ver todas las opciones antes de decidir cualquier cosa de momento estoy abierto a cualquier cosa!
diciembre 1, 2011
El caos de actualizar xcode a 4.2

Para empezar tenia instalada la versión 4.1 de xcode bajada de la web apple developer. Intenté actualizar la nueva versión desde la appstore pero una vez terminada la instalación, al abrir xcode ponía que tenía la versión anterior la 4.1.

Intentando reinstalar de nuevo xcode la appstore, ponía que ya tenía la nueva versión instalada.
Buscando en google, he encontrado la solución que propone desinstalar xcode y reinstalarlo de nuevo de la appstore, aquí os dejo los pasos:

Desinstalar xcode 4.1
sudo Developer/Library/uninstall-devtools –mode=all
Borrar Application/Install Xcode

Instalar xcode 4.2
Una vez desinstalado xcode toca reinicar el sistema
Instalar Xcode 4.2 desde la Appstore
Iniciar Application/Install Xcode

noviembre 12, 2011
Desarrollar con la API de ducksboard

Como ya he dicho alguna vez me encanta jugar con APIs y la de ducksboard ha supuesto un pequeño reto ya que normalmente no hago uso de CURL para enviar datos, siempre hago consultas GET con file_get_contents.

El funcionamiento de ducksboard de cara el usuario es muy simple, podemos crear varios paneles y luego en cada uno añadir los widgets que queramos.

Hay widgets genéricos como: seguidores de twitter, menciones en twitter, visitas de google analytics, etc. donde la información se actualiza automaticamente y luego widgets personalizados (customize widgets) donde nosotros definimos el valor mediante la API.

Leer más

noviembre 6, 2011
Participo en el @ducksboard hackathon con 6 hacks!

Sería genial si podeis dedicar 3 minutos a votar mis hacks para que gane el hackathon!

Actualización

- Acabo de hacer un nuevo hack con información de mi servidor dedicado en kemsirve, datos de visitas de mi blog y betabeers

- Acabo de hacer un nuevo hack google hire me! mi curriculum en ducksboard :)

- Acabo de crear un nuevo hack llamado around the world con información (hora, webcam, tweets y noticias) de varias ciudades del mundo como nueva york, madrid, paris, tokyo. Las capturas de webcam son facilitadas por playawebcams.

——————————–

Me encantan los hackathons este es el tercero en el que participo y me enteré de él gracias a que el team de ducksboard vino a presentar en betabeers.

Resumiendo Ducksboard es un servicio que te permite crear un panel de control con información representada de forma bonita.

En este hackathon he empezado a las 2 de la noche y he terminado a las 6 de la madrugada!

He creado 3 dashboards con ducksboard dos usando su API y uno con los widgets que vienen por defecto. He liberado el código que he programado en github.

Elecciones España Rajoy (PP) vs Rubalcaba (PSOE)

Este hack muestra información de los candidatos a la presidencia de españa, podeis comparar el número de followers, una previsión de quién va a ganar, las últimas noticias, los tweets relacionados con ellos, incluso puedes votar a tu candidato favorito mediante el móvil escaneando el QR.

Para desarrollarlo he usado la API de twitter para conseguir el número de followers, los rss de google news y he usado google chart para generar los códigos QR.

I want a fucking iphone 4s

Este hack surge de mi necesidad de comprar un iphone 4s, ya que mi móvil android se ha convertido en un “fantastico rallador de queso”.

Así que he desarrollado varios RSS con la búsqueda “iphone 4s” en varios sitios como ebay.es, segundamano.es y mundoanuncio.com

Stock Markets

Este hack es para ver la bolsa de valores en distintos sitios del mundo como NASDAQ(USA), IBEX35(ES), Nikkei 225 (JP) y FTSE (UK).
En este no he programado nada, he puesto un reloj para cada ciudad, las últimas noticias y tweets relacionados.

 

noviembre 6, 2011
API secreta de google para obtener una miniatura de una web móvil

Hacemos una petición GET AJAX:

http://www.howtogomo.com/en/_xhr/preview/?validate&url=http://facebook.com

Una vez haya cargado si la petición no ha devuelto ningún error , parseamos el JSON y cogemos el indice “image”:
{“result”: “ok”, “image”: “/image/23008″, “id”: 23008, “time”: 0.499}

Construimos la url de la imagen:
http://www.howtogomo.com/image/23008

noviembre 1, 2011
Apple y los fanboys

Me ha salido la vena fanboy y tenía ganas de escribir, post dedicado a javi soto ;)

No me considero fanboy descelebrado, me interesa la tecnología y me gusta lo que hace apple, pero no pienso que por tener un mac eres más “cool” que uno que usa un pc con linux, al final lo que importa no es la tecnología si no el uso que haces de ella y como la aprovechas para conseguir un fin.

Muchas personas se quejan de que apple no innova, por una parte estoy de acuerdo y por otra no, aunque creo que si sus dispositivos fueran más baratos, no se quejaría tanto la gente… pongo algunos ejemplos:

No innova, pero mejora lo que ya existe

mac no es el primer sistema operativo ¿Esto ya lo hace malo? no, apple con mac ha conseguido una experiencia de usuario que hace que te olvides del sistema operativo, sólo tienes que ver lo fácil que es instalar un programa arrastrando un icono a la carpeta de aplicaciones.

Sobre facetime, vale existe la videollamada de hace años, pero alguien lo usa? el consumo es caro, vale la pena pagar por ello? para mi no.
No se trata de lanzar antes si no de lanzarlo en el momento que la tecnología y las condiciones económicas lo permitan,
ahora ya todos tenemos internet en casa, los móviles tienen conexión a internet aceptable, es el momento para tener videollamada entre varios dispositivos ordenador, tableta y móvil.

Innova

Mira los telefonos móviles de ahora, con la salida del primer iphone han aparecido muchos móviles sin teclado y con la pantalla táctil.
Muchas compañías no se arriesgan a lanzar un producto que no siga un estándar, por miedo a al desconfianza que pueda tener el consumidor final, apple sabe muy bien lo que quieren los usuarios y se aprovecha de ello $$$$$$$$$$$.

Lo mismo para los tablets, si ipad no vendiera millones a caso existirían tantos tipos de tablets hoy en día?

octubre 8, 2011
Mis primeras impresiones con symfony2

Anteriormente estuve probando otro framework ruby on rails pero no le dediqué mucho como para compararlo con synfony2, no tengo experiencia con symfony1 y todavía hay muchas cosas que desconozco de symfony2.

Me gusta

  1. Generar bundles y tablas rápidamente desde la terminal, en 5 minutos tienes un blog con las secciones editar, borrar, crear y ver post.
  2. Sistema de templates Twig, poder definir bloques me parece muy intuitivo.
  3. Estructura, me gusta como se separan los controladores, modelos y vistas.
  4. Entorno de desarrollo y producción juntos pero no revueltos editando app/AppKernel.php puedes definir que bundles se llaman a producción o sólo en desarrollo.
  5. Olvidarme de definir rutas en htaccess, puedes definir la ruta en el controlador con un comentario.
  6. Los formularios y las validaciones.
  7. Como se definen los modelos.

No me gusta

  1. Symfony ocupa bastante, ver que la carpeta vendor ocupa 120 MB asusta, no sé que puedo quitar de allí para aligerarlo.
  2. Si buscas información de symfony2 en google salen demasiados resultados de la versión 1, tuve que bloquear resultados de:

    http://www.symfony-project.org

    http://forum.symfony-project.org

  3. Estructura un poco liosa al principio si no tienes experiencia con frameworks.
  4. Me parece que va un poco lento en mi servidor.
octubre 8, 2011
Twig sistema de templates de symfony2

Nunca había usado twig lo más parecido que he tocado es smarty un sistema de templates para que no tengas que poner etiquetas <?php

Aquí un resumen de lo que he usado hasta ahora en twig:

Definir una variable
{% set analytics_id = “UA-16938408-8″ %}

Imprimir una variable
{{ analytics_id }}

Definir un array
{% set categories = ["Todos", "Programador web", "Programador apps móvil", "Diseñadores", "Bloggers", "Communiy managers", "SEO", "Traductor", "Otros"] %}

Recorrer un array e imprimir los valores

{% for category in categories %}
	<a href="{{ path('post') }}search?c={{loop.index0}}">{{category}}</a>
{% endfor %}
Hacer un if
{% if variable is defined %}
hello world
{% endif %}
Crear enlace relativo a un controlador /user/login
<a href="{{ path('user_login') }}">Salir</a>
Crear enlace absoluto a un controlador http://dominio.com/user/login
<a href="{{ url('user_login') }}">Salir</a>
Cargar un estatico js o css
<script src="{{ asset('bundles/applicationanuncios/bootstrap/js/bootstrap-dropdown.js') }}"></script>

Si en un controlador pasas una variable con código html, symfony la codifica par que no lo haga tienes que usar:
{{ pager|raw }}

Definir la estructura de un Template

<!DOCTYPE html>
<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<title>{% block title %}{% endblock %} - {{sitename}}</title>
</head>
<body>
{% block content %}{% endblock %}
</body>
</html>
En la vista de un controlador
{% extends "ApplicationAnunciosBundle::layout.html.twig" %}
{% block title "Titulo sección" %}
{% block content %}
contenido de la sección
{% endblock %}
octubre 8, 2011
Subiendo symfony2 a producción

Como he dicho anteriormente no soy un crack de los comandos, no tengo perfil de sysadmin, nunca había sincronizado un repositorio git en un servidor.
Soy muy basto ya que para mis proyectos nunca hago nada en local, hago los cambios directamente editando en mi servidor jeje.

Con symfony2 he cambiado la forma de trabajar e hice pruebas de forma local, hasta tener el proyecto funcionando.
Lo que quiero explicar en este post de como transferí mi proyecto symfony en local a tenerlo en un servidor público.

Lo primero de todo fue crear el repositorio en github, usando github for mac.

Luego hice commit de todo, menos estos ficheros ya que no hace falta subir la cache ni los vendors de symfony que son muy pesados para subirlos a mano:

/web/bundles/framework
/web/bundles/sensiodistribution
/web/bundles/webprofiler
/app/bootstrap*
/app/cache/*
/app/logs/*
/vendor/assetic
/vendor/bundles
/vendor/doctrine
/vendor/doctrine-common
/vendor/doctrine-dbal
/vendor/metadata
/vendor/monolog
/vendor/swiftmailer
/vendor/symfony
/vendor/twig
/vendor/twig-extensions
/app/config/parameters.ini
.DS_Store

Una vez con repositorio actualizado en mi servidor cree un subdirectorio dir.betabeers.com y dentro de la carpeta desde terminal ejecuté:
git clone git://github.com/miquelcamps/directoriopro.git

Nota: esto lo puedes ver en la ficha del proyecto en github

El siguiente paso es descargar los vendors con este comando y en la raiz del proyecto:

./bin/vendors install

Ahora toca crear las carpetas de log y cache:

mkdir app/logs
mkdir app/cache
chmod 777 app/logs
chmod 777 app/cache

Ahora tienes que editar app/conf/parameters.ini con los datos de tu base  de datos.

Prueba de entrar con la url:

http://dominio.com/proyecto/web/app.php

Posibles errores

Si te da error 500 y no sabes que tocar, mira los logs de apache, en mi caso tuve estos problemas:

no se puede escribir bootstrap.php.cache, para arreglar esto tienes que hacer:
chmod 777 app/bootstrap.php.cache

no se puede escribir cache/prod, la solución:
chmod 777 app/cache/prod

problemas de cache, borra el contenido de cache/prod y usa el comando:
./app/console cache:clear –env=prod

También comprueba que en app/config/routing.yml usas un controlador para la raíz, en mi caso tengo:

_welcome:
    pattern:  /
    defaults: { _controller: ApplicationAnunciosBundle:Post:index }

Hacer la url bonita

Aquí os dejo la configuración que tengo para el subdomino, uso apache:
<VirtualHost *:80>
ServerName dir.betabeers.com
 DocumentRoot "/home/dir/public_html/directoriopro/web"
 <Location />
        RewriteEngine On
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^(.*)$ /app.php [QSA,L]
 </Location>
</VirtualHost>
Actualizar tu respositorio en producción
En la raíz de tu proyecto y desde terminal ejecuta:
git pull
Y borra la cache, el contenido de app/cache/prod
octubre 8, 2011