Educación y un mejor futuro.

Hace mucho que quería escribir un post sobre el tema de la incumplida promesa sobre como la educación nos abre la puerta de un futuro mejor, incluso en los países desarrollados esa promesa ha perdido su valor. Por ejemplo hace un par de semanas en el programa Now de la cadena pública americana PBS, se discutía sobre como los préstamos estudiantiles han quebrado a millones de jovenes americanos, que ahora deben afrontar el pago de los mismos sin contar con un trabajo, el hilo conductor de la historia es el de una jóven madre soltera de Baltimore, que ante una deuda de $70,000 contraída para financiar su educación debe de elegir entre pagar la renta o el prestamos estudiantil para que su crédito no se vea afectado.

Pero lo anterior es sólo una parte  de la historia, en la segunda mitad del siglo XX, la cantidad de universidades y centros de enseñanza superior, en todo el planeta ha crecido a un ritmo jamas visto. Incluso en países en vías de desarrollo, la cantidad de profesionales per cápita ha aumentado consistentemente en los últimos 50 años. Al día de hoy, existen más doctores, enfermeras, maestros, ingenieros por cada 10,000 habitantes, que los que han existido jamas, sin embargo ni hay suficientes oportunidades para todos ellos, y las pocas oportunidades que existen ofrecen un ingreso inferior al promedio de la generación anterior.

Analicemos el caso de peruano, hasta los años sesenta, el número de universidades se había mantenido relativamente estable en los últimos 150 años, aunque la población se había triplicado en el mismo intervalo de tiempo. Como resultado de eso, la casi totalidad de los que terminaban exitosamente sus estudios superiores tenian garantizado un empleo de ingresos bastante aceptables. Esto es lo que motivó la creencia generalizada que una carrera universitaria era sinónimo de una vida cómoda y segura económicamente hablando. Sin embargo esa "percepción" generalizada, sirvio para que desde mediados de los sesenta y hasta nuestros días, una creciente demanda por estudios superiores, llevara a una frenética carrera por proveer educación superior a todo aquel que lo deseara. La oferta de dichas carreras universitarias, en el Perú, estaba tanto en manos del estado como de particulares, el estado ha creado una universidad nacional en todo departemento y casi un instituto pedagógico en cada provincia del país. Los particulares han empequeñecido al estado y la oferta generada por ellos es mucho mayor.

Como resultado de esta sobreproducción de profesionales, no hay una sóla actividad profesional que no se haya visto saturada en los últimos años, y como resultado los ingresos promedio en todas estas profesiones se han visto afectados como resultado de la ley de la oferta y la demanda. Un exceso de profesionales compitiendo por una limitada cantidad de puestos de trabajo hace que los salarios se muevan hacia abajo. Sin embargo esta verdad inconveniente no es discutida cuando, uno de los sectores más dinámicos de la economía es el sector educativo.

El cuadro anterior aplica a toda profesión universitaria, sin embargo quisiera hablar ahora, sobre un invento perverso de las universidades peruanas llamado "Ingeniería de Sistemas", que se ha convertido en el Perú en una especie de pandemia. No existe universidad privada o pública en el Perú que no tenga al menos una facultad de "Ingeniería de Sistemas", es más hay universidades que tienen hasta dos (lo triste es que esto no es broma, aunque algunos les parezca un sarcasmo). Y es que desde el momento en que cualquiera haciendo click sobre un mouse puede administrar una máquina con Windows, la mayoría piensa que es un "experto" en "computación". De esa forma las facultades de "Ingeniería de Sistemas", se ha convertido en recicladores de profesionales de muy diversas especialidades, desde ingeniería electrónica hasta ingeniería agronoma.

