Writing for myself

Escribiendo para mi mismo

What Makes a Programmer a Good Programmer?

What makes a programmer a good programmer?

I have been embracing this question for a couple of weeks now and I think its time to put an end to the topic.

I have always said that there are good programmers and wanna be programmers, and my logic behind the statement is that, these days people dont put attention to the details, in a world where everything should be done quickly, people tend to just get the job done (which is not necessarily bad), and move on.

The question is subjective by nature, it is like, what the key for happiness is, where everyone will have different answers which are potentally true in everyone’s context. However, people will agree that there are certain characteristics, skils, etc. that will help us tackle the topic.

A good programmer is someone who writes good code. Just that, as simple as that, taking out other variables from the equation, a programmer is defined by the code he/she writes (but this is not the end of the topic). And then, this opened another question, what is the definition of good code? which immediately made me wonder, do I write good code? and I started to read about the topic and came with the following:

Good code is the combination of the following:

  • Correctednes
  • Succinctness
  • Readability
  • Performance
  • Well Tested
  • Language-agnostic

Essential complexity vs accidental complexity



Is Donald Trump Immigration Reform Crazy? [Thoughts From a Mexican Guy]

[Version Ingles]

I’ve been hearing a lot of comments about Donald Trump’s immigration plan - about how he would actually give back the jobs “we” (I highlight this since I think we are the least problem this country has in my opinion) foreign workers are taking from Americans - and after reading his proposal here are my comments.

Putting aside all the hard comments about Mexico, he proposes: raising fees for VISAS, increasing wages for workers with H1Bs, penalties for cities that refuse to hire Americans first, increasing penalties for people who overstay after their permit is expired, even mandatory return for people who has committed any criminal activity.

Now, Im not a politician, but if you ask me if this is crazy, I would say no. Additionally, are the Americans ready for this? Thats is a different topic I wont even comment. Actually, there is one thing I agree from his proposal, he says “A nation that does not serve its own citizens is not a nation.”, and that is completely true and it was the most shocking part from the text. In fact, It is not about his reform what I really want to talk about - It is about why people leave their countries.

People decide to leave their countries for several reasons, among them you can find: to reunite with family, because of a conflict such as the Syrian Civil War (where people can’t go back due the danger in their hometown or the fear of being killed), and because they are looking for better opportunities. The last one is the one that made me leave my country.

And this is where I agree with the above, I believe a nation should provide their citizens an environment where all opportunities are equals and accessible to everyone, a place where the empowerment elevator is not broken, and not allowing specific type of business or people to use it to their advantage, a place where salaries are competitive enough that makes citizens think they do not need to go other places for stability, security and personal fulfillment.

Sorrowfully, I think Mexico as a nation is not doing a great job to achieve the goal. And I said as a nation due Im not blaming only the current and past governments, but the citizens too (citizens like me that decided to leave), citizens that does not get involve on who/how they are governed. And I think too, this is not exclusive to Mexico, other foreigns in their attempt to achieve the American Dream are ready to give it all.

So, when I read & hear comments regarding Trump’s immigration plan, I can only think, I would do the same for my country, I would create the right place to achieve what I mentioned above (and you might say now - Javier, It’s just politics - or - Your are becoming a gringo - plus - you should not say anything). But the reality is that since I pay taxes, I have the right to express my opinion and even complaint if I want.

Now, where is all this coming from? Well, those who have the luck and misfortune (yes, as ambivalent it can sound) to live outside their country, tend to love it more, and that is my case.


[Spanish Version]

He escuchado muchos comentarios acerca del plan de Donald Trump - sobre cómo el podría devolver los empleos que nosotros los inmigrantes hemos arrebatado de los americanos - y después de leer su propuesta, he aquí mis comentarios.

Dejando aún lado los comentarios fuertes sobre México, se propone subir las cuotas para obtención de VISAS, incrementar salarios para los portadores de H1B (no entiendo como esto podría ser beneficioso pero bueno), penalizar a ciudades que se rehusen a contratar a americanos primero, incrementar las penalizaciones para las personas que se queden aún después de que si permiso halla expirado, además de deportar a personas criminales, entre otras.

No soy político, pero si me preguntas si esta reforma parece una locura, yo diría que no lo es. Adicionalmente, están los americanos preparados para asumir este cambio - este es un tema que no me atrevería a tocar ahora. De hecho, hay una sola cosa con la cual si coincido con su reforma migratoria, y es “Un nación que no sirve/provee a sus ciudadanos, no es una nación”, y es completamente cierto. En realidad, no es acerca de la reforma de Trump el tema del que quiero hablar pero el por qué las personas deciden dejar su país.

