Getting inspired by Felix Baumgartner to change … education.

The record breaking space jump of Felix Baumgartner was not only adventurous but inspirational. Glogster EDU wants to take it’s own leap and break some records as well.

We want to add TEN THOUSAND new supporters for “The Initiative to Change Current Education Methods” by Friday, October 19th.

[box]

Jump over to changedu.org now to join us in this record-breaking attempt!

[/box]

Already have an account? No problem! You can still participate by sending the changedu.org link to friends and colleagues who will benefit from the most creative, and inspirational educational platform.

Image taken from Yahoo! News

Remixing the Web and Creative Learning? My new mission.

Maybe some of you know, maybe not, but I am part of a great company now called Glogster EDU.  The reason I joined was I will have the opportunity to change how the education system works and to try to implement THE WEB into every school in the World. How awesome is that?

Those who knows me well, probably know the fact that I am a bad-ass person and I don’t like stupid rules and any form of Autocracy (One of the reason I am not active in the Mozilla Project anymore) and now I will have the opportunity to teach people how to remix the web and how to be part of a Great teaching community. (We have more than 3 000 000 community members so far. )

I just create a course in P2PU about Remixing the Web and Creative Learning for Teachers. Feel free to invite your peers to join our mission.

Great Teachers don’t take students to a destination, they provide them with the tools to get there on their own.

How to control HTML5 slides with your hands via webcam

I had an idea to show kind of human computer interaction during my Fosdem talk. I may not use that, because I will not have time to polish it, but it works quite well if you want to use it.

The Idea
The idea is to control slides only by moving my hand, without any devices in it.

The plan:
0. My web-cam should detect my move
1. After detection an event should be triggered
2. As a final action the slide should move to the next one :)

Motion detect

$ git clone https://github.com/sackmotion/motion.git
$ cd motion
$ ./configure
$ make & make install

Configure it

Motion comes with a great almost working config file, so just copy it to make it “official”:

$ cp  /usr/local/etc/motion-dist.conf /usr/local/etc/motion-dist.conf

Open it, search for those values, edit them and read what are they for:

;on_event_start value
event_gap 60

to become:

on_event_start xdotool key Right /OR xdotool search "Mozilla Firefox" windowactivate --sync key --clearmodifiers Right/
event_gap 1

Event triggering

You may need to install xdotool using your package manager. This tool allows you to emulate keyboard action in different combinations, but I will need to emulate pressing the right arrow key.

How it works:

When web-cam detects movement an event emulating ‘right arrow’ key is pressed. Since I am using HTML5 DZslides from here, this allows me to move to next slide only with moving my hand in front of my webcam.

Run

Run it and move your hand in front of your camera. You may want to turn on the logging to see the motion detection and the event detection if it’s not working at first.

$ motion

If you have any questions, please let me know.

Rust Language – Hello World

What is RUST?

Rust is an experimental, concurrent, multi-paradigm, compiled programming language developed by Mozilla Labs. It is designed to be practical, supporting pure-functional, concurrent-actor, imperative-procedural, and object-oriented styles. /wikipedia/

How to install it on your Gnu/Linux box?
Pre-requirements:

  • g++ 4.4 or clang++ 3.x
  • python 2.6 or later
  • perl 5.0 or later
  • gnu make 3.81 or later
  • curl

Continue reading “Rust Language – Hello World”

Put some Agile into your community

Finding a way to stimulate/encourage your community to do stuff can be a very difficult task.  I will show you an Agile-like approach to do that and actually it works pretty well, but remember:

Don’t try to control your community, try to manage it.

Create the infrastructure

  • Get an account in Trello.
  • Define your basic iteration period. Let say 2 weeks.
  • Define tasks.

Don’t try to find people who want to contribute.

“What? Are you serious?”

Hell yeah. Try to create tasks first. Put anything you think can be doable in the next 2 weeks (This is your main task).

You can start from “we need someone to tweet using our account” , “we need a new wiki” or something more interesting like “we need someone to be responsible for beer giveaways”

Ready?

Invite

Ok, now invite ALL community members to create an account and to look at the task.

Let them:

  1. Vote for the tasks.  See how community see the importance of the tasks.
  2. Add themselves to a task. It’s a common mistake project manager/leader/the big boss to assign someone to a task. Don’t do that!

Teams

Now you can see which people are willing to work together on a certain task and you can create a new board for them.

Let say you have a task website on the main board:

And there are 10 people that want to contribute to it. Move them to another board and let them create tasks, with a simple workflow:

Todos > Working on > Done:

Meetings

If you have well working community or some kind of core contributors, you can start every iteration with a meeting and to define all the tasks together.

