Graphisme ou l’apprentissage enfin moderne de l’écriture

Behold, voici une application Android unique en son genre, qui ne manquera pas d’intéresser petits, grands, et grands petits. Comme l’écrivait déjà en son temps Werni le Sage :

Un adulte qui naît, c’est un enfant qui grandit.

Graphisme donc, car tel est son nom, est à l’apprentissage de l’écriture, ce que le fer est au chemin. Une véritable perle qui ne mérite pas d’être encensée, mais installée et utilisée autant que possible pour reprendre espoir dans les nouvelles générations. La τεχνολογία au service de l’éradication des pattes de mouches, pour retrouver la beauté oubliée de la calligraphie, c’est sans aucun doute la huitième Merveille du Monde, et l’on ne doutera pas que Steve Jobs lui-même en serait tombé amoureux, au point d’échanger son iPad contre n’importe quel appareil Android et pouvoir enfin connecter the dots.

Trève de dactylographie, place à la découverte et au plaisir d’écrire : sur le vénérable Play Store, une version gratuite est disponible ici (lite) et complète là.

  • Facebook
  • Twitter
  • LinkedIn

How to find all Gmail unlabelled messages: finally an official operator

I am happy to discover that a native way to filter unlabelled messages in Gmail was recently made available by the Gmail team, though it does not seem to be widely known yet.

The operators has:userlabels and has:nouserlabels achieve what previously required the concatenation of negative label conditions for all labels in your account (such as “-label:Stuff -label:OtherStuff”). The greasemonkey extension gmailUnlabelled certainly existed to automate the process. But it had to be potentially updated with each alteration of the Gmail UI and did not work well with non US locales.

As per the official documentation:

has:userlabels, has:nouserlabels: Finds all messages without any of your own labels (excludes automatic labels like inbox, spam, and trash). Since Gmail applies labels to individual messages, you might see results that appear to have labels; in this case, another message in the same conversation thread has had a label applied to it.

The simplest search expression to obtain all unlabelled emails in gmail (and exclude system labels as well) is henceforth the following:

has:nouserlabels -label:inbox -label:sent -label:chats -label:draft -label:spam -label:trash

For regular use, this dynamic search result can be saved using the “Quick links” feature available in the Gmail Labs.

  • Facebook
  • Twitter
  • LinkedIn

Mono 3.0.0 Windows installer download link

Update: a Windows installer package for version 3.0.1 (including a hotfix) is now available here on Mono’s official website. The below information is no longer relevant.

Mono 3.0.0 has been released on the 18th of October but as of today no combined installer for Windows has been made available on the official website.

I managed to compile the master repository from GitHub on Cygwin following the official instructions, but the binary files I generated were somehow not good enough for use in MonoDevelop. So, I went on trying to generate a Windows installer using scripts from the mono/release repository. I had a limited success due to the lack of documentation and maybe the fact that I was using Windows instead of Linux.

Xamarin and all the project contributors are doing a great job. Those who are knowledgeable about the build process should document it better (and if possible simplify it) to as to share the love even more and encourage people to contribute. It is really motivating (and necessary for debugging purposes) to be able to see how code modifications can improve a compilable/installable/working version of the program.

Anyway, I tried to locate with Google a theoretical installer file name that would be consistent with the Mono 2.11 version: “mono-3.0.0-gtksharp-2.12.11-win32-0.exe”, and happily found a link in a publicly visible workfile. It seems to work well and come from the continuous build system MonkeyWrench.

I have mirrored it here: mono-3.0.0-gtksharp-2.12.11-win32-0.exe.

Enjoy and long live Mono (and .NET).

  • Facebook
  • Twitter
  • LinkedIn

Wheelchairs to become obsolete soon

I love this innovative way to rethink disabled people’s mobility:

Users would not look weirder than their counterparts riding a Segway.

Congratulations Tek! You are making the world be a better place for those who need it most.

  • Facebook
  • Twitter
  • LinkedIn

Philosophie

