Vida de un Programador

Experiencias, ideas y programas

¡18 años! – Como empecé a programar

Esta ultima mitad de año no he publicado nada, por demasiado trabajo y falta de temas interesantes que publicar.
Esto creo que ya no sera el caso, puesto que he preparado unos cuantos temas interesantes para mas adelante.

Quien me tenga en alguna red social, podrá ver que hoy, a 12/11/2012 cumplo 18 años. Y si no, acabáis de saberlo🙂

Así que quisiera recapitular un poco cómo empecé a programar, y el proceso que seguí.

Parte de este texto viene de la historia real de UGamelaPlay, que escribí después de la historia ficticia, quitándole el aspecto de “empresa” al juego.

A principios de 2008 UGamelaPlay no existía. Yo estudiaba en el instituto, y en los recreos estaba en la biblioteca o ayudando, o leyendo, o en los ordenadores (yo los administraba)

No conocía OGame. Pero un día, creo que por enero, una vi a una chica en una pagina que parecía un juego online (y orientado en el espacio, cosa que me gusto)

Le pregunte que era. Me contesto que OGame, un juego de estrategia, que construyes cosas para avanzar. Me registre en el universo 40

[…]

Pasaron los días y se produjo el acontecimiento que haría que dejase OGame en los próximos días. Me ataco un jugador superior y me destruyo todas las naves, y casi toda la poca defensa que tenia.

Me dije: “ya me recuperare”. Pero cada vez que hacia un poquito de flota, me la destruían. Quizás iba a ataque diario. Deje OGame

Pero como me había gustado el juego, busque algún otro juego similar. Encontré Ugamela, y era mas rápido, y tenia algunas cosas mas.

Pues nada, allí estuve jugando, y me encantaba, conseguí hasta nanobots de nivel 2… Pero entonces Ugamela cerro.

Tenia que buscar algún juego. Pero decidí algo: para evitar que me cerrasen el juego, o me petasen otra vez, iba a crear mi propio juego

Por aquel entonces no sabia programar. ¿Como aprendí? Pues encontré el código fuente de la ultima versión abierta de Ugamela. Con comentarios curiosos y graciosos🙂 .

Fui aprendiendo editando el juego. Añadir la primera nave fue un reto. La segunda ya era mas fácil. Pero no tenia flotas, era algo básico.

Tal como digo, aprendí a raíz de mirar código, intentar entenderlo, modificarlo, y ver que hacía. Poco a poco lo entendía aún mejor, algo que me ayudaba a seguir aprendiendo. Disfrutaba en el proceso, ya que tenía un objetivo y una razón.

Entonces encontré XNova. Era un proyecto de franceses que habían cogido el proyecto de unos polacos que habían cogido la ultima versión libre de Ugamela

Aquí empezó UGamelaPlay. Septiembre de 2008, semana del 22-28

Al principio añadí modificaciones hechas por otros. Luego yo hice las mías.

Escucho a los usuarios, la mayoría de las cosas que tiene UGamelaPlay son ideas de usuarios

Al final no quedo nada de XNova. Solo comparte la pagina de alianza, pagina de opciones y la pagina de flotas

Esta es la historia de UGamelaPlay. Como llegue aquí es una cadena de coincidencias. Yo soy un jugador de OGame mediocre pero con un conocimiento inmenso de su dinámica

Este texto lo escribí hace tiempo, podéis consultarlo entero en la web de UGamelaPlay -> Historia.
En aquel entonces, ya había empezado a “destacar” entre el ecosistema de los desarrolladores de ese tipo de juegos.
Había creado muchas modificaciones al juego implementando las ideas de los usuarios o propias, de un modo creativo y eficaz. Muchas veces me pasaba por los foros de OGame, revisando las ideas. Muchas de ellas las implemente en el juego de manera simple, aunque en los foros decian que era algo demasiado complejo como para pensar implementarlo.

UGamelaPlay es código cerrado (por ahora, solo digo eso ;)), pero varias cosas las saque con licencia LGPL, o las implemente en un “repack” de una famosa plataforma de este tipo de juegos, XG-Proyect.

Esto fue recibido de muy buena manera, y siguen utilizando esta versión aún en día.

Antes de estos sucesos, recibía ataques en el juego externos, mediante Inyección SQL. Esto me llevo a estudiar mejor el campo de la seguridad, y tras realizar una revisión completa de mi juego encontré múltiples fallos que permitían atacar cualquier plataforma. Muchos de los parches para ellas llevan mi nombre.

Fue entonces mas o menos cuando me registre en Github, y empecé a subir cosas allí. Cree EPAReader, lector de libros en formato EPA (que fue pensado por @Manz). Cree varios proyectos mas, de los que no hablare aquí. Muchos de ellos no han sido publicados, debido al carácter personal y/o puntual, o ciertas condiciones legales.

