Mar 21, 2008

Grano por Grano

Durante la secundaria aprendí a programar en Visual Basic 6.0 y ese fue mi único contacto con los lenguajes de programación hasta la preparatoria en que conocí Java. En ese entonces me recomendaron leer un libro de Java y para programar me dijeron que utilizara Notepad y que con eso podría hacer lo que yo quisiera. Sobra mencionar que mi primera incursión a la programación en Java no fue muy buena.

Algunos años después entré a la universidad y comencé a estudiar Java más a profundidad, en la universidad usábamos un IDE llamado JCreator por la única razón de que era gratis, a pesar de que no era más que Notepad con syntax highlighting.

Durante los primeros semestres estuve buscando algún IDE poderoso que me permitiera las cosas a las que me había acostumbrado en Visual Studio (principalmente autocompletar), que fuera gratuito y que corriera en mi computadora y un día al entrar al site de Sun vi que Java venía en un paquete con NetBeans. Algún día había oído que NetBeans ocupaba muchísima memoria, que era extremadamente lento, pero que si tenías una computadora que pudiera correrlo era el mejor IDE, así que decidí darle una probada.

En ese entonces no sabía mucho de programación y me conformaba con que pudiera utilizar un debugger y que pudiera autocompletar, y yo que estaba acostumbrado al autocompletar de Visual Studio que únicamente te decía el nombre de la función me enamoré del autocompletar de NetBeans que se comunicaba con el API.

En los próximos años aprendí varias cosas en la universidad: que es necesario preocuparse por el desempeño, que además del desarrollo Windows hay desarrollo Web o que es necesario realizar pruebas. Por cada cosa nueva que aprendía me daba cuenta de que NetBeans ya tenía algo para ayudarme, por ejemplo, para evaluar la eficiencia (que es de las cosas que más me interesan para los concursos de programación) puedo utilizar el profiler, que me da información útil sobre cuáles de mis métodos se están tardando.

En algún grupo de conferencias Alejandro Martínez dijo que las personas tienen una relación muy peculiar con las computadoras, porque a pesar de que son sólo un objeto se vuelve una relación muy sentimental. Me parece que la manera en que fui aprendiendo cosas nuevas con NetBeans ha hecho que yo tenga una relación muy peculiar con este IDE, por lo que cada lanzamiento es un evento que merece celebración.

Y con esto llegamos al punto de todo el post, que es el nuevo lanzamiento del beta de NetBeans 6.1, que tiene varias mejoras, principalmente en el departamento de velocidad (que es la queja más común que escucho hasta el momento de la versión anterior). Por ejemplo, en mi computadora, la nueva versión se tarda 4.72 segundos en entrar mientras que la versión anterior se tarda 15.39 segundos, por lo que tenemos empíricamente una mejora de 70% en el tiempo de inicio (aunque esto, por supuesto, que cambia de experimento a experimento).

Otra cosa nueva que es muy interesante es la habilidad de manejar un servidor MySQL desde NetBeans 6.1, ya que de esta manera te puedes ahorrar el estar utilizando dos herramientas diferentes para administrar.

Otra cosa muy útil que estoy seguro que vamos a empezar a utilizar en el trabajo es el concepto de librerías compartidas, que son una manera de que varias personas que están trabajando sobre un mismo proyecto compartan todas las librerías y no tengan que tener una copia local. Esto es una bendición porque nos ha sucedido un par de veces que por utilizar versiones diferentes del conector de MySQL el código funciona en una máquina pero no funciona en la otra.

Sólo he encontrado un problema al utilizar NetBeans 6.1 hasta este momento (y estoy seguro de que va a estar corregido cuando el día de lanzamiento llegue en algunos meses): al crear un action listener para algún botón el código autogenerado ignora la indentación y la pone hasta la izquierda.

Fuera de ese error también hay un par de cosas que me gustaría que agregaran en las próximas versiones: la primera es soporte para Jython (una implementación de Python para Java) de la misma manera que están agregando soporte para JRuby o para Javascript. Python es un lenguaje funcional y dinámico que tiene construcciones poderosísimas como: [i for i in range(1, 100)] para construir una lista con todos los elementos del 1 al 99 y me fascinaría combinar este poder con Java utilizando NetBeans. La segunda es soporte para Android, la implementación de Java para los celulares de Google, aunque no estoy seguro cómo esté la política ahí.

Con el reciente lanzamiento de KDE4 nos hemos dado cuenta de que cambios muy grandes de paradigma (como el cambio de NetBeans 5.5 a NetBeans 6.0) pueden ser complicados, sin embargo gracias a excelente programación, buen diseño y muchísimo trabajo, NetBeans 6.0 se convirtió en el mejor IDE y la versión 6.1 busca construir sobre eso para hacerlo todavía mejor.

Mar 17, 2008

I'm sorry...

Ohh, este video es tan cierto...


http://view.break.com/390565 - Watch more free videos

Mar 14, 2008

Halo, Gubai

