domingo, 28 de febrero de 2016

The cathedral and the bazaar (Comentario)



Debido a la falta de substancia que tiene la industria del software (es decir que el software no es un producto tangible), pueden florecer varios modelos de negocios diferentes alrededor de ideas opuestas como lo son las licencias, y la mentalidad de Samuel Goldwyn quién alguna vez dijo que "un contrato hablado vale menos que el papel sobre el que se firma". A lo que quiero llegar es que hay una diferencia enorme entre reconocer que el software al igual que las palabras pueden ser algo que se puede repetir infinidad de veces sin tener necesariamente que pertenecer a alguien.

Eric S. Raymond hace un interesante contraste entre el desarrollo de software como una industria coordinada y regulada de manera rigurosa por un líder (la catedral), y el desarrollo de software como una sala de debates dónde todo el mundo quiere aportar un poco de lo suyo (el bazaar). Aunque de buenas a primeras, el bazaar pareciera ser un modelo susceptible a la anarquía, la subversión y el caos, Raymond provee ejemplos de cómo los usuarios pueden organizarse entre sí para hacer un esfuerzo colectivo y mejorar mutuamente sus herramientas alcanzando un beneficio común.


El bazaar puede traer distintos beneficios sobre la catedral ya que la catedral depende de entregas periódicas, mientras que en el bazaar se ven lanzamientos constantes de software mejorado y listo para implementar, donde los usuarios que son, a fin de cuentas, los beneficiados principales usaron sus habilidades para crear herramientas mejores con cada iteración de estas. Este proceso de involucramiento de los usuarios es lo que le da vida al bazaar, un bazaar no es administrado enteramente por una entidad única, se maneja por células individuales, las tiendas y los mercaderes hacen al bazaar.

Ahora, me gustaría la alternativa mexicana llamada "El super y el tianguis".

domingo, 14 de febrero de 2016

Revolution OS (Comentario)



Una de mis frases favoritas es "Open Source no significa bueno" (Open Source != Bueno), con lo que quiero decir que hay que ser críticos a la hora de conseguir nuestras herramientas. Habiendo dicho esto tampoco soy fan de los sistemas operativos basados en Linux, al menos, para lo que yo uso la computadora, Windows sirve perfectamente bien, y corro Ubuntu en una máquina virtual para fines muy específicos (C y Rails). 

Sin embargo, este documental me abrió la puerta para diferentes preguntas filosóficas (o de calibre similar), así que les pido que me aguanten mientras desvarío (o como dice el pueblo "fúmensela conmigo").

De entrada tenemos la revolución de la computación, el momento en el que las computadoras se vuelven relativamente amigables y pueden ser usadas por cualquier hijo de vecina que trabaje en una institución, y por supuesto, con la escasez de personas que tengan el "know how", los precios del software son completamente irrazonables, ya ni siquiera hablamos sobre el hardware. Ahora, el software es el único producto que es intangible, que tiene copias ilimitadas, y que se puede crear sin usar materiales físicos, por lo que es bastante lógico que fuera sujeto a copias ilegales, modificaciones, y distribución ilegal.

Pero, ¿por qué ser tan cínicos en esta descripción? La idea detrás del software libre (aunque la filosofía Open Source me guste más) es que todo el mundo pueda tomar una pieza de software y la modifique a su gusto. Es una receta de cocina, son palabras, son cosas que uno puede repetir como perico todo el día sin usar recursos materiales, y por lo que nadie, no importa qué clase de derechos tenga, puede hacer nada al final del día.

El documental simplemente me mostró lo absurdo que puede ser el esfuerzo que se hace por frenar la distribución y el "homebrew" del software libre. ¿Todo el software debería de ser software libre? No, pero se debe considerar que debido a la naturaleza intangible, inagotable, y simplemente abstracta del software, es absurdo que no existiera una filosofía como la de Richard Stallman al crearse las primeras computadoras de uso comercial.

