44 años de BASIC

Un día como hoy (1 de mayo) de 1964, a las 4:00 AM, se ejecuto el primer programa escrito en el lenguaje de programación BASIC, en el Dartmouth College, hasta ese momento todos los lenguajes de alto nivel eran compilados, los más conocidos eran FORTRAN y COBOL, y debido a la naturaleza de las computadoras de aquellos tiempo, los programas escritos en esos lenguajes eran procesados en lotes (batch processing) y los resultados enviados de vuelta a sus autores.

Pero en el Dartmouth College, tuvieron la primera computadora de tiempo compartido que ofrecía interactividad a sus usuarios, General Electric GE-225, si es que se estaba dispuesto a tipear los programas en un teclado similar al de una máquina de escribir y recibir los resultados impresos en papel (los monitores eran muy costosos en esa época), así que una estación de trabajo era algo bastante parecido a lo que era una máquina de telex.

Los autores de aquel prodigioso lenguaje que permitía interactuar por primera vez con una computadora en tiempo real fueron los matemáticos John G. Kemeny y Thomas E. Kurtz, un artículo aparecido en Wired hoy día recuerda el acontecimiento tambien. Aquí una foto de Kurtz en uno de los teletipos donde se podía ejecutar BASIC, directamente desde la computadora principal GE-225:

Kurtz

 
Aquellos que pertenecemos a la vieja guardia y que tuvimos a BASIC como nuestro primer lenguaje de programación, ya que venía incorporado en todas las microcomputadoras populares de finales de los 70 y principios de los 80 como Apple II, Commodore VIC-20, Commodore 64, TRS-80 Color Computer, Zinclair ZX-81 y Zinclair ZX-Spectrum, definitivamente tenemos razones para recordar la fecha y celebrarla pues sin el BASIC, la microcomputación como la conocemos ahora sería impensable.

Aquellos que deseen leer el manual original del BASIC del Dartmouth College, aquí les dejo el enlace para que se descarguen el PDF.

Y si alguien tiene la curiosidad de saber cuál fue el primer programa que se hizo en BASIC, aquí lo incluyo:

10 PRINT 2 + 2
20 END

Así es, el primer programa en BASIC no fue la implementación de un complicado algoritmo, sino un simple programa que calculaba la suma de dos más dos, las grandes ideas muchas veces pueden parecer tontas, pero sólo el tiempo muestra su verdadero valor. La gran idea no fue la sintaxis del lenguaje en sí, sino el nuevo modelo introducido por BASIC de interactuar en tiempo real con la computadora y obtener resultados útiles de forma inmediata.

Gracias por seguir visitando mi blog, y en la medida de que vaya normalizando la migración de los dominios que hospedo, espero poder dedicarle un poco más de tiempo al hobby que más satisfacciones me ha dado.

Asus libera el SDK para el eeePC bajo licencia OpenSource

El fabricante Taiwanes de laptops Asus, ha  liberado el SDK para el eeePC, a la par de una imagen virtual del sistema operativo de la eeePC que puede correr en VMWare o el más alineado con el OpenSource VirtualBox, de esa forma los interesados en desarrollar aplicaciones para el popular laptop eeePC, que aparentemente pronto tendra también una versión desktop, podran hacerlo sin problemas pues tendran acceso a todas las herramientas de software necesarias para la plaforma.

El website con todas las herramientas de desarrollo está en SourceForge, y es una prueba del fuerte apoyo que está dando Asus al OpenSource. Si Asus consigue posicionar su modelo cómo el estándar de facto en el sector de laptops ultra portátiles, pues habra creado una nueva categoría de latops y todo un ecosistema alrededor de ella. Por el momento el SDK que se ofrece sólo soporta C/C++, pero es de lejos una oferta mucho más organica que el actual SDK para el proyecto OLPC, donde al parecer no les interesa mucho el aporte de la comunidad.

Como dijera Erick Raymond, en su popular ensayo, "La catedral y el bazar", al parecer el proyecto OLPC sigue la aproximación de los constructores de catedrales, para ser desarrollador para la plataforma OLPC se necesita hacer muchos compromisos, mientras que Asus y su eeePC, está apostando claramene al desarrollo tipo bazar, que es justamente el paradigma del software libre, cualquiera simplemente descarga el SDK y se pone a desarrollar o hackear el eeePC.

5 tips para evitar la extinsión tecnológica

