MARIO A. CHAVEZ
Software Engineer

From Tijuana, BC, now living in Colima, Col.; who works at Crowd Interactive on Ruby and Ruby on Rails applications.

La Bufadora, Ensenada BC. http://500px.com/mario_chavez

El mundo de la educación esta cambiando, la forma tradicional de educar ya no es suficiente. La educación remota o en linea ha venido a cambiar la forma en como aprendemos y ha creado también nuevos hábitos de como adquirimos nuevos conocimientos o técnicas.

Desde la parte informal a través de vídeos en Youtube que enseñan como hacer tareas pequeñas hasta sitios completos enfocados a la educación en varios niveles.

El acceso a Internet y dispositivos que nos permiten consumir estos recursos ha bajado la barrera de los nuevos conocimientos que podemos aprender, que quizás en la forma tradicional hubiese sido muy difícil y costoso.

La oferta educativa en linea es accesible para casi todos, solo se requiere de Internet, tiempo, saber ingles y quizás una cuota realmente baja y accesible.

Khan Academy

Es posible obtener acceso a conocimientos de educación media y básica, gracias a la oferta de Khan Academy, quien el día de ayer anuncio un acuerdo de cooperación con la Fundación Slim, quien le da el respaldo económico de $300 millones de dólares por los próximos 3 años para la traducción del contenido a español y seguir desarrollando el capital humano.

Pero Khan Academy no ha sido la única entidad de educación en linea que ha anunciado el apoyo de fondos económicos que les permita seguir existiendo, a continuación un recuento de algunos de los servicios de educación en linea que han asegurado de alguna forma su existencia.

Lynda.com

Lynda.com pone a disposición de sus usuarios mas de 1,500 de cursos en el área de negocios, desarrollo, diseño y creatividad. El acceso a estos cursos no es gratuito ya que se ofrecen a modo de subscripción mensual.

Lynda.com inicio con tan solo $20,000 dólares y para el 2011, ya había generado ganancias del orden los $70 millones de dólares.

ACTUALIZACION: Hoy Lynda.com anunció que $103 millones de dólares de fondos.

CodeSchool

CodeSchool a través de EnvyLabs desarrollo su plataforma interactiva para ofrecer cursos en el área de desarrollo web. Su modelo de ingresos es a través de subscripción mensual.

Si bien no hay información acerca de cifras sobre el éxito de CodeSchool, en el 2012 lanzaron un proyecto a través de KickStarter con la finalidad de recabar fondos para la creación un curso de desarrollo en iOS y aun y cuando solicitaban el apoyo por $50,000 dólares, en tan solo un mes recabaron $152,000 dólares.

TreeHouse

TreeHouse es otra oferta que permite aprender desarrollo web, negocios y desarrollo para dispositivos móviles, cuyo contenido esta disponible a través de subscripción mensual.

Hasta este momento TreeHouse ha asegurado fondos por $5.35 millones de dólares y la empresa asegura tener ganancias del orden de los $3 millones de dólares.

Code Academy

Otra empresa mas para adquirir conocimientos técnicos es Code Academy, quien también ofrece cursos para aprender desarrollo web, pero en el caso de ellos, el contenido es gratuito y esta traducido a varios idiomas.

Ademas Code Academy ofrece una plataforma que permite a cualquier persona diseñar y publicar los cursos.

Code Academy ha obtenido fondos por $12.5 millones de dólares hasta este momento.

Coursera

Coursera apuesta por la educación superior en linea, con el apoyo de 33 universidades del mundo, ofrece cursos en linea basados en los curriculums de las universidades, cuyos facilitadores son los integrantes de sus ofertas educativas.

Con $16 millones de dolares recaudados a través de fondos, ofrece educación de nivel mundial a alrededor de estudiantes en 190 países.

Udacity

Finalmente, otra oferta de educación superior en linea es ofrecida por Udacity, que también fue fundada con el objetivo de ofrecer cursos curriculares de nivel universitario.

A la fecha Udacity ha obtenido fondos del orden de los $21 millones de dólares.

Udacity ha anunciado un acuerdo con San Jose State University para un programa piloto con 300 estudiantes, para llevar a cabo 2 cursos en linea, con un costo de $150 dólares por estudiante, costo es significativamente bajo a lo que se paga regularmente.

Comentarios finales

Como podemos ver la apuesta educativa en linea va en serio, y aunque aquí solo mencione algunas de las ofertas, es posible encontrar en Internet mas opciones para desarrollar nuestros conocimientos.

En mi caso personal he utilizado mas de uno de estos servicios gratuitos y de paga, y en todos la experiencia ha sido buena. Si bien cada uno de los servicios ha desarrollado su propia plataforma para presentar sus contenidos, estas no son muy distintas unas de otras, hay ciertos aspectos generales.

Así que no hay pretexto para no aprender o desarrollar nuevas herramientas, si bien algunas de estas ofertas tienen costo, este no es prohibitivo.

En @menthora esta esta pregunta en este link http://www.menthora.com/questions/ruby-o-php-y-por-que

