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.

July 31, 2014

Somos Azucar

Resumen de actividades Laboratorios Azúcar July 31st

Este es el resumen de actividad para la comunidad Laboratorios Azúcar.

Éste se compone de una agregación de fuentes como nuestro gestor de tareas, Wiki, y blogs.

Puedes publicar un comentario o participar de diferentes formas.

Si tienes una noticia o una fuente que deberíamos incluir (como un blog, etc), avísanos a todos(arroba)

Hubo 13 eventos esta semana.

generic (feed #9)
generic (feed #3)
generic (feed #9)
generic (feed #9)
generic (feed #3)
generic (feed #3)
generic (feed #3)
generic (feed #3)
blog (feed #5)
blog (feed #5)
blog (feed #5)
generic (feed #9)
blog (feed #5)
Published Git for Sugar.

by operador del sitio at July 31, 2014 12:35 AM

July 30, 2014

Rafael Enrique Ortiz Guerrero

Tastypie filtering

Tastypie is a django restful api

Here is a little recipe to show only the last resource of eache model exposed as WS:

class RequestResource (ModelResource):
    """ Request webservice
    class Meta:
        queryset1 = Request.objects.order_by('-id')
        queryset = queryset1.all()[:1]
        resource_name = 'requestresource'
        authorization = Authorization()

Another recipe to show also a foreing key in a given resource:

class EmployeeResource (ModelResource):
    """ Employee webservice
    user = fields.ForeignKey(UserResource,'user',full=True,null=False,blank=False)

    class Meta:
        queryset = Employee.objects.all()
        resource_name = 'employeeresource'
        authorization = Authorization()

by Dirakx ( at July 30, 2014 03:24 PM

Git for Sugar

One of the firsts walls or obstacles to enter Sugar development is learn our favourite control version system [git], although somewhat counter-intuitive at the beginning, git is a very powerful tool, I wish there could be another way to have a collaborative way of development for kids, but we are not yet there.(could be other ways?)

For starters you would have to go to our web-ui git instance called [gitorious],

you can clone

git clone git://

or make a personal clone of a project of your election on the web-ui.

keep your project up-to-date with

git pull

you can also make a patch and sent it ot the developer

git format-patch HEAD^

Note: is preferable that you generate your patch from the root directory of your project.

if you want more visibility or reviews you can also send your patch to sugar-dev mail list.

git format-patch -s -1
git send-email --to maintainer --cc mailing-list filename
For example:

git send-email 0001*.patch

as a maintainer you can apply patches, sent by others, in this case you have
a file called sugar_fixes.patch

git apply --stat sugar_fixes.patch
git apply --check sugar_fixes.patch
git apply --apply sugar_fixes.patch or git am --signoff

o make merge requests using gitorious ui.

Some commands may seem very hard, but it's a matter of practice, and the combination of command line interface and gitorious ui, could be very practical both for development in terms of code maintain and for coordinated and collaborative development between various people.


by Dirakx ( at July 30, 2014 03:23 PM

July 29, 2014

Fargo XO / Sugar Labs NDSU

Inspire Innovation Lab founder passionate about engaging children, community in STEM education | INFORUM

Inspire Innovation Lab founder passionate about engaging children, community in STEM education | INFORUM.

Sugar Labs supports a smarter (computing) culture.  I think we should see if the innovation lab wants / needs some XOs.  Or maybe we can build Rich Rice’s XO kiosk.

by kab13 at July 29, 2014 06:41 PM

July 24, 2014

Somos Azucar

Resumen de actividades Laboratorios Azúcar July 24th

Este es el resumen de actividad para la comunidad Laboratorios Azúcar.

Éste se compone de una agregación de fuentes como nuestro gestor de tareas, Wiki, y blogs.

Puedes publicar un comentario o participar de diferentes formas.

Si tienes una noticia o una fuente que deberíamos incluir (como un blog, etc), avísanos a todos(arroba)

Hubo 16 eventos esta semana.

generic (feed #9)
generic (feed #8)
generic (feed #8)
generic (feed #4)
blog (feed #5)
Published GSoC Update #7.
generic (feed #9)
generic (feed #8)
generic (feed #9)
generic (feed #9)
generic (feed #9)
generic (feed #9)
generic (feed #8)
generic (feed #8)
generic (feed #8)
blog (feed #5)
generic (feed #9)

by operador del sitio at July 24, 2014 12:32 AM

July 22, 2014

Sugar Cordova

Working of sugar cordova


So its been some time after the previous post and we have made some serious progress after that :-)

The  work undertaken and done are as follows :

1. Improving upon on the codebase for cli
2. Making the basic layer for cordova for sugar to add plugins upon it
3. Making cli work on the windows platform
4. Completing accelerometer
5. Working on camera

So to discuss what we have got through this time ,I would like to take you through an example of a simple Hello World app , telling you how you can generate your own .xo from any web app and deploy it to your sugar environment.

To be precise, a web app signifies a bundle of files written in html,js and css and having some backend logic to perform a concrete task.Now the point concerning here is to get that web app to your sugar environment. The steps involved would be :

1. Setup your development environment - follow the instruction mentioned here
2. Issue  the following command to  to create a new cordova app :
cordova create <app_directory> <app_package_name> <app_name>
3. Now insert all your web app stuff to the www directory of the newly created project
4. To convert this web app to the .xo isa two step process : 
       (i) first add the sugar platform to your newly created cordova project by using command : 
cordova platform add sugar 
       (ii) Then you build the project after making changes to web app if you wish to make any; by the command: 
cordova build sugar
       (iii) Find your newly create .xo in app_directory/platforms/sugar/<wbr></wbr>cordova/<app_name>.xo
5. Now we can copy and paste the .xo in our sugar environment and issue the following command to install the xo :
sugar-install-bundle <name>.xo 


1.As an added feature we have provided a --noframe option to the users who already know about sugar web. In that case we shall add no sugar -web feature in the index.html, that means the app_directory/www/index.html must contains all the toolbar and sugar ui related stuff like the index.html in the sugar-web-template. If you give no option in the build command, it is by default assumed that you dont know about sugar web and your web page is added in an iframe in the final index.html along with the sugar ui which is added around it. So you gotto decidie whether to leave the option of adding the sugar ui to the cordova-cli or do it on own. For the former you dont need any option and its activated by default while the later can be acheived by issuing the --noiframe option along.

2.In the windows environment the zip command that is used to create the .xo by the cordova build command doesn't work. So we provide an alternative for that. All the windows users are expected to set an environment variable name ZIPCOMMAND to something similar to the "zip -r" for windows. That is, it should be able to create a zip file recursively, as an option , people can use 7zip which gives an excellent command line tool for creating zips. So install 7zip and issue the following command before issuing cordova build command on windows : 
set ZIPCOMMAND="c:\Program Files\7-Zip\7z.exe" a -r -tzip -aoa

Apart from this, we are currently working on providing you with various plugins for cordova which shall make the communication with the device capabilities easier. You can find the plugins here :<wbr></wbr>puneetgkaur/cordova-plugins , so in this repository we have two folders : one for the plugin and other a sample sugar cordova with the concerned plugin.

Have a look at the sample web app we used : 

Screenshot of the web app in the browser :

The web app as in the sugar shell :

Source of the sample web app :



<meta charset="utf-8" />

<meta name="format-detection" content="telephone=no" />

<!-- WARNING: for iOS 7, remove the width=device-width and height=device-height attributes. See -->

<meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height, target-densitydpi=device-dpi" />

<link rel="stylesheet" type="text/css" href="css/index.css" />

<meta name="msapplication-tap-highlight" content="no" />

<title>Hello World</title>



<div class="app">

<h1>Apache Cordova</h1>

<div id="deviceready" class="blink">

<p class="event listening">Connecting to Device</p>

<p class="event received">Device is Ready</p>



<script type="text/javascript" src="cordova.js"></script>

<script type="text/javascript" src="js/index.js"></script>

<script type="text/javascript">




We'll hope to be back with  a lot of cool developments on the plugin development front, so till then enjoy experimenting with sugary cordova ;-)

by Puneet Kaur ( at July 22, 2014 01:52 PM

July 18, 2014

Sugar Experiments of gp94

GSoC Update #7

Work done this week-
1. Read wasn’t opening correctly and gave an error in which was solved by gonzalo. I helped a little in debugging and testing the patch.
2. The files being displayed in objectchooser were incorrect. So, informed gonzalo and the patch for it was submitted by him. Pinched in for testing and debugging of the error.
3. Next problem was to access the path of the documents folder, which is not generic in sugar. So, again gonzalo pointed me the function of get_documents_path() in jarabe/activity/ That solved the document path issue.
4. While progressing on writing tests for Read, I stumbled across a GError while running the tests, after finding more about them, I found that Read were running on some Dbus settings X and as soon as the objectchooser is loaded, the dbus settings change to something else(They take the dbus settings of the journal). Leading, to the pyatspi(the main library used to testing) to infer that the read activity, process has hung up. I haven’t been able to find anything substantial that could solve the given problem.
6. Worked a little on documentation and the testing guide of the tests.

To Do—
1. Work on Browse and Chat
2. Complete the testing guide and documentation of individual activities.

Problems in writing tests for some activities
1. TurtleArt (Reason : ta is gtk2 and tests currently run on gtk3.So, the conflict lead to the unsuccessful attempt at writing the tests for them)
2. Read and Imageviewer (Reason : GError : timeout in dbind, leading the pyatspi to assume the activity to be hung) Only, the basic tests for them have been possible.

July 18, 2014 04:52 PM

July 11, 2014

Sugar Experiments of gp94

Hello World Tests

Hello, this is my first detailed post on tests that I have written for Hello-World.

Hello-World didn’t require any unit tests. The only test that it required was to check the label in the activity to be equal to “Hello World”. Since, only one test case was written for the activity. I will give line by line explanation on how the test works. The code can be seen here.


Line 1: It is the python shebang. For more info on it, check this link.

Line 3: Importing the basic functions that are required to write unittests for activities in sugar. The file is located at /sugar-toolkit-gtk3/src/sugar3/test/ directory.

Line 4: Importing the, which contains the basic functions to write the UI tests for activities in sugar.

Line 7: It is the class called as OperationsTest, which contains the test/s. The name of the class can be anything, it’s upto the user’s discretion.

Line 9: It declared the setUp function for the test. It is necessary to be present in the test file. In the setUp function, we are basically declaring the bundle_id of the  activity. Since, we are writing the test for hello-world, the bundle id is org.sugarlabs.HelloWorld. The bundle id of the activity can be found at activity-name/activity/

Line 14: Now that the setUp is done, one can write a test for the activity. The name of the test should always start with “test_”.

Line 16: We name the test as “test_add_button”.

Line 17: It just instructs the following test to be run after the activity has started to run. It is necessary for every test of the activity.

Line 18: Gets the hierarchical structure of the screen and how the different elements in the screen are arranged.

Line 19: Now we find, for the child node called as HelloWorld Activity. This line basically chooses the node that contains the whole hello-world activity.

Line 20: After the activity is chosen. We choose the node, inside the activity node to find a label with the name of “Hello World!”

Line 21: This line is to check that the label node that has been chosen has the text of “Hello World!” in it.

Thus, this is the test that has been written for Hello-World and the above explains how the test works.

July 11, 2014 03:40 PM

July 04, 2014

Porting Sugar to Python3

Porting to Python3 Progress

In the last couple of weeks I worked on porting the following sugar modules and submodules to Python3, you can check out  my progress in my own repositories(they are not complete yet , so there might still be some errors):

1) Original repo:
    My repo:
    Changes: Changes in Python3 syntax ,string usage etc in and and different commands in the command folder and called virtualenv with Python3.
2) Original repo:
    My repo:
    Changes: These are the required changes that I made in the osbuild module:
3) Original repo:
    My repo:
    Changes: Some other basic Python3 syntax changes and some errors that i reported in my common porting errors wiki blog post.
4) Original repo:
    My repo:
    Changes: Just a couple of changes as the module name Queue was changed to queue in python3 and the name basestring has disappeared.
5) Original repo:
    My repo:
    Changes: This was a C module written for Python2 but there have been some changes in the C-api for Python3.
The new PEP standard for initialization of extension module:
Porting Extension modules to Python3:
So with the help of  the above links , I did the necessary changes in the sourcestamp module.

6) Original repo:
    My repo:
    Changes: Basic python3 changes using and iteration of 2to3 and they seem to be working for now.

In the following modules, I have done all the trivial Python3 syntax changes and currently working on removing the remaining bugs and errors.

7) Original repo:
    My repo:

8) Original repo:
    My repo:

9) Original repo:
    My repo:

10) Original repo:
    My repo:

So, currently I am working on building and integrating all the modules successfully together and sorting out the errors and bugs that come in my way.

by kunal arora ( at July 04, 2014 05:52 PM

June 23, 2014

OLPC San Francisco blogs

Google Hangout from OLPC SF June 2014 meeting

Thanks to Mike Lee, a recording of the Google Hangout from our June 2014 meeting is up on Youtube. Clearly there are better ways of managing Google Hangouts, and clearly I don't know most of these, so once again, thanks to Mike Lee for saving the day! For the parts of the session on XOVis, you can see a blog post at, and get slides from . Braddock Gaskill's slides on Internet-in-a-Box are posted on GitHub at


<iframe allowfullscreen="" frameborder="0" height="315" src="" width="420"></iframe>

by sverma at June 23, 2014 06:04 PM

OLE Nepal

Comparing Deployment Data with XOvis

It is hard to believe that six months have already passed since my arrival to Kathmandu. My volunteering time at OLE Nepal is up. At the end of May, I delivered a final presentation about XOvis, an XO usage visualization application our Data Quest Team has developed, and bid farewell to my Nepali colleagues. From [...]

by martasd at June 23, 2014 02:57 PM

Sugar Cordova

our journey with cordova-cli

Hey folks ! So we are back with a new post.This time would rather prefer to tell you a kinda story of how we fought we with cordova-cli and finally captured it in our captivity :P :P Yeah .. Its time to celebrate .. But the success is at very initial stage right now.Getting stucked up with cli was disheartening, but conquering it was heartwarming :D So to start, we aimed to make the various cordova cli commands work for sugar.All we knew was that we had to push some changes in the cordova-cli package.So quickly searched up where the cordova-cli code lied and downloaded it.Well, to our surprize, the cli code was nothing but a pointer to cordova-lib which was actually the backbone.So downloaded lib too ! But where do the both meet ? How to make them work together ? Though we had some documentation in the readme of cordova-lib.. but ahh .. it didn't work as expected.Spent days to figure what was wrong.Finally after hours of research, found a way to work around. so let me get you know how we fixed up the things to let our changes in our local directory reflect in the cli on the terminal. The first was the discovery of ~/.cordova directory from where the library code for all the platforms is fetched once downloaded from their respective urls.This is the directory which enables us to copy the templates when we issue the cordova platform add command.Next, the correct linking between cordova-cli and cordova-lib,for this we had to go into cordova-cli directory and issue the npm link from there for cordova-lib.Once cordova-lib is there in the cordova-cli/node_modules then the changes done in directory cordova-cli/node_modules/cordova-lib &nbsp;get it reflected on terminal.But we have to be cautious to remove the cordova executable file from usr/lib/bin directory which may be residing there from earlier installation of cordova-cli.Lastly to get a feel of our changes we move to cordova-cli/bin and run the cordova executable file present there. Now let me take you through the digging we have done in the cordova-cli code. Firstly the executable that we run inside the bin folder of cordova-cli, simply calls cli.js of cordova-cli with process.args ( the arguments we provide) , the cli then calls for cordova-lib.js of cordova-lib in node_modules.Obviously apart from the cordova-lib, we do need a few other node dependencies as well. Cordova-lib.js defines various files to be used with different commands - see here. So for the cordova commands, we are directed to the cordova.js inside cordova-lib/cordova.There different modules&nbsp;which eventually cater to our various category of commands like create, platform add etc are added. For cordova create command, create.js in cordova-lib simply makes a new project with the specified directory name,id and app name but with no specific platform. To add a platform we issue ' cordova platform add &lt;platform name &gt;'. This calls for the platform.js.It looks in platforms.js [note a difference of 's' in platforms ;-) ] to see if there is an entry for the specified platform.If not it issues an error, else it downloads the platform's library from the url specified in platforms.js.Its only when the command is issued first time for the specified platform that cli downloads it else ~/.cordova/lib/&lt;platform&gt;/&lt;version&gt; is referred for the platform project template.The 'create' file in ~/.cordova/lib/&lt;platform&gt;/&lt;version&gt; /lib folder contains the platform specific script to add the files from the platform's library to the cordova project. Once the platform has been added to the project, we then need to build project after coding up our logic in the app.For this the build command is broken into two parts, prepare and compile.The prepare part copies all the updated parts from the global www folder - projectDirectory/www to the native platform's www folder - projectDirectory/platform/&lt;platform name&gt;/www, it also updates the app name, package name,icons etc and installs and uninstalls t

by Puneet Kaur ( at June 23, 2014 12:34 PM

OLPC San Francisco blogs

XOVis: The quest continues

Note: Slides for this project are now posted to Slideshare at

Update: Martin Dluhos has published a post at OLENepal's blog site, which was written independent of this post, but acts as a good companion to this post, especially highlighting the ways in which OLENepal can compare data across schools.

The "Quest for Data" project has been going on for a while now. You can take a look at previous posts to get an idea, but the short of it is that we've had several efforts to gather data that allows us to peek into the usage behavior of projects. These have happened in Paraguay, Jamaica, Australia, India, Peru and a few other places. XOVis is a newer incarnation in that string of efforts. Thankfully, this one builds on the foundations of some of the previous ones.

Learning Analytics
is defined as a process with four phases: measurement, collection, analysis and reporting. In case of Sugar, the measurement happens within each activity - more specifically through its metadata - where we use proxies such as start time, collaboration, type of activity, file produced, etc. to assess a level of engagement. For the purposes of this post, we'll go with the assumption that these proxies imply correlation with engagement, and therefore to learning (yes, this is a big assumption, but this is a blog post, and not a double-blind peer reviewed journal paper, so I won't get into it here).

Visualization is an important stage in the reporting process, although by itself, it may lead to incomplete assessments. Visualization tends to be used with aggregates, that is the aggregate behavior of a classroom , school or a collection of schools. So, for instance, we may be interested in seeing how a group of children use Sugar activities during school hours versus outside of school hours (for those fortunate deployments where the laptop goes home).

The data flow is from the laptop's Journal, to an automated Journal backup set on the School Server (XS or XSCE), to the extraction of metadata, to aggregate analysis and finally visualization. There are several ways to do this, but we chose to look at a three-tier architecture: The laptop's Journal, The School Server and the hypothetical Ministry of Education or NGO central cloud service. Metadata flows from XO to XS[CE] via automated rsync backups. Metadata flows from XS[CE] to the Ministry/NGO central server through a mechanism explained below.

XOVis architecture

At this point, I must specify that the XOVis application was written by Martin Dluhos, while he was working at OLE Nepal, while I helped with the overall architecture, based on my experiences in Jamaica and India, and Andi Gros helped with the visualization front-end. The work that Martin did is thankfully built on top of what Raúl Gutiérrez Segalés and Leotis Buchanan did earlier in Paraguay and Jamaica respectively. We also involved input from Martin Abente Lahaye about Australia's Harvest system, and Anish Mangal about sugar-stats, and were mindful to create an architecture that can accommodate both systems (these other systems will need some coding labor, of course).

Resuming the explanation, one of the key issues was to deal with the problem of offline and intermittent connectivity to School Servers. We needed a glue that connected the School Server to a central location, and would be resilient to pick up sync where it left off, and do so without human intervention (very much like rsync). Then we would need an engine to aggregate the data across different cross comparisons - averages and comparisons of usage by day, by month, by year, etc. This is where CouchDB magic comes in. CouchDB can:

  1. Store data as json documents at the School Server.
  2. Generate aggregates using MapReduce.
  3. Store the visualization front-end (HTML+JavaScript).
  4. Synchronize from School Server to Ministry-of-Education/NGO over broken/intermittent connections (can also use a USB stick sneakernet).
  5. Make coffee while running all of the above (ok, so that's not true)

Could we use CouchDB to address all these needs? Yes! So, we used CouchDB to do #1, #2, #3, and #4. For #5, you are on your own :-)


So, this is somewhat how it goes. You can head over to GitHub ( and grab the code. If using a XS (I haven't tested yet) I'd recommend that you install by hand, using the


script. If you are running your project on XSCE, use the ansible playbook for xovis.


will play all playbooks and install all services, including xovis. To install xovis only, do

ansible-playbook -i ansible_hosts xsce.yml --connection=local --tags="xovis"

Next, make sure that you have Journal backups in


If you have registered XOs with this School Server, the backups will start to happen automatically (takes 30 minutes or so). If you have user backups, then you can run the script to do a bunch of things. all 

will export metadata to comma-separated value (csv) format for analysis in Excel, LibreOffice or R. activity

will spit out stats for activities dbinsert xovis --deployment <deployment-name> --server http://admin:admin@

will push the metadata into the local CouchDB database on the School Server. Note that the admin:admin userid:password may/should change.

Next, to visualize what your deployment has been up to, open up a browser on a machine connected to your School Server. Go to


Pick your deployment from the dropdown and click on a button to check out the visualization!

Frequency of use

Frequency of use


Activities tracked by month

Activities by month


Activities by time of day

Activities by time of day

by sverma at June 23, 2014 08:58 AM

June 17, 2014

Porting Sugar to Python3

Porting to Python3 Progress

Last week I tried to solve the telepathy issue. The telepathy issue is basically that the telepathy library used in sugar is deprecated and not compatible with Python3 so we had to do something about it.

On researching, I found out that telepathy-glib is the new library which has taken over for telepathy-python and we need to write the telepathy-glib code in gobject convention in order for it to be compatible with introspection and also telepathy-glib is compatible with Python3.

But i had no idea what all these were, so i started reading up on telepathy,telepathy-glib,gobject,introspection,dbus etc. So all this new stuff was a little overwhelming and was taking too much of my time so in friday's sugar meeting, Walter Bender suggested to leave telepathy for now and port other modules first and that is exactly what i am going to do this week and i'll try to port as much code as possible this week and try to increase the test coverage too and after that we'll take care of telepathy.

Also side by side I continued working on porting sugar-build. 

by kunal arora ( at June 17, 2014 04:14 PM

May 15, 2014

Walter Bender

Sugar Digest 2014-05-15

Sugar Digest

Happy 6th Birthday Sugar Labs

1. I just got back from Turtle Art Day in Kathmandu, Nepal. OLE Nepal helped organize a 2-day workshop with 70+ children from four schools. Many thanks to Martin Dluhos, Basanta Shrestha, Subir Pradhanang, Rabi Karmacharya, Bernie Innocenti, Nick Dorian, and Adam Holt, all of whom contributed to the event.

It was not a surprise that children in Nepal are like children everywhere else: they take to programming like ducks to water. We began by taking the children in small groups to learn some basics about controlling the turtle: one child plays the role of turtle, one holds the pen (a piece of chalk) and the rest, in a circle, instruct the “turtle” how to draw a square. They need to be very precise with their instructions: if they just say “forward” without saying how far forward, the turtle keeps walking. If they say “right”, without saying how far to turn, the turtle keeps spinning. After they draw a square, I ask them to draw a triangle then they are ready to start with Turtle Art. I’ve posted a few of the chalk drawings in the wiki: simple ones from my session to more elaborate from those working with another one of the mentors.

After working with chalk, we went to the computers. On a laptop connected to a projector, I introduced Turtle Blocks, and again ask for a square. I show them that they can snap together blocks, e.g., forward 100, right 90; showed them the repeat block; and then I show them how to use the start block to run their program with the rabbit or snail (fast or slow). Over time, I introduced the pen and let them explore colors for awhile. Next, I introduce action blocks: make an action for drawing a square and then call that action inside of a repeat block followed by right 45, and you get a pretty cool pattern. This was followed by more open-ended exploration. I introduced a few more ideas, such as using “set color to heading” (the color is determined by the direction the turtle is heading); “set color = color + 1″ to increment the color; and “set color = time” to make the color slowly change over time. I also introduced a few other blocks, such as show, speak, and random. Finally, I introduced boxes. For this, I use a physical box: I ask the children to put a number (written on paper) in the box; then I ask them what number is in the box. I ask them to take the number in the box and add 1 to it. Again I ask them what number is in the box. I repeat this until they get used to it; then I show them the same thing using Turtle. The example program I write with them is to go forward by the amount in the box, turn right, and add 10 to the number in the box. I asked them what they think will happen and then show them that it makes a spiral. When they run it with the “snail”, they can see the number in the box as the program runs. Another block I explicitly introduced was the “show” block. We programmed an animation with “show image”, “wait 1″, “show image”, “wait 1″, … They recorded dance steps using the Sugar Record activity and used those images in their Turtle projects. As often as possible, we tried to have a child show their work to the entire group. At the end of the second day, we had a table set up for an exhibition; we had to keep adding more tables as more and more children wanted to show off their projects.

We originally planned on break-out sessions on Day Two, but we had a technical glitch on Day One, that slowed things down quite a bit. The children were running Sugar 0.82 on XO-1 laptops, which is nearly six-years old. They had them connected to the mesh network, which cannot scale properly to 70+ machines. The result was a lot of frozen machines. It took most of the day to figure out what was wrong. Once we turned off the radios, everything worked great. I also had to spin a stripped down version of Turtle Art, since a number of dependencies I use, such as some Python 2.7 features, were unavailable on 0.82.

We did have one break-out session for robotics. I brought a Butia to Nepal and I wrote the typical program with the kids to have the Butia go forward until it got to the edge of the circle (everyone was sitting in a circle on the floor); whomever the Butia approached had to push a button so that the Butia would spin and then go in another direction. We then added a few embellishments: the Butia would say “ouch” or “that tickles” when the button was pushed; and we had it take a picture of the child who pushed the button. We saved the files so we could use them to make an animation in Turtle Art.

Of note: One child approached me to say he is teaching himself to program Python. I showed him how to export Python from his Turtle Art projects. I’ll be curious how he uses that feature. I am making a new set to Turtle Cards to demonstrate the steps we took in explaining Turtle to the children.

Photos: [1] [2] [3] [4]

2. While I was in Kathmandu, I had a chance to meet with the Nepali FOSS community, thanks to Shankar Pokharel, Ankur Sharma, and Subir Pradhanang. We had a nice talk about the challenges and opportunities facing FOSS in Nepal.

3. Just before my trip to Nepal, I was in Mexico DF attending Aldea Digital. The central plaza in Centro Historico is turned into the world’s largest free Internet cafe for two weeks. I gave a lecture about Sugar and ran an impromptu Turtle Art session. (We installed Sugar in a VM on twenty Windows 8 machines and ran a session.) I also had a chance to meet Ian, the 9-month old baby of Carla Gomez: a future Turtle Artist.

In the Community

4. Mike Dawson, formally of OLPC Afghanistan, wrote a nice commentary on the Keepod in which he mentions Sugar on a Stick.

5. Google Summer of Code begins on the 19th of May. We’ll be meeting every week in IRC on Fridays at 2PM EST.

6. There is still time to enter the Sugar Background Image Contest.

Tech Talk

7. Daniel Narvaez has been building F20 images for XO: The XO-1 image boots into Sugar (latest from git) and wifi works. He has also built XO-4 images.

8. Daniel also built tarballs for 0.101.5 (sugar-0.101.7.tar.xz and sugar-toolkit-gtk3-0.101.5.tar.xz). We are now in string, API and UI freeze.

9. Please help us with testing of Sugar 102.

Sugar Labs

10. Please visit our planet.

by Walter Bender at May 15, 2014 05:45 PM

May 08, 2014

Tomeu Vizoso

GNOME API reference at the DevX hackfest

Last week I spent a few days at the Developer Experience hackfest and got to have some fun again with the API reference generator in gobject-introspection.

Jon intended to hack on the XSLT stylesheets in yelp-tools/xsl, but after some trying he got discouraged by the amount of work that would take to get them to generate the HTML that we are interested in. We also discussed the benefits of using Mallard for generating the reference docs, and given that we want to generate a single output, we couldn't see much value in the level of indirection that Mallard adds.

Thus, we considered generating HTML directly from the GIR files, but shortly after Alberto Ruiz came by and offered to explore a client-side-only solution involving processing JSON files with JavaScript.

He very quickly got something relatively complete, which is very encouraging, but even more so is seeing how other projects are generating their API references that way, for example:!/api/Ext.Class

Aspects such as as-you-type search would bring the online documentation on par with the Devhelp experience. Plus they have some niceties such as a symbol browser and links to annotated source code.

I have hacked a (yet another) --write-json-files switch to g-ir-doc-tool that will output the content of the GIR file to JSON, but indexed and formatted as needed by the JS side of things. See this branch for the code.

That branch also adds support for Markdown rendering using python-markdown, but some more code needs to be written to implement the extensions to Markdown that the Gtk+ docs are using.

It was great to talk about all this and more with old and new friends in Berlin, so I'm very grateful to the GNOME Foundation for organizing it and sponsoring travel, and to Endocode for providing a venue. And special thanks to Chris Kühl for the great organization!

by Tomeu Vizoso ( at May 08, 2014 12:41 PM

May 02, 2014

OLPC Learning Club

Two D.C. area Scratch Day 2014 events coming up!

While we are no longer meeting as the OLPC Learning Club (I have a personal and club update nearly ready to post), there are two Scratch Day celebrations coming up in the D.C. area on Saturday May 17, 2014 that were jumpstarted by club members.

Jeff Elkner, who hosted many club meetings at the Arlington (Virginia) Career Center, has engaged with the staff of Hoffman-Boston Elementary School in Arlington to help them stage their first Scratch Day. They are calling it the All Star Computer Programming Party. I’ve enlisted Michael Badger, author of the new book Scratch 2.0: A Beginner’s Guide (Second Edition), to make a guest appearance. The school’s STEM team will showcase a number of other fun coding tools. Dell Computer and George Mason University are also sponsoring. For more information, visit this link:

Hoffman-Boston Elementary School All Star Computer Programming Party

In D.C., our amazing friend Leshell Hatley of Uplift, Inc., is doing her third Scratch Day, moving this year to Howard University’s Computer Learning & Design Center (CLDC). Kevin Cole, who has hosted many, many club meetings at Gallaudet University, helped Leshell get her first event going. Uplift, Inc. is a 501c3 nonprofit immersing students in STEAM and CS education. For more on Uplift’s Scratch Day, visit this link:

Uplift / Howard University Scratch Day

Both events are open to the public, but the Uplift / Howard University Scratch Day asks for an RSVP.

While Scratch 1.4 is still in wide use, many are adopting the new web-based version, Scratch 2.0, which has been completely rebuilt from “scratch” and substantially enhanced. Just in the last few weeks, support for the Lego WeDo robotics kit was added to Scratch 2.0 and a touch tablet version called ScratchJr. was announced. Exciting times lie ahead for Scratchers of all ages!

Mike (Twitter: @curiouslee, Instagram, Flickr, Facebook)

by Mike Lee at May 02, 2014 01:55 AM

April 25, 2014

Karma Project

Tinnitus miracle money back guarantee

Tinnitus creates discomfort to people suffering from it so they desperately search for ways to get rid of it. Thomas Coleman, the developer of is actually a sufferer of chronic disease. This actually means to say that he himself is knows how this cure works. Suffering from this ailment for over 14 years absolutely made him dedicated in finding the solution to his concern. Fortunate for those people who have the same condition Mr. Coleman decided to share his solution to everyone who wants to get rid of it for good. He did and he wants everyone who is suffering from it to be as healthy as he is now.

Tinnitus Miracle

Tinnitus Miracle

Tinnitus Miracle is a system developed by Thomas to be followed religiously in order to eliminate the buzzing, hissing and all those noise you hear on your ear. This is an entire system which guarantees effect within 7 days and if you are diligent enough to abide to each word written to change your lifestyle, you will not only say goodbye to your Tinnitus but to your unhealthy way of living for good. If you have this concern, you would know that whatever your doctor gives you is only something to temporary lessen the discomfort but the noise will come back and you are bound by the discomfort until you decide to change everything. The decision is yours to make. You are the only one who can decide whether you tolerate the discomfort or say goodbye to it, permanently.

<iframe allowfullscreen="allowfullscreen" frameborder="0" height="315" src="" width="560"></iframe>

by administrator at April 25, 2014 04:01 AM

April 24, 2014

Karma Project

Hello world!

Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!

by administrator at April 24, 2014 12:43 PM