This post is part of a series of blog posts outlining Pontoon development in 2014. I’ll mostly focus on new features targeting translators. If you’re more interested in developer oriented updates, please have a look at the release notes.
Some new features have been added to Pontoon, some older tools have been improved, all helping translators be more efficient and make translations more consistent, more accurate and simply better.
History tab displays previously suggested translations, including submissions from other users. Privileged translators can pick approved translation or delete the ones they find inappropriate.
The next tab provides automated suggestions from several sources: Pontoon translation memory, Transvision (Mozilla), amagama (open source projects), Microsoft Terminology and machine translation by Bing Translator. Using machinery will make your translations more consistent.
Pontoon reviews every submitted translation by running Translate Toolkit pofilter tests that check for several issues that can affect the quality of your translations. Those checks are locale specific and can be turned off by translator.
Some pieces of strings are not supposed to be translated. Think HTML markup or variables for example. Pontoon colorizes those pieces (called placeables) and allows you to easily insert them into your translation by clicking on them.
Are you a developer, interested in Pontoon? Learn how to get your hands dirty.
Mozilla patcht 10 beveiligingslekken in Firefox 35
Mozilla heeft een nieuwe versie van Firefox uitgebracht waarin tien beveiligingslekken zijn verholpen, waarvan vier zo ernstig dat een aanvaller het onderliggende systeem in het ergste geval volledig kon overnemen als de gebruiker een kwaadaardige of ...
Software-update: Mozilla Thunderbird 31.4.0
Mozilla Thunderbird logo (90 pix) De Mozilla Foundation heeft versie 31.4.0 van Thunderbird uitgebracht. Mozilla Thunderbird is een opensourceclient voor e-mail en nieuwsgroepen, met features als ondersteuning voor verschillende mail- en newsaccounts, ...
Valgrind support on Yosemite has improved significantly in the past few months. It is now feasible to run Firefox on Valgrind on Yosemite. Support for 10.9 (Mavericks) has also improved, but 64-bit Yosemite remains the primary focus of support work.
For various reasons, MacOS is a difficult target for Valgrind. So you’ll find it little slower, and possibly more flaky, than running on Linux. Occasionally, the MacOS kernel will panic, for unknown reasons. But it does work.
Full details of running Firefox on Valgrind on Yosemite are at https://developer.mozilla.org/en-US/docs/Mozilla/Testing/Valgrind. For serious use, you need to read that page. In the meantime, here is the minimal getting-started recipe.
First, build Valgrind. You’ll need to use the trunk, since Yosemite support didn’t make it in time for the current stable (3.10.x) line.svn co svn://svn.valgrind.org/valgrind/trunk valgrind-trunk cd valgrind-trunk ./autogen.sh && ./configure --prefix=`pwd`/Inst make -j8 && make -j8 install
Make the headers available for building Firefox:cd /usr/include sudo ln -s /path/to/valgrind-trunk/Inst/include/valgrind .
Now build your Firefox tree. I recommend a mozconfig containing
And run, being sure to run the real binary (firefox-bin):/path/to/valgrind-trunk/Inst/bin/valgrind --smc-check=all-non-file \ --vex-iropt-register-updates=allregs-at-mem-access --dsymutil=yes \ ./objdir/dist/Nightly.app/Contents/MacOS/firefox-bin
Mozilla startet Science Lab Fellowship Program
Vor 18 Monaten hatte Mozilla das Science Lab gegründet, dessen Aufgabe es sein sollte, Zusammenarbeit in der Forschung zu fördern. Mittel zur Zusammenarbeit sind Webanwendungen, was auch den Zusammenhang mit Mozilla herstellt. Das Science Lab ...
I've seen this happen multiple times, especially in an development agency staffed by non-technical managers. Managers ask developers to pick a framework and justify it. They can write a long list, but in the end they'll get to a bullet point like "Google uses it" or "Google built it".
The problem with that - any large organisation uses a large amounts of differing and competing technologies. Mozilla uses a huge number of open source projects and libraries. I'm not even going to list the things we use in just our web applications because it's ridiculously long. And that's just one very small part of Mozilla.
More than that, not only do we use a lot of projects - we write a lot of open source projects. Have a look at the Mozilla github repo and again, that's one very small part of Mozilla.
It's easy to assume that Google makes Angular and make associations with Gmail and so many other great things. But Google doesn't use Angular for everything. Just like Mozilla doesn't use node.js for everything.
Choose an open source technology for the right reasons, but avoid linking a technology to a brand and clouding your judgement.
ZenIRCBot is a topic I’ve written on a few times. Once upon a time it was my primary project outside of work. These days it has mostly become an unmaintained heap of code. I’ve grown significantly as a developer since I wrote it. It’s time for a revival and a rewrite.
I have a project I started about 7-8 months ago called clean-zenircbot which is a reimplementation of the bot from scratch using a custom IRC library I hope to spin out as a separate project. The goals of the project are things like being able to test the bot itself as well as making it possible for service developers to reasonably test their services. As well as documenting the whole thing to make myself no longer ashamed when I suggest someone write a service for an instance of the bot.
Going along with having written about ZenIRCBot in the past, I’ve also promised 3.0 a few times. So what makes this time different? The primary change is that I’ve started using beeminder (click to see how I’m doing), a habit tracking app with some nice features. My goal will be to fix at least 2 issues a week, or more which grants me a bit of a buffer. This will keep me pushing forward on getting a new version out the door.
I’m not sure how many issues or how long it will take, but constant progress will be made. I currently have two issues open on the repo. First one is to assess the status of the code base. Second is to go through every issue on all of the ZenIRCBot repos and pull in all of them that make sense for the new bot. This includes going through closed issues to remind myself why the old bot had some interesting design decisions.
Below is a graph of this so far. I’m starting with a flat line for the first week to give myself time to build up a buffer and work out a way to fit it into my schedule. Hopefully if you are viewing this in February or March (or even later!) the data will be going up and to the right much like the yellow road I should be staying on.
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.
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.
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.
A 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.
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.
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.
For the last few years, Joi Ito has been blogging about learning to dive with PADI. It wasn’t until I became certified as a diver myself that I really understood how much we can learn from PADI’s educational model.
Here’s a summary of how PADI works, including ideas that we could apply to Webmaker.
With Webmaker at the moment, we’re testing how to empower and train local learning centers to teach the web on an ongoing basis. This is why I’m quite interested in how other certification and learning & engagement models work.
The Professional Association of Diving Instructors (PADI) has been around since the late 1960’s. It trained over 130,000 diving instructors to issue millions of learning certifications to divers around the world. Many instructors run their own local businesses, who’s main service is to rent out gear and run tours for certified divers, or to certify people learning how to dive.
Through its certification service, PADI became the diving community’s de facto standard-bearer and educational hub. Nearly all diving equipment, training and best practices align with PADI.
No doubt, PADI is a moneymaking machine. Every rung of their engagement ladder comes with a hefty price tag. Diving is not an access-for-all sport. For example, part of the PADI training is about learning how to make informed consumer choices about the dive equipment, which they will later sell to you.
Nevertheless, I do think there is lots of learn from their economic and engagement model.Blended learning with PADI
PADI uses blended learning to certify its divers.
They mix a multi-hour online theoretical part (regrettably, it’s just memorization) with several in-person skills trainings in the pool and open water. Divers pay a fee ($200-500) to access the learning materials and to work with an instructor. They also send you a physical kit with stickers, pamphlets and a logbook you can use on future dives.
Dive instructors teach new divers in very small groups (mine was 1:1 to maximum of 1:3). It’s very hands-on and tailored to the learner’s pace. Nevertheless, it has a pretty tight script. The instructor has a checklist of things to teach in order to certify the learner, and you work through those quite methodically. The online theory complements the lessons in the water, although for my course they could’ve cut about 3 hours of video nerding out on dive equipment.
There is room for instructor discretion and lots of local adaptation. For example, you are taught to understand local dive practices and conditions, like currents and visibility, which inform how you adapt the PADI international diving standard to your local dives. This gives the instructor some agency and adaptability.Having a point of view
PADI makes its point of view very clear. Their best practices are so explicit, and oft-repeated, that as a learner you really internalize their perspective. In the water, you immediately flag any detraction from The PADI Way.
Mainly, these mantras are for your own safety: breathe deeply and regularly, always dive with a buddy, etc. But by distilling their best practices so simply and embedding them deeply and regularly in the training, as a learner you become an advocate for these practices as well.Learning with a buddy
The buddy system is particularly interesting. It automatically builds in peer learning and also responsibility for yourself and your buddy. You’re taught to rely on each other, not the dive instructor. You solve each others problems, and this helps you become empowered in the water.Pathways!
Furthermore, PADI makes its learning pathways very explicit and achievable. After doing one of the entry level certification, Open Water Diving, I feel intrigued to take on the next level and trying out some of the specializations, like cave diving and night diving.
Throughout the course, you see glimpses of what is possible with further training. You can see more advanced skills and environments becoming unlocked as you gather more experience. The PADI system revolves around tiers of certifications unlocking gear and new kinds of dives, which they do a good job of making visible and appealing.You can teach, too.
What’s even more impressive is that the combination of the buddy/peer learning model and the clear pathways makes becoming an instructor seem achievable and aspirational—even when you just started learning.
As a beginner diver, I already felt excited by the possibility of teaching others to dive. Becoming a PADI instructor seems cool and rewarding. And it feels very accessible within the educational offering: you share skills with your buddy; with time and experience, you can teach more skills and people.Training the trainers
Speaking of instructors, PADI trains them in an interesting way as well. Like new divers, instructors are on a gamification path: you earn points for every diver you certify and for doing various activities in the community. With enough points, you qualify for select in-person instructor trainings or various gear promotions.
Instructors are trained in the same model that they teach: it’s blended, with emphasis on in-person training with a small group of people. You observe a skill, then do it yourself, and then teach it. PADI flies about 100 instructors-to-be to a good dive destination and teaches them in-person for a week or so. Instructors pay for the flights and the training.
At some point, you can earn enough points and training as an instructor that you can certify other instructors. This is the pinnacle of the PADI engagement ladder. We’re doing something similar with Webmaker: the top of the engagement ladder is a Webmaker Super Mentor. That’s someone who trains other mentors. It’s meta, and only appeals to a small subset of people, but it’s a very impactful group.
What’s the role of PADI staff? This is a question we often ask ourselves in the Webmaker context. Mainly, PADI staff are administrators. Some will visit local dive centers to conduct quality control or write up new training modules. They are generally responsible for coordinating instructors and modeling PADI practices.Local learning, global community
The local diver centers and certified instructors are PADI’s distribution model.
Divers go to a local shop to buy gear, take tours and trainings. The local shop is a source of economic revenue for the instructors and for PADI. As divers level up within the PADI system, they can access more gear and dive tours from these shops.Stewardship
Lastly, PADI imparts its learners with a sense of stewardship of the ocean. It empowers you in a new ecosystem and then teaches you to be an ambassador for it. You feel responsibility and care for the ocean, once you’ve experienced it in this new way.
Importantly, this empowerment relies on experiential learning. You don’t feel it just by reading about the ocean. It’s qualitatively different to have seen the coral and sea turtles and schools of fish yourself.
The theory and practice dives in the pool ready you for the stewardship. But you have to do a full dive, in the full glory of the open water, to really get it.
I think this is hugely relevant for Webmaker as well: it’s all good to read about the value of the open web. But it’s not until you’re in the midst of exploring and making in the open web do you realize how important that ecosystem is. Real experience begets responsibility.Giving back
PADI encourages several ways for you to give back and put your stewardship to use: pick up litter, do aquatic life surveys, teach others about the waters, etc.
They show you that there is a community of divers that you are now a part of. It strikes a good balance between unlocking experiences for you personally and then showing you how you can act upon them to benefit a larger effort.Going clubbing
As mentioned, there are many shortcomings to the PADI system. It’s always pay-to-play, it’s educational materials are closed and ridiculously not remixable, it’s not accessible in many parts of the world due to (understandable) environmental limitations. Advocacy for the ocean is a by-product of their offering, not its mission.
Still, aspects of their economic and learning model are worth considering for other social enterprises. How can instructors make revenue so they can teach full-time and as a career? How can gear be taught and sold so that divers get quality equipment they know how to use? How can experiential learning be packaged so that you know the value of what you’re getting and skills along the way?
I’m pretty inspired by having experienced the PADI Open Water Diving certification process. In the coming months, I’d like to test and apply some of these practices to our local learning center model, the Webmaker Clubs.
If you have more insights on how to do this, or other models worth looking at, share them here!
In the profiler you’ll now find a new tab called ‘CallGraph’. This will construct a call graph from the sample data. This is the same information that you can extract from the tree view and the timeline but just formatted so that it can be scanned better. Keep in mind that this is only a call graph of what occurred between sample points and not a fully instrumented Call Graph dump. This has a lower collection overhead but missing anything that occurs between sample points. You’ll still want to use the Tree view to get aggregate costs. You can interact with the view using your mouse or with the W/A/S/D equivalent keys of your keyboard layout.
Big thanks to Victor Porof for writing the initial widget. This visualization will be coming to the devtools profiler shortly.