Como resultado de la proliferación de esta carrera y el hecho de que se ofrezca tanto en universidades como en instituros técnicos superiores, ha hecho que la línea que divide a los ingenieros de los técnicos en "computer science" en el Perú se haya vuelto muy difusa y hasta podríamos decir inexistente. Basta con que veamos los resultados, profesionales que no hablan/escriben inglés, que sólo conocen un sistema operativo (windows) y no son capaces de adaptarce a un mercado tan dinámico como las TICs. Así es común que profesionales que terminaron una carrera de "Ingeniería de Sistemas", hace apenas 3 o 4 años, si es que no están enseñando, han abandonado el campo y ahora se dedican a otras labores.

La cereza sobre el pastel es que ahora, los que han terminado en institutos superiores técnicos, tras estudiar un par de años de "actualización" en las universidades particulares, ahora pueden ser "Ingenieros". Esto es definitivamente algo que las universidades están facultadas a realizar, es perfectamente legal y en lo personal no me opongo a esto. Pero la consecuencia directa es que poner más profesionales a competir, simplemente termina empobreciendo a todos.

Lo que encuentro irracional es como es posible que siendo esto algo sabido y comentado por bastante tiempo, aún haya personas invirtiendo su dinero en obtener un título profesional, que al final no le garantizará un ingreso aceptable, en el mejor de los casos.

La solución al problema obviamente es la regulación, es decir no permitir que el mercado se sature de profesionales mal preparados, formados por universidades que les interesa más su margen de ganancia, algo por lo cuál no las debemos culpar, pues el objetivo de una universidad privada es justamente ser rentable. Pero dado que esto es un problema global, pasa lo mismo en China, India, Europa o USA. Cerrar temporalmente todas las universidades peruanas y formar una comision evaluadora externa de universidades extrangeras de renombre, que certifique a las universidades peruanas, sólo creará extensiones de las universidades extrangeras en el Perú.

No creo que exista una solución única, ni sencilla al problema de la educación superior, pero lo que si creo es que debemos ser claros con todos aquellos que deciden seguir una carrera universitaria en general y en el caso de "Ingeniería de Sistemas" en particular. En nuestos días, el terminar la carrera universitaria, no es una garantía de conseguir un trabajo bien remunerado en el futuro. Así que si se decide seguir por ese incierto camino, es mejor tener una vocación muy sólida, que permita estar suficiente tiempo en el mercado laboral, para poder encontrar nuestro camino, a pesar de todos los problemas que podamos encontrar.

¡No al SQL!

Al parecer ese es el grito de guerra de un conjunto de proyectos Open Source que desean liberarce de la presencia casi ineludible de las bases de datos relacionales como soporte de almacenamiento de datos en los proyectos web 2.0. Al menos ese fue el espiritu de la reunion que tuvo la comunidad NoSQL hace poco menos de un mes en San Francisco.

En el evento que ha pasado casi desapercibido por los principales medios TIC, hasta hace poco cuando ComputerWorld publicó un artículo sobre la comunidad NoSQL, se presentaron los representantes de 10 proyectos Open Source que nos ofrecen escalabilidad y confiabilidad, a una facción del costo de las alternativas DBMS, como pueden ser MySQL, PostgreSQL u Oracle. Como punto de comparación hay que mencionar que uno de estos proyectos NoSQL llamado Cassandra, ofrece la capacidad de poder escribir hasta 50GB de datos en tan sólo 0.12 milisegundos, esto es 2500 veces más rápido que la perfomance ofrecida por MySQL (la DB relacional más rápida).

El romper con el pasado no es fácil, dejar atras viejos paradigmas que han demostrado sus limitaciones en la era del Petabyte en la cual nos encontramos, será una decisión difícil para los gerentes de los departamentos TIC, mientras no exista una empresa que respalde la nueva tecnología, o inclusive un estándar único para los proyectos de almacenamientos de datos de alta disponiblidiad clave-valor. Hay que tener en cuenta que ninguno de estos proyectos NoSQL se llama a sí mismos "base de datos", sino sistemas de "almacenamiento valor-clave" distribuido.

