The Third Renaissance: Game Development (Part 1).

My personal story of how I bounced from tech stack to another and you can too!

Hello folks!

So I am bringing back from death my personal blog. The title (which is related to the Animatrix movie), I think it fits of what is happening right now with my professional path.

The last time I posted something was related to web development. Most of you don’t know the story, but yes, I came back to the world of websites, e-commerce solutions, blogs in WordPress and stuff, so I am going back to 2018 right now, starting from the last post I created here:

TL;DR -> After starting in game development, stop believing myself and went to web development, moving to AS400/iSeries development and goind back (again) to web development…I returned home as a game developer.

Now, the details:

April 2018 I was developing a web app for productivity and gamification stuff so I can turn it into a startup or business and fulfill my desire of having something of my own. After many pitches, improvements, feedback and running out of money, it was put “on hold”.

No, in fact, I still was programming the app after work, but my day job was demanding, there were a lot of things to learn and improve in the agency (Oh, right, I was in a Digital Marketing Agency) and you know that this kind of business demand a lot, since you have to work for a lot of clients.

I stayed there for seven months. To be honest, I needed more money since life got a little bit complicated so I took part from there, everything was cool and I appreciated the opportunity.

Usually I first quit the job before start searching for jobs but in this case, things got way more complicated. So me and my girlfriend moved to a cheaper place to live, cut down expenses, I have to attend some personal matters and then look for a job.

In the meantime I was freelancing projects from existing clients but that would not pay all the bills, I had to find a job soon. My web application needed more research and development in  order to be a viable product, I was thinking that maybe I was not that passionate about the project.

What I did was to improve my skills in web development. Since I was in the IBM world, I had to take off the rust I gained fast. I was suffering from the “impostor syndrome”, thinking that I did not have what it takes to be a competitive programmer.

Despite the thought, I kept learning and practicing. Finally I got a job in a worldwide sport’s retailer as a back-end developer for their new e-commerce solution. I pass all the tests, the manager was stoked of my personality and knowledge, he immediately hires me (cool Spanish dude BTW).

I was looking forward to do a great job in the company and I was aligned to their values and work culture. I had to work as a salesman in the store to get their business processes (smart!).

I had a good time in there, until my work was so overwhelmed that I stopped enjoying it…

You see, I was proficient in PHP programming but the company required a Python developer as well and…I did not know Python enough to mantain an enterprise application. The e-commerce solution based in Prestashop required some experience in it and I did not have it.

Also, it was like a copy-paste from the company’s branch in Canada…so if I needed something I should contact the people from there.

I had to learn the fastest way possible, both Prestashop framework, Python and Django…

It was a HUGE learning curve but I accepted the challenge!

I thought everything was working as expected. The release of the new store would be January 2020. I made some code changes, ran some tests, all good, maybe not, clock is ticking and well…

…it was a disaster for me.

I have never felt that I could not get the job done until that experience. I told my manager that this was way beyond me and I presented my resignation.

I did not want to leave but, facts are facts. I was blocking the progress of the e-commerce solution and I recommended them that they should bring someone who can do it.

It is not easy to admit defeat, but I had to.

I stayed in the job for (guess what?) 7 months again and well, so after some days after release of the project I was a free agent.

Ok, this post became way more longer than expected. I think it could be a part 2 later.

…to be continued!

 

How to redirect after payment confirmation in your website using Paypal?

Hello again…

I want to share with you some tips on how to use the Paypal module in your website, specially when you try to redirect to your website after the payment is verified and completed.

I am not going to explain the whole process, just want to share a few tips on how to complete the purchase flow and get back to your site. There should be many other options out there as well, hopefully this one can be useful in your project.

That being said, let us proceed with this quick tip!

I have used the basic implementation of Paypal: Express Checkout. Once you set up the script provided by Paypal according to your needs, pay attention on the ‘OnAuthorize’ function:

paypal-1

