Browsed by
Author: Emilie Chung

Learning How to Code: a New Hope for Burmese Refugees?

Learning How to Code: a New Hope for Burmese Refugees?

Toxicode is proud to share with you the adventure of our teammate, Pierre Usselmann, who is currently in Thailand teaching Burmese refugees how to code.

What are the origins of this project and what’s going to happen?

Origins of the project

It all started when I shared with the rest of our team my experience as a volunteer teaching English in a Burmese refugee camp on the Thai border.  My story immediately caught Pierre’s interest and made him want to get involved in a humanitarian project linking volunteering and programming. First, I put him in touch with one of my former students, a refugee living in the camp who wanted to learn how to code. Pierre gave him an online training and sent him simple assignments to carry out every week.

After the success of this first experience, Pierre decided to take it a step further. One week ago, after getting in touch with several local NGOs, he bought a plane ticket to Thailand. From the 4 NGOs that had answered our request, we selected the one who could fulfill the following pre-requisites : providing computers and a screen during lessons as well as accommodation and an internet connection for Pierre’s personal and professional needs.

Concept behind the project

Pierre’s idea was simple: Why not take it a step further and go directly there to train people who could really use the help? The Burmese refugees located in Thailand seemed to be a population that could benefit from our help to learn how to code.

To briefly sum up the history of Burmese refugee camps in Thailand, they were gradually opened after a military junta took over power in Burma in the 60s. Over the decades, these camps saw their population increase with the arrival of  several waves of refugees. Nine camps were set up in Thailand along the border with Burma, from the North to the West of the country. Each of them counted up to 20 000 refugees depending on the years, all of them people fleeing oppression by the military junta. The most oppressed and poorest of them are usually part of one of the many ethnic minorities who live in Burma. The Thai government have tolerated the development of these camps but imposes strict rules on the comings and goings of refugees outside of the camps. They can be submitted to severe sanctions if they leave without a specific authorization. Some refugees have been living in one of the camps for over ten or even twenty years. Children usually have access to basic education until the end of high school thanks to the support of local and international NGOs, but teenagers and young adults often find themselves at a loose end, with no future prospects to access higher education or find a job.

Thanks to this project, Pierre wants to help young adult refugees find a job that they could even be doing inside a refugee camp and that would provide them with a signficant income.  Learning how to code means learning skills that will get you a job.  The camp close to which he is teaching is mostly populated by the different ethnic minorities of the Karen State, who are allowed to walk from the camp to the village to follow courses with the volunteers and local teachers there – or rather, let’s say that the Thai authorities turns a blind eye on the comings and goings of students going to the village.

This project is also very consistent with the spirit and way of thinking we try to cultivate at Toxicode : a project giving access to a good training course, providing practical skills and real professional prospects to an underprivileged population. It also matches our way of doing things the best we can with what we have when we are working on Toxicode projects.

And now?