Todos estos proyectos NoSQL comparten las siguientes características:

  • Los datos son automáticamente replicados en múltiples servidores.
  • La falla de algún servidor es manejada de forma transparente y sin interrupción del servicio.
  • Todos los nodos que constituyen el sistema son independientes y no existe un único punto de falla.
  • El sistema maneja internamenta la consistencia de los datos.
  • La escalabilidad es prácticamente infita.
  • Utilizan como bloques de construcción PCs baratos con grandes discos duros.
  • Son proyectos Open Source.

Parecería un sueño, pero es cierto. Son proyetos Open Source que ofrecen hacer por una fracción del costo, aquello que Oracle cobraría millones de dólares por implementar, configurar y afinar a nuestras necesidades de alta disponibilidad y escalabilidad.

Aquí la lista de los proyectos que fueron presentados en la conferencia de la comunidad NoSQL, los videos de las presentaciones y las presentaciones en formato PDF donde ha sido posible obtenerlos.

Proyecto
Expositor
Empresa Presentación
Videos
 Introducción a la Reunión

 Todd Lipcon Cloudera  PDF
 Voldemort  Jay Kreps LinkedIn  PDF
 Video1,
 Cassandra  Avinash Lakshman Facebook  PDF  Video
 Dynomite  Cliff Moon Powerset  PDF  Video
 HBase  Ryan Rawson StumbleUpon  PDF  Video
 Hypertable  Doug Judd Zvents  PDF  Video1,
Video2
 CouchDB  Chris Anderson couch.io  PDF  Video1,
Video2
 VPork  Jon Travis Springsource  PDF  Video
 MongoDb  Dwight Merriman 10gen    Video
 Google BigTable  Jonas S Karlsson  Google    Video

 
Es bastante fácil de entender por qué en una web donde el contenido multimedia se multiplica a una velocidad jamas vista antes, el seguir almacenando datos en bases de datos relacionales, es una forma ineficiente y costosa de hacerlo, es por ello que los proyectos NoSQL son definitivamente la forma como deberíamos manejar la información en el futuro. Estos proyectos son ideales, donde la estructura de datos es simple, pero se necesitan manejar grandes volúmenes de datos y es importante el tiempo de respuesta del sistema.

Luego de haber visto los videos de las conferencias, estoy convencido de que el futuro del almacenamiento en grandes volúmenes, esta en los sistemas NoSQL. Así que si alguien está buscando donde estará la siguiente revolución en la industria TIC, este es definitivamente un campo al cuál prestarle mucha atención.

Extraños comerciales de IE8 en Hulu

Aquellos que usamos Hulu hemos comenzado a darnos cuenta que en adición a Bing, Microsoft está comenzando a lanzar comerciales de Internet Explorer 8, su nuevo browser (navegador). Los anuncios son protagonizados por el actor Dean Cain, conocido por la serie de TV Lois & Clark, donde encarna a Superman. La trama de los anuncios (4 hasta ahora), es la burla de los clásicos comerciales donde conocidas figuras salen promoviendo algún producto o servicio, para ello la agencia publicitaria que ideo los anuncios (Bradley and Montgomery) no se le ocurrió mejor idea que inventar nuevas enfermedades con nombres tan descabellados como S.H.Y.N.E.S.S. (sin los puntos sería timidez, pero se le vende como acrónimo de "Sharing Heavily Yet Not Enough Sharing Still", "Comparte bastene pero aún no comparte lo suficiente"), para las cuales el remedio ideal es Internet Explorer 8.

En lo personal los anuncios me parecen tontos y de muy mal gusto (gracias a Dios no ha salido en TV de señal abierta), especialmente el que toca el tema de O.M.G.I.G.P. ("Oh My God I’m Gonna Puke"), en el cual una chica vomita luego de que ve el historial de las páginas visitadas por su pareja. Aunque admito que mi opinion personal puede ser debida a que estoy irremediablemente viejo y no puedo apreciar cierta "juvenil creatividad" de la que se vanagloria Bradley and Montgomery. Aquí les dejo los comerciales para que los vean y pudan formarce su propio juicio.
 

 

 

 

 