You can use the window.location.href object in Javascript to redirect to your site once the REST api authorized the payment. Originally, the script has the window.alert object so it shows you the window with the ‘Payment completed’ message.

This small snippet has worked for me in basic implementations when I only want to know if the user paid correctly. If you need any extra information (i.e. transaction ID) then I think you should need a different solution.

 

La verdad de iSeries IBM (según yo)

Aprovechando un poco de tiempo libre puedo REGRESAR a este blog después de mucho tiempo. Muchas cosas han pasado, pero básicamente les hablaré de un tema interesante y que a la nueva generación de programadores/desarrolladores…y estoy hablando del mundo de iSeries de IBM (o AS400 para los cuates).

Honestamente nunca pensé toparme con esta tecnología para que pudiera pagar mis vicios, pero he aprendido lo suficiente para poder hacer un juicio de esta plataforma, cuál es el panorama y si realmente hay oportunidad en ella. En éstos tiempos, los jóvenes interesados en el mundo de la programación son bombardeados con información relevante a desarrollo de aplicaciones de escritorio, web, móviles, videojuegos, etc. con lenguajes comunes actualmente como es C#, Java, PHP, Ruby, C++, entre otros más, pero muy pocos (si acaso saben de esto por sus clases en la escuela) recuerdan que hace unos años era COBOL, Basic, C y RPG.

Por el motivo anterior, éstos lenguajes “viejos” ya no han podido transferir el interés a nuevas generaciones, las cuales se enfocan en las nuevas tecnologías, pero a pesar de esto, los “viejos” lenguajes siguen siendo solicitados por las empresas y con una paga más que aceptable.

Me enfocaré en iSeries o AS400, ya que es el tema en cuestión. ¿Cómo es que me topé con un trabajo así? Pues bueno, quise tratar una tecnología diferente a web y entré a un programa de capacitación para aprender a desarrollar en iSeries. En este programa eramos un grupo de jóvenes con antecedentes de desarrollo y para los instructores con eso bastaba…nos prepararon y después nos involucraron en los proyectos para una empresa muy grande que vende a montones y que uno de sus canales de venta y manejo de operaciones se basa en iSeries.

iSeries de IBM es una plataforma o sistema operativo que utilizan principalmente grandes empresas (MUUUY grandes) como lo son bancos, tiendas wholesaler como Sam’s Club/Costco, almacenes tipo Liverpool, Staples, Office Depot, CASINOS, Adidas, entre otras más. Este sistema operativo permite manejar muchísimas operaciones y transacciones de manera robusta y confiable, los expertos en el este mundo consideran a esta plataforma una de las más confiables en cuanto a rendimiento, nada que ver con los sistemas actuales.

Entonces si es muy bueno, ¿Por qué no es tan cotizado en el mercado como una chamba de Java o .NET? Como lo dije anteriormente, aprender estos lenguajes nuevos es relativamente fácil; Con que un estudiante tenga su laptop y el IDE listo, puede comenzar a aprender. En iSeries es distinto, ya que se requiere la adquisición de un equipo IBM y eso, es un buen billete, por lo que no es viable para universidades.

Aprender los fundamentos de RPG/CL/RPGLE/Free tiene una dificultad moderada, pero es todo un estilo o forma de trabajar si eres más de lo que trabajan en OOP. Uno de los choques culturales más fuertes era el hecho de que esto es 90% código, 10% gráfico (vieja escuela pues). Pero se ha modernizado que el formato “free” te permite programar con mayor soltura, a tal punto de estar programando en los lenguajes conocidos.

Hablando en México, hay ofertas, pero principalmente para los señores (seniors), creo que los de RH se sorprenderían al ver un desarrollador de iSeries menor a 35 años porque casi todos los que conocen superan el cuarto escalón. La oferta es sumamente mayor en el extranjero eso sí, países como España, Finlandia, EU, Alemania que hay empresas de grueso calibre y por lo tanto siguen confiando en los sistemas de IBM, aunque hay que admitir que otras más se han movido a nuevas ofertas como Oracle.

