Planet Sugar

Planet Sugar is a collection of personal blogs by Sugar Labs contributors. Sugar Labs is a world-wide organization of passionate people working together to solve the same problem: giving everyone an opportunity to learn to learn. Our community members write about what excites them about learning, Sugar, and the Sugar community. In the spirit of free software, we share and criticize—that is how we learn and improve and encourage participation by newcomers. Enjoy and join the conversation.

January 04, 2018

OLE Nepal

The Mountain Village That Stole Our Hearts

AUTHOR: Yap Mun Ching DECEMBER 23 , 2017 For my last work trip of 2017, I had the rather unusual task of leading a group of 9 Allstars (AirAsia staff) from 5 countries and a 5-member film crew up the Gorkha mountains of Nepal to a village called Olang. The trip was part of a two-and-a-half-year long ‘To Nepal with Love’ campaign that AirAsia Foundation has been running with an excellent organisation called Open Learning…

by admin at January 04, 2018 11:01 AM

November 06, 2017

Tomeu Vizoso

Experiments with crosvm

Last week I played a bit with crosvm, a KVM monitor used within Chromium OS for application isolation. My goal is to learn more about the current limits of virtualization for isolating applications in mainline. Two of crosvm's defining characteristics is that it's written in Rust for increased security, and that uses namespaces extensively to reduce the attack surface of the monitor itself.

It was quite easy to get it running outside Chromium OS (have been testing with Fedora 26), with the only complication being that minijail isn't widely packaged in distros. In the instructions below we hack around the issue with linker environment variables so we don't have to install it properly. Instructions are in form of shell commands for illustrative purposes only.

Build kernel:
$ cd ~/src
$ git clone git://
$ cd linux
$ git checkout v4.12
$ make x86_64_defconfig
$ make bzImage
$ cd ..
Build minijail:
$ git clone
$ cd minijail
$ make
$ cd ..
Build crosvm:
$ git clone
$ cd crosvm
$ LIBRARY_PATH=~/src/minijail cargo build
Generate rootfs:
$ cd ~/src/crosvm
$ dd if=/dev/zero of=rootfs.ext4 bs=1K count=1M
$ mkfs.ext4 rootfs.ext4
$ mkdir rootfs/
$ sudo mount rootfs.ext4 rootfs/
$ debootstrap testing rootfs/
$ sudo umount rootfs/
Run crosvm:
$ LD_LIBRARY_PATH=~/src/minijail ./target/debug/crosvm run -r rootfs.ext4 --seccomp-policy-dir=./seccomp/x86_64/ ~/src/linux/arch/x86/boot/compressed/vmlinux.bin
The work ahead includes figuring out the best way for Wayland clients in the guest interact with the compositor in the host, and also for guests to make efficient use of the GPU.