Twitter amenaza pública.

Jeff GoldblumOtra vez el problema de las historias falsas que se propagan rápidamente a través de Twitter ha hecho su aparición, según ha reportado el blog Technologizer, al parecer alguien, el día de ayer (25 de junio de 2009) decidió hacer circular la noticia de que el actor Jeff Goldblum, quien es recordado por películas como "La Mosca",  "Jurasic Park" o "Independence Day" había muerto en Nueva Zelanda. Dado el particular momento que se vivía por el fallecimiento ese mismo día de Michael Jackson y Farrah Fawcett, algunos twitteros dieron la noticia por verdaera y comenzaron a retwittearla, aunque otros se mostraron más cautelosos.

Lo cierto era que la noticia había sido fabricada usando una herramienta para crear noticias falsas sobre famosos que se llama "fake A wish.com". Aunque Twitter es un buen lugar para saber lo que sucede, una de las razones por las cuales esto pasa es porque nadie verifica la veracidad de la información, es por eso recomendable que antes de dar por cierto una noticia recibida a través de Twitter, revisar sitios como CNN o NYTimes, si los medios tradicionales no recogen la novedad propagada por Twitter lo más seguro es que sea falsa.

Esta no es la primera vez que este tipo de noticias falsas son esparcidas rápidamente a través de Twitter, en este blog hace poco más de un mes en un post titulado "Redes sociales o rebaño de ovejas", comentaba lo mismo cuando la supuesta muerta de Patrick Swayze, fue la "novedad" en Twitter. Sin embargo hoy se me ocurre darle una dimensión extra, el potencial peligro para la seguridad pública. Permitanme describirles el escenario.

Suponga que un grupo terrorista crea miles de cuentas en Twitter, y usando herramientas de spam consiguen unos cuantos cientos de seguidores por cada cuenta, esto no un escenario imposible, es más dichas redes de twitteros fantasmas existen. Supongamos que logran hackear exitosamente la página web de un medio masivo, digamos NYTimes, CNN, FoxNews, MSNBC, etc.; ahora en un momento de máximo tráfico, cuando las personas estan saliendo a su trabajo o volviendo del mismo, lanzan una campaña masiva enviando retweets de una noticia falsa inyectada en uno o más websites y esta coge rebote. Dado que es tan alta la penetración de smartphones en cuanto la noticia del "ataque bacteriológico" en una estación de metro se comience a esparcir, el pánico hara el resto, fotos de gente corriendo fuera de las estaciones llegaran a twitter y se multiplicaran con retweets, los medios cubriran la noticia del pánico y poco a poco el caos se propagará.

El escenario anteriormente descrito sería posible, debido a que las personas tienden a actuar de manera irreflexiva cuando se sienten amenazadas, aquí la palabra clave es "sentirse", el ataque no tiene por que ser real, ni tampoco tiene que ser lanzado desde el país al cual va dirigido. La única condición para que este tipo de ataques funcione es que debe ser una noticia creíble y debe ser propagada masivamente cuando el acceso a otras fuentes para contrastar dicha información sea difícil.

El escenario anterior no es nuevo, ya en el Perú durante los recientes eventos de Bagua se ha vivido. Recordemos que las noticias del "genocidio" contra los nativos con "cientos de muertos" reportado desde las radios locales generaron un efecto multiplicador en el caos de un evento que debió haber sido focalizado, el desalojo de manifestantes de una carretera.

Claro, que este tipo de ataques sirven sólo como distractores. Tarde o temprano la verdad emerge y la calma llega, pero durante el pánico, todas las medidas de seguridad quedan desbordadas y es el momento ideal para montar un ataque real.