La durée de la vie humaine ? Un point. Sa substance ? Fuyante. La sensation ? Obscure. Le composé corporel dans son ensemble ? Prompt à pourrir. L’âme ? Un tourbillon. Le sort ? Difficile à deviner. La réputation ? Incertaine. Pour résumer, au total les choses du corps s’écoulent comme un fleuve ; les choses de l’âme ne sont que songe et fumée, la vie est une guerre et un séjour étranger ; la renommée qu’on laisse, un oubli. Qu’est-ce qui peut la faire supporter ? Une seule chose, la philosophie. — Marc-Aurèle, Pensées, Les Stoïciens, Bibliothèque de la Pléiade, Gallimard, 1962, II (17) p.1150

  • Facebook
  • Twitter
  • LinkedIn

Say hello to MySQL

Why does software so often fail to understand basic social conventions?

MySQL - Hello

  • Facebook
  • Twitter
  • LinkedIn

Call and send SMS/MMS from your ZTE 3G modem

I recently wanted to use my cell phone sim card inside my 3G USB stick (a ZTE 3565-Z bought in Croatia), without losing the ability to receive (or make, though I generally use VoIP software for this) calls.

Given what these 3G modems were designed for (i.e. modem use), and a previous unsuccessful experience trying to make a landline call with my laptop internal 56K modem, I was not sure whether this would be at all technically feasible. Yet digging the web revealed that it did could work with specific hardward and software. I preferred to challenge rather than change my hardware, and therefore set myself up for a new quest, in the hope of finding the holy missing piece of software, if there was any.

And I eventually found an uncluttered dashboard (equivalent to Vodafone Mobile Connect or Gestionnaire de Connexion SFR), which worked perfectly both to access the Internet (at least with all the 3G service providers around the world I tried) and to receive/make calls.

The existence of this simple yet world changing software (for me) was somehow unveiled here on d-c unlocker forums (then also mentionned on this German website and here), with a link to download it. For those who have not heard of it yet, d-c unlocker is a brilliant piece of software that can unlock 3G data cards (and that works!).

Surprisingly, this state-of-the-art piece of software was released under Metfone’s brand, a Khmer (Cambodian) mobile and residential Internet provider. This must be why most of the countries in the area are considered as “emerging” or “pre-emerging”…

I now have the best smartphone one could ever dream of: a laptop connected to the Internet :).

Metfone UI

  • Facebook
  • Twitter
  • LinkedIn

La révolution des pneus auto-gonflants

Amusant : ce mois-ci, nous avons d’un côté PumpTire, le David qui, ayant réalisé quelques prototypes, espère livrer ses premiers produits sous 8 mois avec un financement relativement faible de $250,000 puisque devant essentiellement payer la production des premières commandes.

We are looking to raise $250K to make PumpTire a reality. This is a large sum of money for Kickstarter projects and equates to about 5,000 tires. The money will be primarily used for four purposes:
1. Completing the engineering design. This will require us to work with vendors and engineering firms to find the right materials and processes to make the product robust and lightweight. Although we have various working prototypes, we’ll need money to make sure each part of the system works properly.
2. Testing. Once we’ve completed the production design we will build and test prototypes to see what we got right and what needs additional engineering.
3. Purchasing tooling. We will need to have molds built for each type of tire as well as the lumen and the individual pieces in the control valve assemblies.
4. Purchasing materials. And finally, we need to pay for the materials and components that go into each tire assembly.

De l’autre Goodyear, le Goliath qui a besoin d’un grant (cadeau ?) fédéral de $1.5M pour développer une technologie similaire (adaptée aux pneus de camion), qui rapportera facilement plusieurs dizaines de millions de dollars par an en cas de succès (et contribuera sans aucun doute au progrès général de l’humanité). Mais sans annoncer la moindre date de sortie commerciale…

The company did not say how expensive the new tires would be or how long it would take to develop the technology.

Goodyear auto-inflatable tyre

  • Facebook
  • Twitter
  • LinkedIn

GameDuell, le fair-play au service du business modèle

