Articles in english from the blog of MosaLingua

Memory: The Forgetting Curve

 

forgetting-curve-300x172The learning process (and memorization) is long and tedious. And when the information is finally memorized, the game is not won- the brain has the unfortunate tendency to destroy the information with a formidable efficiency. We cannot rely on our memory….Indeed, as can be seen on the graph below, … [Read more...]

 

The Spaced Repetition System (SRS): Memorization for Life

Ebbinghaus2-150x150

In the previous article, I wrote about the ever-discouraging forgetting curve as an introduction to the Spaced Repetition System. History The initial research on spaced repetition dates back to the 19th century. The German psychologist, Hermann Ebbinghaus, created a long list of nonsense … [Read more...]

How to Learn a Language in 3 Months

learning_revolutionUnfortunately, I can’t take credit for this catchy title; it comes from Tim Ferriss. Tim Ferriss is the author of The 4-Hour Workweek. Tim Ferris has achieved enormous success and it explains how you can follow in their footsteps. What mainly intrigued me about this book was the author. … [Read more...]

How to Learn a Language with Music in 5 Steps

comment-apprendre-une-langue-avec-la-musiqueIt’s a well-known fact that music can be an effective tool for learning a foreign language. Like original-version films, song lyrics are a good source of vocabulary and expressions that you can memorize—and have fun doing so. Furthermore, listening to or humming foreign songs helps you improve … [Read more...]

How to Find a Language Exchange Partner: The Best Websites

skype language exchangeWhen learning a foreign language, you must develop 4 basic competencies: written comprehension, oral comprehension, written communication and oral communication. The major problem that people who are learning a language in school or on their own have is knowing how to practise speaking it. It’s … [Read more...]

 

 

Tips for Memorizing and Learning Difficult Information

By: Tim Sheerman-ChaseWhat if you have a bad memory? Many people think they have a bad memory (myself included). Some people, for example, have trouble remembering dates or first names. Your memory is like a muscle: It needs training in order to develop. Learning a language is a very effective exercise for improving … [Read more...]

 

The Best Spanish Movies with Subtitles to Help You Learn

vovler-160x195  Watching movies to improve your Spanish Who said learning a language had to be tedious and boring? Watching movies in their original version is a fun and effective way to improve your Spanish (especially your oral comprehension). For beginner Spanish learners, I recommend … [Read more...]

Learning a Language: Techniques for Developing New Habits

Screen-Shot-2012-09-25-at-11.08.35-AM-300x255Learning a new language means you will have to develop new habits with respect to devoting time to learning and maintaining your language skills. I am currently reading a lot about finding motivation and developing habits. As you already know, I’m a big fan of techniques and shortcuts that make … [Read more...]

5 Tips for Developing a Language-Learning Plan

5 Tips to learn a languageThe importance of a creating a schedule and setting learning objectives People of all ages take up learning a foreign language, whether by taking courses or teaching themselves. There are a number of reasons to learn a foreign language. Contrary to popular belief, you can learn a language at any … [Read more...]

The 7 benefits of a mobile platform learning

 

smartphoneAfter 7 good reasons to learn a foreign language, I’ll tell you about the benefits of a learning method on mobile phones (smartphones like iPhone, Android, etc.). New generations of mobile phones are now sufficiently advanced for complex applications and multimedia. For example, the iPhone has a … [Read more...]

How to post to the Facebook wall in an iPhone app with phonegap, FaceBook Connect and ChildBrother plugin

Posting to the user’s wall is a very cool and efficient marketing strategy. The user can post on his wall his progress with a message promoting the app directly from an iPhone app.

It’s very fast and easy to add in phonegap, but the first time can be time consuming. After reading this post on the phonegap mailing
list and reading this post, I was a bit confused. With the following method, you don’t need to setup a server on Google App Engine, it’s very straight forward :

I will explain the process step by step, and at the end of this article, a demo iOS project is available for download.

Sorry for the bad formatting, unfortunately, I wrote this article in google document, and the resulting html code was horrible, I will never do that again.

Create your App in FaceBook

You need to register your app in facebook
:

http://developers.facebook.com/setup/

(Keep the ID of the app, it will be usefull for
later

Install ChildBrowser plugin:

This plugin can open an external URL directly
in the app.

  1. Download the childbrowser plugin from

    http://github.com/purplecabbage/PhoneGap-Plugins

  2. Put the file ChildBrowser.js and FBConnect.js
    inside the www folder
  3. drag and drop the files under
    ChildBrowser/iPhone/ to the /plugins folder on your xcode
    project;
  4. On XCode, right click on the plugin folder,
    and choose add existing files -> add all the ChildBrowser
    files :

Add JS files

In the FBConnect.js file, there is no function
to post to the user wall. So you need to add the following
functions :

FBConnect.prototype.postFBWall = function(message, urlPost, urlPicture, callBack)

{

console.log(‘inside postFBWall ‘+message + ‘ urlPost=’+urlPost + ‘ urlPicture=’+urlPicture);

var url = ‘https://graph.facebook.com/me/feed?access_token=’ + this.accessToken+’&message=’+message;

if (urlPost) {

url += ‘&link=’+encodeURIComponent(urlPost);

}

if (urlPicture) {

url += ‘&picture=’+encodeURIComponent(urlPicture);

}

var req = this.postFBGraph(url);

req.onload = callBack;

}

FBConnect.prototype.postFBGraph = function(url)

{

console.log(‘inside postFBGraph url=’+url);

var req = new XMLHttpRequest();

req.open(“POST”, url, true);

/*req.onreadystatechange = function() {//Call a function when the state

if(req.readyState == 4 && req.status == 200) {

alert(req.responseText);

}

};*/

req.send(null);

return req;

}

You also need to customize the connect function to ask the authorization to post to the user’s wall :

FBConnect.prototype.connect =
function(client_id,redirect_uri,display)

{

this.client_id = client_id;

this.redirect_uri = redirect_uri;


var authorize_url  = “https://graph.facebook.com/oauth/authorize?”;

authorize_url += “client_id=” +
client_id;

authorize_url += “&redirect_uri=” +
redirect_uri;

authorize_url += “&display=”+ ( display ?
display : “touch” );

authorize_url += “&type=user_agent”;

//if you want to post message on the wall : publish_stream, offline_access,

authorize_url +=”&scope=publish_stream”;


window.plugins.childBrowser.showWebPage(authorize_url);

var self = this;

window.plugins.childBrowser.onLocationChange =
function(loc){self.onLocationChange(loc);};

}

You need to add the ChildBrowser.js and the FBConnect.js in the www folder.

Then, you need to call include them in you index.html :

<!doctype html>

<html>

<head>

<meta charset=”UTF-8″ />

<title>Test</title>


<script type=”text/javascript”
src=”lib/json2.js” charset=”utf-8″></script>

<script type=”text/javascript”
src=”phonegap.js” charset=”utf-8″></script>

<script type=”text/javascript”
src=”ChildBrowser.js” charset=”utf-8″></script>

<script type=”text/javascript”
src=”FBConnect.js” charset=”utf-8″></script>

Connect to Facebook within the app

in your html, you can add a button that will share your message on Facebook:

<div class=”button facebook”>Share on Facebook</div>

And in your javascript file, you can register this button :

$(‘.facebook’).click(function() {

shareOnFaceBook(“This message will be posted on the user wall”, “http://www.mydomain.com/myImage.png”, “http://www.mydomain.com/”)

});

And you also need to customize and add this
function in your javascript:

/**********************

FaceBook Share

**********************/

// this function share the article on facebook

// text : the text to share

// image : the image to display near the link

// url : the url of the article

function shareOnFaceBook(text, image, url) {

var client_id = “XXXXXXXXXXXXXX”;//TODO customize your FaceBook AppID : http://developers.facebook.com/setup/

var redir_url = “http://www.facebook.com/connect/login_success.html”;

navigator.notification.activityStart();//Phonegap function to show a waiting message

if (typeof fbPlugin === ‘undefined’) {

console.log(‘install FBConnect’);

fbPlugin = FBConnect.install();

}

fbPlugin.connect(client_id, redir_url, “touch”);

fbPlugin.onConnect = function() {

console.log(‘onFBConnected id=’ + window.plugins.fbConnect.accessToken);

window.plugins.fbConnect.postFBWall(text, url, image, function() {

console.log(‘inside callback after postFBWall’);

alert(‘Successfully shared on Facebok (check your status)’);

navigator.notification.activityStop();//Phonegap function to hide a waiting message

});

};

}

Sorry again for the aspect of this post, next time, i promise, I will code myself the html code (never trust google doc for HTML).

And that’s it. It should be working. If you want a working example, I have build a quick and dirty iOS project in
a zip file with a sample phonegap project with this shareOnFacebook feature.

Download the sample FaceBook iOS XCode Project


How to add a video in your website : a panorama of the different solutions (Youtube, Flash, HTML5..)

Add the youtube video in your web site with the JQuery plugin fancy box

For MosaLingua, I finally choose to add the youtube video in my website, in order to save bandwidth.
But in a beautiful way (at least I hope, see the home page of MosaLingua, and click the button ‘Voir Video’) :

This was very easy, thanks to the excellent JQuery plugin fancybox :

Download the JQuery plugin here, and simply add a link to your video :

<a id=“screencast” title=“‘MosaLingua Espagnol iPhone” href=”http://www.youtube.com/watch?v=xG9kh1hDiFg“>View the screencast</a>

And the following Javascript code :

$(“#screencast“).click(function() {
$.fancybox({
‘padding’ : 0,
‘autoScale’ : false,
‘transitionIn’ : ‘none’,
‘transitionOut’ : ‘none’,
‘title’ : this.title,
‘width’ : 680,
‘height’ : 495,
‘href’ : this.href.replace(new RegExp(“watch\\?v=”, “i”), ‘v/’),
‘type’ : ‘swf’,
‘swf’ : {
‘wmode’ : ‘transparent’,
‘allowfullscreen’ : ‘true’
}
});

return false;
});

That’s it. Again, a live preview of the video in action on MosaLingua, you can check out the source ;-).

