Tests: recruiters go suck my dick in hell!

So, I had to pass another test.

Most tests are SHITE. The one you pronounce with a brit accent because shite is above bollocks, twat and bloody damn stupid.

Well I code. For me logic is defined. I have been to fucking school for years to learn algebra. Linear, Boolean one, even Hermitian algebra and so much more! But for Human resources, it ain't. They want to make sure I can solve the logical games they solve on the beach during summer time in tabloïds. Logic according to Donald Trump!

I know geometry, coding, Fourier transform and an awful lot of stuffs that are freaking logical to make sure a software does what is fucking supposed to do what it is fucking supposed to do.

When asked how to make sure I am not a liar, I say look at my bloody damn code moron. I do the code, I have tests (unit tests, not your bullshit crap so called unit test, I have documentation, it is fucking tested and working for what I could test. What do you want more?

In fact you don't care. You just want me to be passing your stupid tests. 

You want a coder? Thus since you have a bloody business model based on coding you should rather know what coding is.

If you wanted to make a business of building houses then -well- you should rather know how to build one if you want to make a business out of it, no? If you want to open a restaurant, it would be a good idea to know how to cook, wouldn't it?

But for coding all the rules goes out the windows.

I know what makes a software slow or fast. Most of the time it is freaking easy you know: locality of variables, number of cycles per operations, analysis of worst cases ... Keep It Simple Stupid...

I am not smart, I am a bloody stupid lad that knows how  a computer is bloody damn more idiot than I. And it is because I am idiot that I know how it works. And that's why I am good coder.

But, you don't care about results. What you care about is I don't say any fucking slang and I speak your fucking dialect of any language that makes no sense at all for having the job done.


My last bloody test where asking me in french what was the words that should not be there: teasing, lying, fucking, challenging? If you speak slang, lying is wrong because it is all about a one way intention. All the other one are about two ways interactions so if you speak slang, lying should not be there.  So they designed bloody tests to get rid of people who know their jobs but do not speak correctly. I don't have to speak like the queen of England to be a good freaking coder.

I could have answered the right word, but I was fucking pissed.

I hate being rejected not for my fucking skills but for who I am.

I am not poshy or snobish, my parents are and I am not them : I am who I am.

I am coming from the banlieue and I spit on your face of fucking dick suckers heirs whose only merit is birth. I went to school and learnt what LOGIC really is. It is not the game in USA today, télé 7 jeux, femmes actuelles, or the Sun to entertain you on the beach while you are thinking of bitches.

I don't care your are sodomizing me rough with sand and glass ripping all my pride as long as you pay.

But not only I get rejected when I say I don't fucking care about the scam you call a brillant business plan or when I point out I work to feed me and my wife (it's all about the money) but you also want me to be rejected if I don't speak your fuk ass tarded english or french of obscurantists Tories.

Go suck dicks in hell, and be you straight or homos I don't fucking are, until your fucking lips are burning.

These tests nowadays are a fucking insult to knowledge. They are anti-intellectualism wrapped in freaking biased tests. They are not about what you can do, they are about how you TALK.

Well, recruiters if you don't want me the way I am, go fuck yourselves : I will not suck your small dicks when I prefer the sweet taste of my wife's cunt.



How Intellecutal property achieve the opposite results than its purpose

Once upon a time, people wanting to invest in printing press -that had not published a even yet a single book- went to the king to protest that in order to help propagate culture they needed guaranties of exclusivity on new contents.

Hence Louis XIV granted the editor a lettre de patente (=> patent) that would grant them so at 2 conditions :
  • responsible disclosure of content that would not harm the values of the country;
  • a free market for past books that were hellishly expensive to copy so that a broader part of the population could have access to the culture.

The result is that for 2 centuries editors have been selling books at 300 times their costs and that censorship ensued.

This idea for books have been extended to process so that we would not loose secret process that could represent a capital knowledge for the humanity.

We have lost the secret of stradivarius, many color pigments ...

As often in these cases, the intention are clear and pure: protect innovation (new exclusive knowledge) and cultural  patrimonial. A small dent on fair competition (individual rights) for the greater good.

But actually our Intellectual Property laws discourage innovations and results in the loss of precious knowledge.

How can?

First, let us begin with the loss of knowledge. Since I don't have a lot of knowledge of the world I just use my own.

Have you tried to access the public domain? Music, industrial patents, books?

These knowledge are nowhere to be found -in an easy way-. No one stores them in an easily accessible way. Storing data cost a lot, but indexing them and requesting cost even more. When you want to access them it is through opaques structures called patent offices for patents and for books and music ... well there is nothing... but a copy you may have preserved (hence accessible to those already having the content since generations).


Some private initiative have resulted in sharing public domain stuff like the Gutenberg project. But, the cost of numerization is privately founded.

For the patent you can eventually use the google initiative in the USA, but actually, the digitized contents are full of typo that can prove to alter critical data and are not tagged. You have to trust google algorithm to be relevant. I don't trust anything not telling its probability of false detection nor false alarm which is my biggest beef against AI and indexing techniques.


How do I know that. I tried to find past works associated to my grand father, Bertrand Glaenzer:
  • he have been an engineer patenting some of his work in France that now should be in the public domain,
  • he was a friend of a Pierre Verger and with his brothers  decided to sponsor his work on slave trade in Brasil
So one of my request was to access explicitly the public domain, and eventually buy this book at a reasonable price (since IP laws protect books for 70 years).

I did found the patent ... that where filed in the USA but not the one for which he worked alone in his flat during WWII in France. I found ways to buy second hand Flux et reflux de la traite des nègres entre le Golfe de bénin et Bahia de todos os Santos du dix-septième au dix-neuvième siècle for 120€!

The books is apparently not published any more, the price is damn high, and I am not even sure it will be as much available in the public domain automatically at its expiration like some of the books I love. 

You know my grand father had this amazing complete translation of the one thousand one night tale by Charles Mardrus. 

Well, it is accessible with a lot of convolution (1hour work) and effort, but from non systemic sources. The 1001 tales is quite a famous book. What of the rest?

The system is flawed in so many ways it is revolting:

  • corporation can reuse past works and re-copyright public domain like Disney who re-copyrighted  Hugo, Grimm's and Andersen's works, it is de-facto plagiarism;
  • citizens hardly have access to what is made to be accessed at lesser price: public domain;
  • private interest once they have the exclusive rights on a content can censor it, or modify it by choosing to not publish it and suing whoever shares it;
  • interesting patents that can be once again useful to Humanity are not accessible.
