miércoles, 30 de enero de 2019

Por qué C aún sigue vivo.

Suelo revisar foros de tecnología y programación muy seguido. Me encanta ver como los diferentes puntos de vista de hackers y programadores generan riñas y acaloradas discusiones. Siempre cada uno defendiendo su trinchera. No suelo comentar en los foros o grupos pero si disfruto leerlos. Una clásica pregunta es: “que lenguaje de programación me recomiendan aprender primero?” Y las mas sangrientas hacen preguntas como “es la tecnología X mejor que la Y?” O por aún si “el lenguaje W es mejor que el lenguaje Z?” Allí empieza la batalla ya que los defensores de cada tecnología o lenguaje “argumentarán” sus ideas, pocos son los foros donde hay debate con buenos argumentos. Y menos donde hacen preguntas correctas. Una ves leí en un famoso sitio web de tecnología que el lenguaje C estaba muerto. Y a raíz de esa publicación no pasó ni un minuto para que hagamos recordar a ese sitio web el valor de C. El origen de C está relacionado con UNIX, un sistema operativo de los primeros años de las computadoras. El lenguaje C precede de un lenguaje llamado B (es por ello su nombre) y se creo para facilitar el desarrollo y uso de UNIX. C comenzó a tener fans y las universidades en Estados Unidos comenzaron a utilizarlo. A raíz de ello, surgieron varias versiones de C por lo que se elaboró un estándar que es el que conocemos hoy. Probablemente hasta ese momento, C seguía los pasos de LISP y los lenguajes de la época. El punto de quiebre a favor de C a diferencia de los demás lenguajes de programación, es mi opinión, comenzó con una publicación escrita por un joven llamado Linus Torvalds quien compartió su proyecto de código abierto llamando LINUX basado en UNIX. En dicho proyecto el lenguaje C tenía una vital participación. A la vez, al otro lado del mundo, un grupo de programadores estaban desarrollando aplicaciones y herramientas de código abierto con ideas que la mayoría de empresas de la época no miraban con buenos ojos. Por esos meses de la publicación de LINUX, ellos buscaban elaborar un KERNEL para hacer funcionar un sistema operativo de código abierto. Así fue cómo surgió de esta unión, hoy llamado GNU/LINUX, una nueva era para la tecnología. Los sistemas operativos basados en GNU/LINUX comenzaron a ser más utilizados por los propios programadores de las comunidades de código abierto y poco a poco empezó a ser usado en los servidores cuando comenzó la era de internet. Su carácter de código Abierto permitió dar control de la tecnología y no depender de empresas que en esa época ofrecían servicios de software para servidores sin dar el código a los usuarios. Para todos ver software gratuito y de código abierto para servidores era la mejor opción de la época(hasta hoy). La comunidad de LINUX crecía, para organizar sus mejoras a nivel de código Linus Torvalds creó un software llamado GIT. Así es, Linus lo volvió hacer. Hoy GIT(hecho en C) es utilizado por muchas empresas y programadores del mundo. Con todo esto, muchas empresas empezaron a ofrecer sus servicios de hosting basándose en GNU/LINUX. Es decir, los sitios web empezaron a ser alojados sobre servidores con LINUX. Hoy, no utilizar sistemas operativos de servidor basados en GNU/LINUX sería un ERROR. Desde sitios como Facebook, Twitter y YouTube, los iPhones, Androids y sistemas modernos tienen algo de LINUX. Hasta ahora, no he mencionado lo que nos ofrece C, he preferido demostrar su utilidad hasta hoy. Pienso que la única forma de que C desaparezca es que surja un nuevo lenguaje que permita reescribir LINUX ofreciendo mejores beneficios que hoy da C.

miércoles, 2 de enero de 2019

Accesibilidad Web

Diciembre 2018
(Este texto forma parte de una charla que di en la ciudad del Cusco para un evento organizado por la Universidad San Ignacio de Loyola).

Dentro del proceso de crear un sitio o aplicación web, existen pequeñas etapas que todo desarrollador o equipo de trabajo tiene en cuenta para construir un “producto final”*. Una mezcla de procesos, teorías y conceptos acelerados por la exigencia de los famosos plazos de entrega han hecho que el mundo tecnológico en general olvide(y peor aún, ignore en algunos casos) lo importante que es crear productos que puedan ser utilizados por todas las personas. Ya es el momento que la accesibilidad sea parte del proceso que pueda tener todo desarrollador o equipo de trabajo. Todo avance de tecnología web debe de ir de la mano con accesibilidad web.

Es increíble la velocidad que tiene la tecnología dentro de sus novedades y cambios. Ni la política, los procesos sociales, la economía y otras materias de estudio avanzan tan rápido. Las leyes son víctimas de la tecnología en el siglo 21. Hoy conocemos casos donde las leyes regulan modelos de negocio ( Uber en Europa, por ejemplo) ante la insistencia de manifestantes o grupos de trabajadores. Sin embargo, antes de regular un modelo de negocio o mejor dicho una nueva economía de mercado debería de preocuparse en que los productos sean accesibles. En un mundo de Alicia*, todos los involucrados dentro del proceso de crear tecnología, deberíamos de construir sitios web accesibles sin necesidad de esperar que el cliente o usuario lo solicite. De aquí a unos años, en nuestro país(Perú) ya existirán leyes que exijan a toda institución o empresa ser accesible pero para ello, antes, deben de aparecer comunidades de desarrolladores y programadores que tengan alguna discapacidad. Una web que utilizó mucho es Amazon Web Service, sin embargo no llega ser accesible. El día que se formen comunidades de hackers y nerds con alguna discapacidad que sean amantes de la tecnología empezara la verdadera accesibilidad. Pienso que es mejor primero la aparición de estas comunidades a una ley que exija.