Aun no alcanzamos a comprender lo que le debemos a Richard Stallman, tecnologías tan importantes para emprendedores como lo son Arduino, Pebble y Android no existirían en la manera que existen hoy de no ser por la filosofía de software libre. Lo que Stallman predica es una igual oportunidad para empresas pequeñas o personas que apenas se iniciaron en el campo de la informática para despegar del suelo sin necesidad de alimentar a los grandes.


Como ejercicio mental me imagino lo que hubiera pasado si el documental se hubiera lanzado en épocas de auge de Apple, donde su tecnología solo se le presta a desarrolladores por un precio de varios dólares al mes, tal vez la tirada en ese caso sería contra otra compañía.

domingo, 31 de enero de 2016

Teach yourself programming in ten years (Comentario)



Debo admitir que hice lo imposible por no sentirme identificado o culpado por el artículo, después de todo, soy ese tipo de personas a las que les gusta saber un poco de todo, por lo que lo más básico suele bastar para saciar mi curiosidad. Sí, soy culpable, en mi biblioteca personal se encuentran joyas como "Android Application Development for Dummies" (me he encargado de desarrollar ese campo más a fondo por mi cuenta, no se preocupen) y "Teach youself C in 21 days".

En mi defensa, busco estos libros como puerta de entrada, en ningún momento pretendí volverme un experto en Android de la noche a la mañana, y todavía tengo problemas entendiendo conceptos que podrían ser básicos en C, pero este material sirve para generar un interés en mí. No es que defienda esta práctica, es terrible si lo que queremos es ser unos expertos, pero creo que es algo de sentido común saber que no bastan 21 días para convertirse en todo un buenazo en uno de los lenguajes de programación más complejos.

Al contrario, entiendo que la práctica hace al maestro y el fracaso es el mejor profesor, por lo que leer unos cuantos capítulos no tiene ninguna comparación con una vida entera de trabajar con diferentes lenguajes de programación. Noto esto cuando paso mucho tiempo sin programar y después no puedo ni escribir un if porque tengo la sintaxis en otros 15 lenguajes diferentes.

Si bien, no son la mejor opción para aprender a programar, o simplemente no son la mejor opción para nada, creo que los libros de aprendizaje intensivo (no sé de qué otra forma llamarlos) sirven para otros fines menos trascendentales, como dar los primeros pasos hacia un nuevo paradigma de programación, o aprender a resolver una tarea con requerimientos específicos.


Eso, o nunca sobra un tope para puertas.

domingo, 24 de enero de 2016

El mundo habla C (After all these years, the world is still powered by C programming) (Comentario)




Uno de mis primeros acercamientos hacia la programación se remonta a mis épocas de preparatoria en el ITESM CEM, donde llevábamos un curso de ingeniería básico trabajando sobre la plataforma Arduino. Para los que no estén informados al respecto, el Arduino es una plataforma open source de programación y sistemas electrónicos embebidos en una pequeña tarjeta programable. El lenguaje que utilizábamos (antes de movernos a Pyserial, la plataforma de Python) era C, y de buenas a primeras me pareció muy útil para lo que se estaba haciendo, pues podíamos manipular directamente el voltaje de cada uno de los puertos de la tarjeta con un simple "HIGH" o un "LOW".

Aun empezada la carrera de Sistemas Computacionales, C siempre me pareció un lenguaje un tanto primitivo por su cercanía al hardware, entre otras manías del lenguaje como plataforma de alto nivel (declarar el iterador de un for como una variable aparte, usar caracteres como números, etc.) Sin embargo, reconozco la omnipresencia que este lenguaje tiene en todos y cada uno de los sistemas computacionales y electrónicos de todos los días, vamos, incluso llego a preguntarme si el tope para puertas está programado en C al igual que todo lo demás.

El artículo "After All These Years, the World is Still Powered by C Programming" nos habla sobre las diferentes ventajas que tiene el lenguaje C sobre el resto de las plataformas, aunque decir "ventajas" me parece inapropiado puesto que C en si mismo ya es una plataforma dominante de la programación de sistemas. El autor celebra la portabilidad del lenguaje, su simpleza y sobre todas las cosas, su eficiencia sobre el resto de las plataformas.

