lunes, 9 de noviembre de 2015

Ancla de Rescate

No siempre puedo hacer las cosas bien, pero tengo esta filosofía de vida, en la que por lo menos lo intento. Uno es humano y no siempre puede tomar las decisiones correctas, y también es un tema muy subjetivo, pero tengo esta idea de que hacer las cosas bien te trae cosas buenas. Tengo esta loca idea de que si hago el bien, el universo me lo va a devolver. También creo que todos somos un ejemplo para los demás, y que tenemos un compromiso de hacer las cosas bien.

La mayoría del tiempo, las cosas salen bien, y estoy contento con mis decisiones, con llevar la vida así, a pesar de que a veces requiere mucho esfuerzo. Pero siempre llega ese momento en la vida en la que nos toca cuestionarnos nuestras decisiones, nuestros valores. La vida es así, te da y te quita, te facilita el camino o te pone piedras en el mismo para salir más fuerte y aprender. Entiendo que esto es parte de vivir, de crecer, y lo llevo bien, pero hay veces en las que nada sale bien, y ahí arrancan los cuestionamientos.

¿Cómo puede ser que la mina que me gusta esté con ese pibe que la vive cagando? Yo nunca cagué a nadie, pero evidentemente no importa. Esa persona que le debe plata a todo el mundo esta de vacaciones por europa, y yo que tengo todo al día, pago impuestos, etc, no puedo. ¿Qué onda? ¿Vale la pena ser tan honesto, si mi compañero que vive mintiendo ahora va a tener una mejor posición que yo? 

Sé que me estoy dejando influenciar por lo que hacen otras personas, y que solo debería preocuparme por lo que hago yo, por mis decisiones. Pero bueno, a uno de vez en cuando le agarra la desesperación y se cuestiona si realmente vale la pena ser así (la respuesta es sí, obviamente!). A veces realmente me cuestiono si realmente el universo me va a devolver las cosas buenas porque parece que no, y parece que a la gente no le importa. En estos momentos de frustración, tengo la suerte de contar con dos personas que me ayudan a mantenerme firme. 

Mi Ancla

La vida es para vivirla compartida, siempre necesitamos de otras personas para seguir adelante. Cuando todo me da vueltas en la cabeza, y digo, ¿sabés qué?, no me importa nada, hago cualquiera, tengo mi ancla de rescate para mantenerme firme. Bueno, en realidad tengo dos. Son dos personas que sé que realmente valoran mi forma de ser, que me toman de ejemplo para algunas cosas, y que cuentan conmigo. No me gustaría defraudarlas nunca, y cuando me estoy por mandar alguna cagada, me pregunto: ¿le podría contar esto a ellas y estar orgulloso? Si la respuesta es no, entonces sé que estoy por hacer cualquiera, y me ayuda a retomar el equilibrio. Por esas dos personas, sé que todo vale la pena.

Conclusiones

No siempre lo que escribo tiene sentido, y de hecho, esto lo estoy escribiendo hoy pero no me siento así hace un tiempo. Muchas veces necesito escribir porque tengo una mezcla de pensamientos y de sentimientos dando vueltas en la cabeza y necesito escribir para entenderlos mejor. Escribir me ayuda a hacer catarsis, me ayuda a mantener el equilibrio. Son vivencias muy personales, y no todo el mundo va a estar de acuerdo, o no todo el mundo va a entender lo que trato de decir. Pero estoy convencido de que a más de una persona le agarran estas dudas existenciales, y si puedo ayudar aunque sea a una persona, me voy contento.

Para los que tengan ganas, pueden dejar algún comentario.


lunes, 26 de octubre de 2015

La Vida Es Una Maratón, No Una Carrera de 100 Metros