Add your own video without youtube

Ok, then you want to follow the hard way? No problem, it’s not that hard ;-)

The simple code to embed the video

The following code is not working on all browser, I didn’t test on IE, but it’s working on safari, firefox and chrome :

<div class=”screencast”>
    <embed src=”screencast.mov” width=”240″ height=”355″ autoplay=”true” controller=”false” loop=”true” scale=”tofit”>
</div>

and the css code :

.screencast {
    background: transparent url(iphone.jpg) no-repeat;
    width: 291px;
    height: 546px;
    position: absolute;
    top: 30px;
    left: 30px;
}
.screencast embed {
    position: absolute;
    top: 100px;
    left: 25px;
}

The iphone.jpg background can be download in iTune connect (you must sign the Apple agreement).

This code is simple, but you are not sure it is working everywhere (need a descent browser : not IE6 and quicktime plugin)/

To be sure your video will be working everywhere, see this article : http://camendesign.com/code/video_for_everybody

Embed the flash video

I hate to say that, but currently, the only way to be sure that the video is working (almost) everywhere, you need to encod it in flash. I am waiting for html5 video implemented everywhere. I have done that for others site, and it’s pretty simple :

Convert your video into flash flv video

I use this free converter :
http://www.leawo.com/free-mac-video-converter/
It’s simple and easy.

Include the flv into your html

You need a player for that. The easiest way is to use the free and open source flowplayer. Example are in the download bundle, so it’s really simple/

Here it is, all the possibilities to include video into your website

How to create a Screencast video for a mobile (iPhone or Android) application with your Mac

I have created my first screencast for MosaLingua (only in french for now), and I want to share my experience here because I spent a lot of time searching disparate information, and with several trials and errors.

With this article, it will be very straightforward, and you will quickly create a video to promote your application

Application video recording

To have a perfect looking screencast, I followed the advices in this article : Not Your average iphone screencast.

So I used the application Simfinger to replace the mouse cursor by the circle, and to install the fake application in the iPhone simulator.

