President Obama: ‘Never Again Will the American Taxpayer be Held Hostage by a Bank that is ‘Too Big to Fail’

It is good to hear that the White House has clearly understood how banks could divert from their original mission while still benefiting from the associated privileges. Now, it should not make us forget the big share of responsibility that the US government had by actively encouraging subprime mortgages.
Obama’s objectives to reshape the financial industry are ambitious. If he succeeds, it will not radically change where and how banks are making money, but hopefully add more transparency and ensure that they are not playing against taxpayers and their own customers.

Cloning objects with events in Visual Basic .NET

The easiest way to clone an object (deep copy) in .NET is to use the serialization functions available:

    Public Shared Function CloneObject(ByVal obj As Object) As Object
        If Not obj Is Nothing Then
            Dim bf = New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
            Dim fs = New System.IO.MemoryStream()
            bf.Serialize(fs, obj)
            fs.Seek(0, System.IO.SeekOrigin.Begin)
            Dim copy = CType(bf.Deserialize(fs), Object)
            fs.Close()
            Return copy
        Else
            Return Nothing
        End If
    End Function

Though the performance is not very good, for occasional operations it will do the job perfectly. However, I was confronted to the following problem: what if there are events inside the class, to which other objects have subscribed? I found several methods (and functions :-)) on various places over the Internet; they basically were:

  • Implement ISerializable yourself (meaning you have to update it each time you modify the class);
  • Disconnect from events (retrieved using Reflection), serialize the object, and then reconnect the events (I could not make this working properly);
  • Implement a serialization surrogate;
  • Implement your events in a separate class that is not serialized;
  • Implement your events in a C# base class.

Plenty of potential solutions, but none of them was good enough for me. So I played around with Reflection and found something that nobody else might have done so far. For a cloning interface that does just a shallow copy, like what MemberwiseClone does, but without event, I wrote this:

    Public Function Clone() As Object Implements System.ICloneable.Clone
        Dim cl = New MyClassName(Me)
        'Here we don't capture events, only normal fields, including non public ones (private, protected...)
        Dim FldInfos() As Reflection.FieldInfo = Me.GetType.GetFields(Reflection.BindingFlags.Instance Or Reflection.BindingFlags.Public Or Reflection.BindingFlags.NonPublic)
        For Each FldInfo As Reflection.FieldInfo In FldInfos
            FldInfo.SetValue(cl, FldInfo.GetValue(Me)) 'For serialization purpose we just need not to have events, so no need to perform a deep copy of the fields.
        Next
        Return cl
    End Function

Now if one of your class member is an object with events (or if you want to perform a deep copy), you should call its clone method (to be implemented the same way) when performing the FldInfo.SetValue, like this:

        For Each FldInfo As Reflection.FieldInfo In FldInfos
            If FldInfo.Name <> "MyObjectWithEvents" Then
                FldInfo.SetValue(cl, FldInfo.GetValue(Me)) 'It is not really necessary to clone a possible reference class member here for serialization purpose, we just need not to have events in the clone
            Else
                FldInfo.SetValue(cl, Me.MyObjectWithEvents.Clone())
            End If
        Next

If you have an object that is for example a dictionary of objects with events, you can call this:

        For Each FldInfo As Reflection.FieldInfo In FldInfos
            If FldInfo.Name <> "MyObjectsWithEventsDictionary" Then
                FldInfo.SetValue(cl, MyLib.CloneObject(FldInfo.GetValue(Me))) 
            Else
                FldInfo.SetValue(cl, Me.MyObjectsWithEventsDictionary.ToDictionary(Of String, MyObjectWithEvent)(Function(entry) entry.Key, Function(entry) CType(entry.Value.Clone(), MyObjectWithEvent)))
            End If
        Next

Finally, if you intend to use the Clone interface to serialize objects, you should make sure you don’t include class members marked as NonSerialized():

        For Each FldInfo As Reflection.FieldInfo In FldInfos
            If Not FldInfo.IsNotSerialized Then
                FldInfo.SetValue(cl, FldInfo.GetValue(Me))
            End If
        Next

I hope this will give you an insight to build something more tailored to your needs. There are other optimizations I can already think of, such as implementing a recursive Clone function where you would just put your original object and a virgin instance of it as a reference, and get a perfect serializable deep copy, whatever the class members and sub class members are! This could become a universal Clone method…

How to sort WordPress posts by modified date instead of published date?

Here is the simple solution. Simply use this:

<?php query_posts($query_string . '&orderby=modified&order=desc'); ?>

before where the Loop checks for posts:

<?php /* If there are any posts: */ 
if (have_posts()) ...
?>