¿Ruby o PHP, y por qué?
¿Para qué tipo de proyectos es mejor usar cada lenguaje?

A la cual respondi con lo siguiente:

La decisión de usar un lenguaje de programación sobre otro, puede tener fundamentos técnicos, políticos o simplemente de gusto.

Sobre en que tipo de proyectos utilizar uno u otro, PHP tienen un campo un poco mas limitado, ya que es un lenguaje de script de propósito general, especialmente creado para el desarrollo de aplicaciones web. De acuerdo a PHP es “an Hypertext Preprocessor”.

Ruby en cambio es un lenguaje de scripting orientado a objetos de propósito general. Lo puedes usar para crear:

- Scripts para tareas atómicas y de automatización: Por ejemplo Rake
- Desarrollo web: Por ejemplo con el DSL SinatraRb o con el Framework Ruby on Rails
- DSL o lenguajes completos: Coffeescript aunque hoy en día el compilador esta escrito en Coffeescript
- Aplicaciones de escritorio: ShoesRb
- Aplicaciones para OSX: MacRuby
- Aplicaciones para iOS: RubyMotion y próximamente MobiRuby
- Aplicaciones embedded: MRuby

Solo por citar algunos ejemplos.

Ruby es un lenguaje con una sintaxis limpia, clara intuitiva, y aunque en un comentario anterior lo emparentaron con C, afortunadamente no se parece mucho a C, C++, C# ni Java.

Como mencioné anteriormente, Ruby en un lenguaje orientado a objetos, que ofrece funcionalidad como manejo de excepciones, garbage collector, sobrecarga de operadores, mixins, duck typing, meta programación, closures, iteradores con funciones de alto orden, currying, operaciones con set - estas ultimas funcionalidad de lenguajes funcionales -. 

Ademas cuenta con una extensa colección de librerías a través de RubyGems; es portable a diferentes plataformas y con la posibilidad de ejecutarlo mediante MRI, Rubinius y jRuby.

Sobre el performance, si bien es cierto que Ruby es interpretado, el performance ha mejorado bastante con el tiempo, y si MRI no es suficiente, es posible ejecutarlo con jRuby dentro de una JVM o bien ejecutarlo con Rubinus que es casi como codigo maquina.

Si el objetivo es desarrollo Web, Ruby on Rails es un framework probado y maduro, que te obliga a usar convenciones en donde se toman una serie de deciones tempranas del proyecto, como organizacion del codigo, metodos de trabajo comunes en el equipo, una amplia base de recursos de entramiento y consulta, conociendo la convencion e introduciendo propias cuando el proyecto crece, es relativamente sencillo traer a nueva gente al proyecto en etapas avanzadas.

Malecon de Puerto Vallarta. http://500px.com/mario_chavez

Church. Picture take at Nogueras Colima, Mexico. http://500px.com/mario_chavez

Windows

Para contar con una instalación de Ruby on Rails en Windows, necesitamos descargar el Rails Installer de http://railsinstaller.org/.

Una vez descargado el instalador lo ejecutamos. Al final del mismo nos preguntara si deseamos configurar Git y SSH, nos aseguramos que la casilla este selecciona y presionamos el boton de finish.

Una ventana de MS-DOS se abrirá, como primer dato nos pedirá nuestro nombre, después nos pedirá nuestro correo electrónico, al presionar “Enter” después de ingresarlo, nos mostrara un texto con la información que acabamos de ingresar, las versiones de las librerías y frameworks que se instalaron, así como la información de la llave SSH - ver mas a detalle abajo, porque ocupamos esta llave SSH - que se genero para nosotros.

Como vamos a hacer uso extenso de la consola de MS-DOS y la que nos proporciona Windows deja mucho que desear, vamos a reemplazarla por un programa llamado Console2, el cual podemos descargar de http://sourceforge.net/projects/console/. Simplemente descomprimimos el archivo y copiamos la carpeta Console2 a nuestra carpeta de Aplicaciones en Windows. Seria muy útil ademas crear un acceso directo al ejecutable Console.exe

Linux

Para los usuarios de Linux, es necesario instalar primeramente el paquete de Git desde el administrador de paquetes. La guía se base en Ubuntu, si usas otra distribución solo adapta los comandos.

Abrimos una terminal, y para instalar git ejecutamos - ademas aprovechamos para instalar algunos otros paquetes que vamos a necesitar mas tarde -:

sudo apt-get install git zlib1g zlib1g-dev sqlite3 libsqlite3-dev 

Nos pedirá nuestro password y que confirmemos la instalación. Como siguiente paso instalamos rbenv que nos ayudara a que la instalación de Ruby On Rails sea sencilla.

cd ~ git clone https://github.com/sstephenson/rbenv ~/.rbenv 

Ahora procedemos a configurar rbenv en nuestro ambiente con los siguientes comandos:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc 
echo 'eval "$(rbenv init -)"' >> ~/.bashrc exec #SHELL

A continuación instalamos ruby-build que nos ayudara a descargar e instalar la version de Ruby que vamos a usar.