'Lo difícil no es llegar, es mantenerse' es un dicho muy conocido del fútbol, y se refiere a lo complicado que es poder mantenerse al nivel más alto del deporte. A las personas nos cuesta muchísimo armar planes a largo plazo porque nos enfocamos demasiado en obtener resultados a corto plazo. Miles de metas tienen una fórmula simple para cumplirlas, como por ejemplo adelgazar. Simplemente hay que consumir menos calorías de las que consumimos, o en otras palabras: hay que comer menos y hacer más ejercicio. Uno pensaría que con lo simple que es este método, sería fácil de logarlo, pero todos sabemos que no es así. Nos gusta ver resultados, pero no nos gusta el proceso para obtener los mismos.

Personalmente, muchas veces me pasa que empiezo una actividad y si no tengo un plan, la dejo a los diez días. Me pasó recientemente con una clase online de algoritmos. Me re interesa el tema pero no quiero estar dedicándole el tiempo porque se que no me va a dar resultados de inmediato. Dejar una actividad o un proyecto no está mal en si, el problema resulta cuando uno se toma la vida de esta manera. 

La vida no es una carrera de 100 metros llanos, son 42 kilómetros con vallas. Casi todos podemos correr 100 metros sin problema, pero conozco pocas personas que pueden terminar una maratón. Para correr semejante distancia, se necesita mucha preparación, tanto física como mental. Lo mismo, por lo menos para mí, aplica a la vida. Si bien eso de vivir cada momento como si fuera el último, y lo de enfocarse en el presente tiene sus puntos válidos, no creo que sea un gran consejo cuando pensamos a mayor escala. 

Preparación

Como los corredores se preparan para una maratón, nosotros tenemos que prepararnos para algunas cosas en la vida. Tomando la universidad como ejemplo, si nos dijeran que tenemos que ser ingenieros en cuatro años y no nos dieran ninguna otra instrucción, a la mayoría se nos complicaría lograrlo, pero dividiendo esta meta en cuatrimestres, y esos cuatrimestres en un par de materias, se hace mucho más factible terminar una carrera. 

A mí me gusta dividir metas en objetivos más chicos, me ayuda mucho a organizarme, y también puedo ver progreso más rápido. Volviendo al ejemplo de la universidad, rendir bien una materia me acerca a mi objetivo de terminar la carrera. Saber que uno está progresando es la clave para mantenerse motivado. Si dependemos solamente de fuerza de voluntad, hasta la persona más voluntariosa termina sufriendo muchas veces. 

Tener un plan para mí es importantísimo, y es el método que aplico a todo lo que hago. A veces escribo los pasos en un papel, muchas veces tengo una idea general en la cabeza, pero la constante es que por lo menos soy consciente de que tengo que romper un gran objetivo en pedacitos. Pedacitos que no siempre se dan como me los había imaginado, pero es normal, no se puede pretender ir cumpliendo todo al pie de la letra, porque cosas inesperadas pasan todo el tiempo. 

El objetivo más grande que tengo empezó hace casi tres años, y yo pensé que lo alcanzaría en dos, pero así es la vida de inesperada, y hay que saber adaptarse. La constante, fue que siempre fui progresando, aunque fuera algo mínimo, y eso me mantenía motivado, me ayudaba a seguir dando el siguiente paso. 

Conclusiones

Todavía no cumplí mi gran objetivo, por ende no quiero decir nada para no quemarlo, pero creo estar muy cerca, y los que me conocen saben qué es. Haberme hecho un plan me ayudó a aguantar hasta en los peores momentos, y ver progreso continuo me ayudó a mantenerme motivado todo este tiempo.

No veo la hora de cumplirlo.

miércoles, 11 de marzo de 2015

rubyquest - Day Fourteen

We have come to the end of the second week coding RubyQuest and it's been a roller coaster ride.
The first four days were lost as previously noted, other than some experience and some graphics that we carried over. 

We finally implemented the AJAX post requests to check the player's answers against our database. It took a bit of time to get it just right, but it wasn't too complicated overall. The problem we were having was that we had the function inside our update, which runs at 60 frames per second. The problem this caused was that we would end up sending over 200 post requests every minute. This would have been a problem, having many users playing the game at the same time.