If you don’t want to spend time checking the sources on github and compiling the application, you can download simfinger ready to use here.

I did not use the fake iPhone body image of Simfinger, because I wanted to integrate the video on different mobile platform, and on my website.

To record the video of the application in action, I used the excellent Snapz Pro X to record the iPhone screen with  :

http://www.ambrosiasw.com/utilities/snapzprox/

Regarding the settings of Snapz Pro X, make sure you choose million of colour, and the max quality settings or the result will be ugly.

Video editing with iMovie

So you want to add a speech, transitions and maybe some marketing slides.

iMovie is really easy to use and included in Mac OS. It provides all feature needed to create a good screencast :

iMovie Quicktime export for iPhone:

When the video is finished, we need to export it in the right format, to be able to play it on the iPhone.

According to apple, the following compression standards are supported:

  • H.264 Baseline Profile Level 3.0 video, up to 640 x 480 at 30 fps. Note that B frames are not supported in the Baseline profile.
  • MPEG-4 Part 2 video (Simple Profile)
  • AAC-LC audio, up to 48 kHz

Movie files with the extensions .mov, .mp4, .m4v, and .3gp are supported.

See Creating Video for Safari on iPhone and Creating Content for Safari on iPhone.

In iMovie, export your movies using QuickTime Pro 7.2, as described in “Encoding Video for Wi-Fi, 3G, and EDGE,” :

Choose Share -> Export with Quicktime and change the settings :

After a lot of trials and errors, I can say that the optimal settings, in term of quality and size (6Mo for 2.5min) are :

Sorry for the french screenshot, but I don’t know how to change the language settings in the Apple applications.

Export your application screencast on Youtube

So you don’t want to waste your bandwith, and Youtube is perfect to host your video.

High quality export for youtube :

If you have a demo video of your iPhone app in 320×480 (portrait) and whish to upload it to YouTube, you should upscale it to HD. Open the video in QuickTime 7 Pro and export it as MP4 with Video Format H.264, 2000 kBit/sec, 1280×720 HD and check “Preserve aspect ratio using Letterbox”.

(from http://forums.macrumors.com/showthread.php?t=798599)

Add the video into an iPhone Web App :

To include your video in an iPhone web application, or a native application with UIWebView (with phonegap for example), you can use the html5 video tag :

<video src=”media/ScreenCast.mp4″ height=”100″ width=”100″>

Or you can also include the embed code presented by youtube. It works only on a real iPhone/iPod Touch and not in the simulator.

Add the video in your website

As you can see in the most of iPhone app websites (see for example 40 Awesome iPhone Application Websites), your site should include in the frontpage your screencast.

For better result, you need to use the video hosted in your website (control your bandwidth…), because the youtube video cannot be included in the iPhone body image.

The next article talk about the different way to include your video into your web site (hosting your own video, or use youtube), with code sample. Stay tuned.

HowTo Setup a SVN Server Under Mac OS X 10.6 in less than 1 min

Subversion is a great version control, very useful, even if you are working alone in your project. You can quickly setup a Subversion server in a minute, because everything in included in MAC OS X Snow Leopard (and perhaps older versions)…

– Open the terminal

– Create a directory called svnroot in your account directory : mkdir svnroot

– Then type : svnadmin create /Users/sam/svnroot (if your account name is sam)

And that’s all folk,  your svn is ready to commit/checkout. Very simple no ?

Use the svn server in the terminal

You can checkout in the terminal with this command : svn checkout file:///Users/sam/svnroot

If you want remote access, turn on ssh access (in the Sharing System Preference) and check out with :
svn checkout svn+ssh://my.domain.com/Users/sam/svnroot

Use the subersion server in eclipse

It’s also very simple :
– Right click on your project ->Team -> Share Project
– Choose SVN, Next, Create new repository location, Next and the settings are very simple :

URL : file:///Users/sam/svnroot

User / Password : your MAC user name and password

I wish you a happy checkout ;-)

Le système de répétition espacée pour apprendre une langue rapidement et durablement

Notre cerveau détruit ce que l’on a appris très rapidement