GameDuell s’est rapidement imposé comme une référence en termes de jeux d’argent, non entièrement aléatoires et contre des adversaires réels, mettant particulièrement en avant un algorithme unique de matching pour garantir un “fair-play” entre ses 20 millions d’utilisateurs.

Afin de vous donner une vraie chance, notre système de sélection des duels vous propose automatiquement uniquement des joueurs qui ont le même niveau de jeu que le vôtre.

Soyez prévenus, seule votre habilité vous conduira à la défaite ou à la victoire, et à engranger des « gains réels ».

Vous pouvez véritablement gagner.

Si ne pas jouer contre des adversaires plus forts que vous peut effectivement être salvateur, ne quasiment pas pouvoir jouer contre des joueurs plus faibles que vous assure que votre probabilité de victoire ne dépassera jamais 50%. Et donc, si GameDuell ne prélevait pas de commission, une espérance mathématique de 0€. Dans ces conditions, et même si vous êtes champion du monde du Spider solitaire ou de Diamonds, autant ne pas jouer d’argent ! Inutile également de vous enfermer pendant un an dans votre garage afin de programmer une intelligence artificielle capable de battre tous les humains ; vous jouerez contre un autre bot.

BonoboMais, en ne reversant par exemple qu’1,50€ sur 2€ misés lors d’un tournoi à deux joueurs, GameDuell s’octroie deux dimes et demi qui font passer votre espérance, quel que soit votre niveau, à une perte de 0,25€ par jeu. Autrement dit, statistiquement, pour avoir le droit de jouer, vous allez payer 0,25€. Si vous êtes un habitué des salles d’arcade, ce n’est pas nécessairement cher, mais si votre objectif est de devenir riche, passez votre chemin.

C’est là qu’intervient la grande générosité de GameDuell, qui vous propose de jouer gratuitement (oui vous avez bien lu) en parrainant vos amis : pour chaque personne que votre prosélytisme vous aura permis de ramener dans le droit chemin, vous serez l’heureux récipiendaire de 10 euros de “crédit gratuit”. Pas question toutefois de vous faire jouer contre les bienheureux qui investissent leurs économies réelles et leur talent dans GameDuell afin de pouvoir payer 0,25€ par jeu, et inutile d’espérer transférer ces 10 euros ou leurs petits sur votre compte bancaire, car il ne s’agit là que d’une monnaie de singe. Mais si de prime abord, cela peut désemparer d’être récompensé par une “monnaie sans valeur”, vous gagnez réellement une valeur de 10€ avec lesquels vous pourrez jouer en moyenne 40 duels avant de devoir passer à la caisse pour perdre plus. Merci qui ?

S’il vous prend l’envie d’essayer, n’hésitez pas à utiliser ce lien de parrainage pour vous inscrire, et que le meilleur gagne !

  • Facebook
  • Twitter
  • LinkedIn

Much Ado About Many Things

I have just changed the tag line of this website from boring “Business, Finance & Technology” to the fabulous new one you can see above.

Not that these three key topics have been deprecated, but because the Erwin Mayer Foundation encompasses so much more; hence this very flagship had to better highlight what really matters.

With this new shibboleth, I also wanted to pay tribute to my very well missed friend William, of whom I was delighted to attend four plays this Summer during the excellent eponymous festival in Cambridge.

The Plays of William Shakespeare

Sir John Gilbert's, The Plays of William Shakespeare, 1849

  • Facebook
  • Twitter
  • LinkedIn

A tip to improve the performance of your Bloomberg API application

If you make a request for data which results in a lot of events generated by Bloomberg API (such as long historical intraday data request, or possibly real time subscriptions), do not use the pattern specified in the API documentation, as it may end up making your application very slow to retrieve all events. Basically, do not call NextEvent() on a Session object, use a dedicated EventQueue instead.

Instead of doing this:

var cID = new CorrelationID(1);
session.SendRequest(request, cID);
do {
   Event eventObj = session.NextEvent();
   ...
}

Do this:

var cID = new CorrelationID(1);
var eventQueue = new EventQueue();
session.SendRequest(request, eventQueue, cID);
do {
   Event eventObj = eventQueue.NextEvent();
   ...
}