Hoy no tuve clase a las cuatro de la tarde, lo que significa que tenía que esperar en el Tecnológico desde que regresé de la comida hasta las siete de la noche para mi siguiente clase.

Para pasar el tiempo decidimos unos amigos y yo (de la misma manera que lo hacemos todas las semanas) jugar un rato de Halo en las computadoras de la escuela. Por ahí de las cinco de la tarde, con el salón totalmente vacío (porque es el último día antes de semana santa a las cinco de la tarde) llegó una persona de servicios computacionales para avisarnos que nuestras cuentas van a ser suspendidas un día porque estábamos jugando.

Al preguntar por qué no se permite jugar nos dijeron que era porque afecta la red y que pronto iba a llegar otra persona y que ella sí podría resolver nuestras dudas. Esta persona llegó unos diez minutos después y al preguntarle nos dio una razón totalmente distinta: que así está estipulado en un reglamento que lleva en pie "al menos cuatro años" (porque esta persona no sabía cuándo se creó el reglamento y sólo sabía que "tiene al menos cuatro años, que es desde que yo entré a trabajar aquí").

Como la segunda es un poco más complicada comencemos a analizar la primera razón. Primero que nada podemos consultar el site de Microsoft para averiguar que Halo ocupa una conexión de 56kbps para jugar en red.

Si tomamos en cuenta que la conexión por red más lenta tiene una velocidad de 10Mbps podemos calcular que tomaría 178 equipos (10,000,000/56,000 = 178.571) corriendo todo el tiempo Halo para saturar la red como nos dijeron. Como los salones tienen cuando mucho 40 equipos podemos ver que estamos muy por debajo del límite. Al argumentar esto nos dijeron que lo que sucede es que varios salones están conectados al mismo switch, sin hacer caso a que eso es una pésima práctica de cableado, vamos a tomar en cuenta que así fuera. El switch más grande que pude encontrar en internet tiene 192 puertos, lo que implicaría que prácticamente todos los salones de la biblioteca tendrían que estar conectados y utilizando la conexión al mismo tiempo para saturarla (y eso tomando en cuenta que es el la conexión más lenta, ni hablemos de Fast Ethernet o Gigabit Ethernet).

Por supuesto que esto es hablando de tráfico local, que es como estábamos jugando, si estuviéramos jugando por internet sería otra cosa porque las conexiones que tenemos a internet son más lentas y están terriblemente mal administradas (de acuerdo al profesor de redes, que algo ha de saber de administración de redes).

Pero bueno, una vez que quitamos ese punto de en medio queda el otro: el reglamento. Este último punto es indiscutible, tiene razón, está en el reglamento y por lo tanto hay que atenerse a las consecuencias. Como nos sugirieron que leyéramos el reglamento lo hice y me encontré con varias reglas que me gustaron mucho, por ejemplo:
[Esta prohibido] utilizar los equipos como medio de comunicación interactiva. En sala de alumnos, se permitirán [Sic.] después de las 22:00 hrs.
Fuera de que está mal redactada, me gusta mucho la manera en que prohiben utilizar las computadoras como "medio de comunicación interactiva" porque eso queda tan abierto que podría tomar en cuenta que utilizar el browser está prohibido.

Otra regla que es dudosa en el mejor de los casos es:
[Esta prohibido] utilizar el equipo computacional para desarrollar programas o proyectos ajenos al interés académico del instituto.
Esto significa que todas las personas que están utilizando el equipo académico actualmente para resolver problemas de ACM (y que no lleven la clase de programación) están rompiendo las reglas o si se me ocurriera hacer los cursos de prepa en las computadoras de la escuela me tienen que suspender mi cuenta.

Veamos una última gema antes de pasar a otro tema:
[Esta prohibido] copiar y/o alterar software
Esto significa que absolutamente todos los de sistemas computacionales (ISC, ITC, LSCA, LATI), electrónicos y todos los que llevan compu para ingeniería, si quieren hacer sus tareas tienen que hacerlo fuera de las aulas académicas, y ni hablar de alguien que quisiera participar en un proyecto open source.

Estas reglas son importantes por dos razones, la primera es que si a nosotros nos cancelaron la cuenta por jugar, deberían hacer cumplir todas las reglas, empezando por el mismo departamento de informática (en donde he visto gente en Messenger chateando durante las horas de trabajo) y la segunda es porque cuando le sugerí a la encargada de CASTI que si el reglamento tenía cuatro años quizás ya estaba obsoleto se enojó y me dijo que no podía ser porque lo revisaban cada semestre. Me imagino que en las juntas de revisión se toman un café, se saludan, platican de sus vacaciones y salen contentos, una media hora después, por haber recibido un cheque por perder el tiempo (al parecer, igual que cada semestre).

Por último, en la entrada del Tecnológico hay un letrero que dice: "Respetar, no prohibir". Se supone que la cultura del instituto es que seguimos las reglas porque estamos convencidos de ellas y no nada más por imposición divina, pero al parecer en el Tecnológico de Monterrey, lo que decimos y lo que hacemos son cosas totalmente diferentes.