He leído mucha información respecto al futuro de este SO, ya que lleva más de 30 años en el mercado. Como dije, en otros países fuera de México aprecian demasiado al iSeries y siguen en busca de gente joven para prepararla y sepan trabajar en ella, así que si tu, lector que estás viendo esta entrada llegaras a ver una academia/entrenamiento como tu primera oportunidad laboral y no eres de los que se casa con un lenguaje sino que eres versátil y hábil para programar, puede ser un puente para probar suerte en el extranjero, pero eso sí, no esperes que la competencia sea fácil.

 

 

Uso de push notifications (iOS) y servicio PHP, lo que debes de considerar.

Hace unos meses participé en desarrollar para una aseguradora un centro de mensajes que se accede desde su servidor para que desde ahí se puedan enviar mensajes para dispositivos Android y iOS dependiendo algunos criterios, todo un reto ya que en donde trabajaba no teníamos experiencia para hacerlas.

En esta entrada, que no es realmente un tutorial para hacer un servicio de envío de push notifications para un app de iOS, sino que les daré algunos tips que pueden considerar a la hora de desarrollar, ya que, créanme, fue un dolor de cabeza por semanas encontrar la solución correcta para que funcionaran.

Espero sea una referencia para que no tengan problemas y puedan terminar en tiempo y quedarse calvos de la frustración.

1. Puertos SSL activos: Verifica que tu ISP (o si estas probando localmente, tu servidor local) tenga activos los puertos SSL, puerto 2195 o 2196. Esto evita que al probar tu servicio te aparezca el siguiente error:

Warning: stream_socket_client() [function.stream-socket-client]: unable to connect to ssl://gateway.push.apple.com:2195 (Connection refused) in SendPushNotification.php on line 28 Failed to connect: 111 Connection refused

También es recomendable que tu servidor de producción tenga habilitados dichos puertos. En casos particulares, algunos proveedores por default no los tienen activados así que habrá que pedir que los activen

2. Certificados: Este es otro problema que muchos desarrolladores llegan a tener, la generación de certificados tiene que ser al pie de la letra, porque esto puede provocar que simplemente no funcionen las pruebas de envíos de mensajes. Importante recordar que existen los certificados de desarrollo y producción y que dependiendo el ambiente en el que estés, los ID’s de los dispositivos cambiarán.

Ejemplo: Registras un dispositivo en ambiente de desarrollo, funciona todo bien. Pero después de que tengas que generar el certificado de producción, ese ID que tenías registrado ya no servirá por lo que tienes que registrarlo de nuevo en tu sistema que estes desarrollando. Esto me trajo una confusión que me costo algunas horas de trabajo así que tenlo presente.

3. Conexión de APN para envío de mensajes: Este si es un detalle muy particular que encontré al desarrollar el centro de mensajes. Cada vez que se envía el mensaje se crea una conexión nueva al servidor APN y después de que se envía el mensaje se tiene que cerrar por seguridad. El problema radica en que si quieres enviar mensajes de manera masiva usando una sola conexión, no será posible.

Por lo tanto, si necesitas enviar mensajes a n dispositivos simultáneamente, tienes que hacer una conexión por cada dispositivo al que vayas a mandarlo, de lo contrario, solo mandará al primer registrado o no mandará nada.

Este punto resulta algo truculento y lo solucioné de esta manera.

4. GET en vez de POST: Este punto realmente nunca lo encontramos como solución en sitios de ayuda como Stack Overflow y nos sorprendió el hecho de que funcionara.

Básicamente consiste en que todos los datos que envías en los formularios que vayas a utilizar (en mi caso, para escribir el mensaje al dueño del dispositivo) los mandes por GET y no por POST, curiosamente, al hacer este cambio, pude enviar mis mensajes sin problema alguno. Puede que mi situación haya sido una situación MUY particular y sabemos que a veces pasar por GET los datos no es buena idea, pero si tienes la oportunidad de hacerlo por este método, hazlo.