He encontrado un interesante artículo de Michael Krigsman, en los blogs de ZDNet, en dicho artículo Krigsman da cinco recomendaciones para las empresas que se dedican a las TI, no termine  extintas, son varios los casos de compañías que en su momento dominaron algún sector del mercado de las TI y ahora han desaparico, o han sido adquiridas por otra compañía.

Los consejos ofrecidos por Krigmsman, tienen bastante sentido y creo que son aplicables no sólo a las TI (Tecnologías de la Infortmación), sino también a cualquier negocio. Aquí los consejos:

  1. Reconozca y abrace el cambio, no pelee contra él. La sobrevivencia depende de la capacidad de adaptarse a los cambios, en lugar de remar en contra la corriente de la historia.
  2. Enfóquese en sus clientes con dedicación y intensidad. Un gran servicio al cliente requiere de empatía, experiencia y un gran deseo de servir. Desafortunadamente ser simplemente "bueno" no basta en un mundo de intensa competencia.
  3. Añada valor a sus productos a través de la innovación. Las TI requieren de productos innovadores que satisfagan las necesidades presentes e incluso futuras.
  4. Mejore la comunicación. La comunicación tanto entre su empresa y sus clientes, como entre los diversos departamentos de su empresa, es un componente clave de la permanencia en el negocio de las TI. Línea de comunicación directa mejoran su capacidad de competir.
  5. Pierda la arrogancia. El hecho de tener un producto o servicio exitoso actualmente no debe ser motivo de pensar que su negocio dominará su sector por siempre, nuevas tecnologías y competidores apareceran. Por eso es necesario que éste preparado para iniciar todo otra vez, como si recien estuviera iniciando el negocio.

Definitivamente muy importantes consejos, que vale la pena aplicar, no sólo si uno esta a cargo o es dueño de una empresa, sino incluso en nuestra propia vida profesional.

El algoritmo es secundario, la data es lo importante.

En el blog de Anand Rajaraman, Datawocky, ha aparecido un interesante artículo que argumenta que más importante que el algoritmo es la cantidad de datos sobre los cuales se trabaja. Rajaraman es un profesor de Data Mining en Stanford Univeristy, y con motivo de su curso el tiene que enseñar a resolver problemas no tan triviales, debido a eso es que decidió animar a sus alumnos a participar en el reto Netflix.
El reto Netflix, consiste en usando los datos de medio millon de personas que han votado por más de 18,000 películas, tratar de predecir mejor que lo que hace el algoritmo propietario de Netflix, las películas que más le puedan interesar al usuario en base a sus votos anteriores. El premio para el que lo consiga en un millón de dólares.

Para enfrentar tal reto, Rajaraman creo dos equipos A y B, siendo el equipo A el que desarrolla el algoritmo más sofisticado usando solamente los datos de Netflix, y el equipo B usa un algoritmo más sencillo, pero se le permite agregar datos adicionales, en éste caso la base de datos de películas en IMDB (Internet Movie Data Base).

El resultado obtenido fue sorprendente, los algoritmos sencillos con gran cantidad de datos, resultaron ser mucho más precisos, y aproximarce bastante a los resultados obtenidos con el algoritmo propietario de Netflix.

Rajaraman extrapola que el éxito de Google, no se debe a su algoritmo propietario de cálculo de Page Rank, sino que se debe al hecho de que reconocieron el valor de los enlaces a una página web, considerandolos cómo votos, y al texto que acompaña éstos enlaces para indexar esos votos. Rajaraman opina que un algoritmo la mitad de bueno produciría equivalente resultados si tuviera acceso a la data almacenada por Google. Por otro lado, Rajaraman extiende sus ideas a AdWords, que es una de las principales fuentes de ingreso de Google.

Definitivamente un artículo muy interesante, que expone el valor del Data Mining, donde lo que cuenta más que el algoritmo es la capacidad de poder procesar la mayor cantidad de datos.

Creemos el proyecto One DS Per Child (ODSPC)

Hace unos meses leí en un blog de DreamHost, la propuesta de entregar a cada niño un Nintendo DS (NDS), en lugar de las laptos XO-1 del proyecto OLPC. La idea fue propuesta por Josh Jones, y luego de que he visto cómo se han desarrollado los acontecimientos en la OLPC Foundation y en lo que esta por convertirce las XO-1, me parece una idea bastante lógica.