La eficiencia es el producto de esta cercanía al hardware que he mencionado, ya que aunque C se puede usar para tareas de alto nivel (calcular cada cuantas horas alimentar a mi gato, entre otros cálculos simples), su principal uso es para programación a nivel sistema, por lo que no sorprende que se mencionen ejemplos de sistemas que de buenas a primeras parecen ser muy simples como un microondas. Yo, sinceramente nunca reparé en pensar sobre el nivel de sofisticación de la programación de un microondas, en realidad pensé que sería nula, pero comprendiendo la simpleza y la extensión corta de un programa en C, veo cómo entraría algo así en una de las máquinas más simples.

Si se pudiera hacer un símil, diría que C es el inglés de los lenguajes de programación, plaga nuestra vida con pequeñas expresiones (palabras como "boiler", siendo similares al uso cotidiano del microondas), y, para bien o para mal, los programadores o desarrolladores de software deben de conocerlo bien para ser eficientes en su trabajo. La universalidad del idioma inglés puede ponerse al nivel de la portabilidad del lenguaje C, por lo que casi cualquier persona podrá entender si les hablamos en inglés, como casi cualquier plataforma entenderá un programa de C si está dirigido hacia ella por su modularidad.


Tras esta comparación no cabe duda que, si bien no es vital, es bastante recomendable aprender C para poder tener un mejor entendimiento de diferentes sistemas y para poder manejar esta plataforma que se encuentra en cada rincón de nuestras vidas.

-Francisco Geada Rodríguez

Referencias:
Arduino. (s.f.). What is Arduino? Recuperado el 22 de Enero de 2015, de Arduino: https://www.arduino.cc/

Trejo, D. A. (s.f.). After all these years, the world is still powered by C programming. Recuperado el 22 de Enero de 2015, de Toptal: http://www.toptal.com/c/after-all-these-years-the-world-is-still-powered-by-c-programming

martes, 12 de enero de 2016

Francisco Geada

Buenos días, mi nombre es Francisco Geada Rodríguez, soy estudiante de Ingeniería en Sistemas Computacionales en el Instituto Tecnológico y de Estudios Superiores de Monterrey Campus Estado de México. Este blog está dedicado exclusivamente a la materia de Programación Avanzada impartida por el profesor Ariel Ortiz Ramírez.

Sobre mí...

Nací el 8 de diciembre de 1993 en Tampico, Tamaulipas, donde viví los primeros 16 años de mi vida asistiendo al Instituto Cultural Tampico hasta terminar la secundaria. Me mudé al Estado de México en el 2010 donde estudié la preparatoria en el CEM y formé parte del equipo de robótica Buluk. Al terminar comencé a estudiar la carrera de ISC en el mismo campus, y esa historia se sigue escribiendo.

Mis intereses incluyen (pero no se limitan a) la música, los libros, la historia, los videojuegos, la informática, los comics, las películas entre muchas otras cosas dependiendo de mi tiempo libre. Tengo dos gatos que por azar del destino son un gato negro y una gata blanca llamados Mikael y Arya respectivamente.

Me gusta escuchar música en todo momento, tratar de tocar música cuando tengo tiempo, leer antes de dormir, ver documentales (de historia mejor), jugar videojuegos durante horas, aprender nuevos lenguajes de programación, y escribir, aunque eso último todavía no está bien desarrollado.

Hablo español bien, domino el inglés pero me atraganto al hablarlo, y mastico el alemán lo mejor que puedo. Los lenguajes que sí conozco bien son Python, Java, Ruby, C# y C a medias (muy a medias).

Si les interesa saber más sobre mí, me pueden escuchar en Frecuencia Geek, de la emisora del campus Frecuencia CEM de 9 a 10 de la mañana los miércoles.

El curso...

Lo que espero del curso es dominar el lenguaje C y ver un paradigma enfocado a programación de bajo nivel, pues solo he visto programación en alto nivel y me parece que es algo limitada en cuanto a lo que puede hacer a nivel sistema.