Why?

  • This approach will help you a lot to do things faster. Remember define only tasks that can be done in 2 weeks (or 3 weeks). It’s much easier to create a simple skeleton of your website with most, most important functionalities (like who we are and join us) than to plan and create whole website in 2 months.
  • Step by step
  • Build a community and respect your community member’s skills.
  • Invite anyone to join and to help. It’s kind of easy to find someone to write a post in a forum or to contact a media representative, because this takes 3-4 minutes.
  • Get things done!


How to remix the web or how Forbes writes about me.

I have spent most of my free time in last 2 years to teach people how to use web and technology for their own causes. Unfortunately I have a very limited ‘free’ time and I can only “start the fire” and to let people to develop the idea by them selves, with little push (or kick) from time to time.

I was a speaker to a very amazing group of art students and right now they have very short idea on what they can do on the Web, except hanging around on Facebook or downloading a movie from a torrent site. We had a great practical session together and I think they think differently about web right now. I’d love to do that again.

Forbes mentioned me in an article about remixing the web and using the the technology to fight for our own rights and for freedom of speech. I have “fired” our prime minister by creating a copy of the official government webpage with a surprising news :) The news was on every news e-paper in Bulgaria on the same day and on every hard copy edition on the next.

On the next day even the PM mentioned that “action” on the TV :)

Change can happen in seconds, especially with the tools and technology at our disposal

Capture API

I am looking forward Capture API to become part of Firefox soon. It’s really cool if I have the opportunity to capture my camera and my microphone.

function success(data) {
  var container = document.createElement("div");
  document.body.appendChild(container);
  
  for (var i in data) {
    var img = document.createElement("img");
    img.src = data[i].uri;
    container.appendChild(img);
  }
}
 
function error(err) {
  alert(err.message + " (" + err.code + ")"); 
}
 
navigator.device.captureImage(success, error, { maxNumberOfMediaFiles: 1 });

This is already implemented here and it’s really useful if you want to work on mobile devices:

// capture callback
var captureSuccess = function(mediaFiles) {
    var i, path, len;
    for (i = 0, len = mediaFiles.length; i < len; i += 1) {
        path = mediaFiles[i].fullPath;
        // do something interesting with the file
    }
};

// capture error callback
var captureError = function(error) {
    navigator.notification.alert('Error code: ' + error.code, null, 'Capture Error');
};

// start audio capture
navigator.device.capture.captureAudio(captureSuccess, captureError, {limit:2});

Mozilla #JetPack: Create a simple debugger

So I wanted to create a simple JetPack debugger that will write me some data and will dump me some objects on my …Firefox error console.

Here is the code. This simple tutorial shows :

0. How to use some of Firefox Services via Services.jsm
1. How to work with nsIConsoleService

Why I need that? Well I want to debug some of my extensions without using console/notifications or Firebug. This can be usable for getting better support for users. You can always put some debug lines on your code that will be visible for your addon user.

Anyway this is an example library and it’s not for production use :)

Create a class-based library in #JetPack (addon SDK)

I just commit to GitHub a class based library called JPersona..

You can get the background color and text color of the active persona your Firefox is wearing and to do whatever you want.

This example shows :
0. How to import LightweightThemeManager – the one responsible for handling Personas.
1. How to write class-based library for JetPack
2. How to import this library in your main.js and how to use it.

Go now to github and give me a feedback

Are you from Australia? Love Mozilla? Join Us!

If you are from Australia and if you are interested in Mozilla, please join our new mailing list – community-australia.

:)

If you are passionate about freedom, openness, localization, marketing, hacking, Firefox, Thunderbird, design, UI or anything other connected to the Mozilla project you are more than welcome.

Chat
If you have spare time, come and join #australia channel on irc://irc.mozilla.org

JetPack: How to add a button to a webpage + events

This is a Jetpack example for beginners that shows:

0. How to add a simple DOM element – button to a webpage using Mozilla Addon SDK (Jetpack)
1. How to attach an event
2. And how to handle it.

If you want to try it – go here click on Test icon and when it loads, visit: http://talkweb.eu/labs/jetpack/button.html or use your own SDK


var buttonScript = [
'var butt = document.createElement("button");', //define button element
'var btext = document.createTextNode("Click me");', //define the text
'butt.appendChild(btext);', //attach text to the button
'butt.addEventListener("click", function(){document.bgColor="red"} , false)', //handle onclick event
'document.getElementById("test").appendChild(butt);' //put the button on the page
];
 

var pageButton = require("page-mod").PageMod({
include: 'http://talkweb.eu/labs/jetpack/button.html', // this script will works only on this website
contentScriptWhen: 'ready',
contentScript: buttonScript
});