Fortunately, we realized we could have the function defined in our create, and just send it once from update, and we got to only send one post request now.

We also added collisions to the world map. It took a lot of time to do the graphics, doing an RPG was always going to be a very ambitious project, but we really wanted to do more and more every day, so we really had to get to the point where we said 'okay, this is more than enough for two weeks' and put an end to our world expansion. We have three layers of tiles, and we collide against the middle one. It is not quite pixel perfect yet because of some bounding box issues, but it gets the job done.

Pitching!

We have to now record a video of our play through to have for our pitch. We want to have it playing with a nice trailer for our audience. 

We are freezing the code Sunday night and we are right on schedule.

martes, 3 de marzo de 2015

rubyquest - Day Eleven

Last wednesday we had asked if we could demo our game live at Waffle Wednesdays, a weekly morning event where people from the Miami tech scene get together to eat waffles and discuss all matters tech. Sometimes, people do presentations so Team RubyQuest thought this would be a great opportunity to get some early feedback on how we were doing.

The only problem was that while we thought we would be just showing our game and getting feedback on that aspect, the expectations were that we would be actually pitching our entire application as if it were the official Pitch Day that's happening on March 12th, 2015. 

We only found out about those expectations today, Tuesday, at 10am, so that gave us less than 24 hours to prepare a slideshow, rehearse it and have a presentation ready. That would have been enough time except for the fact that we also have class and we also have to keep working on our project, so that was much less time.  

Where to Begin?

We asked a TA to help us and we had no idea were to begin. Our first ideas were really bad and we got negative feedback, but that helped us notice that we were approaching this pitch from the wrong angle. We started brainstorming and liked some ideas, and started putting things together at around 4:00pm. 

A key question asked by almost everybody was: 'why are you making an HTML5 game while everyone else is making a Rails application?' which seemed obvious to us, but obviously was not to everybody else. We realized that we needed to really show why we are making this game and what we hope to accomplish, which is to give back to the tech community that we are now a part of and that's been great to us, by preparing the next generation of coders in a very fun and immersive way. 

Here's were the concept of gamification comes in. We want to complement the user experience by offering a very engaging environment. Getting deep into a story to us is one way to achieve this and that's why we are making RubyQuest.

In Other News

We are almost done with incorporating the Puzzle functionality which is a big part of our game. After speaking to the 'guru' of our game, we get taught a lesson on Ruby, and an input box appears on our screen. The user needs to input a response to the challenge posted, and that input gets sent to our server, which checks our database, and comes back with either a successful or erroneous response.

We have the AJAX post request working on our server side, we just need to finish implementing it on our game.

After eleven days, we have really learned a lot, and every day we keep learning more and more, we feel very confident that we will be ready to take on the next challenge as soon as Wyncode ends, and the junior developer quest begins.

lunes, 2 de marzo de 2015

rubyquest - Day Eight

After a full week and a day since having started our project, we are finally at the point where we can focus on adding content without worrying about the basics of the game such as walking, animation and dialogue.

We decided to manipulate DOM elements in game and we are using jQuery for that. For example, our menu covers the entire screen and it pops into view if we press the 'M' key on our keyboard. Pressing M toggles it on and off for now, but we'll probably just show and have to click exit to toggle it off or something, we are still deciding. 

Dialogue works when our character is within a certain distance of a non-playable character and we press the spacebar. We are planning on adding a mini-game as well, and some easter eggs that will add flavor to the game. Even though for our pitch day we can only demo a couple of minutes of the game, we want to be as thorough as we can.

AJAX

A feature we still have to implement to our game is the puzzle challenge. Basically, we'll pop up an input box on our game and we have to type the challenge as is being described on our dialogue box. The challenge for us is going to be sending an AJAX post request to our server, to check against our database, and then get that get request back to keep going with the game. 