After spending a few days in Bangkok, Pierre took another plane to Chiang Mai in the North of Thailand, then a bus to Mae Hong Son, 350 kms further, finally reaching the village of Nai Soi, 4 kms away from the Burmese border. The NGO we selected is the Karenni Community College (KnCC), which provides refugees with the equivalent of a 2 year college undergraduate program. Some of the staff came to pick Pierre up and drove him to the village where he just started teaching. He is living with several other volunteers in the premisces of a Karen newspaper ( which provides daily news about the Karen state and any topic related to the Karen community. He sends me regular updates on his experience. So far, he seems delighted by his students’ fresh enthusiasm.

Let’s congratulate him for this human initiative and wish him good luck with his teaching!!!

What’s coming next?

I will post an interview of Pierre on our blog after he comes back to France, to share with you his impressions on the end of this adventure.

For more information and to support KnCC, write a comment under this post or go to the KnCC website:

photo - copie

Google Analytics for Javascript Games

Google Analytics for Javascript Games

When creating your own  HTML5 game, I’m pretty sure you already add the Google Analytics script on your webpage to know how many people are playing your game, and other useful data such as their country of origin, language and which browser they use. Do you know that by using the  Google Analytics API , you can do way more than that ?

We’re bringing you now all the best tips to spy on your players like a real Big Brother. Just read the following article…

What sort of data can I collect ?

Literally anything that your user did that can be given a value as a chain of characters. For example: his current level, number of Game Overs, number of clicks, how long he spent on the tutorial, the level of difficulty, whether the sound was activated or not….

Remember to keep it simple, though. Google Analytics won’t replace your database. For example, it’s not worth saving the whole inventory in a variable, because if you do that, you won’t be able to use filters on your values, as you could do with simple values.

You can also record events (your player winning against a big boss or ending a game, etc.). The Google Analytics website features allow you to visualize statistics of the frequency of these events. You can for example check if adding a new big boss in the game on a specific day increases the number of game overs, or not.

Finally you can segment your players by  giving them specific tags. For example, you can tell Google that a specific player has paid his subscription, has already bought an In-Game content, or is a new player. Or that he hasn’t visited the page for over a month.

By segmenting your players, you can then organize them on the Google Analytics interface. You’ll be able to see what effect adding a new boss had BOTH on newcomers AND on old-time players.

All these tools will help you make your game more fun, more addictive or even more profitable, depending on what you are hoping to achieve.


Let’s get technical

First, you have to know that there are 2 versions of the Google Analytics APIga.js and analytics.js. The one we are referring to in this article is the second version (and the most recent). It allows you to declare events and variables on the fly, instead of having to declare them from the web interface. It also loads asynchronously.

Here’s an example of script that you can include on your page.

(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),

ga('create', 'UA-XXXX-Y', 'auto');
ga('send', 'pageview');

The first,very condensed part, is a bit like a voodoo made-in-Google spell, that allows you to declare the ga function and start loading the Google Analytics script. Once the script is loaded, it replaces ga but also launches the series of methods that could have been called in the meantime. Anyway, no need to do any callback once the file is loaded, everything is done transparently.

Next, the first line of the second paragraph initializes Google Analytics with your user account (you have to put your ID instead of UA-XXXX-Y, which is only a placeholder). The third parameter, ‘auto’, refers to the parameters that you can give your Tracker Analytics.

For example, you can stop data from being sent if the domain is not the right one (say,  to prevent data being sent on your development server). More information here.

The second line of the second paragraph sends a pageview. This is Google Analytics’  by default function. It can also include a third parameter, to configure the settings for the pageview.

For example, you can use it to override the url you are sending, to know if the player is in your game menu, in the options or the inventory section. Remember to call back this command each time you want to send a pageview value.

Sending events

To send events, just use the send method:

ga('send', 'event', 'playerGotItem', 'diamondSword', 5);

The first  “send” parameter is the same as the pageview sending methodIn fact, it’s the name of the method used for all data transfer on your  Analytics Tracker.

The second parameter, “event“, shows that you are sending an event, and not a  pageview, for example.

The third parameter, “playerGotItem” represents in this context the name of the event category. If you are dealing with a game, consider it like the name of the event. You can replace it by any other name you want to choose.

The fourth parameter is generally the name of the event. In the case of a game, it’s more interesting to consider it like a value. In the current example, I’m saying that the player won the diamond sword. This is an optional parameter.

The last parameter is usually the number value of the event. You can use it (or not, since it is optional) to stock additional information. For example, during a Game Over, you can stock the current level of the player. Since it is a number value, it can be used via Google Analytics to make graphs.


Use dimensions to segment your users

To segment your users (say, for example, premium / non premium), the best way is to use dimensions. In your case, it could be premium, non-premium, beginner-user, advanced-user…

For each dimension, define an index from 1 to 20 (or from 1 to 200 if you are a Google Analytics paying member), then declare your dimension using the following script:

ga('set', 'dimension5', 'premium-user);

In this example, you are saying that the user is a premium user, which puts him in dimension 5.

You can then organize your users according to these various criteria in the Google Analytics interface.

That’s all for today, folks. Please feel free to post your tips, questions, corrections or comments.