This simple change may yield performance improvements by an order of magnitude (or not, as the API is known to not be particularly deterministic…).

  • Facebook
  • Twitter
  • LinkedIn

Recursive algorithm to generate all combinations of elements in successive enumerables

If you need to flatten ordered enumerables, that is taking one element of each enumerable, in order, to flatten a combination, here is a quick solution in C# and VB.NET, accompanied with an example:

Code in VB.NET:

Private Shared Sub GetCombinationsRec(Of T)(sources As IList(Of IEnumerable(Of T)), chain As T(), index As Integer, combinations As ICollection(Of T()))
	For Each element As var In sources(index)
		chain(index) = element
		If index Is sources.Count - 1 Then
			Dim finalChain = New T(chain.Length - 1) {}
			chain.CopyTo(finalChain, 0)
			combinations.Add(finalChain)
		Else
			GetCombinationsRec(sources := sources, chain := chain, index := index + 1, combinations := combinations)
		End If
	Next
End Sub

Public Shared Function GetCombinations(Of T)(ParamArray enumerables As IEnumerable(Of T)()) As List(Of T())
	Dim combinations = New List(Of T())(enumerables.Length)
	If enumerables.Length > 0 Then
		Dim chain = New T(enumerables.Length - 1) {}
		GetCombinationsRec(sources := enumerables, chain := chain, index := 0, combinations := combinations)
	End If
	Return combinations
End Function

Code in C#.NET:

private static void GetCombinationsRec<T>(IList<IEnumerable<T>> sources, T[] chain, int index, ICollection<T[]> combinations) {
	foreach (var element in sources[index]) {
		chain[index] = element;
		if (index == sources.Count - 1) {
			var finalChain = new T[chain.Length];
			chain.CopyTo(finalChain, 0);
			combinations.Add(finalChain);
		}
		else {
			GetCombinationsRec(sources: sources, chain: chain, index: index + 1, combinations: combinations);
		}
	}
}

public static List<T[]> GetCombinations<T>(params IEnumerable<T>[] enumerables) {
	var combinations = new List<T[]>(enumerables.Length);
	if (enumerables.Length > 0) {
		var chain = new T[enumerables.Length];
		GetCombinationsRec(sources: enumerables, chain: chain, index: 0, combinations: combinations);
	}
	return combinations;
}

Usage is simple:

Dim list1 = New String() {"hello", "bonjour", "hallo", "hola"}
Dim list2 = New String() {"Erwin", "Larry", "Bill", "Steve"}
Dim list3 = New String() {"!", ".."}
Dim result = Utils.GetCombinations(list1, list2, list3)
For Each r In result
    Debug.Print(String.Join(" "c, r))
Next

or in C#:

var list1 = new[] { "Hello", "Bonjour", "Hallo", "Hola" };
var list2 = new[] { "Erwin", "Larry", "Bill", "Steve" };
var list3 = new[] { "!", "..." };
var result = Utils.GetCombinations(list1, list2, list3);
foreach (r in result) {
    Debug.Print(string.Join(" ", r));
}

As with any recursive function, memory usage can be exponential so make sure you know the number of target combinations is reasonable. Speed-wise, parallelizing this function is not worth it as we are just iterating over the elements.

  • Facebook
  • Twitter
  • LinkedIn

Embracing KISS

Make everything as simple as possible. But not simpler. — Albert Einstein

  • Facebook
  • Twitter
  • LinkedIn

Spinach, iron & Popeye

I just finished reading this very interesting paper, published in the Internet Journal of Criminology, by Dr Mike Sutton, who shows that even the most zealous urban myth busters may themselves end up committing the very crimes they are fighting against…
Bon appétit! A copy is available here if the original link is down.

Disclaimer: I have not verified Sutton’s sources…

  • Facebook
  • Twitter
  • LinkedIn

A piece of wisdom from Warren Buffett

In evaluating people, you look for three qualities: integrity, intelligence, and energy. If you don’t have the first, the other two will kill you. — Warren Buffett, 1993

  • Facebook
  • Twitter
  • LinkedIn

Le TARP, version 33 A.D.

Dans le Livre VI de ses Annales, Tacite nous rapporte cette “anecdote” de l’an 33, du temps de l’Empereur romain Tibère (et l’année de la mort d’un certain Jésus), qui ne manquera pas de nous délecter, tant elle rappelle l’intervention de l’Etat américain fin 2008 via son Troubled Asset Relief Program.

Affaires intérieures 33 ap. J.-C. (6,15-27) – Traduction Jean-Louis Burnouf, 1859 Répression de l’usure (VI,16-17)

16. Cependant une légion d’accusateurs se déchaîna contre ceux qui s’enrichissaient par l’usure, au mépris d’une loi du dictateur César sur la proportion des créances et des possessions en Italie , loi depuis longtemps mise en oubli par l’intérêt particulier, auquel le bien public est toujours sacrifié. L’usure fut de tout temps le fléau de cette ville, et une cause sans cesse renaissante de discordes et de séditions. Aussi, même dans des siècles où les mœurs étaient moins corrompues, on s’occupa de la combattre. Les Douze Tables réduisirent d’abord à un pour cent l’intérêt, qui, auparavant, n’avait de bornes que la cupidité des riches. Ensuite un tribun le fit encore diminuer de moitié ; enfin on défendit tout prêt à usure, et de nombreux plébiscites furent rendus pour prévenir les fraudes de l’avarice, qui, tant de fois réprimées, se reproduisaient avec une merveilleuse adresse. Le préteur Gracchus, devant qui se faisaient les poursuites dont nous parlons ici, fut effrayé du grand nombre des accusés et consulta le sénat. Les sénateurs alarmés (car pas un ne se sentait irréprochable) demandèrent grâce au prince. Leur prière fut entendue, et dix-huit mois furent donnés à chacun pour régler ses affaires domestiques comme la loi l’exigeait.

17. Des remboursements qui remuaient à la fois toutes les dettes, et la perte des biens de tant de condamnés, qui accumulait dans le fisc ou dans l’épargne les espèces monnayées, rendirent l’argent rare. Ajoutez un décret du sénat qui enjoignait aux prêteurs de placer en biens-fonds situés dans l’Italie les deux tiers de leurs créances. Or ceux-ci les exigeaient en entier ; et les débiteurs, requis de payer, ne pouvaient sans honte rester au-dessous de leurs engagements. En vain ils courent, ils sollicitent ; le tribunal du préteur retentit bientôt de demandes. Les ventes et les achats, où l’on avait cru trouver un remède, augmentèrent le mal. Plus d’emprunts possibles ; les riches serraient leur argent pour acheter des terres. La multitude des ventes en fit tomber le prix ; et plus on était obéré, plus on avait de peine à trouver des acheteurs. Beaucoup de fortunes étaient renversées, et la perte des biens entraînait celle du rang et de la réputation. Enfin Tibère soulagea cette détresse en faisant un fonds de cent millions de sesterces, sur lesquels l’État prêtait sans intérêt, pendant trois ans, à condition que le débiteur donnerait une caution en biens-fonds du double de la somme empruntée. Ainsi l’on vit renaître le crédit, et peu à peu les particuliers même prêtèrent. Quant aux achats de biens, on ne s’en tint pas à la rigueur du sénatus-consulte ; et c’est le sort de toutes les réformes, sévères au commencement, à la fin négligées.

100 millions de sesterces, cela représentait 19 483 561 F du temps de Burnouf (confirmé par le Littré). En 1890, la valeur à parité de pouvoir d’achat était selon plusieurs sources concordantes de 3,30 euros pour un franc. Sachant que le franc germinal, bimétallique de l’Union latine (précurseure de l’UEM, établie le 23 décembre 1865 lors de la Convention de Paris comme “Prélude aux fédérations pacifiques du futur”, selon les terme de Félix Esquirou de Parieu) venait de s’affaiblir suite à la découverte d’importants gisements d’argents (en Alaska notamment), on peut raisonnablement estimer que trente ans auparavant, la valeur p.p.a. du franc était de 4 euros pour un franc. Les 100 millions de sesterces représentent donc l’équivalent de 75 millions d’euros actuels (en extrapolant les chiffres donnés par Robert Etienne dans La vie quotidienne à Pompéi (Hachette, 1966), on aboutit à une estimation similaire, à quelques millions d’euros près).