We are not sure how to do this yet, but I'm confident we can get it working by the end of the day.

Pair Programming

On Friday night, we implemented pair-programming for the first time, with one person driving and somebody else watching and helping out. It was a great learning experience as I had not done it personally and learned a lot from it. There are some pictures of that day that we will be posting later.

jueves, 26 de febrero de 2015

rubyquest - Day Four

So after four days of using LimeJS and the Google Closure Library to code our game, we realized that moving forward, it would bring us more problems than solutions and made a decision that should almost never be done: we switched frameworks. In our case, I believe that it actually made a lot of sense. LimeJS is very good for what we were trying to accomplish, but unfortunately, it's a framework that's not actively developed. We chose Phaser because it's the most popular JavaScript framework for games and it has a very nice and active community. 

So, after four days of coding, we decided to scratch everything and start from zero. Our biggest problem with LimeJS was doing animation and movement, and we were able to solve that with Phaser in about 4 hours. 

But No Framework Is Perfect

The problems with frameworks is that not one will cover everything that you need. While movement and animation is a lot easier with Phaser, transitioning from scene to scene is harder. Also, doing dialogue and inserting labels onto the screen can be hard. The way we are approaching that is by manipulating the DOM rather than the Canvas element of HTML only. 

We have jQuery code that toggles on/off our dialogue boxes, and also our main menu. This way, we call it from our game with the press of a button, and then it'll just show up on top of our game.
This approach might not be the tidiest but it works for what we are trying to do and it's pretty simple to implement. It'll also be good practice for when we have to implement our puzzles which will send an AJAX request to our server from an input box.

Our demo is almost done and we really need it for tomorrow as we need to present it for us to keep the project alive. 

domingo, 22 de febrero de 2015

rubyquest - Day One

After assembling the team on Friday, this past Saturday, February 21st, we finally sat down with team !Fer (pronounced 'not fair') to start coding. For our Pitch Day we are creating an Educational RPG, which may actually be the first of its kind. We decided to go very JavaScript heavy for our final project as it's not our strongest language and we really want to learn it. Also, HTML5 games are the future in gaming as it supports many different platforms. We are aiming for web and mobile support for our game.

The Framework


Our first board on what we are going to need for the game.
We chose LimeJS as the framework we'll use to run our game as it provides us with the best tools for what we are trying to accomplish. It uses the Google Closure Library, which was used to create Gmail for example. It's a very powerful library, but from what we've seen so far it can be quite tricky as it's pretty much a new language itself. 

We decided to take Friday night and Saturday morning as our 'learn the basics' day. That meant that we would watch tutorials, read documentation and look at source code to get a feeling of what we were getting into.  I can say that Mario, Travis and I went through this cycle of 'what am I doing!?!?' to 'I got this!!' and back to 'what am I doing!?!?' many times throughout the day.

The Coding


Since we need an actual website to run our game, we also decided to use Rails to power it up. We are going to need a database to store some information for our game, and we also want to have some features such as a Forum where players can interact, post questions, get help, etc. We also want to implement a Reviews section so we can get feedback on our game. Lastly, the website is going to have a Log In system that we will build from scratch instead of using Devise as it will not only be a great learning experience, but it will also let us customize it as we please.


             Second board on game functionality.


After quite a few hours of coding, we were able to accomplish quite a few things but we are having some problems using the keyboard to run our game. So far we've only been able to use the mouse which is not ideal but at least it works for now. We've reached out to different developers who have used LimeJS in the past to see if they can help us with this issue.



Going Forward



We really would like to solve the issue of using the keyboard for input, we are really going to need it for our puzzles, but so far we've created a mousepad that we can use to move our character around. We are using free art that we found online so far and we have not yet implemented animation to our walking but we will get there eventually I am sure. We'd like to have a five minute playable demo by Friday, so then we have another two weeks to really polish the game.