Usar máquinas virtuales para desarrollar

Hoy he dado por chat una pequeña “clase magistral” de por qué mola más programar usando máquinas virtuales. Os dejo el extracto, que seguro que a alguien le interesa.
Inconvenientes:
Tardaras un rato hasta que lo montes, la primera vez. Creo que es el único inconveniente! Y cuando lo hagas varias veces, será cada vez más rápido.
Ventajas:
  • Puedes montar un entorno de desarrollo para cada proyecto que necesites, que sea un clon de tus máquinas de preproducción y producción. Así tendrás menos problemas de entorno.
  • Puedes mover la máquina donde quieras y montarla en otros servidores si quieres (proveedores en la nube, por ejemplo). O puedes compartirla con tu equipo de desarrollo para que todos trabajéis sobre el mismo entorno, independientemente de si usan linux, windows o mac.
  • Puedes trastear todo lo que quieras, sin enmarronar tu máquina fisica, que se queda limpia y sin problemas (no quieres ver un mac con mysql, apache, nginx, tomcat, lucene, nosql, memcached, sendmail, mongrel, xdebug haciendo profiling, etc… todo a la vez).
  • Puedes emular entornos reales. Por ejemplo, si tienes una máquina de produccion para BD y busquedas, y otra para frontal, puedes tener dos virtuales, una con cada cosa, y levantarlas o tirarlas a necesidad.
  • Si formateas el ordenador, la máquina sigue estando ahi, con sus backups o todo lo que te de la gana :)
  • ¿Se te ocurre alguna mas?
¿Cómo montarlo?
  1. Virtual box, gratis y molón. Sino, VMWare, u otras opciones comerciales
  2. Descarga ubuntu server. Si te ves con pelotas, la última debian (aunque ya no es como los viejos tiempos…). Si además quieres dedicarle tiempo, compila tu mismo los paquetes, recompila el kernel y pasa una noche de las divertidas de verdad que tanto nos gustan.
  3. En principio ya tendrás todo montadito, apache, php, mysql, etc… sino, apt-get y a molar. Monta los entornos de desarrollo dominios que necesites en tu apache, nginx o el que toque.
  4. Monta una carpeta compartida de tu máquina real a la virtual, donde tengas el código de tu aplicación. Tu programas en tu windows (o tu mac), ejecutas (o compilas) en la virtual. Si haces algún deploy con ant o similares, o maven, en la máquina virtual.
  5. Desde tu maquina fisica, accedes a la IP de la virtual. pero primero le añades un host (local.midominio.com, o devmidominio.com por ejemplo, el segundo caso es mejor si tu proyecto trabaja con subdominios).
  6. El resto, igual que siempre. Git parriba, git pabajo (o SVN), no necesitas hacer deploy porque la máquina virtual de DEV coge el código de trabajo actual de tu repositorio, pero es (teoricamente) la misma configuracion que tus servers de preprod y prod
  7. Si tienes un problema, sabes que al menos tienes coherencia de servers (y no tienes problemas porque en una máquina tienes php5.1 y en otra 5.2 con un parche raro de ubuntu que no hay en redhat, por ejemplo).
  8. A programar!

Abriendo vías de negocio

Interesados, ya saben :)

About Nerds

- Nerds get what they want when they want it, and they go psycho if it’s not inmediatelly available. Nerds overfocus. I guess that’s the problem. But it’s precisely this ability to narrow-focus that makes them so good at code writing: one line at a time, one line in a strand of millions.

- Douglas Coupland – Microserfs

Software entrópico

El software es como la entropía: difícil de atrapar, no pesa, y cumple la Segunda Ley de la Termodinámica”
— Norman Augustine

¿Por qué sois programadores?

Ocurre de vez en cuando, que uno se pregunta… ¿Cómo he llegado aquí?
En mi vida, parte de mi jornada la dedico a programar. Aunque ahora tienda más al desarrollo de negocio y mi vena “empresario” tire más, quiero mantenerme a pie de cañón. Quiero seguir programando, pero… ¿Por qué? ¿Cómo he llegado a esto?

Haciéndo memoria, recuerdo que de pequeño quería ser paleontólogo. Mucho antes de parque juráisco, de hecho. Sin embargo mi padre apareció un día por casa con un spectrum (supongo que sería un geek de la época). Lo malo (o lo bueno), es que antes de pensar en chicas, programaba mejor que jugaba al fútbol (esto era fácil, la verdad), así que inconscientemente, fui gestando esa profesión en mi interior.

Ahora me pregunto: ¿De verdad es el trabajo de mi vida, o simplemente me autoconvenzo fantásticamente?

Ocurre que más o menos hasta nuestra generación, hemos vivido el nacimiento-crecimiento de la profesión y su “semi-profesionalización”. Hemos vivido carreras de informática (aunque no las hayamos cursado), y hemos sufrido consultoras. Pero la pregunta es: ¿Cómo nos entró el virus inicial?

Algunas ideas de por qué hacerse programador:

  • Es una forma de ser artista sin tener ni idea de arte. Puedes CREAR.
  • Puedes socializar y conocer a las personas, si llegar a llamarlas tus amigos
  • Whenever – Whatever: Movilidad como en ningún trabajo.
  • Es relativamente fácil encontrar trabajo pagado decentemente, en comparación con otras profesiones. Ahora, hay trabajo
  • No es un trabajo de riesgo: Salvo en contadas excepciones, tu responsabilidad no va más allá de un par de pantallas azules, o de fatal errors en la aplicación.
  • No hay barreras de entrada. Cualquiera puede ser programador. Ser un fiasco, o convertirse en una estrella depende de uno mismo.
  • Hay retos, pero suelen ser con uno mismo. Impuestos por nuestro ego. “Esto sale por mis narices”.

¿Por qué sois programadores? ¿Si pudiérais ser otra cosa, qué seríais?

Aprendiendo a programar: Punteros

Ojalá hubiera tenido este video cuando empecé a programar en C, años ha.

[youtube]http://es.youtube.com/watch?v=UvoHwFvAvQE[/youtube]

Un puntero (o apuntador) es una variable que referencia una región de memoria; en otras palabras es una variable cuyo valor es una dirección de memoria. Si se tiene una variable ‘ p ‘ de tipo puntero que contiene una dirección de memoria en la que se encuentra almacenado un valor ‘ v ‘ se dice que p apunta a v.

(wikipedia)

Gracias Tomy!


V2.0