Mar 10, 2008

Tron-ado

A pesar de que soy un geek, jamás había visto Tron completa, pero este miércoles un profesor nos platicó algo interesante sobre la película (que el master control program es un programa multi-threading y atiende a todos los usuarios girando como loco, pero gira tan rápido que no importa de donde lo veas, siempre ves como que te está atendiendo a ti) y decidí que sería bueno verla.

La película trata sobre una compañía que se dedica a producir videojuegos. En esta compañía trabajan Flynn, Alex y Lora en diferentes proyectos, hasta que un día el jefe malvado roba los proyectos de Flynn, se vuelve rico y lo despide.

Algunos años pasan, y Flynn decide vengarse por lo que cita a Alex y Lora en un puesto de maquinitas y les pide ayuda para infiltrarse en la compañía.

Una vez que llegan a la compañía se dan cuenta de que ni Alex ni Lora tienen acceso por lo que Flynn saca una calculadora de su bolsillo, la pega en el control de una puerta y en seguida se abre, lo que me hace preguntarme para qué invitó a Alex y Lora en primer lugar.

Después de eso Flynn entra en la terminal de Lora y crea un acceso nivel 6, lo que preocupa al Master Control Program (MCP, el programa malvado que se encarga de controlar la computadora). Para defenderse el MCP digitaliza a Alex y lo mete en la computadora, donde tiene que participar en los juegos.

Durante un juego de motos (juego que ahora se conoce como Tron) Flynn huye con un programa llamado Tron que lucha por los usuarios. Después huyen durante bastante tiempo de las fuerzas del MCP hsata que logran llegar a la torre de IO donde se comunican con Alex para que les diga cómo destruir el MCP.

El controlador de la torre de IO no quería dejar pasar a Tron, así que este le dice que si logran destruir al MCP después los procesos van a hacer fila para poderse comunicar con sus usuarios (porque ahora lo tienen prohibido). Pobre del controlador, no sabe que en cuanto hay procesos haciendo cola para IO la computadora se alenta y la tiran a la basura con todo y controladores.

Una vez que consiguen el disco que puede destruir al MCP hacen un viaje hacia allá, pero cuando llegan el jefe de las fuerzas del MCP ataca a Tron, en una épica batalla de disquitos (que según yo está en la lista de armas más geniales junto con la espada de luz y la pistola de Portal) Tron termina ganando. Eventualmente Flynn se lanza a la columna de luz del MCP y Tron tiene el tiempo suficiente como para destruirlo. Esto hace que Flynn regrese al mundo real y en la impresora que está junto a él se imprime una hoja que dice:
Space Pirates (o algo así, el juego que hizo Flynn)
Robado por: [el malo]
Hecho por: Flynn
End of Line
Con esa hoja lograron quitar al malo del puesto de Senior Executive que tenía anteriormente y Flynn tomó su merecido lugar, porque por supuesto que una hoja impresa que dice que Flynn hizo el juego es una prueba contundente que no miente.

Mar 2, 2008

Contra las importaciones japonesas

Ayer fuimos al DF a una comida de mi familia. La idea era que cada persona de la familia llevaba un platillo y todos compartíamos de todo. Como los Laborde son algo espléndidos nadie llevó lo que comía su familia sino mucho más y terminamos con muchísima comida tragando desde las tres de la tarde hasta las siete de la noche.

La parte más interesante de la comida fue la plática que dio un tío abuelo mio (creo) que es considerado el prototipo de los Laborde (pesado y corajudo), durante la plática hubo un juego apasionante de "Adivina quién" donde decían una ocupación y entonces teníamos que adivinar de quién se trataba. El único chiste es que si conoces a la persona entonces no puedes contestar (son las reglas) y si no la conoces, pues tampoco porque no sabes a qué se dedica. No es necesario decir que el juego fue apasionante. Después de eso mi tío nos deleitó con un discurso interesantísimo, tanto que al final se acercó mi tío José Ignacio:
- Pobre de [el tío abuelo], hizo muchísimo tiempo hasta acá
- ¿Pero qué no venía en avión?
- Sí, pero es que venía practicando el discurso en el avión y los pilotos se suicidaron
Sin embargo la comida no es lo importante en este post, sino es algo de lo que me di cuenta en mi visita por la ciudad de la esperanza (donde tienes la esperanza de llegar pronto, la esperanza de que no te roben, la esperanza de que no te agarre un policía, en fin, mucha esperanza): resulta que los mexicanos tenemos, desde hace tiempo, una colonia (¿será? no estoy seguro) que se llama Picacho.

Esto por supuesto que despertó un espíritu patriótico en mi, y decidí que era preciso incitar un nuevo movimiento (porque mi blog se ha vuelto muy revolucionario) ¡tenemos que demandar a los japoneses que se andan robando los nombres de nuestras calles! Y todavía peor, que lo usan para una rata que grita "picachooooo" como una niña de kinder.