Cuando conocí Minecraft (compre la cuenta estando en Beta ANTES de probar el juego siquiera) me uní a un servidor de España, Minecraft-ESP. En este, entre con la intención de ayudar a la gente (cosa que intento realizar también en mi vida cotidiana). Tras cambiar de versiones y mapa, cree un programa que se conectaba a una interfaz web y respondía a preguntas, dudas o comandos. Fue llamado BotAyuda.

Entonces, tras el cierre de la interfaz web, me di de lleno con el protocolo interno de Minecraft. Debido al éxito de BotAyuda, había decidido crear una versión de este pero como un programa que entrase en Minecraft, como un usuario normal. Tras comprar otra cuenta mas, me dedique a ello usando la inestimable ayuda de Minecraft Coalition, un grupo de programadores que se dedicaban a analizar el protocolo interno de Minecraft. Estos se mostraban incrédulos a la realización de un cliente en PHP, pero ya que no había ninguno (y orgullo personal) continué adelante. Tras la primera versión de BotAyuda, o como lo llame, Minecraft-PHP-Client, volví de nuevo a ese servidor. Les gusto a las personas, los moderadores estaban interesados en el ya que muchas acciones que llevaban tiempo las simplificaba en gran medida.

Entonces, en 2012 me apunte al concurso de Tuenti diciendo “a ver que tal me va”. Como visteis, me fue bastante bien. Mucho mas de lo que pensaba, ya que únicamente soñaba con estar en la lista final…

Entonces todo lo que yo había aprendido había sido por mi cuenta. Autodidacta. La manera de hacer las cosas, algoritmos (no sabia los diferentes que había). TODO. Por eso, el código que envié era algo inusual. Tal como les puse en un “README”:

I haven’t got too much theoric knowledge about programming, but the things I
know were learnt from experience (3 years). So don’t expect professional code😉

Tras ver los resultados, y hablar con algunos programadores, entendí la verdadera importancia de los algoritmos, estructuras, optimización y demás cosas que hay que aprender. Así que empecé a aprender sobre ello.

Al llegar el verano, y volviendo con BotAyuda, ese código se había convertido en imposible de mantener. Todo el código estaba escrito en funciones, y además únicamente adaptadas a mi gusto. Hacer algo dinámico como Minecraft en un lenguaje lineal como PHP era difícil. Así que me propuse reescribir el código.

Empece con una parte básica para crear algo que pudiese evolucionar durante mucho tiempo, que cualquiera pudiese usar y altamente extensible. Un sistema de clases que incluía un sistema de eventos propio. Esto permite a cualquier función / código “engancharse” a ella y ser llamada cuando ese evento envié información. Al hacerlo de esta manera, y complementado con una API pude desarrollar BotAyuda aparte de la librería. Esto me costo 2 semanas, y salio a Github la primera versión. Paulatinamente fui desarrollando “plugins”, que se enganchaban a ciertos eventos para dar mas características. (Todo esto realizado de poco en poco, por el tiempo disponible)

Como había ya leído información sobre algoritmos y optimización, me propuse hacerlo eficiente. En esos momentos el programa en marcha usaba un 70% de la CPU y ~200MB de RAM.

Tras varias rondas de optimización, re-escritura de partes del código, y operaciones de bits cambio por completo el programa. Ahora, este utiliza de media un 1% de CPU y 50-90MB de RAM. Ademas, era mucho mas fluído.

En medio siempre hubo otros proyectos, algunos de increíble importancia pero que no sacaré aquí. Muchas personas me han acompañado durante estos 18 años, y una mención especial a los que me ayudaron durante estos 4 años y medio de programador.

Espero que fuese amena la lectura, creo que todas las personas que quieran aprender programación deberían dejarse de guías (hasta cierto punto). Deben entender la programación como un arte, que solo puedes entender observándolo, analizando todos los detalles y creando tu propio código. Esto nos dará la experiencia necesaria para comprender mas adelante otras “obras” mas complejas. Nunca te eches atrás, avanza adelante ampliando siempre tu conocimiento.

Espero que os haya servido / gustado. Seguiré publicando sobre los temas que preparé.
Saludos a todos!

Una respuesta a “¡18 años! – Como empecé a programar

  1. Gantzter Trickster 11/09/2016 en 21:25

    Hola viejo no se si veas esto, te saludo, soy un antiguo usuario de ugamelaplay, siempre quise saber que había pasado con el admin que nos abandono :’c, haha, que bueno que te fuera tan bien, nunca creí cuando decían que el programador tenia 15 años pero ahora puedo ver que eras muy dedicado, espero poder un día platicar contigo😀 fueron buenos tiempos. Saludos!

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: