Skip to content

Webmakering in Belize

Just a few months ago, I was approached by fellow Mozillian Christopher Arnold about a very interesting and fairly ambitious idea. He wanted to organize a Webmaker-like event for kids in a somewhat remote area of Belize. He had made some friends in the area who encouraged him to embark on this journey, and he was on board, so it was up to me to decide if I wanted to join in.

As a Costa Rican, I’ve always been very keen on helping out in anything that involves Latin America, and I’m especially motivated when it comes to the easy to forget region of Central America. Just last October I participated in ECSL, a regional free software congress, where I helped bootstrap the Mozilla communities in a couple of Central American countries. I was hoping I could do the same in Belize, so I accepted without much hesitation. However, even I had to do some reading on Belize, since it’s a country we hear so little about.  Its status as a former British colony, English being its official language, and its diminutive size even by our standards contributes to its relative isolation in the region. This made this event even more challenging and appealing.

After forming an initial team, Christopher took on the task to crowdfund the event. Indiegogo is a great platform for this kind of thing and we all contributed some personal videos and did our fair share of promoting the event. We didn’t quite reach our goal, but raised significant funds to cover our travel. If it isn’t clear by now, I’ll point out that this wasn’t an official Mozilla event, so this all came together thanks to Christopher. He did a fantastic job setting everything up and getting the final team together: Shane Caraveo, Matthew Ruttley and I. A community member from Mexico also meant to attend, but had to cancel shortly before.

Traveling to our venue was a bit unusual. Getting to Belize takes two flights even from Costa Rica, and then it took two more internal flights to make it to Corozal, due to its remoteness. Then it took about an hour drive, including a ride on a hand-cranked ferry, to reach our venue (which was also our hotel during our stay). Years of constant travel and some previous experience on propeller planes made this all much easier for me.

Belize from a tiny plane
I made it to Corozal, as planned, on December 28th. I could only stay for a couple of days because I wanted to make it back home for New Year’s, so we planned accordingly. I would be taking care of the first sessions, with Shane helping out and dealing with some introductory portions, and then Matthew would arrive later and he and Shane would lead the course for the rest of the week.

Part of our logistics involved handing out Firefox OS phones and setting up some laptops for the kids to use. It didn’t take long before things got… interesting.

Charging 6 Firefox OS phones
Having only a couple of power strips and power outlets made juggling all of the hardware a bit tricky, and since our location was a very eco-friendly, self-sustaining lodge, this meant that we couldn’t leave stuff plugged overnight. But this isn’t really the “interesting” part, it just added to it. What really got to us and kept Shane working furiously in the background during the sessions was that the phones had different versions of Firefox OS, none of them very recent, and half of them were crashing constantly. We managed to get the non-crashy ones updated, but by the time I left we had yet to find a solution for the rest. Flashing these “old” ZTE phones isn’t a trivial task, it seems.

Then Monday came and the course began. We got about 30 very enthusiastic and smart kids, so putting things in motion was a breeze.

First day of classA critical factor that made things easy for me was attending a Teach The Web event that held in Costa Rica just a couple of weeks earlier. This event was lead by Melissa Romaine, and to say that I took some ideas from it would not be doing it justice. I essentially copied everything she did and it’s because of this that I think my sessions were successful. So, thanks, Melissa!

So, here’s how Melissa’s my sessions went. I showed the kids what a decision tree is and asked them to draw a simple tree of their own, in groups, for a topic I gave each group. After that I showed them a simple app created in Appmaker that implements a decision tree as a fun quiz app. They were then asked to remix (hack on) the example application and adapt it to their own tree. Then they were asked to share their apps and play around with them. This all worked out great and it was a surprisingly easy way to get people acquainted with logic flows and error cases.

Kids hacking away

The next day we got back to pen and paper, this time to design an app from scratch. We asked everyone to come up with their own ideas, and then grouped them again to create wireframes for the different screens and states their apps would have. I was very happy to see very diverse ideas, from alternatives to social networking, to shopping, and more local solutions like sea trip planning. Once they had their mockups ready, it was back to their laptops and Appmaker, to come up with a prototype of their app.

Unfortunately, my time was up and I wasn’t able to see their finished apps. I did catch a glance of what they were working on, and it was excellent. The great thing about kids is that they put up no resistance when it comes to learning new things. Different tools, completely new topics… no problem! It was too bad I had to leave early. Matthew arrived just as I was leaving, so I got to talk to him all of 30 seconds.

But my trip wasn’t over. Due to the logistics of the 4 flights (!) it takes to go back home, I couldn’t make it back in one go, so I chose to spend the night of December 30th in Belize City, in the hopes of finding people to meet who were interested in forming a Mozilla community. I did some poking around in the weeks leading to the event, but couldn’t find any contacts. However, word of our event got around and we were approached by a government official to talk about what we were doing. So, I got to have a nice conversation with Judene Tingling, Science and Technology Coordinator for the Government of Belize. She was very interested in Webmaker and the event we did, and was very keen in repeating it on a larger scale. I hope that we can work with her and her country to get some more Webmaker events going over there.

On my last day I finally got some rest and managed to squeeze in a quick visit to Altun Ha, which is fairly small but still very impressive.

Mayan ruins!

I’ll wrap up this post with some important lessons I learned, more as a note to self if I go back:

  • While the official language is English, a significant amount of people living outside the city centers speak Spanish in their homes (school is taught in English, though). In the cities Spanish is a secondary language at best.
  • When in doubt, bring your own post-its, markers, etc.
  • Tools that require accounts pose a significant hurdle when it comes to children. It’s not a good idea to have them set up accounts or email addresses without parental consent, so be prepared with your own accounts. I ended up creating a bunch of fake email addresses with spamgourmet so I could have enough Webmaker accounts for all computers (Persona, why so many clicks??).
  • If you’re ever in a remote jungle area, wear socks and ideally pants. Being hot is truly insignificant next to being eaten alive by giant bugs that are impervious to repellents. Two weeks later I still have a constellation of bug bites that prove it.

Many thanks to Christopher for setting all of this up, our hosts Bill and Jen at the Cerros Beach Resort, Shane and Matthew for all the hard work, Mike Poessy for setting up the laptops we used, and everyone else who helped out with this event, assistant teachers and students.

Tagged , , , , , ,

Interview with Extension.Zone

I was recently approached by Extension.Zone for an interview. I was pleasantly surprised to see a new website dedicated to browser-agnostic reporting of add-ons. Then I was just plain surprised that .zone is now a thing.

Anyway, the interview is up here. There are some interesting questions about what makes the Firefox add-on ecosystem different than others, and what I think is an under-explored area in add-on development.

Tagged , , ,

Taller de Firefox OS en Panamá

Me invitaron a dar una charla de desarrollo para apps en Firefox OS este fin de semana, en Ciudad de Panamá. El evento fue organizado por CascoStation, un coworking ubicado en un área muy interesante de la ciudad. Harold de CascoStation hizo un trabajo excepcional para asegurarse que todo saliera bien y todos estuviéramos muy cómodos.

El taller fue similar a los que he dado en el pasado, con algunas mejoras gracias a las lecciones aprendidas. La charla introductoria se puede encontrar aquí: Introducción a Firefox OS. Algunas de las páginas no tienen mucho sentido sin la charla, pero los vínculos son útiles para empezar a trabajar con Firefox OS.

La asistencia fue buena, alrededor de 20 personas. Lo más importante es que la mayoría tuvo suficiente interés para jugar un rato con Firefox OS durante el taller. Tomamos una foto grupal, pero ya varios se habían ido.

Foto de grupo al final

También nos hicieron una nota en El Espectador de Panamá, donde se puede apreciar un poco el ambiente del taller.

Una sorpresa muy grata es que en CascoStation trabaja un artista 3D muy habilidoso, que además aplica sus talentos para crear impresiones 3D con un nivel de detalle espectacular. Él nos creó una figura de Firefox OS que no podría haber quedado mejor.

Modelo de la figura de Firefox OS Figura de Firefox OS

Espero que podamos ver más de estos en el futuro :).

Por último, pude conocer a algunos de los miembros de la nueva comunidad de Mozilla Panamá (y en Facebook). Pudimos hablar sobre los lanzamientos en América Central y los retos que tenemos adelante. Esperamos tener noticias de Costa Rica muy pronto.

La experiencia estuvo excelente, y esperamos ver de nuevo a nuestros amigos panameños en unas semanas para el Encuentro Centroamericano de Software Libre 2014.

Tagged , , , , ,

The complex AMO review process

The add-on review process on AMO is fairly complicated, and can get very overwhelming if you need to look at it close enough that you must understand file and add-on statuses. AMO admins, devs, and reviewers are usually the ones who have to worry about this stuff and there aren’t good docs for it.

Since the issue popped up again today, I decided to take a few minutes to create a chart that explains the AMO review cycle from a file and add-on status perspective. If you think this chart is pretty crazy, you should keep in mind it’s a simplified view of the process. It doesn’t take into account developers deleting versions of marking their add-ons as inactive, and a few repetitive connections were left out. Still, it should give a good idea of how add-on and file statuses interact during the review process, and should help admins figure out which status means what (to add more confusion to the mix, AMO has old unused statuses, as well as others that are only used in Marketplace).

Here’s the chart without the notes:

Review cycle chartFor the real deal, check out the doc.

Is this complexity necessary? Probably. We have two review levels because it allows us to list polished add-ons as well as experimental ones, giving developers and users more flexibility and choice. This in turn makes AMO more diverse and generally a better option than self-hosting.

Tagged , , ,

Mozilla Hispano Labs Blog Coordination

All of us Spanish-speaking Mozillians need to take two roles: one with our local community and one with Mozilla Hispano. Mozilla Hispano is a meta-community that allow us to share a whole bunch of knowledge and experience in our first language, which is pretty unique within the Mozilla world.

So, while I help out with local events in Costa Rica, I also collaborate with Mozilla Hispano in various ways.

This year I volunteered to help with the Mozilla Hispano Labs blog, what I consider to be a very important communication channel to developers who can eventually join us. In this blog we regularly publish technical articles, translated or original, related to Mozilla projects and the open web.

MH LabsIt too some time, but the blog has now picked up a good publication pace. Just recently we were publishing roughly one article per week, and this month it looks like we’ll have twice as many. We have 3 regular writers and a few new ones who look like they might stick around.

At the moment most of the articles are translations, and this is the process we follow:

  1. Identify a good article in English.  Every now and then I’ll comb articles published at Mozilla Hacks and choose the best recent ones. Sometimes there will be interesting pieces that come up from other sources.
  2. Create a translation task in our Teambox tool. This is an internal task management tool we use. Anyone interested in helping out just has to write to our mailing list in order to gain access to the tool.
  3. A volunteer chooses the task from the available options and takes it.
  4. The translation is delivered, usually in the form of a Google Doc. Experienced writers get access to the Mozilla Hispano WordPress so they can deliver it as a draft post.
  5. La translation is reviewed (usually by me) and some cosmetic fixes are done before publishing it.

This role has been very useful for me. It keeps me focused because there are always new articles to review, and at the same time it doesn’t require too much time (reviewing and publishing an article takes about an hour).

The biggest challenge I’ve run into is to keep enough topic diversity. There was a moment when most articles were about Firefox OS app development. That’s not necessarily bad, given that it’s new and popular, but I think we need to cater to various interests. It’s also been complicated to get original material to publish. Most developers don’t have much time to write about what they do (myself included), which is unfortunate. I’ll try to make more contributions of my own and try to lead with the example.

Overall it’s been a great experience, and I’m glad to be in charge of this little corner in the MH world.

Tagged , , ,

Coordinación del blog de Mozilla Hispano Labs

Todos los voluntarios de Mozilla que hablamos español debemos cumplir dos roles: uno con nuestra comunidad local, y otro con Mozilla Hispano. Mozilla Hispano es una comunidad de comunidades, que nos permite compartir muchísimo conocimiento y experiencia en nuestra primera lengua, lo cual es bastante único en la comunidad Mozilla.

Mientras colaboro con eventos locales como los próximos talleres de extensiones y apps en Costa Rica, por otro lado participo en Mozilla Hispano de diversas maneras.

Este año me ofrecí para ayudar con el blog de Mozilla Hispano Labs, un canal que yo considero muy importante para comunicarnos con los desarrolladores y obtener su colaboración. La idea del blog es publicar regularmente material técnico, traducido y original, que tenga que ver con proyectos de Mozilla y la web abierta en general.

MH LabsTomó tiempo, pero ahora el blog tiene muy buen ritmo de publicaciones. Hasta hace poco estábamos publicando más o menos un artículo por semana, y este mes parece que vamos a tener el doble. Tenemos tres redactores regulares, y ahora hay varios que están empezando y podrían convertirse en regulares.

Por el momento la mayoría de los artículos son traducciones, y el proceso que seguimos es el siguiente:

  1. Se identifica un artículo en inglés que se considere bueno para el blog. De vez en cuando voy al sitio de Mozilla Hacks (altamente recomendado) y escojo los mejores artículos recientes. A veces también aparecen artículos buenos de otras fuentes.
  2. Se crea una tarea de traducción del artículo en el Teambox. Esta es una herramienta interna para darle seguimiento a las tareas. Cualquiera que desee colaborar solo tiene que escribir a la lista de correo para pedir acceso.
  3. Algún colaborador escoge la tarea entre las opciones disponibles y se la asigna.
  4. La traducción se entrega, normalmente usando un Google Doc con la traducción. A los redactores que ya han hecho aportes se les da acceso al WordPress de Mozilla Hispano para que puedan hacer un borrador y ponerlo como pendiente de revisión.
  5. La traducción se revisa (eso normalmente lo hago yo), se le corrigen asuntos cosméticos como imágenes y formatos, y se publica.

Este rol me ha servido mucho porque me mantiene enfocado, dado que siempre hay artículos por revisar, pero al mismo tiempo no requiere mucho tiempo (revisar y publicar un artículo toma alrededor de una hora).

El mayor reto que me he encontrado es tener una alta diversidad de artículos. Hubo un momento donde casi todos estaban dedicados al desarrollo de apps para Firefox OS. No es que sea algo malo, dado que es algo muy nuevo y popular, pero creo que es necesario apuntarle a distintos intereses. También ha sido complicado obtener material original. La mayoría de la gente que se dedica a desarrollar no tiene mucho tiempo para escribir sobre lo que hacen, lo cual es lamentable (me incluyo en la lista). Voy a tratar de hacer más aportes propios; eso tal vez inspire a otros a seguir el ejemplo.

Volviendo a lo local, también ha sido difícil conseguir gente en Costa Rica que quiera colaborar con la comunidad, en cualquier capacidad. Si hay algún interesado en contribuir con el blog de Mozilla Hispano Labs, les recuerdo que solo hay que escribir a la lista de correo, pero también me pueden contactar dejando un comentario aquí, o por Facebook o Twitter.

Tagged , ,

Software Freedom Day 2013 – Costa Rica

Today we’re at the Sede Interuniversitaria, Alajuela, celebrating Software Freedom Day. The event is organized by the Costa Rican Free Software Network.

We held a Firefox OS App Development workshop earlier today, which was very well received. We had a full lab with over 20 participants. Due to the great response, we’re running another workshop later today, at 4pm. We will give away a Firefox OS t-shirt to the best demo that comes out of the session.

Logo Firefox OS

The workshop consists of a quick overview of the Firefox OS Simulator, and a simple stopwatch app. There’s no presentation, just a simple guide (in Spanish, click here for the English version) that gives a quick primer on app development, as well as some links and references. We then lets students run with their creativity and modify the example app, or create a new one.

It’s very cool to demonstrate how easy it is to work with Firefox OS apps. We have very good docs and samples, so people can hit the ground running and play around without too much setting up.


We have some plans for events later this year, which is great because the Mozilla Costa Rica community has been dormant for quite a while.

Tagged , , , , ,

Día de la Libertad del Software 2013

Para celebrar el Día de la Libertad del Software estamos hoy en la Sede Interuniversitaria de Alajuela. El evento fue organizado por la Red Costarricense de Software Libre.

Acabamos de salir del taller de Desarrollo de Apps para Firefox OS, el cual tuvo excelente asistencia (se llenó, alrededor de 20 participantes). Debido a la buena respuesta, vamos a dar un taller adicional a las 4pm. Obsequiaremos una camiseta de Firefox OS al que nos muestre la mejor aplicación al final del taller.

Logo Firefox OS

El taller consiste en un vistazo rápido del Simulador de Firefox OS y una aplicación sencilla de cronómetro. No hay presentación, sino una simple guía donde tenemos un resumen de cómo crear aplicaciones, y vínculos a ejemplos y referencias. Luego dejamos a los estudiantes para que apliquen su creatividad a la aplicación ejemplo, o hagan una propia.


Están todos invitados al taller en la tarde. Sino esperamos organizar más actividades en lo que queda del año. Estén pendientes de nuestros anuncios en las redes sociales.

Tagged , , ,

Make your add-on support Android in 4 easy steps

As you may know by now, we’re running an add-on developer contest called Amp Your Firefox. We’re very excited about it and there are various categories you can compete in, but we especially care about the mobile categories. We want to grow our collection of add-ons for Android, so that Android users can enjoy the fully customizable experience that is Firefox.

I have been working on making many of my add-ons Android-compatible (alas, I don’t qualify for the contest, being both an employee and a judge!). So I wanted to give you a quick primer on how easy it is to convert add-ons or create new ones that work for Android, from the perspective of someone who has already worked on desktop add-ons.

  1. Add Android compatibility to your manifest. That means supporting <em:id>{aa3c5121-dab2-40e2-81ca-7ea25febc110}</em:id> in your target applications, and adding <em:bootstrap>true</em:bootstrap> to make it restartless.
  2. Set up your bootstrap.js script. This replaces a good chunk of your overlay. This script is responsible for setting up and then clearing any UI elements that you want to add, and running any startup scripts. The chrome.manifest file is loaded normally, so any additional XUL, locale files and CSS are also loaded. Keep in mind that add-on UI on Android is pretty much limited to the content area, but you can still load XUL pages using chrome or about URLs. XPCOM and JS Modules are pretty much the same.
  3. Set up your bootstrap.js script, like, for real. It’s likely you want your add-on to work both for Android and desktop, so your bootstrap script should handle multiple windows well and clean up after itself. Mossop wrote a great post with sample code you can reuse to make sure you’ve covered your bases during install, uninstall, and windows opening and closing.
  4. Read the docs! Should this be the first step? … maybe, what do I know. You can find everything you need here: Extensions for Android. You’ll especially want to get acquainted with the NativeWindow object, for Android-specific UI, and the BrowserApp object, which is sort of the replacement of the gBrowser object / <tabbrowser> element.

I was surprised at how easy it was to create add-ons that work on Android, and to port some of the ones I had already created. Userscript-type add-ons work very well because they generally don’t need UI outside of the content, so porting my AMO Admin Assistant add-on was pretty much trivial. More UI-heavy add-ons like Remote XUL Manager and Click-to-Play Manager required more thought. They both open a XUL window, which I ended up converting into an about page in the mobile version. I also created the Mobile Installer add-on exclusively for Android, which is more of a sample add-on I made for a talk, but uses more of the Android-specific APIs in NativeWindow. It’s also a nice little tool that makes it easier to install XPIs after you’ve copied them to your device.

All of the add-on links above point to Github, in case you’re interested in looking at their code and using some of it on your own add-ons. I hope this motivates you to give Android add-ons a try, and step up to the challenge in Amp Your Firefox. All you need is to submit your entry and have your add-on approved on AMO to win an awesome t-shirt, so I really don’t know what additional motivation is needed ;).

If you have any questions about Android add-ons, fire away in the comments.

Tagged , , , , , – present and future

The extension is more than four years old today. I created it with coworker Jose Enrique Bolaños to submit it to the Extend Firefox competition. It was a great product, if I can say so myself. It won the Best Music add-on prize and garnered a great deal of users and good reviews at the time.

Unfortunately, the service has changed a lot throughout the years, becoming more closed to the public with every iteration. When we created this add-on, radio streaming was available anonymously to everyone around the world. Today, only paying customers can access this service. This has lead to us becoming less and less interested in adding features and even maintaining it.

So, while my interest in the project is minimal, I still reply to support email and try to fix it whenever it is broken in a significant way. I think we did a good job with, because it has required very little maintenance in the past couple of years, with only 6 minor bug fix releases in 2 years, including today’s release. Yet, there are plenty of rough edges by now, and the day will come when something will break in a way that takes too much work to fix, and I doubt we’ll do anything about it.

I decided to move the sources to GitHub, to make them a bit easier to maintain. The project had been hosted at SourceForge and its sources managed with SVN all these years. And, while I think SVN works well for small projects like this one, GitHub’s design is pure genius and sufficient for me to deal with an extra layer of indirection when pushing code.

So, is on life support, but other exciting projects will come and supersede it. It was a cool thing to work on, and its codebase has been very useful to me across the years. I’m happy to revisit its code a couple times a year, but I’m even happier starting new stuff.

Tagged , , , , , ,