Si l’on suppose que cette crise était surtout circonscrite aux populations d’Italie, lesquelles représentaient probablement 10% d’un Empire de 50 millions d’habitants, cela fait 15€ par habitant, ou 60 sesterces, le salaire mensuel d’un instituteur romain.
De l’autre côté de l’Atlantique, 750 milliards de dollars mis sur la table, ce sont $2500 par habitant, là aussi l’équivalent du salaire mensuel d’un jeune professeur en école élémentaire publique

Moins d’un siècle après la fin de règne de Tibère, l’Empire romain connaîtra son apogée avec Trajan. Les Etats-Unis seraient-ils seulement à l’aube de leur âge d’or ?

  • Facebook
  • Twitter
  • LinkedIn

Happy birthday, Farmers Group, Inc.

As I was trying to figure out the exact cut-off times for submitting exercise notice on options, be it early or at expiration date, I stumbled on an interesting case of profitable wildcard option exercise on Farmers Group, Inc. some 22 years ago.

On Friday, the 17th of June 1988, holders of OTM put option contracts on this stock (OTM at the closing time of regular trading hours, which by then was 3:00 PM on PHLX), submitted an exercise notice at 6:00 PM, therefore bypassing the exchange cut-off time of 4:30 PM (still in effect today) but not OCC‘s of 7:00 PM (has not changed either since then though technically 6:30 PM is a safe limit, according to an OIC expert I talked to, who also mentionned that nowadays nobody can exercise after 4:30 PM on expiration Friday).
Why? Because at 6:00 PM, this very Friday, the California Insurance Department barred a takeover of Farmers Group, Inc, which caused a substantial decline in the value of the stock and changed the moneyness of formerly worthless put options.

As of 2010, exercising an officially OTM option at expiration is still possible, though the OCC no longer accepts exercise notices after 4:30 PM. If a broker imposes an earlier cut-off time, he would benefit from exercising OTM options abandoned by its customer (who no longer can decide to exercise), should the market conditions make it worthwhile. Yet they would not need to pay this profit back to their customer since the official closing price was OTM… This is not very ethical for the customer (if the latter is not allowed to submit exercise notice after 3:30 PM for example), but it would be a waste of free money not to do it.

I wonder to which extent brokers are aware of this opportunity, whether it is a common practice, and how much they can really make out of it…

Then, when we talk about early exercise of cash-settled index options, like OEX, it is possible to exercise at the closing price (determined at 3:00 PM) until 3:20 PM CST the same day, according to CBOE’s Rule 11.1, .03:

Clearing Members must follow the procedures of the Clearing Corporation when exercising American-style cash-settled index option contracts issued or to be issued in any account at the Clearing Corporation. Members must also follow the procedures set forth below with respect to American-style cash-settled index options: (a) For all contracts exercised by the member or by any customer of the member, an “Exercise Advice” must be delivered by the member in such form or manner prescribed by the Exchange to a place designated by the Exchange no later than 3:20 p.m. (CT), or if trading hours are extended or modified in the applicable option class, no later than five (5) minutes after the close of trading on that day.

According to the OIC, it is normally not possible for an OCC member to bypass the exchange’s cut-off time, though I wonder whether it can be tolerated (like in the case of Farmers Group, Inc.)…

For physically-settled options, the only closing price that matters is the one on expiration Friday. If you exercise early, you immediately become long (or short) of securities; if you want to close your position right away you will have to use the after hours fair trading price, not the artificial and outdated closing price.

