Categories
Life

Facebook tue Internet à Madagascar

L’accès à Facebook ne nécessite pas d’avoir de la data (connexion à Internet) à Madagascar. Nous avons la “chance” de faire partie des pays qui bénéficient du programme Free Basics lancé par Facebook en 2015.
Mais contrairement aux apparences, il ne s’agit pas d’une bonne chose !

L’engrenage Facebook des opérateurs téléphoniques

Facebook explique à un opérateur téléphonique que, afin de promouvoir l’accès à l’information et la communication à distance, il est bon que les personnes à faibles revenus puissent avoir accès à Facebook gratuitement.
Facebook ajoute qu’un accès à Facebook gratuit permettra à l’opérateur d’avoir plus d’abonnés.

L’opérateur accepte. Il obtient donc beaucoup de nouveaux abonnés qui génèrent peu de revenus, mais qui consomment plusieurs dizaines de giga par mois de data en regardant des vidéos de chats sur Facebook.

L’opérateur constate qu’il perd de l’argent sur cette activité. Mais comme la gratuité de celle-ci attire de nombreux nouveaux abonnés, il n’augmente pas le prix du forfait Facebook, mais préfère augmenter le prix des forfaits data permettant à l’accès à Internet.

Cela a pour effet de rendre l’accès aux sites web autre que Facebook plus cher. Et de fait, les utilisateurs se rabattent sur les forfaits Facebook et n’utilisent que Facebook, ce qui valide l’argument commercial que Facebook a avancé à l’opérateur.

Et c’est ainsi qu’il semble impensable pour un opérateur d’arrêter ces forfaits Facebook.

Le danger d’un Internet ne contenant que Facebook pour les utilisateurs

Le fait de n’avoir accès qu’à Facebook peut être très pénalisant pour les Malgaches.

Ils n’ont pas accès au contenu de qualité sur Internet.
En effet, sur Facebook, seul le contenu très récent est vu. Du coup, il est moins rentable pour un créateur de contenu de le publier sur Facebook car son article ou sa vidéo ne sera vu que quelques jours.

Ils ne peuvent pas rechercher efficacement.
Lorsque vous recherchez une information sur Facebook, le résultat est trié par date uniquement et non par pertinence. Par ailleurs, le résultat de recherche est hautement influencé par votre liste d’amis et vos likes. 

Ils n’ont pas accès aux sites de vente en ligne (ecommerce)
Lorsque vous souhaitez acheter un livre, un téléphone ou des vêtements, vous pensez à Amazon, Alibaba ou Mora. Pourtant, aucun de ces services ne fonctionneront si vous n’avez qu’un forfait Facebook. 

Ils ne peuvent pas avoir de communication professionnelles par email.
Pour postuler à votre job de rêve, vous devez envoyer un email avec votre CV. Sauf qu’avec votre forfait Facebook, vous ne pouvez pas le faire. Et cela est vrai également si vous avez une entreprise et que vous souhaitez être contactable de partout dans le monde. 

Ils n’ont pas accès à l’auto-formation en ligne.
A notre époque, il est nécessaire de nous former en permanence pour rester au niveau dans notre spécialité. Des sites comme Coursera ou Youtube contiennent de très nombreuses formations sous forme de vidéo permettant cela. Avec votre forfait Facebook, cela ne vous est pas accessible.

Facebook reste utile

Comprenez-moi bien. Facebook reste util et je l’utilise tous les jours aussi bien professionnellement que personnellement. Il permet de communiquer avec ses proches ou ses connaissances, il permet de promouvoir nos produits et nos services.

J’insiste juste sur le fait que favoriser Facebook au détriment du reste d’Internet est mauvais. 

La solution

En tant qu’utilisateurs, nous pouvons aussi décider de ne pas utiliser ces forfait incluant Facebook illimité et de préférer des forfaits data (car rappelez vous de l’engrenage).

Si vous travaillez chez Telma, Orange, Airtel ou Blueline : usez de toute votre influence pour :

  • arrêter ce favoritisme envers Facebook et le traiter n’importe quel site web
  • faire baisser le prix de la data à Madagascar à 1000 Ar pour 1 GO valable au moins un mois

Et vous, utilisez-vous un forfait Facebook ?

 

Categories
Life

Nous méritons tous des vacances

Si vous n’êtes pas encore partis en vacance cet hiver (cet été pour ceux du Nord), faites-le ce week-end en prenant votre vendredi 🙂

Les vacances contribuent à la santé

Le travail est important, mais votre santé l’est encore plus. Lorsque vous ne vous accordez aucun moment de répis, votre cerveau surchauffe, votre corps souffre. Au bout de six mois sans vacances, vos défenses immunitaires seront affaiblies et le moindre rhume vous mettra K.O.

La vie est un marathon et non un sprint. Prendre un week-end allongé à la plage ne décalera pas la sortie de votre projet. En effet, la semaine de votre retour, vous serez beaucoup plus productif et vous rattraperez le temps d’absence.

Retrouvez votre famille et vos proches pendant les vacances

Les vacances vous permettront aussi de retrouver votre famille et vos proches. Dans notre routine quotidienne nous avons tendance à oublier que nous sommes des êtres sociaux et avons besoins d’échanger avec ceux que nous aimons. Les vacances sont une excellente opportunité pour retrouver ceux qui comptent le plus pour nous.

Le week-end dernier, j’ai passé des heures à barboter dans la piscine avec mon fils de 4 ans. Je peux vous assurer que ces moments familiaux sont un excellent remède contre le stress et qu’ils surpassent de très loins toutes les tentatives de relaxation style Yoga ou Footing. Mais n’oubliez pas d’éteindre Facebook 😉

Votre entreprise vous dira merci de partir en vacance aussi

Oui, votre entreprise vous dira merci de partir en vacance. Après quelques jours d’absences, nous sommes plus performants, moins irritables et plus sociables de manière générale. Ces qualités se sentent et impactent positivement les projets.

A Madagascar, la loi du travail impose 30 jours calendaires de congé. Cette règle archaïque fait que prendre un lundi compte pour trois jours de congés ! Cela décourage les week-ends prolongés et au final les prises de vacance.
Si c’est le cas dans votre entreprise, demandez urgemment de passer à 24 jours ouvrés de congé afin de pouvoir prendre des lundi ou vendredi plus facilement. Et oui, chez Nivo SA et Mora.mg, nous sommes à 24 jours ouvrés.

Convaincus ?

Alors, vous partez en vacance ce week-end ?

Categories
Life

Buy your Nickel™ with MVola, Orange or Paypal

A new Nickel website

At Nickel, we continuously improve things. One the recent change is our brand new website : https://nickel.mg.

The full catalog is now available and you can actually purchase one Nickel Dish Soap or any Nickel product from you sofa.

Online payments actually work for buying Nickel products

We also make it more user friendly by allowing all mobile payments available in Madagascar. You can pay your product with MVola, Orange Money and soon Airtel Money. Obviously Paypal and Ariary.net work as well.

Your Nickel products are delivered free of charge

Finally, to encourage people to buy Nickel products online, the delivery is offered for Antananarivo as soon your order reaches 6,000 Ar.

So, don’t wait, every week, at least one Nickel product is on Sale on Nickel.mg, get yours now!

Categories
Life

You can buy Nickel Dish Soap online

Nivo SA just made its product catalog online.

Nickel Nivo SA Online Catalog

You can browse by category, search by keywords and add products to cart.
Then you can pay online using Paypal !

Very soon, you will be able to order your Nickel right from your sofa!

Categories
Programming

Resolving version conflicts on MsBuild projects with dep.exe

I’ve recently came accross a surprisingly painful task which were about removing a warning.
One of them were the famous “MSB3247: Found conflicts between different version of same dependent assembly”.

After hours of manual troubleshooting I finally created a command line tool called dep.exe to dump the nested dependencies of every assemblies inside a directory to easily

  • Know which assemblies are referenced (directly or indirectly) with more than one version
  • Understand the dependency chain which pulled those assemblies in your bin folder

Everything is explained on the README of dep.exe.
dep.exe output sample
If you happen to have any question or suggestions, just post them in the comment section.

Categories
Programming

How to Create a Virtual Machine with Ubuntu 15.04 Vivid and VMBuilder?

The need of a Virtual Machine

I recently decided to migrate my dedicated server from Online to OVH and realized that installing a server is extremely painful.
Then I realized that one way to avoid this mess again could be to setup a Virtual Machine so that I could just move that VM to another host later.

How to do it with the command line?

There are plenty of tutorials which explain how to do so. But it looks like the options change every six months. So after hours of experimentation here is what worked for me:

mkdir /var/vms
vmbuilder kvm ubuntu \
	--cpus 2 --arch amd64 \
	--rootsize 65536 \
	--mem 4096 \
	--hostname vm01 \
	--ip 192.168.122.101 --net 192.168.122.0 --mask 255.255.255.0 --gw 192.168.122.1 --bcast 192.168.122.255 --dns 192.168.122.1 \
	--user [USER] --name [YOUR NAME] --pass [PASSWORD] \
	--suite trusty --flavour virtual \
	--addpkg acpid --addpkg linux-image-generic --addpkg vim \
	--mirror "ftp://ubuntu.mirrors.ovh.net/ftp.ubuntu.com/ubuntu" --components main,universe \
	--libvirt qemu:///system \
	--destdir /var/vms/vm01
virsh start vm01
virsh autostart vm01
  • a VM with Ubuntu Trusty as Guest OS run by KVM and controllable with virsh later
  • a NATed network with static IPs
    (the doc doesn’t mention that you need to specify –net and –mask for –ip to be taken into account)
    Note that 192.168.122.0/24 is the default IP range available so you kind of have to choose an IP in that range
  • An automatic startup
Categories
Programming

Brute force on a .p12 password with c#

It started with a VPN problem

The other day, I had an issue with my VPN and someone from the IT service remotely connected to my machine to put a certificate on it. While he manipulated the certificate manager, he exported a certificate and typed a password of 4 characters that I couldn’t see (characters were obfuscated). Just after that he requested me to use another wifi connection to test the VPN so we had to stop the chat and the remote session. Unfortunatly for me it didn’t work and the guy went to lunch.

So now, I was stuck with no VPN and a certificate which were not working! I decided to delete all the personal certificates having my name from my computer and to re-import the p12 file that the IT guy left on my desktop. I tried to do so but then I was requested to type the password – remember? it was only 4 chars. I tried all the stupid 4 letters password I got in mind (“test”, “1234”, “0000”, “aaaa”, “azer”, “qwert” …) but none of them worked.

Let’s brute force that weak p12 password

So here is the interesting part. I decided to try that very famous thing called “brute force” a password. I was saying in my mind “With my years of programming experience, it should take me 10 minutes to code it and few second to run”.
But actually it took me up to one hour to make the stuff to actually work without obvious bug in C#:

private IEnumerable<string> EnumerateOptions(IList<char> options, int minLength, int maxLength)
{
    var number = new List<int>(maxLength);
    for (int i = 0; i < minLength; i++)
        number.Add(0);

    while (number.Count <= maxLength)
    {
        yield return Stringify(number, options);

        bool overflowed = true;
        for (int numberPart = number.Count - 1; numberPart >= 0 && overflowed; numberPart--)
        {
            number[numberPart]++;
            if (number[numberPart] >= options.Count)
            {
                number[numberPart] = number[numberPart] % options.Count;
            }
            else
            {
                overflowed = false;
            }
        }
        if (overflowed)
            number.Insert(0, 0);
    }
}

private string Stringify(IList<int> number, IList<char> options)
{
    return string.Join("", number.Select(n => options[n]));
}

The result

The app was testing 2k passwords per seconds and found the password in less than 3 minutes 🙂 !

p12-brute-force

The conclusions are

  • don’t use a 4 letters password, obviously, especially on your p12 files which can used to act on your behalf
  • coding simple things can take more time than we expect (think hiring interview questions)
  • The method I’m using to check the password (X509Certificate2Collection.Import) throws an exception when the password is wrong. This makes the process extremelly slow (15x). When you happen to completely ignore the exception (catch(Exception) with a variable), it becomes reasonably faster if you activate the code optimization (Release mode)

That’s it, the code is on Github.  If you happen to spot obvious bugs in the enumerator of passwords, don’t hesitate to let me know with a comment.

 

Categories
Programming

Dfp tests

Done, I can now safely remove this test as I do not work in the Ad industry anymore 🙂

Categories
Life

Software Development Engineer – Ho Chi Minh City, Vietnam

My company is currently looking for great software developers in Saigon. If you’re not afraid of challenges and are really passionate about programming, then read this job description!
If you’re interested, don’t hesitate to contact me at : manitra [at] manitra [dot] net.

Criteo

Criteo delivers personalized performance advertising at an extensive scale. Measuring return on post-click sales, Criteo makes ROI transparent and easy to measure.
Criteo has over 1,000 employees in 17 offices across the Americas, Europe and Asia-Pacific, serving over 6,000 advertisers worldwide with direct relationships with over 7,000 publishers.
For more information, please visit http://www.criteo.com

Software Development Engineer

We’re looking for passionate and hardworking software development engineers to build exceptional web applications for our customers and suppliers.

Your daily duties will be
– To code features in Javascript, HTML, Less (Front end) and C# (Back end)
– To write automated tests (unit tests and end to end tests) to be sure they work now and later
– To learn and share knowledge to others through seminars and documentation

We fully embrace the agile methodology in our day-to-day work:
– We show work in progress as soon as possible to clients and continuously adapt our work based on their feedbacks
– We deploy a new version of our applications at least every weeks
– We have several small teams (5 to 9 persons) and they are fully autonomous to deliver complete features to production
– Meetings are short, specific and timed
– Documents are concise, up to date and available on a searchable wiki

We apply best of breeze coding practices like
– Continuous integration: code is compiled, deployed and tested automatically after each commit
– Code reviews : everything is reviewed by your teammates to share knowledge and spot dirty stuffs
– Inversion of Control: Decouple classes to allow dependency injection so that it’s easier to debug, extend and test

We use great tools
– Visual Studio 2013, Resharper 8, Webstorm
– Git versioning control
– Jira Agile for Sprint management
– Confluence for documentation

Finally, our web applications are to be built upon the best technologies which includes
– Javascript and especially AnglurarJS, Twitter Bootstrap
– Asp.Net WebApi,
– Sql Server, MongoDb, Memcached

Requirements

– Passionate about software development, really
– Willing to build great web sites
– Two successful years of experience in software development
– Ability to speak English
– Very good in at least one strongly typed and object oriented programing language (C#, Java, C++ ..)
– Very good in at least one loosely typed language (Javascript, Python, Php ..)
– Significant experience in writing automated tests
– Interested in cutting edge agile workflows
– Team player

If you’re interested, don’t hesitate to contact me at : manitra [at] manitra [dot] net.

Categories
Programming

Criteo Code of Duty 2

Après une première session pleine de succès, Criteo remet ça.

Quoi

Criteo organise un concours de programmation ouvert à tous les passionnés de programmation. Il y a 20 000 € à partager entre les 10 premiers (le premier empochant 10 000 €).

Quand et Ou

La première phase se fait sur le site de programmation codility.com le 02 Juin 2012 à midi. Pour vous inscrire il faut aller :

Comment ça se passe ?

Les qualificatifs

Les qualificatifs se dérouleront sur codility.com et voici le principe de fonctionnement :

  • vous ecrivez votre code sur le site directement (les languages autorisés sont : Java, C++, C#, Javascript, Pascal, Perl, PHP, Python, Ruby, VB.NET, Objective-C et Lua)
  • vous choisissez vos données d’entrées (en général des tableaux d’entiers ou de chaines de caractères, vous pouvez créer plusieurs jeux de données)
  • vous cliquez sur un bouton pour compiler votre code et le tester avec les données d’entrées
  • le site vous informe si votre code a fonctionné avec les données saisies et si ce n’est pas le cas, vous avez du details sur les raisons de l’echec.

La finale

Quant à la finale, vous serez invité à venir au siège de Criteo (Paris) et cette étape se passera dans nos locaux directement.

Donc voila, il ne vous reste plus qu’à vous inscrire : labs.criteo.com/code-of-duty-2