by Tomeu Vizoso ( at November 06, 2017 07:07 AM

August 02, 2017

OLE Nepal

Developing the New E-Pustakalaya

## Introduction ## Since OLE Nepal’s inception in 2007 we have strived to provide open and free access to quality education and innovative learning environments to children all over Nepal.  One of our core missions is to reduce the disparity found within the accessibility of learning tools brought about by geographic location, school type, and population group.  E-Pustakalaya, our free and open digital library, closed the gap by providing a collection of thousands of books,…

by Melech Maglasang at August 02, 2017 11:23 AM

June 09, 2017

One Laptop per Child

OLPC and FZT: Transform Africa Summit

On May 10th to 12th, 2017, leaders and stakeholders from various industries, countries and continents gathered in the KIGALI CONVENTION CENTER to participate in the Transform Africa Summit. They all had one purpose: to foster constructive conversation towards building a Smart Africa. The Transform Africa Summit facilitated meetings for leaders from the public and private sectors to discuss policies and opportunities to accelerate the continent towards a socio-economic transformation, as the theme for the summit stated:  “Smart Cities Fast Forward.”

OLPC and Foundation Zamora Teran participated in this summit as a wonderful example of how technology combined with commitment is indeed the solution to sustainability and development.


During the summit, Foundation Zamora Teran shared its experience with the One Laptop Per Child projects in Central America. As a part of its educational program, the Foundation Zamora Teran created the first digital island, Ometepe. This served as a relevant case study for the summit. Summit participants had the opportunity to interact with the OLPC and FZT teams to learn about the strategies they employ for success in their educational program. One such strategy for success focuses on actively engaging all relevant stakeholders, including educators, technical teams and operations teams, in the process.  The three sectors work together to bring all stakeholders together in order to positively impact the community


During the exhibition, many officials from participating countries visited the OLPC/FZT stand to learn how its ecosystem could be a key to sustaining different development projects in their respective countries. Journalists and TV stations also had the opportunity to learn more about the OLPC/FZT services. FZT and OLPC conducted interviews as well.

The Summit was a wonderful opportunity for OLPC and FZT to build global connections to increase opportunities to provide children around the world with a quality, innovative education.

(Below are several interviews.)

by Diriana Teran at June 09, 2017 06:35 PM

June 07, 2017

One Laptop per Child

FUNDECYT-PCTEX Joins Efforts with Fundación Zamora Terán and OLPC

In 2016, the Fundación Zamora Terán in Nicaragua  entered Phase II of its One Laptop Per Child Educational Program. In an effort to strengthen the program, the Fundación Zamora Terán signed a collaboration agreement with FUNDECYT-PCTEX a non-profit organization based in Spain to continue to support the educational program throughout Central America.

unnamed (2)

The objective of the collaboration is to continue the social transformation process and strengthen the existing educational institutions. Extremadura, an organization based in Spain, is devoting resources to further support innovative education in Nicaragua. The organizations are working together to network, innovate, and scale the OLPC educational program. Estremadura is currently developing new educational applications for the XO Laptop. The organizations opened CEDSL in 2015, a space for educational innovation and training, using open source software and technologies. Teachers, university students, staff of NGOs and other foundations come to receive training on the use of technology in the educational process.

The project also strengthens the role of the private sector in achieving inclusive and sustainable growth in developing countries. The organizations  promote and strengthen public-private partnerships by creating new, multilateral partnerships and alliances between national and local authorities, business and NGOs in order to facilitate the development of local capacity and the delivery of services, particularly in rural areas for women and other marginalized groups.

More than 390 people will benefit from this alliance, including technical staff and educational officers of the Fundación Zamora Terán (15), teachers from primary schools in Nicaragua (52), students of the San Judas Tadeo Educational Center of Managua (188), University students from UNAN, UdM and UNI of Nicaragua (105), university support staff of the Free Software Development Center (10), NGOs, technical personnel and Nicaraguan Educational Foundations (20 participants).

unnamed (1)

The applications developed for the XO Laptops will benefit 224,000 people in the region, including 45,500 children, and more than 1,000 teachers in schools in which the FZT has a presence in Nicaragua and Honduras. Applications developed during phases I and II of the project will be available through the XO Laptops and will be distributed nationwide. All XO Laptops use free software. In addition, the families of participating children will have the ability to access and use such applications.

unnamed (3)

by Diriana Teran at June 07, 2017 04:41 PM

May 23, 2017

Nixos is amazing

Deploying an app to a server is a huge PITA. You have to track down all the unspecified dependancies you used when writing your server, edit some random config files on a server over ssh and debug when it all goes wrong.

Worse yet, if you configure it imperitively (by running commands); you don't have a record of the changes. So to fix that, you need to add another layer of complexity when by using a configuration management tool (like Ansible). But even then; your recordings don't match up fully to the state of the server.

Worse yet, you repeat this pain whenever you change your infra. Need a new dependancy for your app? PITA. Need to configure backups? PITA.

Package and configuration management sucks.

Building for deploying

I've recently built a new sales tool SaaS app, and I've done so using a totally new approach to managing dependencies and configuration. It ultimatly saved me the whole hassle.

The tool I used was Nix + NixOS + NixOps.

While configuration and package management a typically isn't the first thing in an app development cycle, the Nix workflow changes this compleatly.

So I'm going to show my process from start to finish; to demonstrate how Nix makes you feel like your living in the future.

Creating the Django app

I write my apps using Django (a python library). On my computer, I run NixOS.

To get started with Django, I can't just apt-get install django. Doing so is creating hidden state; dependencies that aren't properly tracked.

I use a feature called nix-shell.

nix-shell allows me to create a contained environment with all my dependancies for my app.

I create a file called default.nix. It looks a bit like:

with import <nixpkgs> {};

stdenv.mkDerivation rec {
  name = "env";
  env = buildEnv { name = name; paths = buildInputs; };

  buildInputs = [


This doesn't install django on my computer:

The program ‘django-admin’ is currently not installed.

But I can activate the environment, and there it is:

Welcome to fish, the friendly interactive shell
sam@vcs (backend) ~/c/backend> django-admin

Type 'django-admin help <subcommand>' for help on a specific subcommand.

Volia; I've created a self contained environment for my app. If I ever need more dependancies; I just add them to the buildInputs list.

Adding custom dependancies

Many package managers fall down when you do things that are not straight down the line simple. Pip isn't too fun if you need a native dependency (like ffmpeg). Distro package managers (like rpm or deb) aren't too fun if you need a custom package (like the python wrapper ffprobe3).

Nix makes it easy to install both of them.

Nix is a programming language for defining packages. I can simply define my custom python package (ffprobe3) using the buildPythonPackages function:

  ffprobe3 = python36.pkgs.buildPythonPackage rec {
    pname = "ffprobe3";
    version = "0.1.2";
    name = "${pname}-${version}";

    propagatedBuildInputs = [ pkgs.ffmpeg ];

    src = python36.pkgs.fetchPypi {
      inherit pname version;
      sha256 = "1mdkfppjz3assnk1cdhd1x9qrrki8pmch5yy52l2xf1kbnhwpc8w";

Nix isn't just for python packages; as you can see by how I can declare ffmpeg as a depdancy. Nix work for any kind of package. But since it uses a real progarmming langauge (the Nix expression langauge), it is easy to define packages.

To use ffprobe3, I just add it to my buildInputs list. Volia; I've defined a new package, and it is available in my self contained environment.

Packaging my app

Easy; just like how I packaged ffprobe3 I can package my own app.

(This is basically the configuration I used for my app in production)

with import <nixpkgs> {};

  # I separted out the list of depenadices into it's own file (deps.nix)
  deps = import ./deps.nix;
pkgs.python36Packages.buildPythonPackage {
  name = "coldvid-backend";

  propagatedBuildInputs = deps;

  # The app (and is in the same directory as this file
  src = ./.;

  postInstall = ''
    # Build some static files for my app
    ${pkgs.python36}/bin/python coldvid/ compilescss
    ${pkgs.python36}/bin/python coldvid/ collectstatic --noinput
    # And copy them into the build output ($out) so that I can reference them on the server
    mv coldvid/static $out/static

Deploying the app

NixOs allows a whole systems configuration to be build; just like we were builing little environments.

Here is what my servers configration looks like:

  # Just import the package; like you would import something in python
  backendApp = import ../path/to/app/dir/app.nix;
  # Define the environment vars; we'll reference them later
  appEnvironment = {
    ENV = "prod";
    PYTHONUSERBASE = "${backendApp}";
    DATABASE_URL = "...";
    SECRET_KEY = "...";
{ = {
    # Normal systemd unit config
    description = "Backend django application";
    after = [ "" ];
    wantedBy = [ "" ];

    # Isn't it great to have a configration management system that is a real programming language
    environment = appEnvironment;

    serviceConfig = {
      # Use ${backendApp}/bin/... to reference binaries installed by that package
      # Nix will automtically make sure backendApp is installed since it is referenced!
      ExecStartPre = "${backendApp}/bin/ migrate --noinput";
      ExecStart = "${backendApp}/bin/ coldvid.wsgi";

  services.nginx.enable = true;
  services.nginx.virtualHosts = let
    # define a function that takes the argument "locations" and returns a dict
    base = locations: {
      forceSSL = true;
      enableACME = true;
      locations = locations;

    # here is a function called static
    # it takes the argument "dir", then calls base with the given locations config
    static = dir: base {
      "/" = {
        root = dir;

    # again; a helper function for creating proxy pass domains
    proxy = port:
        ps = toString(port);
      in base {
        "/".proxyPass = "http://localhost:${ps}";
  in {
    "" = proxy 8000;
    # referencing the static output that was built into the package (at $out/static)
    "" = static "${appBackend}/static";
    "" = static "/home/app/media/";

That's it!

(Well I lie; there is a bit more config for other website on the same server, postgresql, etc.)

Deploying it

If this was on my own computer, I'd just run:

sudo nixos-rebuild switch

But it is on a remote server; so I run a nixops command. It does a pretty simmilar thing; but for a remote server (rather than my local computer). NixOps handles transfering packages between machines; creating a seamless experience.

Deploying an app change

So I change the code on my computer. Then just run the deployment command again.

The deployment command will run my configuration code (the .nix files).

However; this time it will notice the source defined for our backend app has changed; so it will rebuild the system as appropriate

Adding a dependancy to my app

Just change the deps.nix file. You need to do that anyway to be able to use the new dependancy inside the developement environment (nix-shell).

Then when you redeploy, it sees the app package has changes; and will rebuild the system as appropriate.

Changing the server config

Just change the congfiguration files (.nix ones), and run the rebuild script.

NixOs is purely functional; so unlike Ansilble or other traditional tools, I know the server is exactly as defined in the configration files - nothing more and nothing less.

May 23, 2017 12:00 AM

Exposing properties with Graphene Django

Graphene Django is an easy to use library for writing GraphQL APIs within Django. But some of the documentation for Graphene is less than great.

When I was learning Graphene Django, I originally found it very hard to expose an @property value of my model to the GraphQL API. This article will look into how to do that, and also why it works.

Ctrl-C Ctrl-V

Say you have a Poll object, and you added a URL property:

class Poll(models.Model):


  def url(self):
      return 'https://pollsite/polls/' + id

Then you can simply add a line to specify its existence in the schema:

class PollType(DjangoObjectType):
    class Meta:
        model = models.Poll
        interfaces = (relay.Node,)

    # This is it, so simple and so functional:
    url = graphene.String()

That's it. Just use the form property_name = graphene.DataType(). You can even use more fancy datatypes, like a graphene.List(graphene.Int()). There is a good reference to check it out.

So why does that work?

First, we need to understand the resolver of the property. By default, the resolvers perform a getattr lookup on the object. This means it would like be this if we were to write it manually:

    url = graphene.String()
    def resolve_url(self, args, context, info):
      return self.url

But that code looks stupid! Isn't the url attribute the graphene.String()? Isn't that code broken?

Well the self in a resolver doesn't represent an instance of the class. Or maybe it does. Anyway; Graphene is a festival of metaclass programming. So the self object is really the Django object, not your graphene object! Once I found that out, it all started to make a lot more sense to me.


Well, that's a very quick dive into the weird and wonderful world of the Graphene framework. Metaclass magic hey!

If you enjoy these random Graphene tips, make sure to subscribe below.

May 23, 2017 12:00 AM

March 09, 2017

OLPC San Francisco blogs

Ethiopia: A New Project

OLPC San Francisco will be hosting our monthly meeting Saturday, March 11th, from 10:30AM - 1PM at the downtown SFSU campus, 835 Market Street, 6th floor, room 609.

Please RSVP:

This month, the **new** OLPC XO-NL3 Laptop is going to Ethiopia. Come and see the new device at work. We'll have a discussion with the project lead Andreas Gros of Facebook and project computer expert Sameer Verma of SFSU. Discussion will be moderated by Alex Kleider.

We will have Ethiopian coffee and light snacks.

- Meet and greet
- Ethiopia and the new OLPC XO-NL3 Laptop
- Project updates
- Project working time

Our meetings are held on the second Saturday of every month. Everyone is welcome to join us for our monthly meeting! We'll be discussing the latest in OLPC events and give updates on our local (and global) projects. There will be plenty of XO laptops with the latest builds to play around with, too.

by sverma at March 09, 2017 04:03 AM

December 22, 2016

Tomeu Vizoso

Slides on the Chamelium board

Yesterday I gave a short talk about the Chamelium board from the ChromeOS team, and thought that the slides could be useful for others as this board gets used more and more outside of Google.

If you are interested in how this board can help you automate the testing of your display (and not only!) code and hardware, a new mailing list has been created to discuss its uses. We at Collabora will be happy to help you integrate this board in your CI lab as well.

Thanks go to Intel for sponsoring the preparation of these slides and for allowing me to share them under an open license.

And of course, thanks to Google's ChromeOS team for releasing the hardware design with an open hardware license along with the code they are running on it and with it.

by Tomeu Vizoso ( at December 22, 2016 08:58 AM

November 28, 2016

Karma Project

5 Steps to Build Your Global Ecommerce Site

With the growing trend of internet and the proliferation of internet users, the business with e-commerce has been expanding. All the handy gadgets like mobile and tablets have further escalated the realm of e-commerce. Another major factor that has increased the pace of global online trading is the effective payment system. This helps the clients in getting the refined ways to pay for what they have ordered. With the use of state of the art tools and techniques available on the sites of global e-commerce, it has become easy for the customers to buy products which are not available in their local markets. But launching such website is not a piece of cake. There are many parameters that need to be analyzed before launching any global E-commerce site. It is imperative to delve into the detail of those five steps that helps to build an E-commerce site.

Assessing demand and supply

Before building an E-commerce site it is incumbent to analyze the demand and supply ratios for the products that are going to be launched by the site. For instance, it was observed that in China only a hand full of segments are available online. This presents that there is a lot of room available to build site of other much needed online retail segments by the clients. All such perspectives will enable the e-commerce operations to be successful not only in the local market but also the international market. Hence it is better to analyze and then select the products offered by the global E-commerce site under construction.

Product to be localized:

It is incumbent that the product should be made localized. This means that the product should make popular before launching it on the site. For instance, Mattel which is a toy making company launched Barbie doll in China. It was a complete failure because for Chinese girls this doll wasn’t attractive as this wasn’t as per the taste of the local people.

Site to be localized:

This means that the site should be localized in terms of language, style, and many shopping habits. It can be made clearer with the fact that if the site is unable to give a description of the products as per the language of the local people where most people would not understand English. This will eventually lead to failure of the site. So it is advised to hire a team for this purpose.

Accordingly, set the prices:

It is one the indispensable step. The site should manifest the price of the products as per the local currency. In order to enter the new market, it is important to launch the local prices for the successful business.

Privacy and data of the customer , to be focused :

As we all know that cyber safety has become a menace to the digital world. All the overseas customers want their personal data to be protected. So while building a global E-commerce site make sure to put privacy center messaging across the whole site and to hire a team to resolve privacy-related concerns.


by David Rodriquez at November 28, 2016 04:13 PM

Why writers are important for best internet marketing strategy

This is a world of technology and every person has access to the internet, so business owners also consider it an authentic and effective platform for advertising their products. There is so much competition around as everyone is offering a quality product, effective strategies, and every such service which is the requirement of a customer. Most of the aspects of a business depend on the success of its marketing position and the goal of a successful business is to improve this position.

Internet marketing is basically an online marketing strategy that promotes a brand, services or products through the websites. It involves many aspects of the website such as designing, advertising, sales, and development.

Need of a Good Writer

Writing is a better expression of ideas and this could grasp the entire world in a fist. It needs depth knowledge and greater skills to be on the top of the best writers. Writers, particularly of nonfiction subjects, have gained a lot from marketing as they know the best way to put all the pieces together. They are the crux of a successful business because of the following major aspects:

Inspire and Incite Action

Storytelling is a creative way to entice the customer for a particular product. The effective writers create the content in a contagious way that could grasp the readers and make them the regular customer of a particular product. They write each piece of a content using the inspirational, emotive, personal, and suspenseful stories. Such writers ignite the fire so strongly that the customers are compelled to stick to the company for a long lasting period.

Plan before they write

A good writer never merges the scattered pieces instead; he makes a contextual framework about a particular project before putting it on paper. The social media and the entire internet marketing always highlight the importance of quality writing, so the content writers are always under pressure to create a good and quality content for a company. An effective writer has always a properly documented strategy and they follow it accordingly to trap the customer through an appropriate and more effective route. They analyze the writing again and again to ensure the objective of writing. Moreover, they also look at the competitors to give a unique angle to the writing and make the product most popular among the competitors.

Fulfill the Company goals

The entire marketing world highlighted the importance of an effective writer. Such writers not only provide a share and same metrics but also enhance the page views and assess how long a customer stay on the company page. The effective writers actually make the way for attaining a large number of company goals, as the writing strategy is very much aligned with objectives of a company. Such strategy could help the business flourish, grow, gain customers, make money and also retain loyalty.

Hence, a good writer creates such emotive content that could inspire the customers or the readers to start following the company.

by David Rodriquez at November 28, 2016 04:06 PM

November 04, 2016

OLPC San Francisco blogs

San Francisco Mayor Ed Lee proclaims Nov 5 2016 as OLPC Day in San Francisco!

We are once again pleased to share that San Francisco Mayor Edwin M. Lee has declared November 5, 2016 as One Laptop per Child Day in San Francisco! The Proclamation was presented to Sameer Verma, Professor at San Francisco State University, and Founder OLPC SF by Carol Ruth Silver, a long time city official, social activist and author.


by Anonymous at November 04, 2016 10:46 AM

July 30, 2016

Edit Fonts Activity

Welcome Page UX Concept

This is just an idea I had last night for improving the welcome screen UX, if it’s too much work or Dave and Yash don’t like it I understand. However, I may try to code it myself for fun if Yash doesn’t have time. :-)

My fear is that when users start the Edit Fonts activity for the first time they will be be lost and not understand what to do. Some users might not even have a basic understand of what vector drawing is or how a font is made. This welcome screen will at least give the users a basic idea about how to use the activity. Most importantly, this makes the first screen visualy interesting, interactive and fun. Many users may not continue with the activity if the first page is dull and boring.

I’m proposing that the welcome screen have 4 options, represented by icons and text, plus an editable .glyph that reads “Edit Fonts” in the Geo typeface. The Edit-Fonts logotype will be one .glyph file that is only loaded and never saved. see below:

UX concept 01

UX concept 02

I have added a Geo-Regular.ufo file to the gh-pages repo with a special “editfonts.glyph” logotype:


There are two neat things about this approach. First, it uses components we already have, the only work will be laying out the page, which Dave or I can attempt if Yash is too busy. Second, if the user never realizes that the edit fonts logotype is editable, it still functions as a logotype. A similar UX design pattern was used for the start screen of the game Super Mario 64, see below:

Mario 64 easter-egg

by Eli Heuer at July 30, 2016 06:30 PM

July 12, 2016

Edit Fonts Activity

Continuous Integration With Travis and flake8

Last Saturday (July 9th) Eli and I met up to review the codebase, and the main issue I identified was that Travis was not set up with flake8 to test the codebase was conforming to the pep8 guidelines.

I’d filed Issue #17 for this, back at the start of the project on May 19. Yash had started to develop the [.travis.yml]( file to build a .xo bundle but hadn’t complete this just yet, so I commended out most of the code and what remained is very simple:

# this makes travis run a fast Docker container system
sudo: false
# we use python 2.7
language: python
  - "2.7"
# we need to install flake8 to use it
  - "pip install flake8"
# we check the codebase
  - "flake8 --statistics --ignore=E402 --exclude=defcon,extractor,fontTools,fontmake,robofab,ufo2ft,ufoLib,snippets ."

You can see there’s a few arguments passed that are pretty simple.

Stastics prints the number of occurences of each error, so you can fix the most common issues across the codebase first.

E402 is about the order of imports, but since we need to import gi to version later imports, we can’t adhere to that rule, so we ignore it.

We also exclude all the third party libraries, and our snippets.

Eli and I worked together on this and I finished it up on Sunday in Pull Request #65

Yash had already set up Travis configuration, at, so once this was merged, our button went green:

travis button is green

Finally I added a file that explains how to use it.

I’ll get a similar travis set up for the gh-pages branch too.

Perhaps we could also set up a git hook that runs the flake8 command on each commit…

by Dave Crossland at July 12, 2016 06:30 PM

September 11, 2015

Kartik Perisetla's Sugar Hacks

WikipediaHI: Offline Wikipedia in Hindi !!

Last week I spent some time working on WikipediaHI activity for Sugar Desktop Environment. I must say it is one of the awesome activities I have come across. The best part is that it can serve you with data in offline mode. That is even if don't have internet connection which is otherwise required to access Wikipedia online, then also your WikipediaHI activity will serve your purpose.

There are lot many developers and contributors who are working in collaborative form on such awesome stuff who continuously inspire you to take up new things and create something that can be used by others in the world. Sugar developers and contributors are epitome of such group.

I came across few of such developers, Anish Mangal and Gonzalo Odiard, two of them whose contributions are significant for Sugar. I took up the task of creating WikipediaHI using Wikipedia dump for Hindi available for free. I followed the steps specified on this page[ hosted by Gonzalo] for creating Wikipedia activity in your own language.

I will quickly explain the steps I took to create WikipediaHI:

1) Downloaded the Wikipedia dump file for Hindi:
NOTE: [ Make sure you pick the valid latest file from here :   this location will show you listing as per dates. Pick the latest dump and proceed further.]

and downloaded WikipediaBase from this link

2) Created "hi" directory for HINDI under WikipediaBase directory and moved the downloaded dump to this folder.

3) Extracted contents of this file using:
bzip2 -d hiwiki-20121225-pages-articles.xml.bz2

4) Processed the dump using page parser:

The result of this operation will generate these files:

5) Then you can include selective articles or all articles from this dump to your activity by using this command:
* Make sure you have favorites.txt and blacklist.txt filled with appropriate keywords.

Now if you want to include all articles use this command:
../tools2/ --all

6) Then proceed to create the index for these articles:

7) In order to test the index created in previous step you can use this command:

8) Next step is to expand the templates of articles :
cd ..
./tools2/ hi

9) Go back to hi directory and re-create the index :
cd hi
mv hiwiki-20121225-pages-articles.xml.processed_expanded hiwiki-20121225-pages-articles.xml.processed
../tools2/ --delete_all

10) Download the images for the articles you selected:
cd hi

if you want to download the images for pages you selected in previous step:
../tools2/ --all

11) Create files specific to language:
(a)activity/ : activity info file for you language activity
(b)activity/activity-wikipedia-lang.svg : activity icon for your language
(c) : activity file for your language
(d)static/about_lang.html : about page for wikipedia in your language.
(e)static/index_lang.html : index page for wikipedia in your language. This is the page displayed when activity is launched. So its important for you to know the articles included in the search.db ( generated when index is created) for you to create the index page.

12) Create the XO file for wikipedia in your language:
./ hi/hiwiki-20121225-pages-articles.xml

I went through the search.db file to identify the articles present in it and create the index page accordingly.
This gave me an idea to write some script that can generate index page(part or whole) to be used as home page for activity using search.db[ Stay tuned for next blog on this idea]

Here you go.. you can see WikipediaHI

On launching this, you can see the index page listing the articles you can view offline using WikipediaHI

If you want to play with WikipediaHI, you can download it : WikipediaHI-35.xo

I must thank Gonzalo for his amazing help and guidance in getting this done. I have to mention here that Wikipedia
changed its XML format in their dumps which resulted in error when I was creating the index. I took Gonzalo's help to get it resolved.
Thanks to Anish, who motivated me to pick this up and guided me to complete it.

Thanks guys !! :D

by Kartik Perisetla ( at September 11, 2015 05:39 AM

August 25, 2015

Walter Bender

Sugar Digest 2015-08-25

Sugar Digest

1. Google Summer of Code 2015 is wrapping up. The students have been writing their final blog reports, submitting last-minute patches, and uploading their code to Google. I want to take this opportunity to thank all of our students and their mentors for all their hard work this summer. (Also, thanks once more to Google for supporting this program.) Great strides along many fronts were made. Specifically,

  • Michaël Ohayon worked on Web versions of some core activities for the Sugarizer project: Calculate, Paint (with collaboration, Record, and Memorize. He also submitted patches to Turtle Blocks to make it compatible with Sugarizer. Michaël’s blog and git repo are worth visiting. (Mentor: Lionel Laske)
  • Yash Khandelwal worked on Music Blocks AKA Mouse Music. This is a powerful, playful model for music in a block language. Yash’s blog and git repo are also worth visiting. (Mentors: Devin Ulibarri and Marnen Laibow-Koser)
  • Ishan Sharma revisited the Turtle 3D concept, rewriting it in Javascript. His results (blog, demo and git repo) are robust, scalable, and extensible. (Mentor: Walter)
  • Amit Kumar Jha worked on extensions to Turtle programming this summer. He added argument passing and return values to procedures, passing arguments to and returning values from Turtle programs so that Turtle Blocks can be used for in-line programming by all Javascript activities, and he developed a unit-test framework for Turtle Blocks JS that can be extended to all of our Javascript activities. See his blog and the master Turtle Blocks JS repo for more details. (Mentor: Walter)
  • Richa Sehgal worked on a framework to support off-line Web programming, an interactive Javascript shell. She’s submitted patches to the upstream Browse activity. Meanwhile, checkout her git repository. (Mentor: Tony Anderson)
  • Vibhor Sehgal and Utkarsh Dhawan, although not officially GSoC students, worked with Tony and Richa on a parallel project, Web Confusion, a series of programming challenges in the spirit of Turtle Confusion to encourage students. (Mentor: Tony Anderson)
  • Abhinav Anurag made some progress on a Web collaboration framework for our Javascript activities. See his blog and code. (Mentors: Martin Abente and Lionel Laske)

In the Community

2. We will be holding an election for the Sugar Labs oversight board (SLOB) at the end of the calendar year. If you are interested (or know someone who is interested) in running for a board seat (all seven seats will be open), please add an entry in the wiki. Also, whereas ballots are only available to “members”, please officially join Sugar Labs.

3. Mariah Noelle Villarreal has submitted a panel proposal, “Building Free and Open Education Communities”, to the South by Southwest Conference (SXSW). The panelpicker voting period is now open until September 4th. If you have time, please vote and share with any appropriate channels as well as a video that was created for the proposal [16].

4. Sweet: Sugar contributors Mariah Noelle Villarreal and Ruben Rodriguez got married this summer!!!

5. There were three RED (Revista de Educación a Distancia) submissions from Sugar community members:

  • Going from Bits to Atoms: Programming in Turtle Blocks JS and Personal Fabrication in Youth Maker Projects, Josh Burker
  • Visualizing Learning in Open-Ended Problem Solving in the Arts, Walter Bender and Claudia Urrea
  • Sensores Tortuga 2.0: Cómo el hardware y software abiertos pueden empoderar a las comunidades de aprendizaje (Turtle Sensors 2.0: How open hardware and software empower learning communities) by Guzmán Trinidad, Andrés Aguirre, Alan Aguiar, Tony Forster, Walter Bender, Facundo Benavides, and Federico Andrade

6. The Sugar/OLPC program in Caacupe is expanding!!!

Tech Talk

7. Peter Robinson announce quite some time ago that the Sugar on a Stick 21 Beta is now out as part of Fedora 21 Beta (Details), but I think I neglected to ever pass on the information to the Sugar community.

8. Also worth mentioning again: Ruben Rodriguez released Trisquel 7.0 released. TOAST (Trisquel with Sugar) is an official edition.

Sugar Labs

9. Please visit our planet.


by Walter Bender at August 25, 2015 03:46 PM

July 30, 2015

Fargo XO / Sugar Labs NDSU

PODS Game Design | Inspiring children in the Fargo-Moorhead-West Fargo area to enhance their creativity by designing video games.

PODS Game Design | Inspiring children in the Fargo-Moorhead-West Fargo area to enhance their creativity by designing video games..

PODS picking up where Sugar Labs @ NDSU left off, except:
a. they seem to be charging for classes
b. they want to reach as many kids as possible but probably aren’t focusing on under-represented populations
c. they want to “enhance creativity;” we were trying to focus on computational thinking. Ironic.

by kab13 at July 30, 2015 04:09 AM

July 24, 2015

Sugarizing Paris 2015

Collaborative Painting

Hi everyone !

Since last blog post, I've been working on the Paint activity.
The Paint activity is quite simple to understand : it's a drawing area with many options.

At first we were only able to draw simple things

There are many tools :

- Color picker
Some predefined colors are available.
You can get any color by using the sliders

- Undo / Redo
To be able to recover after a mistake :)

- Eraser
A simple eraser to remove things

- Stamps
You can add stamps. They will use the colors you've defined and can be scaled !

- Text
You can add text with specific color and font !

- Drawings
Some drawings are bundled inside the application

- Bucket
This tool will fill an area with the color you've picked

- Effects
You can apply effects to your painting

- Copy / paste
This tool will simply copy / paste an area

- Collaboration 
The application can be launched from two platforms and communicate.
The two windows are sharing the same painting area.

This will soon be available inside sugarizer. Stay tuned !

by Michaël Ohayon ( at July 24, 2015 06:57 PM

July 18, 2015

Sugar On A Stick

Who Buys a Domain Like “Yeezy.Supply”? Kanye West, That’s Who

Kanye West stirred up a lot of interest in a brand new website on the day he tweeted out the link: That’s the kind of thing that happens, of course, when someone who has roughly a bajillion Twitter followers shares a link.

However, all that greeted the visitors when they arrived on the site was a countdown to February 12 and a three-minute video playing in the background.

People were quick to point out that February 12 was just in time for the New York Fashion Week, so the immediate assumption was that this would have something to do with the launch of his new shoe line for Adidas.

The website continued to go through a number of changes, with each new video sparking new discussion and speculation about what might be coming when the countdown hit zero. (This website tracked the changes if you’re interested in seeing the specifics. If nothing else, it’s an interesting case study in building and keeping interest without actually showing a product or anything of relevance.)

In the end, this was, indeed, to reveal his Yeezy Boost shoes, which were shown off at the New York fashion show.

Most people expected the site to become some kind of merchandise store for Mr. West as soon as the products were announced. The assumptions were wrong, though, and, as of the time of publication, now was a timer that is counting up, instead of down. For a time it played a video of the fashion show, and now it has switched to a video of a live performance.

Who knows what it’s counting to… or why the fashion show’s soundtrack was just that creepy trumpet wailing?

And yet, people continue to visit the site in huge numbers (we have to assume), which goes to show that there’s a lot in a simple name. In this case, though, it’s probably safe to assume that the name that carried the wait was Kanye West, and not

What Hype Does for a Domain

When someone with so many followers tweets something, there are a lot of people who are going to automatically visit the site. Mr. West has the ability to build hype all on his own. He doesn’t need to go through the steps that most companies do to get visitors clicking on their links and going to their website.

So when Kanye puts up a link to, it will send thousands and thousands of visitors to the website. It will even get hundreds of media websites to start linking to it and sending more traffic.

But when the hype dies down, you have to wonder: what good is this kind of domain really going to do him?

.supply? Does That Even Exist?

The vast majority of the internet users have probably never seen a domain extension like .supply. They know and expect .com first and foremost, and if not that, maybe a .net or .org. So without all that hype, what would people do? What are they most likely to type into the address bar in a browser? That’s probably what most people would try because that is what we associate with web addresses.

Of course, they may just do a quick search for “yeezy” (and that assumes they know how to spell it right and don’t think that it’s meant to be “easy” with a “y” in front of it). If you search for” yeezy” today, what comes up is some news about the shoes, but not the actual domain. If you search for “” you’ll see the (as of the time of the publishing), and if you just type in “,” you’ll go to a page that says the domain is parked and not being used.  But, let’s face it, the .com version just comes naturally to most people.

If they want any lasting search engine traction, they’re going to have to start working on it right now.

Why Would He Buy It?

Of course, we can’t speak to the exact reasons for buying such a domain, but we can always speculate. (And who doesn’t love speculating about the behavior of celebrities?)

Maybe someone told him that it was the Beyoncé of domain names, and that if he didn’t rush the stage and defend what he judged the better choice, then no one would understand how important it is.

Maybe he just felt that, like Beyoncé, the .supply domains weren’t getting the attention or the awards they deserved.

Maybe he just wanted to be different.

What Else Might have Worked?

If you’re going to go for a .supply domain name, why stop there? There’s a wide range of names he could have bought into that might have made just as much sense. Maybe something like:

  • my – Sure, the .my domain can only be registered by companies or people in Malaysia, but surely that’s not much of a problem.
  • shoes – There is, in fact, a .shoes domain extension. Really, it’s a wonder no one thought of this already.
  • red,, etc,. – If is too vague for some people, you might as well hit the nail right on the head.
  • supplies, – A lot of companies will buy the .org, .net, and .biz domain extensions of their name just to make sure no one jumps in on their branding efforts. Maybe Mr. West should take this into account.

Does It Count as a Premium Domain Name?

Our definition of a premium domain is not very complicated. The best domains are simple, short, and memorable. That’s pretty much all you need.

So does Kanye West’s new domain fit that definition? Well, the first half kind of does, but that .supply extension really blows it. While you could argue that it is unique enough to catch a person’s attention, it is not something that sticks in the mind. It doesn’t even roll off the tongue. Try it. What is smoother to say? “Yeezy dot supply” or “yeezy dot com”?

The moral of this story, then, is that if you have roughly a bajillion social media followers, you can make anything out of a strange domain. For the rest of us, you’re better off looking for something a little more effective. At we’ve spent years curating an extensive list of relevant and effective names so you can quickly and easily find the best one for your business.

by admin at July 18, 2015 06:55 AM