It basically adds a condition to the Loop. Enjoy!

Human rights: are they absolute?

Undoubtedly, human rights represent a way for people to feel safer in a naturally troubled world. This is why the following clip cannot be deemed as harmful and the Erwin Mayer Foundation eagerly supports the message it conveys:

However, except for those who derive them from their religion, mankind shall not forget that these rights do not arise from anything inherent to being human. No absolute principle might be invoked to justify them; though it obviously makes them less appealing and defendable, they are just a contract which clauses have been drafted by a self-proclaimed majority of human societies (who refer to themselves as the United Nations Organizations), and enforced by all those who believe it can improve the common good.

Therefore, it is important to remain careful on any modification of its arbitrary components. In the the video (1:53), I was particularly suprised to read “Copyright” as a human right (item 27). History shows that people can create and share without such a right. Some human rights are dependent on each other and on the context they target, hence you could easily build alternative civilization models with different rights deemed fundamental. “Social security” is another example: beyond the definition problem, what if a civilization has found a better or alternative approach to tackle the same problem, or has not actually considered it as a problem?

Most importantly, human rights, simply because they are rights, have a meaning only when applied to mankind as a group of consenting individuals. A single human, or even a single family, could not incorporate the concept of right, let alone human right, into their understanding of the world.

Human rights make sense because we live in a society, and this is probably the best proof of their not being inherent to each of us. We have the power to define what they are to make our world better, for they are the root, if not the rules, of a civilization.

Réchauffement climatique : obscurité ou obscurantisme ?

La complaisance dans un consensus mou n’est pas propice à l’établissement d’une vérité scientifique. Qu’on l’oublie, et c’est bientôt tout l’édifice qui s’écroule.

Le professeur Vincent Courtillot, géologue physicien et membre de l’académie des sciences, s’est incidemment intéressé de plus près au réchauffement climatique. Il vient au secours de la climatologie, en apportant aux théories à la mode une réfutabilité aussi essentielle que scandaleusement qualifiée d’hérésie par les médias, les politiciens, mais surtout ceux-là mêmes qui se prétendent en être les plus illustres experts.

Il est temps que la masse bascule. Les leaders d’opinion suivront. Il n’existe pas d’intérêt matériel pour une théorie ou pour une autre, simplement une égotisation massive des enjeux.
Les marchés boursiers nous y ont habitué : malheur à celui qui défie la tendance avant que tout le monde s’accorde à reconnaître que le roi est nu. Nous ignorons quand la bulle explosera, notre seule certitude est qu’une théorie coupée de ses fondements scientifiques finit toujours par tirer sa révérence. Il n’y aura pas de choc, pas de ruines, pas de victimes. La masse ne s’enrichit pas à cultiver son irréaliste culpabilité ; en devenant sa propre victime, elle appauvrit sa capacité à résoudre ses véritables problèmes.

Dans cette conférence donnée à l’Université de Nantes, Vincent Courtillot tente d’apporter une nouvelle lecture aux données brutes dont nous disposons, et qui ont été malmenées par des experts auto-proclamés pendant de si longues années. Loin du sensationnalisme d’un Al Gore ou de Channel 4, c’est ici un discours que l’on peut saluer tant pour sa rigueur que pour sa clarté. En un mot, une contribution véritablement constructive au débat, sans polémique. Ceux qui auront besoin de plus de détails pourront étancher leur curiosité en consultant les nombreuses références sur la page professionnelle de Vincent Courtillot.

  • Ecouter la conférence (durée : 51 min.) :
  •  
    télécharger ce mp3 |ajouter à votre site

  • Visionner la conférence (durée : 51 min.) :

  • ajouter à votre site

WPF or not WPF?

I would not say it is a new paradigm, but the least we have to recognize is that Windows Presentation Foundation helps building more good-looking applications than our beloved Winforms

Stay hungry, Stay foolish!

I would like to share with you this very insightful commencement address that Steve Jobs, CEO of Apple Computers and Pixar Animation Studio delivered for the Stanford Graduation Ceremony, on June 12, 2005. Stay inspired.

The original text can be found here and a French translation there.

La Fondation Erwin Mayer est maintenant sur Facebook

Retrouvez dès à présent La Fondation Erwin Mayer sur Facebook !

Blog info-trafic, épisode 3

Deux ne venant jamais sans trois, voici quelques perles des recherches que vous avez faites et qui vous ont conduits en ces humbles lieux :

  • bancassurance : solutions à la crise
  • calcul de tension monophasé en fonction de l’unbalance
  • calcul du seuil de rentabilité d’une sandwicherie -> En voilà une question intéressante !
  • chicago tribune erwin mayer
  • comment brancher ma lampe american dj spectrum led sur mon pc -> Je vous en prie
  • comment devenir milliadaire -> Mon préféré !
  • crash team racing vente total wikipedia
  • erwin le ouf -> Yo!
  • erwin mayer artist
  • fondation erwin guadeloupe
  • fraudes difficilement detectable -> Mais bien sûr !
  • je gagne ma vie sur betfair -> Content pour vous
  • longueur doigt testosterone politique sarkozy -> Celui là il fallait le trouver
  • mission premiere de la societe generale -> Quelqu’un l’aurait-il oubliée ?
  • peut on être comme électrocutée pendant une séance énergétique
  • questions que l’on se pose a l’approche de la retraite
  • rachat de vieux cable informatique -> Pas ici, désolé !
  • comment blanchir de l’argent honnêtement -> Non mais !
  • fondation bill gates : complot -> Hahaha, c’était donc trop beau pour être vrai
  • lignes air mayer -> Non, c’est Air Win
  • quel montant en dividendes ne doit on pas dépasser pour etre taxable dans une eurl -> Question typique d’un entrepreneur français
  • être riche en travaillant dans le monde de la finance -> Ou pas ?

Free 10% discount for United Airlines flights

For anyone who plans to travel with United Airlines, I have an unused 10% discount voucher. It is valid till the 27th august 2009 (you are required to buy a ticket before this date, but the date of the flight can be later).

First come, first served, this voucher should be only valid once. If you have used it, please write it as a comment so that this post can be updated.

All the conditions and the code are detailed in the document here: United Airlines 10% Voucher.

If this helped you, don’t forget to thank Goodness or to support a cause like this one.

Plier ses tee-shirts en deux secondes – Une leçon de productivité

Cela faisait quelques temps déjà que j’avais vu une vidéo vantant les mérites de cette technique de pliage de tee-shirts et chemises, mais il fallait s’accrocher pour déterminer les étapes clefs permettant de reproduire l’exploit.
Aussi, lorsque je vois que certains ont pris le temps de la pédagogie, je me dois de saluer l’initiative. En effet, faut-il vraiment compter le nombre de personnes dans le monde concernées par cette tâche répétitive ? A part ceux qui ont quelqu’un pour le faire à leur place, et ceux qui ont fait le pari des tee-shirts jetables (lorsque certains pressings d’hôtels facturent 5€ le repassage, ou même si l’on compte le temps passé à laver et repasser soi-même, l’eau et l’électricité, un tee-shirt à 1€ – oui, cela existe, et même au bas de chez moi avec des inscriptions amusantes – apparaît comme une alternative inespérée, permettant en outre d’apporter du remblais pour les polders nécessaires dans notre lutte sans merci contre les ambitions conquérantes des mers et océans), plusieurs milliards d’être humains perdent chacun plusieurs milliers de minutes par an (en plus des plusieurs milliers de minutes de repassage – pratique culturelle aussi superflue que répandue).

Le gain de temps apporté par cette technique révolutionnaire de pliage des tee-shirts et vêtements de morphologie semblable, se traduirait donc concrètement pour l’humanité par 4 mn par jour * 365 jours * 6,8 milliards = 165 milliards d’heures.
Multipliez par le SMIC (soyons fous : 8,82 euros horaire au premier juillet 2009) et vous obtenez plus de 1459 milliards d’euros, soit pas loin d’une année de PIB français (1792 milliards en 2008) ou un peu plus que la dette publique française (1327 milliards en 2008)… Ou presque de quoi doubler le PIB de l’Afrique toute entière 1621 milliards en 2008).

En somme, une excellente leçon de productivité qui montre bien que les plus grands progrès de l’humanité résultent parfois de l’optimisation de simples gestes quotidiens.



Folding: How To Fold A T-Shirt In 2 Seconds – Explained

Les traders ont plus que jamais besoin de vous

La Fondation Erwin Mayer tient à associer toute son énergie à l’honorable mission caritative que l’association Save the traders a souhaité entreprendre.

Chacun a déjà pu faire ce constat simple : Les traders ont été injustement désignés comme les boucs émissaires de la crise mondiale que nous traversons. Non seulement c’est un raccourci fallacieux, mais c’est surtout oublier qu’ils en sont les premières victimes ! Fortune, emploi, honneur, certains d’entre eux ont tout perdu ou presque.

Alors, comme vous l’invite ce clip, que Save the traders a réalisé pour sensibiliser l’opinion publique à la situation désespérée de personnes de plus en plus nombreuses à Paris, Londres et New York, n’oubliez pas de donner beaucoup, ça aidera un peu.

Vous pouvez alternativement donner au Mir et au Bien, ils vous le rendront.

Production et circulation des richesses

Mon vénérable ami Louis-Arnaud m’a transmis dernièrement une introduction de son crû aux principes macroéconomiques fondamentaux d’une économie comme celle de la France :

Visualiser L.A. – Production et circulation des richesses

J’invite cordialement tous ceux qui veulent proférer un peu moins d’inepties ou d’imprécisions lors des dîners mondains à lire attentivement ce qui y est présenté.

Le primat du software

Walter Mossberg and Kara Swisher interview Steve Jobs and Bill Gates at ‘D5: All Things Digital’ conference in Silicon Valley in 2007. Quotes made during the time of the photograph.

Kara: “What you think each has contributed to the computer and technology industry, starting with you, Steve, for Bill, and vice versa.”

Steve: “Bill built the first software company in the industry and I think he built the first software company before anybody really in our industry knew what a software company was, except for these guys. And that was huge. That was really huge. And the business model that they ended up pursuing turned out to be the one that worked really well, you know, for the industry. I think the biggest thing was, Bill was really focused on software before almost anybody else had a clue that it was really the software.”

Walt: “Bill, how about the contribution of Steve and Apple?”

Bill: “Well, first, I want to clarify: I’m not Fake Steve Jobs. [Peals of laughter.] What Steve’s done is quite phenomenal, and if you look back to 1977, that Apple II computer, the idea that it would be a mass-market machine, you know, the bet that was made there by Apple uniquely—there were other people with products, but the idea that this could be an incredible empowering phenomenon, Apple pursued that dream. Then one of the most fun things we did was the Macintosh and that was so risky. People may not remember that Apple really bet the company. Lisa hadn’t done that well, and some people were saying that general approach wasn’t good, but the team that Steve built even within the company to pursue that, even some days it felt a little ahead of its time—I don’t know if you remember that Twiggy disk drive and…”

Bill Gates and Steve Jobs at D5: all things digital

Aujourd’hui encore, le software n’a pas perdu de sa superbe et de son importance. Plusieurs exemples sont là pour nous le rappeler.

Synaptics est le principal équipementier en pavés tactiles (touchpads) pour ordinateurs portables. Regardez dans la liste des drivers de votre machine, il y a de bonnes chances pour que ce nom apparaisse quelque part.
En septembre dernier, ils ont sorti en grande pompe plusieurs nouvelles gestures rappelant celles utilisables sur des écrans multitouch. On aurait pu saluer l’innovation et s’en arrêter là. Oui mais voilà, ces fonctionnalités auraient pu être implémentées depuis plus de 5 ans ! Le hardware, et même le firmware peuvent depuis bien longtemps différencier les doigts, capter leurs coordonnées absolues (comme une tablette graphique), et ce avec une résolution d’environ 640×480 ! Pourtant, seuls trois misérables logiciels de démonstration étaient jusqu’alors disponibles sur le site de Synaptics. Quant au SDK, il n’a pas été mis à jour depuis 2004. Si aujourd’hui le nouveau driver offre quelques gestures supplémentaires (et encore pas disponibles sur tous les firmware malgré la compatibilité matérielle), Il faut donc toujours passer par la pseudo API en C++ pour accéder à la matrice générée par le touchpad et créer un gestionnaire de fonctionnalités supplémentaires.

Théorie du complot ou non sur les raisons de ce bridage, on peut surtout retenir que le fabricant du hardware ne verse pas beaucoup dans le software, et c’est donc une inefficience qu’il faut combler ! On peut imaginer bon nombre d’applications qui pourraient profiter à plusieurs centaines de millions d’utilisateurs instantanément.

On ne se rend pas non plus compte à quel point les connectiques comme le bluetooth ou le Wifi ne sont utilisées que partiellement par le software qui les accompagne. Une start-up a d’ailleurs développé des drivers Wifi voués à faire au moins aussi bien que le Bluetooth en termes de débit de données et consommation électrique pour des applications identiques (casque, clavier…). Voilà qui risque de faire un peu d’ombre au consortium Bluetooth.
Je cherchais moi-même à faire quelque chose a priori très simple : lire simultanément de la musique sur mon ordinateur et celui de mon frère, lorsqu’on est physiquement peu éloigné. Les solutions trouvées ont été les suivantes :
Développer un script AutoIT qui synchronise la lecture des morceaux via le réseau (avec une parfaite synchronisation d’horloge),
Mettre en place un serveur de streaming temps réel (contrairement à Youtube ou à toutes les webradios, il s’agit de pouvoir écouter avec seulement quelques millisecondes d’écart le son qui est joué sur le serveur, il n’est donc pas possible d’avoir extensivement recours à la mémoire tampon),
Utiliser un bon vieux câble audio reliant la prise casque d’un ordi à la prise line in de l’autre.

Chaque solution présente des inconvénients : la première suppose que les bibliothèques des deux ordis soient identiques ou très proches, la deuxième n’offre pas une qualité d’écoute suffisamment stable (distortions comme en VoIP), et la troisième vous fait réaliser qu’il n’est même pas possible sur un ordi portable de choisir de ne pas désactiver les hauts-parleurs lorsque quelque chose est branché sur la prise line out (seul mon ordinateur, un Asus F3JA, et la version courante de mon driver son, présente un dysfonctionnement qui permet d’avoir les 2 simultanément au sortir d’une mise en veille :-), cela suppose donc d’utiliser un jack et des hauts parleurs externes au moins sur l’ordinateur émetteur.

Ne devrait-on pas pouvoir envoyer de l’analogique ou quasi analogique (pour éviter toute décompression complexe ou gestion des pertes) avec un protocole approprié sur un câble RJ45 ? Ce câble n’a pas moins de fonctionnalité qu’un câble audio classique. Mais soit, plutôt que d’inventer un nouveau protocole from scratch, pourquoi ne peut-on pas tout simplement activer le profil standardisé “Headset” ou “Generic Audio Video Distribution Profile” sur le PC de destination du signal ? Aujourd’hui, on ne peut pas par défaut utiliser un PC comme extension sonore d’un autre PC, sans raison valable vu que tout le hardware nécessaire est pourtant là. En allant plus loin, pourquoi est-il impossible d’utiliser les profils bluetooth standards sur des réseaux Ethernet Wifi ou RJ45 ?

Si le hardware a atteint une certaine maturité, on voit donc que le software en est encore à ses balbutiements en terme de mise en valeur des périphériques sous-jacents. Espérons que les interfaces utilisateurs à venir basées sur le multitouch et les caméras 3D s’accompagneront également d’une révolution en termes de software. On peut bien sûr compter sur les fabricants de hardware, mais je ne saurais que trop nous conseiller à nous tous, utilisateurs et développeurs, d’être à l’origine de cette refondation du rapport de l’homme à la machine. C’est ni plus ni moins ce qu’ont su faire en leur temps, dans une perspective business appropriée, Apple et Microsoft.

Du software, toujours du software !

Forrest Gump honours Barack Obama at his presidential inauguration

Insolite ! Une femme appelle Tom Hanks Forrest lors de son discours pour l’investiture de Barack Obama.

Et pour ceux que ça intéresse, voici la version longue :

🙂

Offrez-vous la Wii pouvoir d’achat pour Noël

Joyeuses fêtes

Ce conte d’Andersen magnifiquement illustré par Disney saura rappeler au monde que des petites filles aux allumettes continuent de s’éteindre chaque jour en ces périodes hivernales.

Stand By Me aux quatre coins du monde

Voici un clip pour le moins sympathique que j’ai découvert via Journal d’un avocat. Stand by Me est l’une de mes musiques préférées, et cela fait chaud au coeur de la voir interprétée avec tant de synchronicité et de talent par des personnes si différentes.

ASIN to EAN converter

Since I was needing an EAN to ASIN converter and ASIN to EAN converter (UPC/barcode and Amazon code), but could not find any on the web, I decided to write one myself. It is always fun to learn a new API (here I used Amazon Web Services). And when it works exactly as you expect, you are definitely API!

You can input several codes (batch mode) by separating them with “;” (semicolon). The output will be one column with the original code and another with the converted code.

So, long story short, here comes the beauty, and the beast (also available here on a dedicated page/window):

This converter can easily be embedded on your own website using the following code:

<iframe style="border: solid 1px #ccc;" src="https://www.erwinmayer.com/emlabs/asin2ean/" width="490" height="630"></iframe>

Latest features:
30/12/2014: Tab in URL and locale persistence.
19/12/2014: Responsive/Mobile-friendly version.
09/12/2014: Much faster batch operations & UI rewritten for easier readability.
09/06/2014: UI improvements for batch operations.
30/04/2014: Added support for BR (Brazil) and IN (India) locales.
02/10/2011: Added support for ES (Spain) locale.
27/08/2011: Added support for IT (Italy) and CN (China) locales.

Please feel free to report any bug you might encounter, or suggest improvements.

I may be available for consulting work on a case by case basis. Just drop me a note if needed.

Widget avant le Web 2.0 (et le Web tout court)

Que de souvenirs !

« Previous pageNext page »