Las razones expuestas por Josh Jones, me parecen bastante razonables ahora que las XO-1estan a punto de convertirce en laptops comunes y corrientes que corren una versión bastante limitada de Windows. Aquí la traducción de las razones expuestas por Josh en su blog:

  1. Son baratas. Con un precio unitario de $129 en las tiendas, un gobierno que quiera comprar un par de millones de las mismas podría obtener un buen descuento.
  2. Tiene una alta eficiencia energética. Con una sóla carga se puede tener operando al dispositivo por 14 horas incluso si se tiene operando en la pantalla en modo de alto contrate para verlo a plena luz del día. Incluso existe un cargador manual para las Nintendo DS.
  3. Es una computadora, equipada con un dos procesadores ARM, el Nintendo DS puede correr todo tipo de aplicaciones. Desarrollando de esa manera la confianza necesaria en los niños para interactuar con dispositivos electrónicos.
  4. Es compatible con redes Wi-Fi 802.11b/g, lo cuál es incluso mucho mejor que el XO-1, que en su modelo de red mesh, requiere que exista un gateway entre la conexión a Internet y el protocolo mesh de las OLPC, para poder tener acceso a Internet. Por el contrario las NDS ya estan habilitadas para salir a Internet.
  5. Son robustas. Nintendo su fabricante ha estado haciendo juguetes para niños por casi 100 años, y hay casos documentados de que los Game Boy han sobrevivido a campos de batalla.
  6. Su CPU es suficientemente poderoso. Si es posible correr juegos como "Mario Kart" en ella, lógicamente sera posible hacer las tablas de multiplicación igualmente.
  7. Es compatible a futuro. Nintendo garantiza que todo el software desarrollado para sus consolas portátiles sera compatible con los futuros modelos y lo ha cumplido, pues es posible correr los programas del GameBoy Advance y GameBoy Advance SP en los NDS.
  8. A los niños les encanta. Si quiere desarrollar un plan de educar jugando, y de forma colaborativa, los NDS son la respuesta a ello.
  9. Es un estándar mundial. Se han vendido más de 53 millones de unidades a la fecha, y la plataforma tiene una comunidad de miles de desarrolladores,.
  10. Ya se esta usando en educación actualmente. Miles de usuarios en todo el mundo usan su NDS actualmente para aprender un nuevo idioma, desarrollar habilidades lógicas, practicar cocina, aprender matemáticas, leer libros, investigar y hasta navegar la web.
  11. Durante la permanencia en el mercado de las consolas móviles, el producto interno bruto de Japón ha crecido más de 500 mil millones de dólares, lo cuál es claramente atribuible a las habilidades que ha ayudado a desarrollar este dispositivo. [Esto último es un sarcasmo de Josh, para aquellos que no han entendido la sutileza, ya que muchos promotores del OLPC hacen afirmaciones de este tipo para promover la adopción de las XO-1].

A excepción de la onceava razón, todas las demas son perectamente lógicas y válidas. Si se hubiera optado por desarrollar sobre un hardware existente en lugar de partir desde cero y desarrollarlo todo (hardware+software), lo cuál demuestra la poca lucides del equipo de ingenieros detras del proyecto OLPC. Probablemente el proyecto hubiera sido exitoso.

Todo lo que hay que hacer es comprar a Nintendo los royalties para desarrollar para su plataforma DS, poner un micro Linux en las mismas (lo cual es perfectamente posible ya que hay versiones del kernel para ARM), y permitir que todas las aplicaciones corran através de la red Wi-Fi.

Pensemoslo bien, ¿cómo saber si el proyecto OLPC sera eficaz o no?. La única forma de saberlo es realizando evaluaciones a los niños y ver si sus habilidades sobre un determinado tema se han visto mejoradas con respecto a otros niños que no disponen del gadget. Con la actual idea de implantación de los equipos, esto es imposible, porque estará en manos de cada profesor el implantar las aplicaciones en las laptops y administrar las redes, además de medir la eficacia de su propio trabajo.

Por el contrario en una solución NDS personalizada, se envía a todos los colegios tantos NDS cómo profesores y alumnos haya, acompañados de routers Wi-Fi convencionales (menos de $60 c/u al actual precio de mercado) y se dota a los colegios de líneas ADSL.

De esta forma todas las aplicaciones son accesadas remotamente, y las evaluaciones se pueden hacer a nivel nacional, usando el equipo. De esa forma se sabra si la implantación ha sido exitosa, si el profesor esta haciendo su trabajo, o si los niños están jugando en lugar de aprender nuevos habilidades que les permitan prosperar en este mundo altamante cambiante y dominado por el rápido cambio de las tecnologías.

Nintendo DS