Para hablar de accesibilidad web es necesario pensar en una pirámide invertida. Donde la base es un vértice llamado Educación y los extremos superiores son Software y Hardware. Empezaré por los extremos. A nivel de software, accesibilidad no es utilizar un lector de pantalla como Jaws o Nvda, accesibilidad de software implica que el código detrás del Programa sea amigable con el lector de pantalla, con los parlantes de la computadora, con la pantalla y los miles de colores que emite. Textos fáciles de entender e iconos que nos ayuden a navegar ya que, puede suceder, que un joven con síndrome de down no entienda el concepto de “escribir una publicación en tiempo real” pero si lo que quiere decir el icono de un lápiz. Por otro lado, el hardware implica que el diseño de los objetos sean adaptables a cualquier persona con discapacidad sin necesidad de otro individuo. Suele suceder en personas que no pueden utilizar sus manos tal como tú y yo. Que necesitan un Ratón(Mouse) que este hecho tanto para ellos como para nosotros. Un objeto que con un botón se adapte a uno y no surja la necesidad de comprar específicamente otro producto adicional. En el vértice inferior está la educación. Como base que sostiene la pirámide. Lamentablemente, es la zona descuidada de la pirámide, siendo ella la más importante. Consideró la educación como parte del concepto de accesibilidad porque acceder a la web no está limitado a su utilidad como usuario sino a la idea de creación y desarrollo. Accesibilidad web es educar en accesibilidad y también educar sobre tecnología a personas que no tienen acceso a ella. Dentro de ese grupo están las personas con discapacidad, así volvemos a la idea inicial de crear comunidades que por ahora no existen. Por ello es importante Capacitadero, siempre he escucha decir que la educación es progreso, sin duda hay mucho camino por recorrer para lograr ese progreso a nivel de tecnología accesible para todos.

*Escribo producto final entre comillas porque considero que el producto final no existe, al menos desde la perspectiva digital, pero esa es una idea que más adelante escribiré.
*Mundo ideal.

miércoles, 19 de septiembre de 2018

cuando el dinero no paga un buen servicio

Hace unos minutos llegue a mi casa, son las 10 y media y esperaba continuar con el código que estoy escribiendo durante esta semana. Es algo genial, me motiva mucho construir "cosas" que ayuden a otros y les facilite la vida (al menos de alguna manera). De los lenguajes de programación que he aprendido me gusta C. Saber que se creo pensando en unix fue lo primero que me motivo a concerlo y luego de investigar...Leer el libro "El Lenguaje de programación C" escrito por Kernighan y Ritchie es algo que suelo hacer constantemente, comiendo yogurt con cereal o mientras estoy descanzando y siempre que estoy en un proyecto en C. Aunque sinceramente, me entere que existian los Punteros mientras aprendia C++...Por otro lado a PHP (mi primer lenguaje) le tengo un cariño especial sobre todo por todas las cosas que puedo hacer y que no son consultas sql. Luego, Javascript y Python aparecierón en mi vida por una necesidad especifica, son amigos pero no tienen la motivación de C o el cariño de PHP. Esta noche iba a continuar con el código PHP pendiende, prendí mi laptop y revise mi correo de la universidad. Siempre he pensado que un grado academico dice poco de la persona, me interesa más los proyectos que realizó o que ha construido a nivel personal. Sin embargo, me fascina la idea de realizar una maestria en Ciencias de la Computación y conocer a personas que comparten lo mismo que yo. Si tu vas a la universidad, pienso que hay cuatro motivos por los cuales debes de enfocarte. Los tres primeros están en el mismo nivel y el cuarto esta un nivel abajo: Amigos, profesores y otras personas, siempre importante a un futuro ya que buscaremos socios, empleados o "contactos". Luego están los recursos virtuales o físicos como la biblioteca, catálogos en linea y esas cosas que son tan geniales que entras todos los dias a buscar y leer. Y por último, en este nivel es el aprendizaje: experiencias y conocimientos que encontramos y están cuando preguntamos a los profesores o a nuestro decano, aunque también en una típica clase(pocas veces me sucedió). En el nivel inferior esta al grado académico que obtenemos.
Si vas pensando en el nivel inferior, sinceramente, pienso que la tendrás difícil al terminar la universidad y ver que en este mundo muchos tienen un grado académico como el tuyo.
Ya que me motiva estudiar una maestría, realice el tramite documentario para obtener mi grado de bachiller (luego de más de 3 años de terminar la universidad). 14 de Mayo realice el pago solicitado e ingrese mi foto personal para generar mi diploma. Recibí un correo indicándome que se valido mi foto y que todo esta correcto, sólo debo de esperar un correo en Agosto para recogerlo (son 3 meses para obtener mi grado) y utilizarlo para aplicar a una maestria. Ya pasaron 4 meses del día que empece el tramite y al hacer mi consulta sobre el hecho de porque no me han escrito para recibir mi grado me respondieron diciéndome (por medio de su "plataforma" de consultas) que no he adjuntado una foto válida.
Es posible que el código que valida la conformidad de la foto este mal? Yo recuerdo que mi foto cumplia con todas las condiciones y me parecio obvio recibir un correo donde me decian que la foto es válida.
Será que la persona que me respondio hoy se confundio?
Será que el dinero no paga un buen servicio?
Pienso que las universidad y todo centro de estudios deben de preocuparse más en las opiniones que tienen sus ex alumnos que en tener más postulantes o alumnos nuevos.
Es una pena, es media noche y no escribí ninguna linea de código en PHP por todo esto. Me voy a dormir.