The last point pisses me off a tad.

The world changes. Our ancestors found ingenious ways to deal with the scarce resources they had access to, enabled people to do home production. With some resources getting scarce once again (Aluminium, Phosphate, Oil, Helium, ...) some of these patents are getting relevant again. Some small stradivarius of industrial production.

I would like to see if I cannot exploit one of this old patent that our taxes pay to preserve to build a business. Standing on the giant's shoulder is nice.

Innovation can be both finding a new solution to an old problem or using an old solution to a new problem. I am a nostalgic romantic and I like the idea of paying our hommage to our elders. Plus it means it can diminish the R&D costs enabling low costs business based on mastery of low costs with low risks. Hence a business with a fair competition that may be difficult to outsource when the cost of transport is too high. Something valuing the entrepreneurship and capacity to produce for less costs and high quality more than your capacity to access to an investor.

So the question I ask, while our public taxes in research are favoring research that have industrial application  why don't citizens have access neither to old relevant knowledge (public domain) nor to new relevant domain (scientific paper). We have the right to be entrepreneur too wishing for a fair competition.

IP was made to help the knowledge propagate and fuel a fair competition on the market to vivify economy. It does the opposite. It may be the time intellectual workers reflect on the real value of Intellectual Property and their real own value.

Does the value of creative workers comes from having the most expensive lawyers and fucking the community in the ass (even protecting clear plagiarism) or does it comes from being truly creative, spread the knowledge, and being able to adapt in a truly competitive market?

IP does neither protect innovation nor help conservation of precious old knowledge. It harms small entrepreneurs, tax payers and freedom of speech.

I am very attached to paternity rights, and I think plagiarism should be discourage, and I strongly suggest we rethink the exclusivity on patrimonial rights. Right now IP just make it possible to transform creations into a financial asset based on the law of the strongest and disfavor the smartest that has no access to capital. In which economical model does favoring unfair competition result in better prices, quality and products?

The bullying of the creative workers by the dumbest must stop. Fueling unfair competition to sustain a dysfunctional market will not make the economy better, it is quite the opposite.


The poisoned ecosystem of software industry

People like to use words like ecosystem and sustainable, but do they really understand the analogy?

One of the very dogma of capitalism is industry has to be self sustainable to survive and that software industry is virtual / cheap.

Well, no.

One of the bias of people regarding computers is that it is rational and scientifically engineered.

Well, no.

It looks organic. It could be said to be made of food chain, species mutation, territory and resources.

Let's take an Operating System (O.S.).

An O.S. has a territory is it called Hardware (HW).

O.S. can be from the same species (like openBSD and freeBSD) or different species (like windowsNT vs QNX).  It can be a "son of" another OS (like CISCO iOS from BSD, ubuntu from debian) it can be a cousin (like net/free/openBSD), it can diverge or converge from its species. They can be hybrided, specialized ...

Like organisms OS have adaptation traits (specializations) like security, portability, desktop.

An O.S. without maintainers dies from lack of updates.

A bigger O.S. requires more workforce to sustain itself.

An O.S. has a potential of sheltering itself an ecosystem (like the human guts) according to the environment, these ecosystems made of drivers and software can be parasitic or symbiotic.

OSes like species adapting to evolution share a global context like the global warming or the acidification of the oceans and they can develop strategies of adaptation. IPv6 is such a global change.

Most companies sees big O.S that can do everything a good thing, and expect a survival to the fittest ensuring them a productive one size fits them all kind of OS or a reduced ecosystem. In this companies are like shepherds. They want less diversity, and more productive OS that evolve fast.

The problem is other companies : HW makers are responsible of fast change in the landscape : if they don't add features to their HW they cannot maintain a wheel of continuous change ensuring them a competitive advantage hence a continuous flow of cash hence survival. In this HW development is like bacteria. But without the continuity of HW there is no OS. They are tightly coupled to each other's survival.

O.S. fight for a resource: time of coders. Some coders like ants tends to cooperate for a mutually positive outcome (symbiotic). Others wants to explosively get the most of the environment (cicada/parasits) because there strategy is different according to their seasonal lifetime.

However, the world is bounded.

The more the O.S. grows, the more resources (devs, energy) is burned, and the more the inefficiency of the organism is (like a cancer). Resulting notably in higher surface of vulnerability, longer time to market, higher TCO and fastest rate of dying of installed O.S.

if the O.S. is a specie than an installed computer is a specific member of the ecosystem. Then software are functions (like leaver, kidneys) and documents/data/operation are fruits. But instance of OSes are steriel. They don't evolve. Their life is a long story of growing entropy and Mean Time Before Failure. They have a limited lifetime that get shorter and shorter.

OS are competiting for time. Capital bubbles favor to disregard operational expenses in favor of violent acquisition of the market by elimination of the competition.

Thus we are favoring OS that have a high metabolism in terms of energy, RAM consumption, resources, dev's time.

The life cycle of installed computers are diminishing. While the life time of developers are the same.

However, the real world has not changed.

Take a book. Store it in an adequate temperature/pressure storage. The operational expenses for conserving the book will be close to 0. And the cost to accessing it will stay the same.

Take a digitized book. Every months it will require electricity, from time to time it will require validation that the support is not degraded, it will require upgrade of the computer storing it, or of the physical media or data format.


The cumulative cost of the digital economy for long lasting "fruits" is sky rocketing with the cancer of the industry, making capacity planning impossible.

And humans die. Developers die, taking their knowledge to the grave. They also have limited available time (especially hobbyists). They need to sleep, mates, take care of their offspring, live... and the more coder on a task the less efficient they are.

While some lonely computers are still used for vital tasks : controlling planes, nuclear plants or weapons, billing or administrative tasks.