git clone https://github.com/sstephenson/ruby-build 
cd ruby-build
sudo ./install.sh
cd ~

Ahora si estamos listos para instalar Ruby, esto lo hacemos con los comandos - este paso puede tardar varios minutos -:

rbenv install 1.9.3-p194 
rbenv global 1.9.3-p194

Como paso final instalamos Ruby On Rails y esto lo hacemos de la siguiente forma:

gem install bundler rails sqlite3-ruby execjs therubyracer 
rbenv rehash

En este punto ya debemos de tener una instalación de Ruby On Rails funcional

OSX

En OSX es necesario tener instalas las herramientas de desarrollo de Apple, que en este caso es XCodehttp://itunes.apple.com/us/app/xcode/id448457090

Antes de instalar Ruby On Rails, instalaremos Brew. Brew es una herramienta que nos ayuda a instalar de manera facil librerías adicional que podamos necesitar.

Para instalar Brew abrimos una terminal y ejecutamos:

/usr/bin/ruby -e "$(/usr/bin/curl -fsSL https://raw.github.com/mxcl/homebrew/master/Library/Contributions/install_homebrew.rb)" 

Una vez que Brew termine de instalar, es necesario instalar Git, para lo cual ejecutamos:

brew install git sqlite3 

Ahora procedemos a instalar rbenv que nos ayudara en OSX a contar con una instalación de Ruby On Rails de forma sencilla, ejecutamos:

cd ~ 
git clone https://github.com/sstephenson/rbenv ~/.rbenv
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile exec #SHELL

Después instalamos ruby-build para descargar y compilar la versión de Ruby mas reciente - en este punto OSX nos va a pedir nuestra clave -:

git clone https://github.com/sstephenson/ruby-build 
cd ruby-build
sudo ./install.sh cd ~

Continuamos con nuestra instalación de Ruby de la siguiente forma - este paso puede durar varios minutos -:

rbenv install 1.9.3-p194 
rbenv global 1.9.3-p194

Después de este punto ya podemos proceder a instalar Ruby On Rails, para lo cual ejecutamos:

gem install bundler rails sqlite3-ruby 
rbenv rehash

Y listo, nuestro ambiente ya esta configurado para Ruby On Rails.

Configuración de Git para usuarios Linux y OSX

Este paso no es necesario para los usuarios de Windows, ya que el instalador se encargo de realizarlo.

Hay que abrir una terminal y en ejecutamos, durante la ejecución del 3er comando nos pedirá como parámetro el mismo correo electrónico que usamos con el comando 2, ademas de pedirnos que indiquemos una clave:

git config --global user.name "Mi nombre completo" git config --global user.email "mi correo" 
ssh-keygen -t rsa -C "mi correo"

El editor para trabajar

Para trabajar con Ruby On Rails no hay una IDE o un editor oficial. Entre los desarrolladores de OSX TextMate fue por mucho tiempo el editor de facto, recientemente es muy común que trabajen en VIM.

Para este curso se utilizará Sublime Text 2 http://www.sublimetext.com/2 principalmente porque es multiplataforma.

Este próximo 8 de Diciembre se llevara a cabo el Global Code Retreat Day en diversas ciudades alrededor del mundo, de forma simultánea.

Un Code Retreat es un evento intensivo de un día enfocado a practicar los fundamentos del diseño y desarrollo de software, sin la presión de tener que terminar un entregable al final del día.

La mecánica es simple, se forman parejas para trabajar en un mismo problema durante 45 minutos, en el lenguaje que estos elijan. El problema a trabajar es el "Juego de la Vida" de John Conway.

Al final de los 45 minutos, se elimina el código trabajado, se hace una pequeña retrospectiva de la experiencia, se busca una nueva pareja para trabajar desde cero en el mismo problema, pero en cada iteración de 45 minutos se aplican ciertas restricciones, que hace que el reto sea un poco mas complejo.

Para cada restricción hay una explicación del porque de esta y cuales son los beneficios de aplicación - cuando se pueda - algunas de estas restricciones propuestas.

Para esta ocasión en México se realizaran 4 eventos

  • Wowzer (Parque tecnológico ITESO) en la ciudad de Guadalajara, organizado por la comunidad de RubyGDL
  • HQ of Incaztech en la ciudad de Monterrey, organizado por Elías Matheus
  • Crowd Interactive en la ciudad de Colima, organizado por Crowd Interactive
  • TBD en la ciudad de México, organizado por Agustín Ramos, Alfredo Chavez, Daniel Ramos , Erick Camacho

Descargar podcast en MP3

Ya estamos en el sexto episodio, y en esta ocasion platicamos con Santiago Pastorino (@spastorino), sobre el futuro de Ruby on Rails. Santiago es parte del Core de Ruby on Rails además de ser fundador de WyeWorks.

http://rubyen.es/post/36352076772/sexto-episodio-santiago-pastorino

Videos from Software Craftsmanship Conference 2012 are available on vimeo

http://bit.ly/Tkg2BE

Colorful. Picture taken at Puerto Vallarta, Mexico. http://500px.com/mario_chavez