343 - El Crustáceo Crujiente entra en quiebra
Después de 19 días de Advent of Code, te cuento mi experiencia en esta aventura, hasta donde he llegado y con que problemas me he encontrado
Ya estoy en disposición de hablarte sobre mi aventura con el Advent Of Code 2021, y es que… hasta aquí llego la aventura. No es que abandone por completo el realizar el AoC2021, pero si que voy a dejar de intentar ir a reto por día. Sin embargo, quiero compartir contigo las enseñanzas y experiencia que he sacado hasta el momento de la realización del mismo.
En ningún caso quiero disculparme o justificarme por no haber terminado el Advent Of Code a reto por día…, no se trata de esto, y ya lo comenté en su momento. Para mi lo importante era retomar el contacto con Rust, y ya te digo que este objetivo está mas que cumplido. Pero no solo esto que hay mas.
El Crustáceo Crujiente entra en quiebra
Sobre la teoría de los 21 días
En 1960, el psicólogo Maxwell Maltx, célebre cirujano plástico de la Universidad de Columbia, describió la teoría de los 21 días,
Debemos tomar 15 minutos al día a la misma hora en el mismo lugar para cualquier nuevo hábito que se desee tener y es importante continuarlo hasta que se cumplan los 21 días consecutivos de práctica inequívoca. De esta manera se genera un cambio perceptible en la persona. Si fallas un solo día debes empezar desde el principio.
Esta es probablemente una de las razones de la existencia de este Calendario de Adviento. Y probablemente, los regalos y chocolates que se daban a los niños, no son mas que una forma de premiar el comportamiento para lograr ese nuevo hábito.
En mi caso, yo me lo he tomado al pie de la letra. Durante estos primeros 18 días, he estado desarrollando en Rust cada uno de los retos. Con mas o menos éxitos. Hasta llegar al día de hoy, donde he visto que me estaba llevando todo el día, para hacerlo y he decidido detener esta locura.
¿En que punto me encuentro en el Advent Of Code?
Actualmente, o al menos en el momento de preparar el podcast, llevo, realizados 18 de los 19 retos publicados, aunque con éxito solo 16 de ellos, y en vías de resolución los otros dos. De hecho, de uno de ellos, ya tengo superados los test de validación, pero no consigo completar el resultado final… Esta semana, espero conseguirlo seguro.
Respecto al reto 19, el domingo, cuando lo leí, vi que le tendría que dedicar todo el día, y preferí, ir a mi ritmo para completarlo pero sin abandonarlo. Siguiendo básicamente la teoría de los 21 días.
Esto se puede ver fácilmente en el repositorio de GitHub, donde puedes ver cada uno de los diferentes commits
que he ido realizando conforme avanzaba en los distintos retos.
Estoy verdaderamente satisfecho con lo logrado hasta el momento. He conseguido retomar mi relación con Rust. Y creo que este era uno de los objetivos que me planteé en el comienzo de esta aventura.
Una confesión
Lo cierto, es que antes de decantarme por Rust, estuve dudando ciertamente si Rust o Go. Todo el mundo hablaba de lo sencillo y productivo que era desarrollar con Go. Y sin embargo, por lo que había leído me atraía mas Rust.
Los primeros encuentros con Rust fueros duros y difíciles. En esos primeros momentos fue cuando me planteé si quizá no me había equivocado. Si quizá, tenía que haber elegido Go. Hoy, gracias al Advent of Code, te puedo garantizar que la elección fue la correcta.
La aventura
Los primeros retos del Advent of Code me costaban mas que nada porque no recordaba prácticamente nada de lo que había aprendido con Rust. Esto me hizo de nuevo dudar. Pero, al evidentemente, una de las razones que me habían empujado a decidirme a realizar el Advent of Code fue precisamente la de reencontrarme con Rust.
Con el avance de la aventura, cada vez me sentía con mas soltura con Rust. Cada vez estaba mas cómodo. Sin embargo, entonces el problema comenzó a ser otro. El problema empezó a ser precisamente el Advent of Code. Los retos cada vez eran mas complejos. O mejor expresado, no eran tan sencillos como al principio.
En algunos casos, la primera parte se podía resolver de una forma mas o menos sencilla, mientras que para la segunda parte, era necesario, optimizar el código o buscar algún tipo de algoritmo para resolverla.
En estos últimos retos, la problemática se ha complicado considerablemente. Tanto que me he saltado alguno de los retos, para continuar con los siguientes retomándolos a posteriori.
Y ahora ¿que?
Llegados a este punto, visto que la cosa está complicada y me está llevando mucho mas tiempo de lo que esperaba. Voy a continuar a mi ritmo. Es decir, que no será a reto por día, pero, si que tengo intención de terminarlo.
Ya lo comenté en un podcast anterior, para mi el objetivo, no era ser el primero, ni siquiera terminar el Advent of Code, mi objetivo era aprender Rust.
NeoVim
Una de las grandes ayudas para el Advent of Code ha sido, sin lugar a dudas NeoVim. Estoy convencido a día de hoy, que sin su ayuda no habría llegado ni al segundo día.
Cambiar de Vim a NeoVim, no fue una decisión de la noche a la mañana. Fue algo realmente meditado y que me llevó mucho tiempo y concienciación. Fue sin lugar a dudas la integración del LSP, Language Server Protocol, lo que me impulsó a cambiar, y ha sido un acierto.
En este caso, en el caso de Rust, no solo te ayuda con los errores que puedas cometer al escribir código, sino que además te invita a mejorar el código. Es una verdadera gozada.
Me ha llevado su tiempo configurar NeoVim hasta el momento en el que lo tengo configurado hoy en día, y se que no es perfecto, que todavía tiene un amplio margen de mejora, pero en este caso, en el caso de Rust, está funcionando a las mil maravillas. No puedo estar mas satisfecho.
Imagen de portada de Erik Mclean
Más información,
Sinceramente Atareao!, me preocupa la deriva que van tomando los títulos de los post, no andarás fumando cigarrillos de la risa o cosas similares, no?
Saludos.
Hola! Me alegra mucho leer que estás jugando con Rust y que te está gustando. Sin duda, es mi lenguaje de bajo nivel preferido. Me siento totalmente identificado con el tema de NeoVIM. Cuando di el salto de vim a neovim, y sobre todo de neovim 0.4 a neovim 0.5, noté una diferencia brutal. Los nuevos plugins que la gente está escribiendo en Lua están en otra liga. Un saludo 😀
Hola Sergio,
Muchísimas gracias por tu comentario. Si, estoy disfrutando de Rust una barbaridad. Se ha convertido en mi lenguaje de cabecera y ahora estoy en un proceso de intentar migrarlo todo a Rust… es lo que tiene.
Respecto a NeoVim, tal y como tu comentas, es sencillamente espectacular, la integración de LSP y lua, han dado un vuelco tremendo a la aplicación.
Un saludo y muchas gracias.