En esta experiencia que tuve, aprendí bastante sobre el desarrollo de este sistema de mensajes vía push notifications, algo muy divertido y retador. Algunos puntos quizás no apliquen a su situación, pero considérenlo como una especie de checklist cuando tengan problemas. Además, si tienen otro problema, es importante que lean a detalle la documentación que proporciona Apple para realizar este servicio.

Si tienen otra solución será bienvenida en este blog.

Game-on!

Adobe Muse – Diseño web sin necesidad de escribir código!!

 

Quizás hace muchos años, cuando el auge del internet iba en crecimiento muchas personas se preguntaban cómo hacer su propia página sin necesidad de saber sobre html, tags, hipervínculos y cosas que pocos entendían, solo querían su página lista con lo que querían e imaginaban.

Adobe Muse hubiera sido la solución en ese tiempo, pero era algo muy complicado de hacer hasta en estos años. Este software de Adobe te permite diseñar y publicar tu sitio web para que esté listo en la red y sin necesidad de escribir código! 

Adobe Muse en acción!

Recien comencé a utilizar esta herramienta en el trabajo para hacer diseños y con los conocimientos (tampoco soy un experto) del Software de Adobe se pueden hacer sitios web de gran calidad. Por ejemplo, utiliza Widgets que te permiten de manera inmediata insertar formularios de contacto, galerías de imágenes (como lightbox de jQuery), imágenes, etc. Los ajustes de diseño de tu sitio los puedes hacer por medio de “drag and drop” para que vaya quedando deacuerdo a tus necesidades, como se ve en la siguiente imagen:

Uso de galería de imágenes tipo lightbox, formularios, estilos css, etc.

Si deseas hacer algo como los hombres, es decir, insertando tu mismo el código HTML para algún objeto, como puede ser un mapa de google maps, también lo puedes lograr con la opción que trae el software. Otra característica importante es que te ayuda a definir si tu sitio es para navegadores de computadoras (PC o Laptops) o para móviles, algo importante en estos días debido a que son populares los smartphones y tablets.

También Muse te ayuda a publicar tu sitio web indicándole el servidor y basicamente subirá los archivos por tí, con la estructura de archivos que debe de tener.

En lo personal me parece una herramienta bastante atractiva, te ahorra bastante tiempo en tener que aplicar estilos, formatos, acomodar el diseño, creación de formularios, entre otras opciones buenas. Seas principiante o experto, vale la pena probarlo. El sitio oficial de Muse ofrece un periodo de prueba de 30 días y también incluye un buen de contenido/tutoriales para poder sacarle provecho y aprender más de este programa.

http://www.adobe.com/mx/products/muse.html

Diplomado Desarrollo de Aplicaciones para Windows Phone – Inscríbete!

windows_cel

Click para agrandar

El desarrollo de aplicaciones móviles ha estado incrementando en los últimos años en los distintos Sistemas Operativos móviles que conocemos y están presentes en nuestros equipos. Si eres entusiasta de esta tecnología y del desarrollo de aplicaciones, ESTA ES TU OPORTUNIDAD!!

Visita los siguientes links para mas información y/o inscribirte. Recuerda que es SIN COSTO y con validez curricular. En la imagen de aquí arriba puedes ver la información necesaria del diplomado. Si tienes conocimiento de POO y ganas de aprender para que después puedas desarrollar tus propias apps e incrementar tus ingresos y perfil profesional,no lo pienses dos veces y visita los siguientes links:

Sitio oficial del curso http://ti-capacitacion.com/windowsphone7/

Para tu inscripción formal (con tu Windows Live ID)  http://ti-capacitacion.com/registros/windowsphone7

Grupo oficial en Facebook y punto de encuentro: http://www.facebook.com/groups/diplomadowp71/

INICIO DEL DIPLOMADO: 9 ABRIL 2012

Design a site like this with WordPress.com
Get started