En lo personal, este escenario me parece posible. Es más estas noticias falsas son sencillamente una advertencia de que esta forma de ataque es posible y se deben tomar medidas para evitarlo. Creo que Twitter haría bien al incluir algún sistema de ponderación, de tal forma que noticias publicadas por twittteros con baja "reputación" no alcancen una rápida propagación.

Google nos propone hacer la web más rápida

Google ha creado un website dedicado a promover la mejora del rendimiento de la web, el site ubicado en esta URL http://code.google.com/speed/, nos presenta información diversa sobre como de una manera comunitaria, los webmaster podemos hacer la web más rápida. Google no solo propone la adopción de nuevos estándares, pues los actuales fueron desarrollados en una época en que la web aún estaba en su infancia, sino que además recomienda algunas prácticas de programación que permiten hacer las aplicaciones web más rápidas.

De esas mejores prácticas recomendadas por Google, me he permitido traducir/resumir estos tips para hacer las aplicaciones desarrolladas con PHP, lenguaje que uso principalmente para desarrollar mis proyectos web, mucho más eficientes en el uso de los recursos del webserver y como consecuencia más rápidas. El artículo original se llama "PHP performance tips", y ha sido escrito por Eric Higgins uno de los webmasters de Google.

Aquí las recomendadiones:

No copiar variables, si no es necesario.

Algunas veces los novatos en su afan de hacer el código más legible copian variables predefinidas para tener nombres más cortos, esto es malo pues necesitaremos el doble de memoria. Por ejemplo:

MAL: $descripcion = $_POST[‘descripcion’]; echo $descripcion;

BIEN: echo $_POST[‘descripcion’];

Usar comillas simples para las cadenas de texto.

Los interpretes PHP permiten mostrar cadenas de texto con comillas simples o dobles, pero tienen un significado distinto. Las comillas dobles le indican al interprete que revise el contenido y reemplace el valor de las variables, así que si una cadena no contiene ninguna variable es mejor usar comillas simples. Una buena practica es usar concatenación en lugar de comillas dobles. Por ejemplo:

MAL: $output = "Esta es una cadena de texto plano";

BIEN: $output = ‘Esta es una cadena de texto plano‘;

MAL: $type = "mixta"; $output = "Esta es una cadena $type";

BIEN: $type = ‘mixta’; $output = ‘Esta es una cadena ‘ . $type;

Usar echo en lugar de print.

Usar la función echo en lugar de print ofrece más confiabilidad al código y en el siguiente código de ejemplo una mayor performance:

MAL: <?php print($myVariable); ?>

BIEN: <?php echo $myVariable; ?>

No utilizar concatenación dentro de echo.

Muchos programadores novatos no estan concientes de que se puede pasar varias variables a echo separandolas por comas, en lugar de concatenarlas. Usar el punto para concatenar cadenas en el ejemplo a continuación resulta en un pobre prerformance, porque el intérprete PHP debe primero concatenar todas las variables juntas y entonces imprimir el resultado, sin embargo en el segundo ejemplo, el intérprete las imprime todas en el orden dado.

MAL: echo ‘Hola, mi nombre es ‘ . $firstName . $lastName . ‘ y yo vivo en ‘ . $city;

BIEN: echo ‘Hola, mi nombre es ‘ , $firstName , $lastName , ‘ y yo vivo en ‘ , $city;

Utilizar switch/case en lugar del if/else.

Utilice la sentencia switch/case en lugar de la sentencia if/else para una comprobación que involucre una sola variable, esto resultará en una mejor performance y hara el código más fácil de mantener.

BAD: if($_POST[‘action’] == ‘add’) { addUser(); } elseif ($_POST[‘action’] == ‘delete’) { deleteUser(); } elseif ($_POST[‘action’] == ‘edit’) { editUser(); } else { defaultAction(); }

GOOD: switch($_POST[‘action’]) { case ‘add’: addUser(); break; case ‘delete’: deleteUser(); break; case ‘edit’: editUser(); break; default: defaultAction(); break; }