La gente decide migrar a otros países por varias razones, entre ellas, por que se quieren reunir con su familia, por que existe un conflicto como la [Guerra Civil de Syria] (https://en.wikipedia.org/wiki/European_migrant_crisis) (donde los refugiados no pueden regresar a su país por el temor a morir), y otros por que están en busca de oportunidades (razón por la cual decidí salir).

Y aquí es donde estoy de acuerdo con Trump, creo que una nación debiera proveer a sus ciudadanos el ambiente ideal donde las oportunidades sean iguales y accesibles apara todos, un lugar donde el elevador del poder no este descompuesto, permitiendo así, que industrias especificas o personas lo usen a su favor, un lugar donde los salarios sean lo suficiente competitivos para que las personas no tengan la necesidad de ir a otros lugares a buscar estabilidad, seguridad y satisfacción personal.

Con pena, creo que México como nación no esta dando la talla en esta materia, y enfatizo “nación” por que no solo culpo a los pasados y actuales gobernantes, pero también a los ciudadanos (como yo que han decidido irse), a ciudadanos que no se involucran por saber quién, cómo los están gobernando. Y pienso también que esto no es exclusivo de México, otros nacionales en su intento de lograr el sueño americano, están dispuestos a darlo todo.

Entonces, cuando leo y escucho comentarios acerca de la reforma de Trump, solo puedo pensar que, you también haría lo mismo por mi país, para crear el lugar adecuado para lograr el objetivo antes descrito (y aquí es cuando algunos dirán - Javier, es política, todo es mentira - o - Callate gringo - además de - tu eres el menos indicado para hablar). Pero la realidad es que desde que pago impuestos, tengo el derecho de expresar mi opinión e inclusive quejarme si quiero.

Por ultimo, de dónde viene todo esto? Bueno, aquellos que tienen la dicha y el infortunio de vivir fuera de su país, tienden a amarlo y apreciarlo de más, y ese es mi caso.


Daring for the First Time - My Thoughts About HIV

There has been a long time since I haven’t touch this place, and now I feel inspired, so here I got with a topic that believe it or not, it is important to me.

Like it or not, HIV (AIDS) is deeply related to the gay community, where more than 50,000 new cases are registered in the US and around 2,000 - 5,000 in Mexico every year, most of these cases are diagnosed in men that have sex with other men (MSM).

Now, the million dollar question is, how is this related to me? Well, first, Im gay, second, I have people that I appreciate and love that have been diagnosed with HIV and third, Im afraid, very afraid. Im a catastrophic thinking guy - I remember once I stopped going to the movies due I believe that way, I would avoid a crossfire - I know its stupid but, thats me - so I tend to think in the worst case scenario in every situation.

But Im upset too, upset of watching such numbers increase, upset of the disease itself since It found its niche in the most popular transmission way which is sex, upset of other gay men (not generally speaking) taking the topic so slightly, upset of me not being able to release such topic.

Not only Im upset, but Im grateful too, grateful of being surrounded of people that cares about me, grateful to the people who has listened to me complaining and releasing my anxiety about the topic, even once one said “I felt like swords crossing my heart when you talk about that”, grateful of being lucky so far, grateful of being afraid and upset because it helps me being alert.

If the HIV topic causes all these emotions to me, so, why talk about it now and not before? Well, I recently watched one interview to this awesome lady (Tina Roth Eisenberg) and one of the things I got from her is that “If something is bothering you, you either do something or let it go”. And since the second option has not work for me - for a long time now - and no therapist seems to please me either - Im very hard with people by the way - well, Im here writing about it, exposing my vulnerability, daring to talk about it, daring for the first time.

Will this help me? I have no idea, but certainly its better than running away. Its time to take the bull by the horns. I need to take action and I have decided to get involve in the topic, instead of just turning around and ignore it. Im checking my options, what, where, how, when are the questions now. The reality is that HIV exists and its here and we have to deal with it regardless if you want to prevent it or live with it.

Javier Azuara

More info? - (US Stats & Mexico Stats)

Create & Share a Business Card in Passbook

While in the #WWDC2015, meeting new developers, recruters, media is imperative, reason why, you will be finding yourself sharing business cards.

I met one developer, who had an unusual way to share his card, and that way was using Passbook, I inmediately asked him to share how he did it and in my time in the conferences, beside putting attention to them, I was working on my own digital card.

Unfortunately, I found myself checking other sources to complete the task, so I decided to compile the information and share it here.

First and most importantly, you will need an apple developer account (this should be no issue anymore due on #WWDC2015, it was announced that there will be no cost to get one). Go a head a create one, then come back.

Passbook technology works around a file which its format is .pkpass, when either the mail or mobile safari detects this file, it will render the pass correctly, once you click on it, it will handle the rest for you (presenting the view to add it into the pass library).

Creating .pkpass file

Before doing anything, lets create a new directory to put all the things we will be creating.

Having said the above. The following image describes the skeleton of the pass.


As you may already saw, we can localize passes creating the appropiated directory structure, but that is something we wont do now. There are 2 files missing on that image, they are the manifest.json file and the actual signature file (which we will create soon).

Now, how is this translated to the actual pass? The following image describes that.


The actual content information resides inside the .json file.


  "formatVersion"         : 1,
  "passTypeIdentifier"    : "<INSERT_PASS_IDENTIFIER>",
  "serialNumber"      : "0",
  "teamIdentifier"        : "<INSERT_TEAM_IDENTIFIER>",
  "barcode" : 
  "message"   : "<INSERT_BARCODE_MESSAGE>",
  "format"    : "PKBarcodeFormatAztec",
  "messageEncoding"   : "iso-8859-1"
  "organizationName"  : "<INSERT_ORGANIZATION_NAME>",
  "description"       : "<INSERT_DESCRIPTION>",
  "logoText"          : "<INSERT_TEXT_THAT_GOES_NEXT_TO_LOGO>",
  "foregroundColor"   : "rgb(1, 0, 0)",
  "backgroundColor"   : "rgb(0, 0, 1)",
  "generic"   : 
  "primaryFields" : 
      "key"       : "name",
      "label"     : "NAME",
      "value"     : "<INSERT_VALUE>"
  "secondaryFields" : 
      "key"       : "position",
      "label"     : "POSITION",
      "value"     : "<INSERT_VALUE>"
  "auxiliaryFields" : 
      "key"       : "email",
      "label"     : "EMAIL",
      "value"     : "<INSERT_VALUE>"
      "key"       : "twitter",
      "label"     : "TWITTER",
      "value"     : "<INSERT_VALUE>"
  "backFields" : 
      "label"     : "EMAIL",
      "key"       : "emailBack",
      "value"     : "<INSERT_VALUE>"
      "label"     : "TWITTER",
      "key"       : "twitterBack",
      "value"     : "<INSERT_VALUE>"
      "label"     : "GITHUB",
      "key"       : "githubBack",
      "value"     : "<INSERT_VALUE>"
      "label"     : "WEB",
      "key"       : "webBack",
      "value"     : "<INSERT_VALUE>"

Remember I mentioned you need an Apple Developer Account, the .json file requires “passTypeIdentifier” & “teamIdentifier”. You can get the second one under Account Information area in the developer portal. The first one will be the next thing to do.

Feel free to play with the values on the .json file, you can change it entirely with the ones you have in mind. Now lest put this on hold and create all the boring stuff we need from the dev portal.

Head to the Developer Portal

Go to Certificates, Identifiers & Profiles in the dev center and click on Pass Type IDs, now add a new one - you should see something like this.


For this example be sure to use the following format “pass.com.yourdomain.appname” as the website mentions. Go a head an register the pass. Once created, go back to the pass.json file and update the “passTypeIdentifier” value with the one you just added.

Click on the recently created ID and you will have the option to edit. Then you will create the certificate to be used. In order to do that, follow the instructions from the dev center. Once you are done, download the certificate and add it into the passbook folder we created at the beginning and do not forget to add it into the keychain too.


Going back to the Pass directory

Early, I did mention we needed to create a manifest.json file, the purpose of this file is to describe what is inside the pass package. Below you will find and example of it.


Where did those weird characters come from? Those characters are their checksums, you can get them using Terminal using the following command (head to the passbook directory using terminal).

openssl sha1 pass.json

The result will be something like this:

SHA1(pass.json)= 6c5791fc47b132fe627c6b5a168b57f22bc1c3a7

Create the file and put it next to the pass.json file. Its obvious you have to do the same with the rest of the files/assets.

IMPORTANT: If you happen to update either the assets or the pass.json file. You need to update the manifest.son file. Do not forget about this.

The other file we need to create is the actual signature. Why do we need a signature? Ask Apple!

In order to do it, we will need the certificate we created before on the dev center. Open KeyChain Access, find the certificate you created following the format “pass.com.yourdomain.appname” and export it as a .p12 file - for this example, I named it pass.p12 - (you will be prompted to add a password - we will use it in a few seconds).

Next, go back to Terminal app and type the following command:

openssl pkcs12 -in pass.p12 -clcerts -nokeys -out passcertificate.pem -passin pass:<INSERT_PASSWORD_HERE>

The result of this command will be a file named passcertificate.pem. Now, lets export the key using the next command and the result will be passkey.pem:

openssl pkcs12 -in pass.p12 -nocerts -out passkey.pem -passin pass: -passout pass:<INSERT_PASSWORD_HERE>

We are almost done, we need one more certificate, this time its WWDR certificate, head to KeyChain Access and look for “Apple Worldwide Developer Relations Certification Authority” and export it as a .pem file - for this example I choose the name WWDR.pem - finally, we have all needed to create the signature file. Head back to the Terminal App and type the following command:

openssl smime -binary -sign -certfile WWDR.pem -signer passcertificate.pem -inkey passkey.pem -in manifest.json -out signature -outform DER -passin pass:<INSERT_PASSWORD_HERE>

This will create a signature file. From here, we just need to zip the files, but lets make sure we have everything, the following image describe what should be on the package.


Simply, select all those files and compress them, replace the .zip file extension to be .pkpass and you will have your pass ready to share.

Sharing your Business Card Pass

There are 2 ways to share your pass, for the sake of this example we will use the email approach. As I mentioned at the beginning, iOS will handle everything if you use Mail or Mobile Safari.

Simply, send you an email to your self or any other people attaching the .pkpass file and if successfull, the apps will render the pass properly. You should see something like this.


Now, you can go even further and use the barcode message to be the URL were people can download the pass when they scanned, you will be resposible to create the endpoint and endup with something like this.


Javier Azuara

WWDC 2015 the Line Experience

WWDC 2015 has just finished and there were a lot of new experiences I got from the event, such as the keynote, the lunch sessions, the after parties, etc, but one among them is with no doubt the so called “Line” experience. For those who does not know what the Line is, its basically, arriving early to get the best seats you can for the keynote presentation.

At the beginning, I was hesitant do it, and I was always avoiding the topic with my friend and coworker Nader. But we reached a moment were we needed to decide if we should do the line or not. In order to make such decision, we stopped in the Moscone center at Sunday at 18:00. The first thing we saw was a bunch of unknown people already doing it (around 25, most of them very young guys).

At that moment we knew those guys were not playing, the worst thing its that we were not prepared to do such task. Then we meet Kevin (the CEO of https://en.neurs.com/ - check the website), we ten head to Target City (just next to the Moscone Center), in there we packed some beach chairs, water bottles, some monster beverages and blankets - yes, the night was going to be cold - and went back.

Even doing the line, I was completely thinking - “Im very old for this” - followed by - “I feel embarrassed doing this” - but I would not deny very deeply inside me I was still an Apple fanboy who was willing to commit and get the best seat possible.

Time was passing and unknown people became known people, like Jupiter - who is from Toronto and had the scholarship to attend the event, working on a watch kit app -, Douglas - very serious guy, working on an app to add parental control for kids -, several guys from Australia which I do not remember their names - I apologize for this -, Daniel Di from Italy - who gave me his business card as a pass in Passbook -, among other guys, but the one who really impressed me was Clint Wilde, who is just 18 years old and already has his app feature on the app store “Splash Canyons” on the game category, at that age I was doing something completely different, I could not resist and felt jealous about the fact.

Splash Canyons

Several people walking at the middle of the night started to: “Why are you doing this?” - one guy said - “What is this line for?” - other people in their cars were asking - We even got food for free, rumors are that the Apple was delivering the food to the people on the line, but im not sure about this.

Undoubtedly, something inside me was emerging, and that was the joy of pursuing what you want, following your plan, completing the idea you have, overcoming the obstacles your project might have. Something I lost years ago, I started surrender to first big obstacle my next billionaire idea had. I stopped researching deep enough to find a solution. I always say its not about the idea itself but the execution of it. I guess I need to follow such statement and just not reproduce it like a copy machine.

While these conversations were happening, the line was getting bigger, from 1 block length to 2, 3 & 4 blocks, by 05:00 I stopped putting attention to it. I saw community, people from the same country were creating their own group, people from Germany, Brazil, Australia, Italy, Argentina were the accents and languages I did recognize. Sadly, at that time, I did not see any group from Mexico (not until the Bash were I found Mexican people).

By 07:00 - 07:30, Moscone Center opened their gates and as you might imagine, this is were the game started, people ignored the line and started to walk or running. We then were directed to a new line making several stops to reach the 3rd floor, while this was happening, new people was in the first at the front, but I continued to see familiar faces. We wait and saw how the press had special treatment to reach the Presidio (An area inside Moscone where the Keynote is). I did not like this treatment, I felt like cattle, I felt disappointed, used and most importantly, I needed to go to the bathroom but I was unable to do it. Apple did not hesitate to start taking video and pictures, they wanted the best picture, capture the excitement, but we were tired, exhausted, we just wanted to get to the holy grail.

We finally reach the Presidio, even when we were told not to run, people did it, like if they were running for their lives, chased by zombies. People who we just met, changed behaviors like in a jungle, but instead of survive, we wanted the best seats. We did it, we got the seats in the middle column, 4th row. We were happy, we knew something was coming and we get what we wanted.

Javier Azuara

PayAnywhere 3.1

Yesterday, the company I work for just released PayAnywhere 3.1 which contains a full redesign on the iPhone version, plus a parity feature with the previously released iPad version in 3.0.

Among the features, you can find:

  • Full iPhone redesign,
  • Multiple prices per item,
  • Item Modifiers & Discounts per Item,
  • Discounts per cart has been updated,
  • Support for displaying Split Tender receipts,
  • Easy reporting,
  • And finally, favorites items.

Be sure to check the app here.

PayAnywhere – Accept Credit Cards With PayAnywhere's Mobile Credit Card Reader

You will require an account with PayAnywhere to take any payments, but test drive will showcase you all features.

Javier Azuara

New Business Cards

I recently decided to print a new set of business cards and here is the design I went with.

Edit: I did a huge mistake and put the wrong twitter account T_T. The real account is @javitoazuara

Mi Experiencia Con El Fitbit [Spanish]

Recién pillé el Fitbit Charge HR, el cual es un brazalete que continuamente mide tus latidos cardiacos y aun conserva otras funciones como el podometro, la habilidad de medir tu calidad de sueño, cronometrar ejercicio, entre otras.

La pregunta del millón de dolares es: Por qué gaste $150.00 en este aparato? Quiero motivarme cuando hago ejercicio - pensé - Quiero tener retroalimentación en tiempo real - añadí.

La realidad es que:

  • Ya tengo el número real de calorías que quemo al día. Al principio la app de Fitbit (sin tener el brazalete) - usando mi edad, peso y género - calculaba un estimado de 1,835 calorías diarias. Cómo puedo bajar de peso si al menos ingiero arriba de 2,000 calorías - pensé - pero después de usar el Fitbit, el número real fue 3,300 - 3,600 calorías (haciendo o no ejercicio).

  • Siempre he odiado usar la caminadora, escaladora y bicicleta por al menos 30 minutos, acabar agotado y no saber que hice. Con el Fitbit, tengo un estimado real de las calorías que gaste en el ejercicio.

  • Puedo ver de acuerdo a mi ritmo cardiaco (durante el ejercicio), si debo incrementar / decrementar la intensidad para mantenerme en la zona de cardio (nunca he podido mantenerme en la zona de quema grasa, puesto que tendría que casi caminar). Ahora puedo aguantar jornadas más larga corriendo.

  • Al ir a la cama, es muy conveniente no tener que hacer nada más que dormir - a comparación de otras apps existentes en el iPhone - para poder medir la calidad del sueño.

  • Algo no tan bueno es que debo recargar la batería al menos una vez al día, cosa que es diferente en la pagina oficial donde se menciona que durá al menos 5 días. Igual, se debe entender que durante el ejercicio las pulsaciones son tomadas cada minutos y durante el día cada 5 minutos.

  • Para mi infortunio, solo tengo 3 personas en mi red que usan Fitbit, así que la motivación por esa parte es casi nula.

  • Es tedioso tener que registrar lo que comes (igual el agua que tomas) en la app. Aunque al hacerlo tienes un estimado gráfico de cuanto entra y sale (hablando en calorías).

  • Me agrada ver los gráficos generados por la app y el sitio web, sobre mi progreso, inclusive puedo ver en que zonas estuve durante mi ejercicio (pesas o correr). Aunque me gustaría poder exportar esos datos a Health app de Apple.

En todo caso, al final de día lo que importa es que, usando o no el brazalete, hagas ejercicio y conozcas más de tu cuerpo y si te motivas con aditamentos como el Fitbit que mejor.