Lors de l’apprentissage d’une langue, la phase de mémorisation (de vocabulaire ou autre) est une étape obligée, et cela peut être long et fastidieux. Mais lorsque l’information est enfin mémorisée, la partie n’est pas gagnée. Si l’on ne révise pas régulièrement, on oubliera l’information très rapidement.
Heureusement, la recherche et l’informatique sont là pour nous aider, il existe des méthodes pour lutter contre l’oubli. Une des méthodes les plus efficaces est appelée Spaced Repetition System (système de répétition espacé).

Le système de la répétition espacée pour nous aider à ne plus oublier

La répétition espacée est une méthode de mémorisation qui repose sur le fait qu’il y a un moment idéal pour réviser ce que l’on a appris :
En révisant trop tôt, on perd son temps, et trop tard, on a oublié et il faut réapprendre. En fait, le bon moment pour réviser est juste au moment où l’on est sur le point d’oublier.
Alors évidemment, ce moment est difficile à prévoir, et est différent pour chaque personne et pour chaque information mémorisée. Mais avec les capacités d’un ordinateur (ou d’un smartphone comme l’iPhone), cette planification devient possible. En effet, des chercheurs ont pu modéliser la courbe de l’oubli et implémenter ensuite un algorithme informatique permettant de planifier des révisions.

Voici l’explication simplifiée de la répétition espacée en 1 minute de vidéo :

Le graphique de la video :

Courbe Repetition Espacée

L’algorithme va donc nous présenter l’information à réviser de moins en moins souvent, sauf si l’on a des difficultés à se souvenir de l’information.
Contrairement au bachotage (cram en anglais) et à la répétition sur une courte période, cette façon de réviser est optimale, il faut très peu de révision (et donc de temps) pour mémoriser durablement une information.

Les outils de répétition espacée

Bonne nouvelle pour ceux qui veulent accélérer leur apprentissage, il existe des logiciels qui utilisent la répétition espacée :
Anki est un logiciel qui fonctionne sur PC&Mac. Il est très utilisé pour l’apprentissage du Japonais, mais il peut être utilisé pour toutes les langues, par contre il faut rentrer soit même le vocabulaire à réviser.

MosaLingua est une application pour téléphone mobile (iPhone, Android) qui propose des fiches déjà préparées de vocabulaire et des phrases clefs, avec la prononciation audio (disponible pour l’espagnol, et bientôt l’anglais et l’esperanto). Il y a également des dialogues pour améliorer l’orale.

L’avantage d’une application sur téléphone c’est qu’on l’a toujours sur soi, et que l’on peut profiter des temps morts de la journée (ex. transport) pour réviser. Et il suffit de quelques minutes par jours pour apprendre 10 mots par jours, ce qui permet de connaître 900 mots en 3 mois !

Critiques du livre Free! de Chris Anderson

Free! de Chris Anderson

Free! de Chris Anderson

Je viens de finir de lire Free! de Chris Anderson (dispo aussi en Français). Je sais qu’il y a une version pdf gratuite, mais je n’arrive plus à trouver le lien.

J’ai adoré, cela se lit très vite, et cela fait beaucoup réfléchir sur le future des métiers liés au web.

Mais attention, certaines affirmations (vérités?) peuvent choquer : “le prix de tout ce qui est numérisable va tendre vers le gratuit”. Cela inclue bien sûre la musique, les livres, les films, et les logiciels… En effet, contrairement aux produits du monde réel (constitués d’atomes), les produits numériques ont des coûts de réplication nul (ou négligeables), et en allant plus loin, on peut même négliger les coûts de production/création au regard du nombre potentiel de lecteurs/utilisateurs accessible via internet.
Mais attention, cela ne veut pas dire que personne ne pourra vivre de son travail, juste que les professions, et les moyens de gagner sa vie pour les créateurs vont évoluer drastiquement. L’auteur liste ainsi plus de 50 moyens de gagner sa vie avec le gratuit.
Bref, un livre à lire par tout ceux qui sont liés à la création de contenu qui peut-être numérisé, pour bien se rendre compte du changement inévitables qui les attendent.