On cash-settled options however, an arbitrage strategy could consist in buying a call, selling the underlying to delta-hedge, and wait for a big downward move to occur after close and before 3:20 PM. This would allow you to exercise the call at an artificially high price, buy back the underlying at a low price, and therefore book a free profit. The reverse applies when being long a put and the underlying.
If there is no big move (and there usually isn’t any), you are good to unwind your delta-hedged position, hoping the implied volatility of the option will not have made your lose some money (and it is more likely to go down than to go up, since there has been no sudden move on the underlying), in the case you would not have hedged your vega.

Note: All referenced times are CST.

  • Facebook
  • Twitter
  • LinkedIn

L’avenir de la zone euro : une erreur du passé, selon Charles Gave

Cette conférence clairvoyante de lucidité, donnée à l’ENS en décembre 2009, laisse augurer de sombres jours pour l’Union européenne. La seule alternative plausible à l’effective mise sous tutelle du Vieux Continent par l’Allemagne, telle qu’attendue par Charles Gave, serait la sortie pure et simple de la zone euro ; permise par les reliquats de nationalisme présent dans chaque pays et les fausses croyances que la suppression du symptôme guérira le mal sous-jacent (le keynésianisme).

Lorsqu’une force extranationale est perçue comme responsable de la paupérisation d’un peuple qui s’estimait jusqu’alors libre, les plus mauvaises tendances de l’homme on tendance à se réveiller…
Frustration, planche à billet, hyperinflation, élection, et après ?
Il semblerait qu’une période prospère s’achève bientôt, et que nous allons devoir faire face aux turbulences qui accompagnent toujours la mise en place d’un nouvel ordre mondial.

  • Facebook
  • Twitter
  • LinkedIn

Hayek vs. Keynes – The Rap

Une production econstories.tv.


Hayek contre Keynes – VOSTfr
Uploaded by Liberte_Cherie

  • Facebook
  • Twitter
  • LinkedIn

How to replace Drupal core’s tracker module using views

This can be pretty handy, especially if you would like to customize it a bit more and add other tabs. Here is a simple step-by-step tutorial:

  1. Disable Drupal’s original core tracker module.
  2. Install views.
  3. Go to Site Building > Views and enable the tracker view.
  4. In the tracker view, go to the Page item, and rename it for example as “Recent posts” in Basic settings > Name and Basic settings > Title.  Make sure you click on override before saving, so that you keep the original configuration in Defaults.
  5. In the Page settings fieldset, set Path to tracker/all and the type to Default menu tab. Set Title to Recent posts and Weight to -10. Click on update and when asked for the Parent menu item, select Normal menu item, and once again type Recent posts as Title. Click on update. We are done with this page type that will display the latest nodes modifications by all users. You can now enjoy the power of views and tweak the display to precisely show what you have in mind.
  6. In the left drop-down list, select Page and click Add display. Rename it for example as “My recent posts” in Basic settings > Name and Basic settings > Title.  Make sure you click on override before saving, so that you keep a version of the original values.
  7. In the Page settings fieldset, set Path to tracker/my and the type to Menu tab. Set Title to My recent posts and Weight to 1. Click on update.
  8. In the Arguments fieldset, click on Node: User posted or commented (if it doesn’t exist, add it), and as the Action to take if argument is not present, select Provide default argumentUser ID from logged in user.
  9. That’s it! The link to your new tracker view is mysite.com/tracker; two tabs will be displayed just like in the original core module. You may for example create a menu item that links to this page.
  • Facebook
  • Twitter
  • LinkedIn

ASIN to EAN converter

Since I was needing such a product codes converter and I couldn’t find one on the web, I have decided to do it by myself… It’s always a challenge to learn a new API (here I used Amazon Web Services). But when it works fine, you are really API (thanks Youcef for the pun)!

If this tool was helpful for you, don’t hesitate to let me know by posting a comment. If you think you were lucky to find it, don’t forget to thank Good or make a donation.

Please feel free to report any bug you might encounter, or suggest improvements. The source code is now available here.

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

  • Facebook
  • Twitter
  • LinkedIn

Page suivante »