The non bounded explosive growth of IT for more features/resources supported by the inextinguishable thirst for novelty is resulting in a luxuriant eco system where species appears every days ... resulting in the death of others while impacting the real world and resulting in a global death march for novelty. We never saw that many apps, stacks, concepts, language growth than in the last decade. And ironically most apps/software are just poor rewriting of old softwares (how many old 80's games have resurfaced with new (c)?).

 Some see the IT ecosystem in a closed system limited to bytes and bits.

However, it impacts the real one, it impacts notably the life of a specie called human beings.

Thanks to the IT bubble it is possible to over-invest in software with non sustainable calculus on the life of OUR specie if it can be amortized on 15 years.

We are not slowly losing the capacity to save our knowledge in the form of books, or songs but we also try to automatize knowledge that are necessary to the survival of our specie.

Why learn to make bread, or conserve food when just pressing a button can make it for you? With limited amount of time people invest their knowledge strategically.

Why learn about something as complex as maths, experimental science, biology,  chemistry, physics, CPU and try to understand your ecosystem when it is more efficient to be able to code automaton in python or ruby. With a well defined API doing most "basic tasks"? (Who cares if there are edge cases?). Survival to the fittest.

Big is beautiful has become the motto. Data must be big. Computers must be expensive  and have more resources to prove your social status, your OS/software MUST  be doing the maximum. Workers must know MORE.

We all live with the idea that the bigger and more violent an organism is the less likely it is to be destroyed by the other one.

Like dinosaurs our IT ecosystems favors big is beautiful and think it is all about being the best dinosaurs in the pool. But we have big high metabolism beasts that get more and more sensitive to their environment and diseases (virus, net disruption...).

But big is vulnerable to global accidental change.

May it be the costs of energy, the explosion of a financial bubble, the self poisoning of the ecosystem, a change in copyright laws, an increase in the cost of internet due to IPv6 quirks, a change of paradigm...

And you know what?

More and more free software devs are getting bored of this shit. The symbiotic behavior that helped commercial companies have a strong basis for their income has been replaced by a parasitic and violent behavior based on domination and a fast changing ecosystem. Modern IT is based on a brutal harvesting of the low hanging fruits left by the previous generations of coders without taking care of the ecosystem. OS, code, HW, education are degrading.

The numerical world has probably irreversibly taken the turn of a transition that is making life cycles of everything short, parasitic less efficient.  Our installed computers needs their fix of updates permanently to stay afloat or else they get contaminated by viruses. Old totally functioning computers having vital tasks are on the verge of extinction due to the disappearance of floppy disks, serial ports, knowledge... and the cost for replacing them get higher everyday.

At the opposite of a real ecosystem, there is no recycling; when a computer for a task dies, it does not self reproduces itself. Computer don't magically self heal, feed themselves.

There is no ecosystem, because, it is all an artefact coming from our imagination.  Calling IT an ecosystem is the poison. IT are mineral, they are yet another infrastructure like roads, railroads, water pipes that degrade when not maintained. And the more we divert money from maintaining vital real life infrastructure to spend on IT infra, the more they all degrade.

We are just building stuff that won't last. We are using amazing amounts of energy, workforces, copper, gold, gasoil, rare earth to build an industry that is not sustainable on the long run.

When IT will disappear as suddenly as dinosaur it will take away all the fruits of our works : blogs, numeric content, automated tasks resulting from former manual knowledge.

But you know what? I don't give a damn. I will probably will be dead when it will happen, and at the opposite of computers I can adapt, mend myself, make, grow, harvest my food. I have other goals in life than convincing people.

And I don't fear change because I am a true organic creature.

Will I take a new job in something I think is doomed? Well, I am a craftsman liking old mechanics having pride in being a dinosaur myself. I will do my job. Even when I have no illusion for the long term, I just hope that it will happen later rather sooner to keep my incomes to sustain myself.

IT future is dark, but it maybe just a consequence of a broader problem that I cannot fix. And I advise every one to follow my example : do not care of problems you cannot control and just live the way you want free of your opinions,  and focus on what is really valuable : your life on earth that includes having pleasures such as speaking freely.

Computers are a messy abstraction hence we are pro janitors.

What is professionalism?

Most profession defines themselves by their capacity to produce for the least costs.

And IT may define itself by its high level of experts: people that can tell you what to do, but actually don't know how to do it.

People tends to think the best approach to computers are mathematics, especially the knowledge of function(al).

But even if The Art of Computing (Donald Knuth) is a very inspiring book that should be read, even if LISP and related ideas are worthy, they are wrong at the intuition level.

Computer is about cleaning, because no computer intuition can be built from math.

It is like cooking.

Every one can cook. But a professional cook
  • can make money out of it by mastering its costs (sustainable);
  • clean its kitchen all the time and organize its work in a controlled fashion (guarantee of means);
  • do not poison its customers (guarantee of results);
  • can reproduce a same creation more than one time, while he has ability to create (Quality).

Every amateur can cook. But amateur that cleans efficiently are few. And cleaning all the time is the main hidden burden of professional cooking, however, without cleaning first you cannot cooperate in a limited space without burdening your coworkers, then you risk contaminating food. 

People want to reduce professional cooking to chemistry and tour de main (poaching eggs, soufflé, risotto, emulsion, Maillard's reaction)... others to the capacity to feed people. However it is the tip of the iceberg ; it is all about cleaning.


And my point is Math is not even close to be the chemistry of computer science, it is physics : dealing with ugliness, hence a lot of words we use from math are misleading.

Let's take the classical approach of what is a "function" and let's see why it is an un-professional misleading intuition.

a function is easier to describe as something that maps an entry space to an output space. Function can be inverted, combined....

Let's define in a meta language that looks like python :
def incr(x):
     return x+1

def decr(x):
     return x-1


def apply(n, func, arg):
     if not n:
          return arg
     return apply(n-1, func, func(arg))



We have a nice function that should be in every book as the simplest function possible

Well this is a lie. This is not a mathematical function because first it does not map an entry space to an output space and because it makes an ellipse on where the most of the hard work is : being a janitor.

Why a computer function will always be mutable


I call incr an effector. Given an output, it gives you a result that can range from expected one to unexpected. It changes the computer states.

Why can the result can be unexpected?

With ASM it is easy. The registry are made of bit values that according to the operator will be translated in various distinct operations. Addition on floats or integer, BCD ....

Computer integers/floats are segments varying according to the size of the computer architecture (from 4 to 128 bits usually) and conventions. The mathematical inversion of incr is decr defined with the following immutable rule:

incr(decr(x))== decr(incr(x))
incr . decr  = decr . incr = identity
Thus if incr and decr where pure mathematical function for all integers x we would have that there is no way incr(decr(x)) can cause a problem.

Since it is linear algebra I could also combine functions for optimization by reordering series of increment and decrement to avoid combining function

so I expect for all n and m with n>m that are integer for every values of x that all following results should be equal
1) apply(n , incr, x) + apply(m, decr, x)
2) apply(m , decr, x) + apply(n, incr, x)
3) apply(n - m, incr, x)
4) n - m  + x
5) x + m - n

I have used the mathematical commutativity of operation and we know about integer space in mathematics. Most mathematicians I have met seems to ignore that all mathematics are not linear there is an amazing lack of knowledge on stuff like hilbertian algebra, groups, anneal .... They know the words, they cannot recognize the idea when they see it.

In fact, all of this are not equivalent.

The janitor of computers have to deal with the ugly part : flawed mental models of  experts.

if x is a "computer" integer ... it belongs to a bounded segment and incrementing or decrementing too much can generate an out of bound error signaled by a flag that can be set after the operation on a register. Flag that modern languages signal mostly with errors or exception interrupting the code. Flags that can either raise a trap on CPU or set flags you must read to know something bad happened.

More over, if you use "bigint" (Perl, gmc, native in python), you can consume more than your available memory, raising another case.

And, the apply function that is a stupid tail recursivity can blow up my stack, raising another interesting case to handle. Functional addicts prefer recursion to simple for loops... because they don't use variable... instead they consume a precious resource call the call stack. Smart thinking. Instead of one register let's use unbounded memory that can explode to your face. Do functional programmers seems to care? Of course not. Their world is a world of an Aristolecian mathematics that are pure and perfect. Errors comes from the un-educated not understanding the beauty of pure theologic concepts such as monads.

And least but not last computers used human generated input (which are often strings) as an input raising yet another nightmarish circus of failures.  (wrong encoding, incorrect inputs, mis-copy pasting, blame my mistakes on the computer, yet another silly misguiding UI...) that requires a lot of work.


So most of my code for dealing with this stupid "functional" example in real life will be about transforming the input, checking their validity and non commutativity of real world, handling resources, expected and unexpected failures and finding meaningful messages and way of signaling in the correct plane (logs, stderr, clearly redacted and internationalized exceptions what went bad.

Given n,m,x carefully chosen, I can have an expected result or an exception if I don't order them correctly. 1 != 2 != 3 != 4 != 5 when it comes to dealing with the boundaries and I can face multiple different output from stuff I do not control.

As such, the computer is mutable. The results given by a simple addition gives a state.

Most pointy haired boss would say forbid invalid input BEFORE processing.

Well, some of the input of my programs maybe "external". Like the input of a web service or a perf counter from an OS or a language.  I do not control them.

So basically because computer do not work on space (that are infinite) but on segment (that are bounded) my so called function are NOT commutative. And worse, this non commutativity can result in exception for operations that the CPU could be able to peform.

For example

incr(decr(decr(MAXINT))) = MAXINT - 1
decr(decr(incr(MAXINT))) => KABOOM

Thus when combining carefully protected function, I have to revalidate the input to make sure it will work. And there is still no guarantee it will works.

Also, bear in mind human are using code. Some are distracted or incompetent (99%) others are evil or just bored (1%) and want to watch the world burn.

Every time I give access to a function to the outer world when I let code crash it can have unexpected results: my code maybe incorporated in a web stack that maybe configured poorly firing a debug console for each non caught exceptions. So most of my code is decoding strings, validating them and carefully handle the exceptions and distinguish the one I control (out of bound numbers) with the unexpected one (failures, attack, resource exhaustion).

So by nature what we call function in computer science should more appropriately called a model.

There should be 2 models :
  • sensors modeling user input or data coming from sensors and their failures;
  • effectors modeling expected output from input and signaling properly all the range of output possible. 
A computer function in dealing with its input is a sensor, and an effector when it executes, and since effecting and sensing are the same in quantum mechanics (observing modifies the system) hence we can call them observable.

Since, physics is great let's say how code should be handled.

Sensors/observators in physics  all have probabilty of failures, they also have domains of validity.

Ex: x is not an integer it is a natural signed number belonging to a range of [MININT; MAXINT].

Observable have a probabillity of [true, false] x [ positive, negative] associated with costs. The role of a real project manager should be to clearly produce the matrix of costs for each False,True X positive, negative for every business model we code. 

Our code exceptions can happen in mathematically legitimate case for the model. Ex: incr(decr(MAXINT)) should be MAXINT

Since we combine pipelines of codes and since the correct ordering of operation now can be disrupted at CPU level, we cannot guarantee the proper functioning of our code.

Hence errors should be considered not in a deterministic way but in a probabilistic way with a proper appreciation of the costs of failure.

Project managers and coders should be versed in business/cost analysis and probabilities (of rare events).

We also share our environment, a code eating all the memory (or IO) in another container can balloon to the point of disrupting our operation (or maybe we have bit hammering).

External influence should also be considered as a part of the costing.


Well, you see, being a real coder is being a janitor: we have to deal with a world of so called experts and professional messing up with users and expecting us to deal with the mess they create and hammering us down every time something goes wrong.



Des cheveux et des religions, et du voile

Ma femme parfois me demande pourquoi je suis obsédé par les cheveux des autres alors qu'elle a un mal de chien à me faire aller chez le coiffeur.

En fait, j'en sais rien.

Mais en tant que personne élevée en France un truc me hérisse, c'est le coupage de cheveux en quatre, et le voile à l'origine qui est une histoire de cheveux.

«Le Monde», et moult autres journaux du centre de droite, de gauche, d'extrême droite et d'extrême gauche semblent ignorer le problème de la capilarité.

Les intellos sont souvent des gens biens, qui contrairement à moi sont intelligents et ne négligent pas d'aller chez le coiffeur. Mais négligent de vérifier la source de leurs préjugés.  Bref de vérifier, de lire.

Donc selon les élites françaises, le voile est soit un mal musulman qu'il faut éradiquer soit une preuve d'être un réac d'extrême droite qui ne sait relativiser les cultures différentes. Comme si ce débat n'avait jamais touché la France moderne. 

Hum. BULLSHIT.

Les gens de droites et de gauches ont torts, les femmes en Europe se sont battues contre le voile/le diktat de la longueur des coupes de cheveux. Le même imposé aux femmes dans les couvents, pour aller visiter les églises (pratiques toujours d'actualités en Europe dans certaines villes), et même certaines régions (la Corse, et le Portugal). Yes, en Europe les femmes se sont battues pour avoir les cheveux courts.

Voyez vous, messieurs dames, et j'y reviendrais plus tard le Coran ne dit pas grand chose sur le voile. Et ce n'est pas exactement l'ancien testament (supposé plus juif que chrétien qui en parle). C'est le nouveau testament.

Et c'est là de foi de protestant d'origine ... que je proteste sur cette histoire.

La folie voilesque est chrétienne, et par extension musulmane puisque Mahomet reconnaît Jésus Christ comme un des prophète de la foi musulmane. Le voile est initialement chrétien, suggéré par un des prophètes de l'Islam (Jésus) donc aussi musulman.

Or que dit Jésus sur le voile selon l'édition du Saint Livre immuable (la Bible) corrigée lors du concile (réac) de Trente?


Je cite l'évangile selon St Paul : (Corinthien chapître 11)


1 Soyez mes imitateurs, comme je le suis moi-même de Christ.
... 3 Je veux cependant que vous sachiez que Christ est le chef de tout homme, que l'homme est le chef de la femme, et que Dieu est le chef de Christ. 4 Tout homme qui prie ou qui prophétise, la tête couverte, déshonore son chef. 5 Toute femme, au contraire, qui prie ou qui prophétise, la tête non voilée, déshonore son chef : c'est comme si elle était rasée. 6 Car si une femme n'est pas voilée, qu'elle se coupe aussi les cheveux. Or, s'il est honteux pour une femme d'avoir les cheveux coupés ou d'être rasée, qu'elle se voile. 7 L'homme ne doit pas se couvrir la tête, puisqu'il est l'image et la gloire de Dieu, tandis que la femme est la gloire de l'homme. ... 11 Toutefois, dans le Seigneur, la femme n'est point sans l'homme, ni l'homme sans la femme. 12 Car, de même que la femme a été tirée de l'homme, de même l'homme existe par la femme, et tout vient de Dieu.
13 Jugez-en vous-mêmes : est-il convenable qu'une femme prie Dieu sans être voilée ? 14 La nature[?] elle-même ne vous enseigne-t-elle pas que c'est une honte pour l'homme de porter de longs cheveux, 15 mais que c'est une gloire pour la femme d'en porter, parce que la chevelure lui a été donnée comme voile ? 16 Si quelqu'un se plaît à contester, nous n'avons pas cette habitude, non plus que les Eglises de Dieu.


Bref pour résumer St Paul qui est un poil confus :
  • la femme doit prier couvre chef
  • l'homme doit se découvrir;
  • Mais comme c'est honteux pour une femme d'avoir les cheveux coupés il faut qu'elle ait un voile;
  • Parce qu'elle est inférieure aux hommes (wut?!)
  • Mais en fait les cheveux (long) des femmes sont un voile, 
  • Et donc les cheveux courts c'est bien pour les hommes,
  • et ça permet de distinguer qui est supérieur à qui...
  • Ouf
Bref la Bible dit Dieu (chauve?) >= homme  (cheveux courts) > femme (voilées mais cheveux longs == voile)

Est-ce à dire que les musulmans sont aussi cons que le chrétiens ?

Que nenni! À part le prophète Jésus qui en parle (cf ci dessus) le Coran s'en contrefout du voile. En fait il y a une occurrence dans le coran.

La sourate de Lumière (sourate/verset 24) qui évoque en ces termes le voile

Et dis aux croyantes de baisser leurs regards, de garder leur chasteté, et de ne montrer de leurs atours que ce qui en paraît et qu'elles rabattent leur voile sur leurs poitrines; et qu'elles ne montrent leurs atours qu'à leurs maris, ou à leurs pères, ou aux pères de leurs maris, ou à leurs fils, ou aux fils de leurs maris, ou à leurs frères, ou aux fils de leurs frères, ou aux fils de leurs soeurs, ou aux femmes musulmanes, ou aux esclaves qu'elles possèdent, ou aux domestiques mâles impuissants, ou aux garçons impubères qui ignorent tout des parties cachées des femmes. Et qu'elles ne frappent pas avec leurs pieds de façon que l'on sache ce qu'elles cachent de leurs parures. Et repentez-vous tous devant Allah, Ô croyants, afin que vous récoltiez le succès 
Bien entendus nombres d'érudits ont édicté des fatwas (interprétations) de ce verset pour dire que le voile était une allégorie. Néanmoins, comme le Coran est une religion où la foi est décentralisée, et que la foule a décidé de son interprétation, selon toutes mes relations croyantes islamistes magrébines cela s'interprète comme :
si une femme se découvre tu as le droit de la violer.

Comme je le répète, la religion musulmane est aussi variée que la religion chrétienne (papistes, protestants, cyrilliques, orthodoxes, baptistes, mormons, amishs, anglicans...), et est autant sujette à l'obscurantisme que l'Islam.

Des Perses, des Kabyles des Turques et d'autres musulmans m'ont assuré que cette interprétation était réductrice, et qu'il ne fallait pas généraliser la force obscurantiste du poids des traditions.

Néanmoins, force pour moi est de constater que l'on se fait toujours regarder bizarrement quand on est un homme avec des cheveux longs en kilt en Europe avec une femme aux cheveux courts. Et qu'un voile pour les femmes, ainsi qu'enlever son couvre chef pour les hommes sont toujours exigés pour visiter moult bâtiment religieux chrétiens en Europe.


Bref, avant de faire chier certains musulmans (qui le méritent amplement) avec le voile, certains apôtres des valeurs progressistes chrétiennes feraient bien de regarder la poutre dans leur œil avant de critiquer la paille dans l’œil de leur voisin musulman.

En ce qui me concerne, m'en foutant royalement des religions, et des cheveux, je suis pour le j'en foutisme maximal en terme de cheveux, et continue à regarder bizarrement les femmes qui suivent modes et traditions.

The troll in calling people troll

You may not be versed in Persian culture since Palmyre, Bagdad, Palestin are just in ruin and their culture has been constantly oppressed by various empires, but the story of Nasrudin questioning the common sense are very nice to read. Nasrudin was the first troll ever. He has been my model.

You can find some echos of this tradition in the uncensored translation of the one thousands and one night tales. It was my favourite child book.

Nasrudin was both depicted as an idiot and a wise man. And it was very hard to tell if he was stupid or smart. His constant irony was aiming at conventionnal wisdom and the authority of the wise.

In one word what we call the expert.

I will quote Feynman most important definition of science:

“Science is the belief in the ignorance of the experts”
Essay presented at the fifteenth annual meeting of the National Science Teachers Association, 1966 in New York City
I am adding the context because the context is important. Feynman was trolling the teachers. Implicitly telling them they were teaching kids the wrong thing : the obedience to the symbol/authority of science and not the critical rigourous of thinking and confronting your theory to the experimentation..

 Another way to turn it is science relies on rationality and constant questioning not on emotions or empathy and being right.

I am currently my own experiment on the topic for myself and my conclusions so far is I can predict when I will be called a troll. Why do I do it? Because I have time and something bugs me. The slow raising call to ban troll and criminalize them.

My methodology has been simple. Going to places and randomly defends random opinions based on logic and see how people reacts. Especially when I could find a simple counter example based on history or science.

And then for 3 months I have been experimenting on how to raise scores, how to avoid conflict saying the same things, and try to see if the troll were in my ideas or in the social networks. I have taken as a personal rule to avoid the use of fallacies because I believe like Arthur Schopenhauer that resorting to them is making discussion impossible. However, I used sarcasm, irony, bad taste. I tried to avoid emotionally loaded arguments but never resisted using loaded historical context. As the inventor of the Godwin point  pointed, well sometimes you faces a point where you can be indignated.  And after reading Indignez vous! from Joseph Hessel, I did like a lot of European adults, I realized it was okay to agree to disagree with the others and did not required a fight.

My experimental findings are qualitative but fairly easy to sum up.
  1. you will be more likely be called troll if you question common wisdom/sense or the authority especially of experts;
  2. the more factual and logical are your arguments the more it will backfire;
  3. the more you will be in a community making efforts towards tolerance and empathy the more the reaction will be violent. 
So basically my point is the troll is in the eye of the social network where you publish.

After reading Scott Adams analysis on how Trump may win the elections I got the final piece of the puzzle on how it works : the use of emotions in manipulations. Emotions are the enemy of constructive discussions aiming at exchanging.

If a discussion is about the grieving of your cousin, don't be an ass, emotions are normal in this context. Not all of them of course, but be human.

I would say that culture is informal rules that ignore themselves and provoking a troll reaction is hitting an invisible rule, and it can results in social mass reaction of reject. Cyber bullying.
Some individuals may turn in the cycle of victimization and reproduction in lonesome wolf troll, but I will not treat the exceptional case of the lonely troll. I just will share my intuitions on how communities are creating the ordinary trolls.

I have the belief that individual are more vulnerable when facing a mass. As a result I will mainly give rules of survival for potential troll. Not communities. A community hating trolls is just dying. My advice is vote with your feet against dangerous community. Death of toxic community by attrition is a good strategy.

Be an adult

I believe that the overexposure of young children to social media is potentially dangerous for most of them. They are not well taught yet on how to handle their emotions. They can either become part of the lynching mob, or the angry troll. I also think over protecting them is bad. So here are some self defense trick to help kids or people that get called trolls alike:

I would take as a warning signs for a potential victim the following signs :
  • has a strong negative or positive reaction to authority that is hardly controlled,
  • is for external reasons subject to violent contextual emotions (grieving, success, moving);
  • is strongly integrated or excluded to a local community (collective sport team, religion, political teen stuff, musical movement);
  • is/has been a direct victim of violence (rape, bullying, agression, wars, terrorism) and been denied their conditions in real life;
  • is diagnosed (for what it worth) ADHD, bipolar, depressive, dyslexic, sociopath, psychopath or autistic. 

Basically the most vulnerable person in our societies are more likely to be called trolls. And they basically are the person that have the more drive to make a point due to personal motivations especially that most actual vehement victims are often denied the recognition of their situations.

Technique to mitigate the problem
  • using /ignore features;
  • learning to retreat as soon as the word troll is being called. Loosing a battle is not losing war;
  • learn humor, sarcasm, irony and learn to distance yourself from the emotions, cut the empathy when discussing (emotions are cool for playing better music so keep them);
  • do RPG or improvisation or play music in public to learn how to feel a crowd and master your emotions;
  • read the The art of controversy
  • burn any social media accounts where conflict repeat themselves before you get spotted, fly below the level of the radar
  • your opinion maybe worthy, defend them, but learn to listen to critic as long as :
    • they are based on logic
    • you are treated on an equal foot
    • the counter augments are not crossing a moral line you can easily state
  • you also may be wrong, be prepared for it, it hurts your pride, but learning worth it;
  • learn to stay away from a fight the most you can and come back after a reasonable time. If after 3 days sleep you are still pissed, one of you is a troll, if you are pissed at you for having been trapped, do not answer! Sometime you fail or you are just not right. Live with it. It is totally okay if the person made a point to recognize it, even if you have been trolled. Recognition is a must.
  • READ. Read a lot of books
  • ignore the trolls, the most you can, the limit exists, but if this limit is crossed too often either something is wrong in the community you attend or you are wrong. Pick up your fights, pick up wisely. Some fights are not worthy. Learn to retreat and flee;
  • don't give up if a point is important, if you are a victim try to search strength where you can find it not where you think it should be, try, try, fail, learn, try, and try until it works. 
  • be peaceful. Anger, fear, are clouding your judgements, do not fall into the traps of violent emotions;  
  • don't follow rules given on the internet as bullet point blindly : be critical

Community management

You are expected as a community manager to do what is RIGHT, not morally or emotionally but for the sake of discussion

Here are some advice I would give:

  • if you have problem in your community : you sux; 
  • relativity, traditions orthography, grammar and universal values are a trap. Let people discuss based on reason and logic;
  • don't get involve in regulating discussion based on the subjective emotional pain  a person is claiming to have. Someone using empathy or emotion or politeness to try to settle an argument is probably a troll; beware of victimization;
  • learn to your community to use ignore features and propose it to them, spot the people getting trollish or trolled. Some person are better banned than sided/attacked dont hesitate in early kick of both trolls and trolled;
  • let people learn and check their progress. Failing is an option, persevering in failure is not;
  • don't trust people appealing to their authority/experience unless it can be established by facts;
  • apply to yourself what you apply to others. If you are a leftist pro tolerance group, accept that people disagreeing with you may be totally legitimate;
  • protect first the more vulnerable, especially the kids, the psychotics, the atypical not the strongest nor the mob;
  • pointing rationally inconsistencies will hurt the feeling of some; well, people have to accept this else no discussion are possible. A community is about discussing, disagreement are part of discussion, hence people will always feel hurt when they are wrong; we are all human beings;
  • people that often and easily offended by trolls are trolls; 
  • the only measure of your success as a community manager is the success of your community both on individual and global level; gives yourself some time to assess its evolution from time to time, seeing if some members progress, and if your community reaches some social objectives, and how active/joyful people are.  
  •  refuse any Code of conduct. But assert that every persons are responsible of their words and that it limits the freedom of speech (incitation to commit crime in privacy has to be considered the same as in public). Be consistent with your values;
  • someone calling on a third party for arbitration is more likely trying to try to win an argument by using an appeal to authority;
  • allow anonymity encourage use of recognizable nicks accountability when possible discourage it where it is a bad idea (like on a forum on how to find abortion pills in Brazil);
  • don't follow rules given on the internet given as bullet point blindly : be critical

In another context, with my team Section Finger, we have been managing successfully a public urban terror server for years. I followed these rules, notably by using kick/ban a lot with aggressive people and the results we had were the following:
  • early temporary kicks helps people cool down I would kick both trolls and anti trolls when we were playing, anyone arguing and polluting the game so there would be no benefits at winning a flamed arguments;
  • kids and women were going on our servers because they felt safe;
  • we disagreed on how to manage the community, but we all did managed it collectively;
  • the technical level was high, and noobs were making progress fast;
  • our servers had nice talks going through randomly, and it was nice to see a community discussing;
  • I loved being a community manager, because we shaped a nice community. 
  • once you set the dynamic correctly, you are likely to have your function disappear;
  • Kudo to myrmica who is now a member of team fr.
Given that mil fan boys, and FPS competitive users are pretty a trollish community by default, I consider I have been a good part of the community management, that is the reason why I feel legitimate in my advice.


After my unfun part that can be concluded by the raise of concern about trolls on the internet that is in my opinion a raise of censorship. I see most communities as the reason trolls appear in the first place. Reading french newspapers comments regulated by professional community manager is nauseous and full of racism, xenophobia.

Trolls are just appearing as soon as a community is pissed at someone not agreeing in their way. Some troll hunter are just basically hunting for diverging opinions, and are manipulators.

Trolls are the result of community management done wrong.

Fun discoveries

Most intolerant communities are open liberal & intellectual communities :)

I see it has a Donning Krüger effect; the people more likely to misbehave in tolerance are more likely the one convinced they are tolerant. The idiot and the wise alike know nothing about their aptitude at being tolerant. And that what tolerance is. Recognizing you may be wrong.

As a result the people applying for professional or benevolent community management are more likely to be expert, hence poorly doing their job. The only measure of a good community management is that there is a good community ... that often do not need a community manager.

For the same reasons, people convinced they are artists or intellectual or scientific are likely to be bad at arguing in respectful ways.

My overall advice is to avoid open minded communities for open discussion. Since Free Software is giving up on its radicality to open itself it does become more unfriendly to the differences of non typical thinking... pushing away the motor of its openness. 

People strongly asserting their intellectual capacity to dialog rationally are also dangerous. When I am in the mood for fun, they are my favourite victims of some perturbations, and it sometimes backfires in huge proportions. Yes, even with all my rules, it does not work perfectly. I still get caught sometimes in the net of polemic. Well, shit happens, and sometimes I fail. My results are telling me my understanding is still far from perfect. And I am okay with it : I don't have a perfect rule book for manipulating/educating people. It means I am not a master troll, just an apprentice on its way to learn. I am no expert... yet. And it is cool. For now I can trust myself a tad.

I actually know how to not piss people : you have to flow with the crowd, use emotions, and wait for support. It is very easy to become a leader. You just have to flatter the mass and I am as gifted to piss people as I am to manipulate them. I chose my path.

Resorting to logic and rationality makes your acceptation/success way slower. Your support to be less strong. There are two paths in a community the one leading to a strong self righteous community, and the one of strengthening the individuals to result in stronger communities.  You can chose to be the strong among a weak community or one of the weak in a strong community.

I prefer to be weak.

I will be no one's wise man. I am just an idiot, and I will keep it that way.




Modern Computer Science is obscurantism disguised as science

Recently I decided to get back to the basics and question my use of classes/frameworks.

I tried to find a definition of the word framework but weirdly this word is a tautology, no one knows what it is, but it refers at itself for something people use to get the work done through the use of external knowledge. But can you manipulate knowledge you do not understand?

This word has been broadening so much that it globally is a synonym of a shortcut for standing on the giant's shoulder without having to do the painful process of climbing painfully all the way up by learning. Framework are actually for me a synonym for an intellectual shortcut ; they are the foundation of cargo cult programming. And I want to illustrate it with a python code example to draw a wall clock without libraries except for importing constant (exponential and PI) and drawing.

So I will introduce an anti-framework that makes you have less dependency based on taking no shortcuts : science. Not the ones of computer science and university, the one that also is useful in the real world, hence a more useful tool than framework. Something that can help you compute solution with a pen and paper fast. And for which you can check the results of your code. The science taught in high school that requires no degrees and that we are supposed to know when we are given the responsibility to vote. The one that help you make enlightened decisions as a citizen for the future.

For the example I will use a simple use case with code: an analogic wall clock. I will treat different problems: 2D & 1D geometry, sexagesimal basis, drawing the hands, computing time without datetime.

Scientific reasoning to be understandable before coding requires that you explain what you are doing and how. To introduce the problem in a simple, yet consistent way so people do not understand the code, but the mental process to interpret the code, thus to define rigorously your concepts and definitions. The stuff Agile hates : explicit requirements and clear definitions of concepts, rigor.
 
What is time?

Time in its usual form hour/minute/second is inherited from Sumerian civilization. A civilization that was localted in Irak -whose archeological wonders occidental civilization took part in destroying- that has brought mathematical knowledge to the world thousands years ago. It was designed by people having no computers but knowledge of the fact earth is round, having simple use of fractions and basic geometry. Time cannot be manipulated without understanding that earth is round and that it revolves around the sun and that noon is dependent from your location.  12:00am is set on when the sun is at its zenith for a given place. Which is basically an invariant on a meridien. Giving time, is giving a relative position of earth according to the maximum potential exposition to the sun.

The base of 60/60 is useful for astronomers using sticks/shadows and is quite powerful in low tech context. 360° (minutes * seconds) is a measure of the rotation of the earth according to a reference (noon) and since the angular speed of earth is constant, it is linearly related to time. Time measure the relative angle from your position according to noon in a referential where earth is rotating around its north/south pole axis. It is periodic. It is thus a measure of phase/space. Usual time is a space measure.

The python time() function is an expression in a base 10 of the time elapsed since 1/1/1970 according to your geographical position without all political biases (except TZ).
Localtime is the correction with leap seconds, DST .... and politics. Something defined by arbitrary rules that is far to be a one best canonical way.

Each hand on a wall clock rotates with a speed according to its rank in the base.

Seconds rotates at the speed of a 60th of a turn per seconds.
Minutes are 60 time slower
Hours ... are 24 times slower, but by convention, we prefer to make it with a period of half.
Basis conversion be it base 10, 2, or sexagesimal is a CORE concept of computer science. It is a core requirement every developers should be able to do it without libraries.

I am gonna introduce a convenient tool for doing geometry : the Moivre formula that will do the heavy lifting :

exp( i * theta) = cos(theta) + i * sin(theta)
https://en.wikipedia.org/wiki/Complex_number

To understand the following code, understanding the geometrical relationship between complex notation, cartesian/polar coordinates requires learning and rigor. And there is not shortcut for it.

I don't know why, python is confusing j and i. And I hate IT, it is like a slap to the face of people using science.
i is defined by i² = -1 python decided to call it j
j is traditionally defined by a number such as  j**3 = -1 for which the imaginary part is positive. Thank you python for not respecting mathematical conventions, it makes this confusing.

I guess it falls into the tao of python
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch.



That is not the first time I have a beef with python community when it comes to respecting mathematical notations and their consistent use. I could dig this topic further, but it would be unfair to python which is not even the community with the worst practices. 

So without further ado here is the commented code without the noise of colors. Brutal code.
(Colored version here)


import matplotlib.pyplot as plt
from time import sleep, time, localtime

# Constant are CAPitalized in python by conventionfrom cmath import  pi as PI, e as E
# correcting python notations j => I  
I = complex("j")

# maplotlib does not plot lines using the classical
# (x0,y0), (x1,y1) convention
# but prefers (x0,x1) (y0,y1)
to_xx_yy = lambda c1,c2 : [(c1.real, c2.real), (c1.imag, c2.imag)] 

# black magic
plt.ion()
plt.show()

# fixing the weired / behaviour in python 2 by forcing cast in float

# 2 * PI = one full turn in radians (SI) second makes a
# 60th of a turn per seconds
# an arc is a fraction of turn
rad_per_sec = 2.0 * PI /60.0
# 60 times slower
rad_per_min = rad_per_sec / 60
# wall clock are not on 24 based because human tends to
# know if noon is passed
rad_per_hour = rad_per_min / 12

# I == rectangular coordonate (0,1) in complex notation
origin_vector_hand = I

size_of_sec_hand = .9
size_of_min_hand = .8
size_of_hour_hand = .6

# Euler's Formula is used to compute the rotation
# using units in names to check unit consistency
# rotation is clockwise (hence the minus)
# Euler formular requires a measure of angle (rad)
rot_sec = lambda sec : E ** (-I * sec * rad_per_sec )
rot_min = lambda min : E ** (-I *  min * rad_per_min )
rot_hour = lambda hour : E ** (-I * hour * rad_per_hour )

# drawing the ticks and making them different every
# division of 5
for n in range(60):
    plt.plot(
        *to_xx_yy(
            origin_vector_hand * rot_sec(n),
            .95 * I * rot_sec(n)
        )+[n% 5 and 'b-' or 'k-'],
        lw= n% 5 and 1 or 2
    )
    plt.draw()
# computing the offset between the EPOCH and the local political convention of time
diff_offset_in_sec = (time() % (24*3600)) - localtime()[3]*3600 -localtime()[4] * 60.0 - localtime()[5]   
n=0

while True:
    n+=1
    t = time()
    # sexagesimal base conversion
    s= t%60
    m = m_in_sec = t%(60 * 60)
    h = h_in_sec = (t- diff_offset_in_sec)%(24*60*60)
    # applying a rotation AND and homothetia for the vectors expressent as (complex1, ccomplex2)
    # using the * operator of complex algebrae to do the job
    l = plt.plot( *to_xx_yy(
            -.1 * origin_vector_hand * rot_sec(s),
            size_of_sec_hand * origin_vector_hand * rot_sec(s)) + ['g']  )
    j = plt.plot( *to_xx_yy(0, size_of_min_hand * origin_vector_hand * rot_min( m )) + ['y-'] , lw= 3)
    k = plt.plot( *to_xx_yy(0, size_of_hour_hand * origin_vector_hand * rot_hour(h)) +[ 'r-'] , lw= 4)
    plt.pause(.1)
    ## black magic : remove elements on the canvas.
    l.pop().remove()
    j.pop().remove()
    k.pop().remove()
    if not n % 1000:
        ### conversion in sexagesimal base
        print int(h/60.0/60.0),
        print int(m/60.0),
        print int(s)
    if n == 100:
        n=0
   


My conclusion is frameworks, libraries make you dumb. It favors monkeys looking savant as much as pedantism in academic teaching is. People may try to point THIS is pedantic, but pedantism is about caring about the words and formalism, not the ideas and concept. It is like focusing on PEP8 instead of the correction of the code. Pedantism is not saying correction is important, it is annoying developers with PEP8.

My code is saying the earth is round, that it revolves around the sun with a constant rotational speed, that noon is when the sun is at its zenith and happens periodically, that I have an harmonic oscillator in my computer that is calibrated to deliver me time with a monotonic growing functions, that we use a 60/60 base since millennials to represent time, that most of the problem we encounter with times are either political or due to an insufficient understanding of its nature. And that we can use complex numbers to do powerful 2D geometry operation in a compact, yet exact way that does not require libraries or framework. Complex numbers operations USED to be hardwired in CPU. They became useless, because people stopped using them by ignorance, not because they stopped being useful.

Our actual problem is not computer raw power, but education. Every coders using datetime modules should be sacked : datetime operations are (out of the TZ insanity) basic base conversion and 1D operations of translations projections. If a coder do not understand what numbers are, what time is, the difference between representations and concepts why do you entrust them manipulating your data in the first place? What do you expect?

That a thousands monkey will write you the next Shakespeare novel if you throw enough bananas at the monkeys?

We live in a time of obscurantists people using advanced concepts that looks like science, but are not.