<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Francois Aichelbaum</title>
  <link href="https://francois.aichelbaum.com/atom.xml" rel="self" />
  <link href="https://francois.aichelbaum.com/"/>
  <updated>2026-10-09T11:45:36+02:00</updated>
  <id>https://francois.aichelbaum.com/</id>
  <author>
    <n>Francois Aichelbaum</n>
    <email>francois@aichelbaum.com</email>
  </author>
  
    <entry>
      <title>The Interest on Later: Why Postponed Decisions Never Stay Where You Left Them</title>
      <link href="https://francois.aichelbaum.com/2026/10/06/the-interest-on-later" />
      <updated>2026-10-06T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/10/06/the-interest-on-later</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#postponement-is-a-liability-that-accrues-not-a-pause&quot; id=&quot;markdown-toc-postponement-is-a-liability-that-accrues-not-a-pause&quot;&gt;Postponement is a liability that accrues, not a pause&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-debt-metaphor-was-always-about-the-interest-not-about-the-mess&quot; id=&quot;markdown-toc-the-debt-metaphor-was-always-about-the-interest-not-about-the-mess&quot;&gt;The debt metaphor was always about the interest, not about the mess&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#physical-infrastructure-publishes-the-bill-that-organisations-never-see&quot; id=&quot;markdown-toc-physical-infrastructure-publishes-the-bill-that-organisations-never-see&quot;&gt;Physical infrastructure publishes the bill that organisations never see&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-rate-is-set-by-what-attaches-not-by-the-calendar&quot; id=&quot;markdown-toc-the-rate-is-set-by-what-attaches-not-by-the-calendar&quot;&gt;The rate is set by what attaches, not by the calendar&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#organisations-underprice-postponement-because-nothing-ever-invoices-them&quot; id=&quot;markdown-toc-organisations-underprice-postponement-because-nothing-ever-invoices-them&quot;&gt;Organisations underprice postponement because nothing ever invoices them&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-company-that-had-been-postponing-for-three-years&quot; id=&quot;markdown-toc-a-company-that-had-been-postponing-for-three-years&quot;&gt;A company that had been postponing for three years&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#pricing-a-later-takes-four-questions&quot; id=&quot;markdown-toc-pricing-a-later-takes-four-questions&quot;&gt;Pricing a later takes four questions&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#later-is-a-position-and-it-has-a-price&quot; id=&quot;markdown-toc-later-is-a-position-and-it-has-a-price&quot;&gt;Later is a position, and it has a price&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;Every decision a company postpones is a loan it takes out against itself, and nobody sends the statement. The principal is what the fix would have cost on the day it was first raised. The interest is everything that attaches to the unfixed thing while it waits. Organisations price the principal correctly and ignore the rate entirely, which is why a two-month repair turns into a one-year programme and nobody can say exactly when that happened.&lt;/p&gt;

&lt;h2 id=&quot;postponement-is-a-liability-that-accrues-not-a-pause&quot;&gt;Postponement is a liability that accrues, not a pause&lt;/h2&gt;

&lt;p&gt;A postponed decision does not sit still. That is the part boards get wrong, and they get it wrong consistently, because the language of postponement is the language of stillness. We are holding off. We are parking this. We will revisit in the spring. Every one of those phrases describes an object at rest.&lt;/p&gt;

&lt;p&gt;The object is not at rest. The system around it keeps moving, and every movement makes the eventual correction bigger. New work gets built on top of the thing that should have been replaced. New integrations attach to the interface that should have been retired. New people join who learn the workaround as if it were the design. None of that is visible on the day of the decision, and all of it is billed on the day of the reckoning.&lt;/p&gt;

&lt;p&gt;What makes this so hard to see from the top of an organisation is that the postponed item behaves exactly like a solved item for a long time. It does not produce incidents. It does not generate escalations. It does not appear in a monthly report, because monthly reports track activity and there is no activity. A decision that nobody is working on produces no evidence that anybody is not working on it.&lt;/p&gt;

&lt;p&gt;So the executive committee moves on. And it is right to move on, in the narrow sense that on that particular Tuesday there really was something more urgent. The error is not in the individual arbitration. It is in the assumption that the arbitration can be repeated indefinitely at the same price.&lt;/p&gt;

&lt;h2 id=&quot;the-debt-metaphor-was-always-about-the-interest-not-about-the-mess&quot;&gt;The debt metaphor was always about the interest, not about the mess&lt;/h2&gt;

&lt;p&gt;Ward Cunningham introduced the debt metaphor in a 1992 experience report about a financial software product, and the point he was making has been quietly inverted ever since. He was not describing bad code. He was describing the gap between a shipped understanding of a problem and the correct one, and arguing that shipping early against an imperfect understanding is a legitimate financing decision, as long as you go back and refactor once you understand better.&lt;/p&gt;

&lt;p&gt;The metaphor works because of the second half. Debt is a reasonable instrument. It becomes destructive when you service it without ever repaying principal, or when you take it out without knowing the rate. Cunningham’s warning was about the organisation that borrows continuously and never returns, until every hour of new work goes into carrying the interest and nothing is left for the product.&lt;/p&gt;

&lt;p&gt;Martin Fowler later split the concept along two axes, reckless against prudent and deliberate against inadvertent, and that grid remains the most useful thing a non-technical leader can hold in their head. The interesting quadrant for a CEO is prudent and deliberate. That is the quadrant where the organisation knowingly takes on a short-term cost because the market timing justifies it, writes it down, and comes back. It is the only quadrant where postponement is a strategy rather than a habit.&lt;/p&gt;

&lt;p&gt;The quadrant most companies actually live in is prudent and inadvertent. Every individual decision was defensible. Nobody wrote anything down. There is no register of what was deferred, no date attached to any of it, and no owner. The organisation is carrying real debt with no loan documentation, which means it cannot tell you the balance and cannot tell you the rate.&lt;/p&gt;

&lt;h2 id=&quot;physical-infrastructure-publishes-the-bill-that-organisations-never-see&quot;&gt;Physical infrastructure publishes the bill that organisations never see&lt;/h2&gt;

&lt;p&gt;Public asset managers have spent decades learning this arithmetic in the open, and their numbers are worth borrowing because they are audited and they are large.&lt;/p&gt;

&lt;p&gt;The United States National Park Service assesses the condition of its assets every year and publishes what it would cost to catch up. At the end of fiscal year 2025, that deferred maintenance and repair figure stood at an estimated twenty-four billion dollars across roads, buildings, utility systems and other structures. That number is not a budget request. It is an accounting of work that was correctly identified, correctly costed, and not done, year after year, by an organisation with competent engineers and a clear inventory.&lt;/p&gt;

&lt;p&gt;The American Society of Civil Engineers does the same exercise at national scale in its Infrastructure Report Card, and its 2025 edition puts the investment gap at three point six trillion dollars over ten years, across roads, bridges, drinking water, energy, levees and the rest. Eight categories improved in that edition. The gap is still measured in trillions.&lt;/p&gt;

&lt;p&gt;Two things in those numbers matter for a company that has never owned a bridge.&lt;/p&gt;

&lt;p&gt;The first is that the deferral was never a decision to accept a permanent loss. It was always a decision to accept a delay. The permanent loss arrived later, as a consequence, and it was always larger than the delay appeared to justify at the moment it was accepted.&lt;/p&gt;

&lt;p&gt;The second is that these organisations can state the figure at all. They have an inventory, a condition assessment and an annual recalculation. Most companies have none of the three for their own technical estate. They cannot produce the equivalent number because nothing in their management system is designed to produce it. The absence of the number is not evidence that the liability is small.&lt;/p&gt;

&lt;h2 id=&quot;the-rate-is-set-by-what-attaches-not-by-the-calendar&quot;&gt;The rate is set by what attaches, not by the calendar&lt;/h2&gt;

&lt;p&gt;Here is the part that boards consistently mis-model. They assume the cost of a deferred fix grows with time, in a straight line, roughly in step with inflation and salary drift. Eighteen months of delay, eighteen months of extra cost, annoying but proportionate.&lt;/p&gt;

&lt;p&gt;That is not how it grows. It grows with attachment.&lt;/p&gt;

&lt;p&gt;A decision left unmade becomes more expensive in proportion to the number of things that come to depend on the unmade state. If nothing attaches, the cost barely moves. A reporting tool that nobody else integrates with can sit unfixed for three years and cost roughly the same to replace at the end as at the start. That is a healthy deferral, and executives should make more of them without guilt.&lt;/p&gt;

&lt;p&gt;If the item is central, the curve is entirely different. A billing platform that should have been replaced two years ago has since acquired four new consumers. Each of those consumers was built against the current behaviour, including the behaviour that was wrong. Replacing the platform now means replacing the platform and reworking four things that did not exist when the decision was first declined. The organisation did not defer one project. It manufactured four more.&lt;/p&gt;

&lt;p&gt;This is compounding in the literal sense. The base grows, and the next period’s growth is calculated on the new base. And it is why the honest answer to a CEO who asks what a delay will cost is a question in return: what is going to plug into this in the next twelve months?&lt;/p&gt;

&lt;p&gt;That question is answerable. It requires knowing the roadmap, the acquisition pipeline and the integration backlog, which are all things the executive committee already has. It does not require any technical knowledge at all. It requires somebody to put those three lists next to the list of deferred decisions, which almost nobody does, because the second list does not exist in writing.&lt;/p&gt;

&lt;h2 id=&quot;organisations-underprice-postponement-because-nothing-ever-invoices-them&quot;&gt;Organisations underprice postponement because nothing ever invoices them&lt;/h2&gt;

&lt;p&gt;Every other commitment a company makes announces itself. A lease has a schedule. A loan has a statement. A supplier has an invoice with a due date and a collection process behind it. A hire has a start date and a payroll line. These commitments are visible because a counterparty exists whose job is to make them visible.&lt;/p&gt;

&lt;p&gt;Deferred decisions have no counterparty. Nobody is on the other side of the transaction with an incentive to remind you. The system does not send a letter. It simply keeps working, less well each quarter, in a way that stays below the threshold of executive attention until it crosses it all at once.&lt;/p&gt;

&lt;p&gt;This creates a structural bias that has nothing to do with the intelligence of the people involved. In any prioritisation exercise, items with a date outrank items without one. That is correct behaviour for a queue. The deferred technical decision has no date, no claimant and no escalation path, so it loses every week, forever, until it stops being a queue item and becomes a wall.&lt;/p&gt;

&lt;p&gt;And when it finally arrives, it does not arrive as a request for arbitration. It arrives as a constraint. The commercial project that the board approved in January cannot ship, because it runs through the thing nobody wanted to touch in the year before last. At that point the decision has already been made, by default, by the organisation’s own past behaviour. The executive committee is not choosing. It is paying.&lt;/p&gt;

&lt;p&gt;There is a second-order effect that is worse. The correction, when it finally happens, is undertaken in the worst possible conditions. It is now urgent, which means it is now expensive. It is now blocking revenue, which means it will be scoped by panic rather than by design. And the people who understood the original context have frequently left, which means part of the budget goes to rediscovering what was already known three years ago.&lt;/p&gt;

&lt;h2 id=&quot;a-company-that-had-been-postponing-for-three-years&quot;&gt;A company that had been postponing for three years&lt;/h2&gt;

&lt;p&gt;I was called in by a mid-sized services group. Not a technology company. A business with physical operations, field teams, a real estate footprint and a chief executive who had grown the company competently for eleven years without ever needing to have an opinion about a database.&lt;/p&gt;

&lt;p&gt;The presenting problem was a delivery one. A commercial programme that mattered to the year was six months late, and each monthly review produced a new explanation that the executive committee could not evaluate. They did not want an audit. They wanted a translation.&lt;/p&gt;

&lt;p&gt;I asked for something that had nothing to do with the programme. I asked for the minutes of every management meeting going back four years, and permission to read them all.&lt;/p&gt;

&lt;p&gt;It took two days. What came out of it was a list of eleven separate occasions on which the same underlying decision had been raised, discussed seriously, and deferred. Not ignored. Discussed. There were paragraphs about it. There were arguments, some of them good ones.&lt;/p&gt;

&lt;p&gt;Each deferral had a defensible reason attached. A difficult trading year. A senior departure that needed backfilling before anything structural could be attempted. An acquisition that had to be absorbed first. A year in which the chief executive had explicitly decided that stability mattered more than improvement, which, given the context of that year, was the right call.&lt;/p&gt;

&lt;p&gt;The thing that stopped me was not the number eleven. It was that the eleven entries were textually almost identical. Same framing, same estimated effort, same named individuals, four years apart. The item had been photocopied forward across sixteen quarters without anybody ever recalculating it.&lt;/p&gt;

&lt;p&gt;Because the rest of the business had not stood still. In those four years the group had added two subsidiaries, replaced its invoicing tool, and roughly doubled its field headcount. Every one of those three changes had been connected to the component that nobody wanted to touch. Each connection had been built quickly, against the current behaviour, by people who were told the underlying thing would be dealt with later and who had no reason to doubt it.&lt;/p&gt;

&lt;p&gt;So the original estimate, one quarter of work, was now fiction. Not because a quarter had been optimistic in the first place. It had been about right in the first place. It was fiction because the object being estimated had changed shape underneath the estimate. The same work, done in the current environment, was closer to a full year, and it now required coordinating three business units that had not been involved when the question was first asked.&lt;/p&gt;

&lt;p&gt;I put that in front of the chief executive as two numbers and one sentence. One quarter, four years ago. One year, now. The difference was not inflation, and it was not anybody’s incompetence. It was the cost of four years of things attaching to a decision that was never made.&lt;/p&gt;

&lt;p&gt;His reaction is the reason I keep telling this story. He was not upset about the year. He was upset that he had never seen the number. He had approved every one of those eleven deferrals, and at no point had anyone told him that the price of the thing he was deferring was moving while he deferred it. He had believed, reasonably, that he was choosing between doing it now and doing it later at the same price. He had actually been choosing between doing it now and doing something four times larger later, and no one in the room, including the people who knew the system best, had ever expressed it that way.&lt;/p&gt;

&lt;p&gt;The second-order damage was worse than the direct cost. The six-month delay on the commercial programme was caused by the compounded item. So was a hiring problem, because the two people who understood the component had become impossible to replace and equally impossible to promote out of it. So was a quality issue in field reporting that the operations director had been treating as a training problem for eighteen months.&lt;/p&gt;

&lt;p&gt;Three problems, three owners, three separate action plans, one cause. None of the three owners could have seen the cause from where they sat, because each of them only saw their own symptom.&lt;/p&gt;

&lt;p&gt;We did not fix the component in that engagement. That was not the mandate and it would not have been the right sequence. What we produced was a register: every deferred technical decision in the group, what it would cost to correct today, what it would cost in twelve months given what was scheduled to attach to it, and what it was currently blocking. Fourteen items. Nine of them were genuinely fine to keep deferring, and saying so out loud mattered as much as flagging the other five. Two of the five were repriced upward by a factor of three between the original estimate and the current one.&lt;/p&gt;

&lt;p&gt;That register is now reviewed twice a year. It is a page and a half. The chief executive’s own description of what changed was that he had stopped making these decisions blind. He is still deferring things. He is deferring them knowing the rate.&lt;/p&gt;

&lt;h2 id=&quot;pricing-a-later-takes-four-questions&quot;&gt;Pricing a later takes four questions&lt;/h2&gt;

&lt;p&gt;None of these require technical knowledge. All of them require somebody with no stake in the answer to ask them.&lt;/p&gt;

&lt;p&gt;The first question is when this was first raised. Not when it became a problem. When it first appeared in a meeting. If the answer is more than a year ago, the original estimate is no longer valid and should be treated as unknown rather than as a baseline.&lt;/p&gt;

&lt;p&gt;The second question is what has been connected to it since. Every integration, every new team, every process built around the current behaviour. That list is the interest that has already accrued.&lt;/p&gt;

&lt;p&gt;The third question is what is scheduled to connect to it in the next twelve months. Acquisitions, product launches, new markets, replatforming of adjacent systems. That list is the rate going forward, and it is the only forward-looking number in the exercise.&lt;/p&gt;

&lt;p&gt;The fourth question is what this is currently blocking that nobody has attributed to it. This is the one that changes the conversation in the room, because it usually turns two or three separate problems, each with its own owner and its own plan, into one problem with one cause.&lt;/p&gt;

&lt;p&gt;Answer those four and you have converted an invisible liability into a priced one. You may well decide to keep deferring. That is a legitimate outcome and often the correct one. The difference is that you will be deferring a known amount at a known rate, which is the definition of a financing decision rather than an omission.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/the-interest-on-later-cover.jpg&quot; alt=&quot;A crack running along a white wall&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;later-is-a-position-and-it-has-a-price&quot;&gt;Later is a position, and it has a price&lt;/h2&gt;

&lt;p&gt;The organisations that get destroyed by deferred decisions are almost never the ones that made bad calls. They are the ones that made a long series of individually reasonable calls without ever writing down what those calls were accumulating.&lt;/p&gt;

&lt;p&gt;Nobody in those companies decided to run a leveraged position on their own technical estate. They decided, eleven times, that this quarter was not the quarter. The leverage was the by-product.&lt;/p&gt;

&lt;p&gt;A chief executive can read a balance sheet, a covenant, a maturity schedule. The one liability that never appears in any of those documents is the set of decisions the company has chosen not to make. It is real, it compounds, and it will present itself in full, on a date it chooses rather than one you choose.&lt;/p&gt;

&lt;p&gt;The work is not to stop postponing. It is to know the rate before you sign.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://c2.com/doc/oopsla92.html&quot;&gt;Ward Cunningham, The WyCash Portfolio Management System, OOPSLA ‘92 Experience Report&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://martinfowler.com/bliki/TechnicalDebt.html&quot;&gt;Martin Fowler, Technical Debt&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://martinfowler.com/bliki/TechnicalDebtQuadrant.html&quot;&gt;Martin Fowler, Technical Debt Quadrant&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.nps.gov/subjects/infrastructure/deferred-maintenance.htm&quot;&gt;National Park Service, Infrastructure by the Numbers: deferred maintenance and repairs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://infrastructurereportcard.org/&quot;&gt;American Society of Civil Engineers, 2025 Infrastructure Report Card&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>All Green and Losing: What Your Dashboard Was Never Asked to Measure</title>
      <link href="https://francois.aichelbaum.com/2026/09/29/all-green-and-losing" />
      <updated>2026-09-29T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/09/29/all-green-and-losing</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#a-dashboard-reports-on-choices-not-on-the-business&quot; id=&quot;markdown-toc-a-dashboard-reports-on-choices-not-on-the-business&quot;&gt;A dashboard reports on choices, not on the business&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-most-famous-health-target-in-the-world-started-as-a-product-name&quot; id=&quot;markdown-toc-the-most-famous-health-target-in-the-world-started-as-a-product-name&quot;&gt;The most famous health target in the world started as a product name&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#goodharts-law-describes-an-incentive-not-a-character-flaw&quot; id=&quot;markdown-toc-goodharts-law-describes-an-incentive-not-a-character-flaw&quot;&gt;Goodhart’s law describes an incentive, not a character flaw&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#surrogation-is-the-moment-the-proxy-replaces-the-objective-in-peoples-heads&quot; id=&quot;markdown-toc-surrogation-is-the-moment-the-proxy-replaces-the-objective-in-peoples-heads&quot;&gt;Surrogation is the moment the proxy replaces the objective in people’s heads&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#six-green-quarters-and-two-lost-anchor-accounts&quot; id=&quot;markdown-toc-six-green-quarters-and-two-lost-anchor-accounts&quot;&gt;Six green quarters and two lost anchor accounts&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#vanity-metrics-survive-because-they-are-easy-to-defend-not-because-they-are-useful&quot; id=&quot;markdown-toc-vanity-metrics-survive-because-they-are-easy-to-defend-not-because-they-are-useful&quot;&gt;Vanity metrics survive because they are easy to defend, not because they are useful&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#four-questions-that-separate-a-health-indicator-from-a-decorative-one&quot; id=&quot;markdown-toc-four-questions-that-separate-a-health-indicator-from-a-decorative-one&quot;&gt;Four questions that separate a health indicator from a decorative one&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-better-dashboard-is-not-the-fix&quot; id=&quot;markdown-toc-a-better-dashboard-is-not-the-fix&quot;&gt;A better dashboard is not the fix&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-bill-for-a-green-dashboard-always-arrives-late-and-in-full&quot; id=&quot;markdown-toc-the-bill-for-a-green-dashboard-always-arrives-late-and-in-full&quot;&gt;The bill for a green dashboard always arrives late and in full&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;A dashboard does not report on reality. It reports on the handful of things somebody decided were worth watching, measured in a way somebody decided was acceptable, against thresholds somebody decided were safe. Every one of those decisions was reasonable when it was made. None of them is revisited. That is how a company runs six green quarters and loses its two largest accounts in the seventh.&lt;/p&gt;

&lt;h2 id=&quot;a-dashboard-reports-on-choices-not-on-the-business&quot;&gt;A dashboard reports on choices, not on the business&lt;/h2&gt;

&lt;p&gt;Green means that the things you chose to watch are inside the range you chose to accept. It does not mean that the business is healthy. The gap between those two statements is where most expensive surprises live, and the gap is invisible by construction: a dashboard cannot display the absence of a metric.&lt;/p&gt;

&lt;p&gt;This matters most for executives who cannot audit the underlying system themselves. A chief executive with a commercial or financial background has no independent way to test whether an availability figure, a ticket count or a delivery percentage still stands for the thing it was created to stand for. They read the number. The number is correct. The conclusion they draw from it may be wrong by a wide margin, and nothing on the screen will tell them.&lt;/p&gt;

&lt;p&gt;The people who built the dashboard are not hiding anything. They built a set of indicators that could be read in fifteen minutes by a board that does not speak the language of the system. Legibility was the design goal. Discomfort was not.&lt;/p&gt;

&lt;h2 id=&quot;the-most-famous-health-target-in-the-world-started-as-a-product-name&quot;&gt;The most famous health target in the world started as a product name&lt;/h2&gt;

&lt;p&gt;The 10,000 step goal was never a clinical finding. It comes from the name of a Japanese pedometer launched in 1965 around the Tokyo Olympics, the Manpo-kei, literally the 10,000 step meter. The number was chosen because it sounded right and the character for 10,000 looks like a walking figure. Research since then, including work led by I-Min Lee at Harvard, found that mortality benefits in older women level off well below that, around 7,500 steps a day.&lt;/p&gt;

&lt;p&gt;Sixty years later, hundreds of millions of wrists carry a device that turns green at a figure invented by a marketing department.&lt;/p&gt;

&lt;p&gt;The interesting part is not the trivia. It is what the figure did to behaviour. People walk in circles in their kitchen at eleven at night to close a ring. They do not do this because they are stupid. They do it because a target was set and they are meeting it. The target was a proxy for something broad and hard to measure: move, get outside, do not spend the day in a chair. Once the proxy became the objective, the underlying thing stopped being the subject of the evening question. The question became whether the ring was closed.&lt;/p&gt;

&lt;p&gt;Nobody in that chain lied. A product name became a target, a target became a proof, and the proof replaced the thing it was standing in for.&lt;/p&gt;

&lt;h2 id=&quot;goodharts-law-describes-an-incentive-not-a-character-flaw&quot;&gt;Goodhart’s law describes an incentive, not a character flaw&lt;/h2&gt;

&lt;p&gt;Charles Goodhart, writing about UK monetary policy in 1975, observed that a statistical regularity tends to collapse once pressure is placed on it for control purposes. Marilyn Strathern gave the formulation that travelled, in a 1997 paper on audit in British universities: when a measure becomes a target, it ceases to be a good measure. Donald Campbell had described the same dynamic for social indicators in 1979, with a sharper edge: the more an indicator is used for decision making, the more it will be corrupted, and the more it will distort the process it was meant to monitor.&lt;/p&gt;

&lt;p&gt;Three disciplines, three decades, one mechanism. That is usually a sign that the mechanism is structural rather than cultural.&lt;/p&gt;

&lt;p&gt;The word corruption is misleading to a modern ear. It suggests fraud. In practice almost nothing that degrades an indicator is fraud. It is optimisation, performed by competent people who were asked for a number and delivered it.&lt;/p&gt;

&lt;p&gt;A support team measured on ticket resolution time will split large tickets into smaller ones. That is a defensible operational decision, taken for good reasons, and it moves the number without moving a single customer’s experience. A delivery team measured on velocity will stop estimating the genuinely hard work, because hard work poisons a velocity chart. A sales organisation measured on products per customer will open products customers did not ask for, which is how a very large American bank ended up with several million unauthorised accounts and a cross-selling metric that looked excellent right up to the moment it did not.&lt;/p&gt;

&lt;p&gt;At each step, someone did what the organisation asked. The organisation asked for the number.&lt;/p&gt;

&lt;h2 id=&quot;surrogation-is-the-moment-the-proxy-replaces-the-objective-in-peoples-heads&quot;&gt;Surrogation is the moment the proxy replaces the objective in people’s heads&lt;/h2&gt;

&lt;p&gt;Management researchers have a name for the specific failure that follows. Willie Choi, Gary Hecht and Bill Tayler called it surrogation: the tendency of people to mentally substitute the measure for the strategy it represents. Harris and Tayler laid it out for executives in Harvard Business Review in 2019, and their diagnosis is uncomfortable because it is not about bad actors. It is about cognition. Strategy is abstract, hard to hold in mind, and impossible to check on a Tuesday afternoon. The metric is concrete, visible, and settled by lunchtime.&lt;/p&gt;

&lt;p&gt;So the metric wins. Not in the reporting pack, in the heads of the people doing the work. They are not tracking a proxy for customer trust any more. They are tracking the number, and they believe the number is the thing.&lt;/p&gt;

&lt;p&gt;Incentive compensation accelerates this, which is why the effect shows up most violently where bonuses are attached. It does not require compensation. A weekly review in which one figure is always the first slide is enough. Attention is a currency, and the organisation spends it on whatever is displayed.&lt;/p&gt;

&lt;h2 id=&quot;six-green-quarters-and-two-lost-anchor-accounts&quot;&gt;Six green quarters and two lost anchor accounts&lt;/h2&gt;

&lt;p&gt;What follows is a composite. The shape is common enough that the details do not need to belong to any single company, and none of them do.&lt;/p&gt;

&lt;p&gt;A B2B services business, roughly three hundred people, sells a platform into mid-market customers with long contracts and slow renewal cycles. The chief executive came from the commercial side. The board pack carries four technology indicators: platform availability, support ticket volume and closure rate, engineering velocity, and a customer satisfaction score. Every one of those indicators was chosen sensibly, three years earlier, by a technical director who has since left.&lt;/p&gt;

&lt;p&gt;For six quarters, all four are green.&lt;/p&gt;

&lt;p&gt;Availability sits above 99.9 percent. The figure is accurate. It is also computed on a definition of downtime that excludes planned maintenance windows, and the windows have been getting longer. Two years earlier maintenance meant a quiet hour on a Sunday. It now means a four hour window most Wednesday evenings, because a core integration has become fragile enough that changes are batched and staged carefully. Customers in the Americas experience this as the product being unreliable on Wednesday afternoons. The availability metric experiences it as nothing at all, because planned maintenance was excluded from the definition on the day the definition was written, when maintenance was genuinely rare.&lt;/p&gt;

&lt;p&gt;Ticket closure rate is excellent and improving. The improvement started shortly after closure rate became a quarterly objective for the support organisation. Tickets are now scoped more tightly, which is good practice, and multi part problems are logged as separate tickets, which is also good practice. A customer whose integration breaks now generates four tickets, each closed inside the target, instead of one that stayed open for nine days. The board sees a rising closure rate. The customer sees the same nine days.&lt;/p&gt;

&lt;p&gt;Velocity is up eighteen percent year on year. Part of that is real. Part of it is that the team has quietly routed around the oldest and most dangerous part of the codebase, the batch job that reconciles customer entitlements every night. Nobody has decided to avoid it. It is simply that work touching it is unpredictable, unpredictable work wrecks a sprint commitment, and sprint commitments are visible. The reconciliation job now runs on a version of a runtime that has been out of support for over a year, and exactly one engineer understands it. That fact appears on no indicator, because there is no indicator for it.&lt;/p&gt;

&lt;p&gt;The customer satisfaction score holds at a strong number. The survey is sent thirty days after a support interaction is closed, to accounts with no open critical incident. The exclusion was added for a reasonable purpose: not to ask angry customers to rate you in the middle of an outage. Its practical effect is that the most damaged relationships are systematically outside the sample.&lt;/p&gt;

&lt;p&gt;None of this is fraud. Every single choice above was made by a competent person for a defensible reason, most of them years before the consequence appeared. There is no one to blame, which is precisely what makes it survive.&lt;/p&gt;

&lt;p&gt;There is one more layer, and it is the one that makes the situation durable. Each of these four indicators is owned by a different person, and each owner is reporting accurately on their own scope. The head of infrastructure reports availability as defined. The support manager reports closure rate as defined. The engineering lead reports velocity as measured by the tool. The customer success lead reports the satisfaction score the survey returns. No individual has visibility across all four, and no individual is wrong.&lt;/p&gt;

&lt;p&gt;The technical director who would have held the whole picture left two years earlier and was replaced by a delivery manager with a narrower remit. That single organisational change, made for sensible cost reasons, removed the only role in the company whose job was to look across the indicators rather than at one of them.&lt;/p&gt;

&lt;p&gt;What the chief executive experiences is six quarters of a technology function performing well. Investment decisions follow: the technology budget is held flat for two years, because the indicators show a system in good shape and the growth argument is being made in sales. Two commercial hires are made instead of the platform engineering role the departing technical director had asked for.&lt;/p&gt;

&lt;p&gt;In the seventh quarter, the two largest accounts, together around a quarter of recurring revenue, decline to renew. Both cite reliability and responsiveness. One of them has been running a parallel evaluation for five months. The chief executive learns the reasons in the exit conversation, not in the board pack, and the reasons are things that were happening continuously for two years, in plain sight, on the other side of four green indicators.&lt;/p&gt;

&lt;p&gt;The cost is not the outage that never happened. The cost is two years of capital allocated on the strength of a picture that measured activity and called it health, and a renewal conversation that was lost before anyone knew it had started.&lt;/p&gt;

&lt;p&gt;The recovery is worse than the loss. Fixing the reconciliation job, rebuilding the availability definition, and re-establishing trust with a mid-market reference base takes longer and costs more than the platform engineering hire would have. The company survives. The two years do not come back.&lt;/p&gt;

&lt;h2 id=&quot;vanity-metrics-survive-because-they-are-easy-to-defend-not-because-they-are-useful&quot;&gt;Vanity metrics survive because they are easy to defend, not because they are useful&lt;/h2&gt;

&lt;p&gt;There is an economy to this, and it is worth stating plainly because it explains why the problem regenerates after every clean-up.&lt;/p&gt;

&lt;p&gt;Every indicator in a board pack has to survive a specific test: it must be explicable in under a minute to an audience that does not share the vocabulary of the system being described. That test favours a particular kind of number. Counts over conditions. Averages over distributions. Percentages of things completed over assessments of whether the completed thing works. Anything that requires a caveat loses to anything that does not.&lt;/p&gt;

&lt;p&gt;The people who assemble the pack know this. They are not cynical about it. They are doing the reasonable thing, which is choosing figures that will not derail a meeting with a definitional argument. The result is a systematic bias toward metrics that are legible rather than metrics that are informative, and the bias operates every quarter, in every organisation, without anyone intending it.&lt;/p&gt;

&lt;p&gt;There is a second force pushing the same way. An indicator that can make you look bad is an indicator you have an interest in not proposing. Nobody in the chain that produces the reporting has a professional incentive to introduce a number that says the system is more fragile than it looks. The absence is not a conspiracy. It is the sum of many individually sensible omissions, made by people who each assumed someone else was covering it.&lt;/p&gt;

&lt;p&gt;Put those two forces together and you get a dashboard that drifts steadily toward reassurance. Not through any single decision. Through the accumulated gravity of a hundred small, defensible ones.&lt;/p&gt;

&lt;p&gt;This is also why asking the same chain to review its own indicators does not work. The review will be honest and it will change nothing important, because the people conducting it share the constraints that produced the problem. Every metric will be confirmed as accurate, because every metric is accurate. Accuracy was never the issue.&lt;/p&gt;

&lt;h2 id=&quot;four-questions-that-separate-a-health-indicator-from-a-decorative-one&quot;&gt;Four questions that separate a health indicator from a decorative one&lt;/h2&gt;

&lt;p&gt;The audit that matters is not arithmetic. Take each indicator in the pack and answer four things about it.&lt;/p&gt;

&lt;p&gt;Who built it, and to persuade whom. Indicators built to reassure a board behave differently from indicators built to run an operation, and after a few years nobody remembers which kind they were dealing with.&lt;/p&gt;

&lt;p&gt;What it was originally standing in for. Availability stands in for customers being able to work. Ticket closure stands in for problems being resolved. Write down the underlying thing, then ask whether the indicator would still move if the underlying thing changed.&lt;/p&gt;

&lt;p&gt;What it excludes today. Every metric has a definition, every definition has exclusions, and exclusions written years ago under different conditions are where the drift accumulates. Planned maintenance. Accounts with open incidents. Work that was not estimated.&lt;/p&gt;

&lt;p&gt;Who gains if it goes up. Not to catch anyone. To know which figures are under pressure, because those are the ones that will degrade first.&lt;/p&gt;

&lt;p&gt;Four questions, applied across a dozen indicators, takes a couple of days. It has to be done by somebody outside the chain that produces the numbers, and that is the entire difficulty, because the organisation has no natural role for that person.&lt;/p&gt;

&lt;h2 id=&quot;a-better-dashboard-is-not-the-fix&quot;&gt;A better dashboard is not the fix&lt;/h2&gt;

&lt;p&gt;The instinct after discovering a decorative metric is to replace it with a better one. That instinct is right in principle and it fails in practice, because the replacement enters the same system that degraded the original.&lt;/p&gt;

&lt;p&gt;A new indicator arrives clean. It describes something real, it is not yet attached to an objective, and for two or three quarters it tells the truth. Then it gets a target, because an indicator that nobody is accountable for tends to disappear from the pack. Once it has a target it acquires the same gravity as everything else, and the same slow drift begins.&lt;/p&gt;

&lt;p&gt;What survives is not a metric. It is a habit: someone from outside the chain that produces the numbers looks at the definitions on a fixed cadence and asks what changed. Not the values, the definitions. What was excluded that was not excluded last year. Which threshold was adjusted, and by whom, and what was happening that month. Which number started improving unusually fast, and what became an objective shortly before.&lt;/p&gt;

&lt;p&gt;That review is unglamorous and it takes two days a year. It is also the only mechanism that catches drift, because drift does not announce itself in the values. It hides in the definitions, and definitions are the one part of a reporting pack that nobody reads twice.&lt;/p&gt;

&lt;p&gt;Organisations that do this well tend to keep a short written record of why each indicator exists and what it was meant to stand for. Not a governance artefact. A paragraph per metric, written when it was introduced, readable by the person who inherits it three years later and has no idea what the original question was.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/all-green-and-losing-cover.jpg&quot; alt=&quot;Dashboard analytics on a laptop screen&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-bill-for-a-green-dashboard-always-arrives-late-and-in-full&quot;&gt;The bill for a green dashboard always arrives late and in full&lt;/h2&gt;

&lt;p&gt;The particular cruelty of this failure mode is its timing. Nothing goes wrong while it is happening. There is no incident to investigate, no threshold breached, no moment where a reasonable executive should have known. The degradation is continuous and the reporting is stable, so the only signal available is the absence of surprise, which is not a signal anyone can act on.&lt;/p&gt;

&lt;p&gt;By the time it surfaces, it surfaces as revenue.&lt;/p&gt;

&lt;p&gt;A dashboard is not a view of your business. It is a model of your business, built by people with constraints, in a context that has since changed, and it decays the way any unmaintained model decays. The decay is silent and the colour stays the same.&lt;/p&gt;

&lt;p&gt;Green is not an answer. It is a claim, made by an instrument, about a question somebody else chose.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Marilyn Strathern, “‘Improving ratings’: audit in the British University system”, European Review, 1997. &lt;a href=&quot;https://gwern.net/doc/statistics/decision/1997-strathern.pdf&quot;&gt;PDF&lt;/a&gt;, &lt;a href=&quot;https://www.cambridge.org/core/journals/european-review/article/abs/improving-ratings-audit-in-the-british-university-system/FC2EE640C0C44E3DB87C29FB666E9AAB&quot;&gt;publisher record&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Donald T. Campbell, “Assessing the impact of planned social change”, Evaluation and Program Planning, vol. 2 no. 1, 1979. &lt;a href=&quot;https://ideas.repec.org/a/eee/epplan/v2y1979i1p67-90.html&quot;&gt;Record&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Goodhart%27s_law&quot;&gt;Goodhart’s law, overview and origin&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Michael Harris and Bill Tayler, “Don’t Let Metrics Undermine Your Business”, Harvard Business Review, September-October 2019. &lt;a href=&quot;https://hbr.org/2019/09/dont-let-metrics-undermine-your-business&quot;&gt;Article&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Surrogation&quot;&gt;Surrogation: the substitution of a measure for the objective it represents&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Harvard Health Publishing, “10,000 steps a day, or fewer?”, on the origin of the figure and the I-Min Lee study. &lt;a href=&quot;https://www.health.harvard.edu/blog/10000-steps-a-day-or-fewer-2019071117305&quot;&gt;Article&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>Everyone Sells You What You Asked For</title>
      <link href="https://francois.aichelbaum.com/2026/09/22/everyone-sells-what-you-asked-for" />
      <updated>2026-09-22T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/09/22/everyone-sells-what-you-asked-for</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#a-stated-need-is-a-translation-and-translations-lose-things&quot; id=&quot;markdown-toc-a-stated-need-is-a-translation-and-translations-lose-things&quot;&gt;A stated need is a translation, and translations lose things&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#expertise-markets-are-built-on-a-gap-the-buyer-cannot-close&quot; id=&quot;markdown-toc-expertise-markets-are-built-on-a-gap-the-buyer-cannot-close&quot;&gt;Expertise markets are built on a gap the buyer cannot close&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#procurement-rigour-starts-one-step-too-late&quot; id=&quot;markdown-toc-procurement-rigour-starts-one-step-too-late&quot;&gt;Procurement rigour starts one step too late&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#nobody-at-the-table-is-positioned-to-disagree-with-you&quot; id=&quot;markdown-toc-nobody-at-the-table-is-positioned-to-disagree-with-you&quot;&gt;Nobody at the table is positioned to disagree with you&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-case-the-close-that-stayed-at-three-weeks&quot; id=&quot;markdown-toc-a-case-the-close-that-stayed-at-three-weeks&quot;&gt;A case: the close that stayed at three weeks&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-wrong-diagnosis-does-not-cancel-it-compounds&quot; id=&quot;markdown-toc-a-wrong-diagnosis-does-not-cancel-it-compounds&quot;&gt;A wrong diagnosis does not cancel, it compounds&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#telling-the-truth-here-has-a-price-and-it-is-paid-by-the-wrong-person&quot; id=&quot;markdown-toc-telling-the-truth-here-has-a-price-and-it-is-paid-by-the-wrong-person&quot;&gt;Telling the truth here has a price and it is paid by the wrong person&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#ask-what-happens-to-the-adviser-if-the-answer-is-no&quot; id=&quot;markdown-toc-ask-what-happens-to-the-adviser-if-the-answer-is-no&quot;&gt;Ask what happens to the adviser if the answer is no&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;The need a company states and the need it has are rarely the same thing, and almost every supplier around the table is paid to serve the first one. Not out of malice. Because the stated need is specified, budgeted and billable, while the real one is a conversation nobody invoices. The result is an organisation that buys a correct answer to the wrong question, pays for it in full, and concludes from the failure that it should buy more.&lt;/p&gt;

&lt;h2 id=&quot;a-stated-need-is-a-translation-and-translations-lose-things&quot;&gt;A stated need is a translation, and translations lose things&lt;/h2&gt;

&lt;p&gt;A chief executive does not observe a technical problem. He observes a consequence. Month-end takes too long. Two salespeople left and the third is complaining. A customer escalated for the second time this quarter. Something in the machine is producing an outcome he can feel.&lt;/p&gt;

&lt;p&gt;Between that observation and the moment it becomes a request, there is a translation step. It takes about four seconds and it is invisible. The consequence gets matched against a pattern, the pattern gets matched against a remedy, and the remedy gets spoken out loud. We need a new ERP. We need to migrate off this platform. We need a CTO.&lt;/p&gt;

&lt;p&gt;The translation is not stupid. It is experience doing its job. A leader who stopped to diagnose every irritation would never decide anything, and most of the time the shortcut lands close enough to be useful. The trouble is what happens to the shortcut once it has been said in a room.&lt;/p&gt;

&lt;p&gt;The moment a need is stated, it stops being a hypothesis and becomes the subject. Meetings are scheduled about it. Budget lines are opened under its name. Suppliers are asked to quote against it. Within two weeks, nobody is discussing the consequence any more. Everybody is discussing the remedy, its options, its timeline and its vendor shortlist.&lt;/p&gt;

&lt;p&gt;The original observation is now an unexamined premise carried inside a procurement process.&lt;/p&gt;

&lt;p&gt;Software people gave this a name long before management did. The XY problem: someone asks for help with X, the solution they have already chosen, instead of describing Y, the thing they actually need to achieve. The person helping spends an afternoon making X work, and X was never going to solve Y. The pattern is old, well documented, and it scales perfectly from a support forum to a seven-figure programme.&lt;/p&gt;

&lt;h2 id=&quot;expertise-markets-are-built-on-a-gap-the-buyer-cannot-close&quot;&gt;Expertise markets are built on a gap the buyer cannot close&lt;/h2&gt;

&lt;p&gt;There is a category of goods where the buyer cannot judge what he needs before the purchase, and often cannot judge what he received after it. Economists call them credence goods. The canonical examples are doctors, mechanics and computer specialists, which is a list worth reading twice if you buy technology advice for a living.&lt;/p&gt;

&lt;p&gt;Uwe Dulleck and Rudolf Kerschbamer laid out the mechanics in the Journal of Economic Literature in 2006. When the expert also diagnoses, three things can go wrong that the customer cannot detect: he can be treated for something he did not have, he can be charged for work that was not performed, and he can be under-treated on the thing he did have. All three survive a perfectly polite transaction. All three are compatible with an expert who is technically excellent.&lt;/p&gt;

&lt;p&gt;Notice what the model assumes. It does not assume fraud. It assumes that the person who tells you what you need is the same person who gets paid for providing it. That single overlap is enough to produce the outcome, with or without bad intent, in a market full of competent professionals.&lt;/p&gt;

&lt;p&gt;Corporate technology buying is that structure with better slides. The vendor scopes the requirement. The integrator validates the architecture. The recruiter defines the profile. Each of them is the most qualified voice in the room on their own subject, and each of them is describing a need whose fulfilment they will invoice.&lt;/p&gt;

&lt;p&gt;The formal name for the rest of it is the principal-agent problem: the agent acts on the principal’s behalf, the two sets of interests do not fully overlap, and the principal lacks the information to monitor the gap. Nothing exotic. It is the default condition of every advisory relationship, and it is managed by structure, not by character.&lt;/p&gt;

&lt;h2 id=&quot;procurement-rigour-starts-one-step-too-late&quot;&gt;Procurement rigour starts one step too late&lt;/h2&gt;

&lt;p&gt;Most organisations that buy badly are not sloppy. They are rigorous, one step downstream of where it matters.&lt;/p&gt;

&lt;p&gt;Look at how a decision of this kind is actually handled in a serious company. A requirement document is written and reviewed. Three suppliers are consulted rather than one. Responses are scored against weighted criteria. Legal reviews the contract. A steering committee is set up with named sponsors and a reporting cadence. Every single one of those controls is a good control, and together they produce an audit trail that would survive any inspection.&lt;/p&gt;

&lt;p&gt;Not one of them examines whether the requirement is the right requirement.&lt;/p&gt;

&lt;p&gt;The controls start at the requirement and work forward. They test whether the chosen supplier can deliver what was asked, whether the price is competitive, whether the risk is covered, whether the programme is on track. They are all comparative. They assume the object of comparison is correct, because by the time the process begins, the object has already been fixed by a sentence somebody said in a meeting weeks earlier.&lt;/p&gt;

&lt;p&gt;This is why the failure is so hard to see from inside. The organisation experiences itself as disciplined the entire way through, and it is right. The discipline simply begins on the wrong side of the only decision that could not be reversed later.&lt;/p&gt;

&lt;p&gt;There is a practical consequence worth stating plainly. The cheapest possible intervention on a programme of this type is an hour spent before the requirement is written, and the most expensive is the same hour spent after go-live. The value of the question decays to almost nothing the moment budget is committed, because from then on the question threatens sunk cost and personal credibility rather than a hypothetical.&lt;/p&gt;

&lt;p&gt;Nobody’s process schedules that hour, and nobody’s invoice contains it.&lt;/p&gt;

&lt;h2 id=&quot;nobody-at-the-table-is-positioned-to-disagree-with-you&quot;&gt;Nobody at the table is positioned to disagree with you&lt;/h2&gt;

&lt;p&gt;Take an actual decision and list the participants.&lt;/p&gt;

&lt;p&gt;The software publisher wants the licences. The integrator wants the deployment. The recruitment firm wants the placement. The services company wants the days. Internal IT has a professional opinion and also a career, and the two are not always separable. The executive committee has already approved a direction and does not enjoy reopening it. The consultant who framed the programme has his name on the framing.&lt;/p&gt;

&lt;p&gt;Now cross out everybody who loses nothing by telling the chief executive his stated need is wrong.&lt;/p&gt;

&lt;p&gt;The list is usually empty. Not because these people are dishonest, but because none of them occupies a position from which the sentence can be said without cost. Asking a supplier to challenge the brief is asking him to argue himself out of a signed order, in front of a client who may well read the objection as a lack of competence.&lt;/p&gt;

&lt;p&gt;So the chief executive gets consensus. Ten qualified professionals agreed with the plan. He reads that as confirmation. What he is hearing is ten commercial processes that all begin with his yes.&lt;/p&gt;

&lt;h2 id=&quot;a-case-the-close-that-stayed-at-three-weeks&quot;&gt;A case: the close that stayed at three weeks&lt;/h2&gt;

&lt;p&gt;A manufacturing group, around six hundred people, three production sites, two of them acquired within the previous decade. The finance director had a concrete and unarguable problem: the monthly close took three weeks. Figures for month N landed on the executive committee’s desk near the end of month N+1, by which point they were commentary rather than management information. Decisions were being taken on a picture of the past.&lt;/p&gt;

&lt;p&gt;The stated need was formed quickly and it sounded right. The ERP is old, it dates from before the acquisitions, it does not consolidate the sites properly. We need to replace it.&lt;/p&gt;

&lt;p&gt;Everybody agreed. The incumbent publisher agreed, and had a modern suite. Two integrators agreed, and both quoted. The auditor agreed in passing, because a modern ERP is never a bad idea. The IT manager agreed, partly because he had wanted to replace that system for four years. The executive committee agreed because three weeks is obviously too long and here was a plan to fix it.&lt;/p&gt;

&lt;p&gt;The programme ran fourteen months. By any delivery standard it was a success. Scope held. The overrun was under ten per cent. Data migration was clean, training was done properly, the integrator’s team was good and the finance team did not revolt. The go-live weekend was uneventful, which in that business is the highest available compliment.&lt;/p&gt;

&lt;p&gt;The first close on the new system took three weeks and two days.&lt;/p&gt;

&lt;p&gt;The second took three weeks. The third took three weeks. A year later, it was still three weeks.&lt;/p&gt;

&lt;p&gt;The three weeks had never been in the software. They were in the inputs. The two acquired sites booked their supplier invoices on their own local rhythm, one weekly, one when the plant manager got around to it, because that had been the practice before the acquisition and no one had ever changed it. Stock counts at the third site were entered by a single person who also ran the warehouse, and she entered them when the warehouse allowed her to, which was after the twelfth of the month. Intercompany transfers were reconciled by hand in a spreadsheet by one controller, and the spreadsheet had grown a set of rules that existed nowhere else.&lt;/p&gt;

&lt;p&gt;The close did not start when the month ended. It started when the last of those three things arrived, and that date was structurally around the fifteenth. Everything after it was fast. Everything before it was outside the system entirely.&lt;/p&gt;

&lt;p&gt;A new ERP could not move that date. No ERP can. The constraint was an operating agreement between four sites that had never been written down, let alone renegotiated.&lt;/p&gt;

&lt;p&gt;What it cost is worth itemising, because only one line of it appears in any accounting system.&lt;/p&gt;

&lt;p&gt;The programme itself, licences plus integration plus internal time, was the visible number and the smallest problem. Fourteen months of the finance team’s attention was the second line: during that period the group did not touch its pricing structure, did not rebuild its cost accounting, and postponed a site consolidation study that had been scheduled. The third line was political. The finance director had spent his personal credit inside the executive committee to get the programme approved, and after delivery the figures still arrived at the end of month N+1. He was now the person whose big project had not worked. Two years later he was no longer with the group.&lt;/p&gt;

&lt;p&gt;The fourth line is the one that makes the pattern self-sustaining. Since the close was still three weeks after a successful ERP implementation, the conclusion drawn internally was that the problem must be deeper. A consolidation tool was evaluated. A business intelligence layer was proposed on top of the new system. A finance transformation programme was sketched. Each of these was a reasonable proposal, sold by capable people, aimed at the same wrong target, and each one now had a better argument than the last because it came from suppliers who knew the house.&lt;/p&gt;

&lt;p&gt;The entire sequence could have been stopped by one person, in one afternoon, before anything was signed, by asking what was actually happening between the last day of the month and the day the first consolidated figure appeared. That afternoon was not on anybody’s invoice, so it did not happen.&lt;/p&gt;

&lt;h2 id=&quot;a-wrong-diagnosis-does-not-cancel-it-compounds&quot;&gt;A wrong diagnosis does not cancel, it compounds&lt;/h2&gt;

&lt;p&gt;The dangerous property of the wrong diagnosis is not the first bill. It is that a clean delivery of the wrong thing produces evidence for buying more of it.&lt;/p&gt;

&lt;p&gt;When a project fails visibly, an organisation stops and asks why. When a project succeeds visibly and the underlying problem persists, the organisation does not question the diagnosis, because the diagnosis was never on trial. It questions the dose. Phase two. An additional module. A bigger team. More of the same remedy, argued now by people with real knowledge of the environment, which makes them more persuasive than they were the first time.&lt;/p&gt;

&lt;p&gt;The company is now on a trajectory that moves steadily away from its actual subject, at constant speed, with everybody’s agreement, and with a paper trail that looks like good governance the whole way.&lt;/p&gt;

&lt;p&gt;Theodore Levitt made the point about companies defining themselves by their product instead of the need they serve. The buying side has the same disease. A business that defines its problem as the absence of a tool will keep buying tools. Christensen and his co-authors put the same idea on the customer’s side of the table: people hire a product to do a job, and the job is not the product. If you never articulate the job, you will be sold the product, correctly, at full price, forever.&lt;/p&gt;

&lt;h2 id=&quot;telling-the-truth-here-has-a-price-and-it-is-paid-by-the-wrong-person&quot;&gt;Telling the truth here has a price and it is paid by the wrong person&lt;/h2&gt;

&lt;p&gt;The mechanism only breaks if somebody says the stated need is wrong. That sentence is expensive to say.&lt;/p&gt;

&lt;p&gt;The person saying it gives up the mission in front of him. He accepts being read as difficult, or as unable to deliver. He offers, for free, the most valuable thing he has in the exchange, which is the diagnosis. And he does it at the exact moment he has the least credibility to do it, because he has not worked with the company yet.&lt;/p&gt;

&lt;p&gt;There is no altruism in any of this. It is a position. Either you are structured so that you can afford to say no, or you are not, and if you are not, your opinion on the client’s real need is worth precisely nothing, whatever your competence. That is the uncomfortable part. Independence is the scarce input here. Competence is available everywhere, at market rate.&lt;/p&gt;

&lt;p&gt;Which is why the test a chief executive should apply is not about expertise. It is simpler than that.&lt;/p&gt;

&lt;h2 id=&quot;ask-what-happens-to-the-adviser-if-the-answer-is-no&quot;&gt;Ask what happens to the adviser if the answer is no&lt;/h2&gt;

&lt;p&gt;Before signing anything, there is one question worth an hour of anybody’s time. Not put to the supplier. Put to yourself, about each person advising you.&lt;/p&gt;

&lt;p&gt;If the honest answer to my problem is that I should do nothing, or something small, or something entirely different from what I have described, what does this person lose by telling me?&lt;/p&gt;

&lt;p&gt;Where the answer is nothing, listen carefully. Where the answer is the mandate itself, discount accordingly. That is arithmetic about positions rather than cynicism about people, and it is the only part of this whole structure the buyer actually controls.&lt;/p&gt;

&lt;p&gt;The garage that puts your car on the lift before answering is not more virtuous than the one that changes your brakes on request. It is arranged differently. You cannot inspect virtue. You can inspect arrangements.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://xyproblem.info/&quot;&gt;The XY Problem&lt;/a&gt;: description of the pattern where help is requested on an attempted solution rather than on the underlying problem.&lt;/li&gt;
  &lt;li&gt;Uwe Dulleck and Rudolf Kerschbamer, &lt;a href=&quot;https://www.aeaweb.org/articles?id=10.1257/002205106776162717&quot;&gt;On Doctors, Mechanics, and Computer Specialists: The Economics of Credence Goods&lt;/a&gt;, Journal of Economic Literature, vol. 44 no. 1, 2006.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Principal%E2%80%93agent_problem&quot;&gt;Principal-agent problem&lt;/a&gt;: conflict of interest and information asymmetry between a principal and the agent acting on his behalf.&lt;/li&gt;
  &lt;li&gt;Theodore Levitt, &lt;a href=&quot;https://hbr.org/2004/07/marketing-myopia&quot;&gt;Marketing Myopia&lt;/a&gt;, Harvard Business Review (classic article, 2004 reissue).&lt;/li&gt;
  &lt;li&gt;Clayton M. Christensen, Taddy Hall, Karen Dillon and David S. Duncan, &lt;a href=&quot;https://hbr.org/2016/09/know-your-customers-jobs-to-be-done&quot;&gt;Know Your Customers’ “Jobs to Be Done”&lt;/a&gt;, Harvard Business Review, September 2016.&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>Flags of Convenience: The Process That Was Never Meant to Protect You</title>
      <link href="https://francois.aichelbaum.com/2026/09/15/flags-of-convenience" />
      <updated>2026-09-15T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/09/15/flags-of-convenience</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#a-ships-flag-tells-you-who-will-answer-when-something-breaks&quot; id=&quot;markdown-toc-a-ships-flag-tells-you-who-will-answer-when-something-breaks&quot;&gt;A ship’s flag tells you who will answer when something breaks&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#moral-hazard-is-a-design-outcome-not-a-moral-failing&quot; id=&quot;markdown-toc-moral-hazard-is-a-design-outcome-not-a-moral-failing&quot;&gt;Moral hazard is a design outcome, not a moral failing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#organised-irresponsibility-describes-what-mature-structures-produce-on-purpose&quot; id=&quot;markdown-toc-organised-irresponsibility-describes-what-mature-structures-produce-on-purpose&quot;&gt;Organised irresponsibility describes what mature structures produce on purpose&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-case-the-secure-process-that-secured-nothing&quot; id=&quot;markdown-toc-a-case-the-secure-process-that-secured-nothing&quot;&gt;A case: the secure process that secured nothing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-cost-always-lands-on-whoever-is-furthest-from-the-decision&quot; id=&quot;markdown-toc-the-cost-always-lands-on-whoever-is-furthest-from-the-decision&quot;&gt;The cost always lands on whoever is furthest from the decision&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#read-a-rule-by-asking-who-wrote-it&quot; id=&quot;markdown-toc-read-a-rule-by-asking-who-wrote-it&quot;&gt;Read a rule by asking who wrote it&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;A shipowner does not register his vessel in Panama because he intends to sail there. He registers it there because the flag decides who has to answer when something goes wrong, and he has selected a flag that will not. Most rules, processes and organisational structures work the same way: they are designed to move responsibility away from the point where the decision is taken, and the consequence flows downhill until it reaches someone with no rule left to hide behind. That person did not decide anything. That person pays.&lt;/p&gt;

&lt;h2 id=&quot;a-ships-flag-tells-you-who-will-answer-when-something-breaks&quot;&gt;A ship’s flag tells you who will answer when something breaks&lt;/h2&gt;

&lt;p&gt;Under international maritime law, the flag state carries the legal duty to inspect a vessel, certify its safety, and enforce labour standards on board. That is the entire point of registration. A ship is a piece of territory that moves, and the flag decides whose law travels with it.&lt;/p&gt;

&lt;p&gt;So the owner picks the territory. He can live in Piraeus, run the technical management from Cyprus, register the hull in Monrovia, and crew it from Manila. Nothing about that is illegal. Each link is compliant with its own frame. The International Transport Workers’ Federation, which has been documenting this arrangement for decades, describes a flag of convenience vessel simply as one flying the flag of a country other than the country of ownership, and points at the reason: cheap registration fees, low or no taxes, and the freedom to recruit the cheapest labour available.&lt;/p&gt;

&lt;p&gt;What the owner buys is not a port. It is a gap. The state whose flag flies at the stern has neither the inspectorate nor the incentive to look closely at a fleet it will never see. The owner has bought distance between his decision and its consequences.&lt;/p&gt;

&lt;p&gt;The industry knows this precisely enough to have built instruments around it. The Paris Memorandum of Understanding on Port State Control exists because flag states cannot be trusted to police their own registers, so the ports do it instead. Its annual performance lists rank flags on three years of inspection and detention data and sort them into a White, Grey and Black list. In the 2025 lists, forty flags sit on the White list, nineteen on the Grey, ten on the Black. The Black list is the list of flags whose ships are detained most often relative to how often they are inspected.&lt;/p&gt;

&lt;p&gt;Read that structure again, because it is the interesting part. An entire international apparatus had to be invented to compensate for the fact that the party formally responsible has arranged not to be. Nobody in that apparatus is naive about it. The compensating mechanism is treated as normal infrastructure.&lt;/p&gt;

&lt;p&gt;And when a ship is finally abandoned in a foreign port, which the ITF documents regularly, the crew on board discovers what the arrangement was actually for. There is an owner in one country, a manager in another, a registry in a third, and a crew agency in a fourth. Every one of them followed its own frame. The unpaid wages, the food running out, the months without repatriation: those are entirely real, and they belong to nobody.&lt;/p&gt;

&lt;h2 id=&quot;moral-hazard-is-a-design-outcome-not-a-moral-failing&quot;&gt;Moral hazard is a design outcome, not a moral failing&lt;/h2&gt;

&lt;p&gt;The economics of this were formalised more than sixty years ago, and the formalisation is more useful than the outrage. In 1963, Kenneth Arrow examined how insurance changes the behaviour of the insured, drawing on a term already circulating in insurance practice: the effect of coverage on incentive. Once a party is shielded from the cost of an outcome, that party’s care in avoiding the outcome drops. Not because the party is dishonest. Because the price signal has been cut.&lt;/p&gt;

&lt;p&gt;The word “hazard” carries a moral tone that misleads people. It sounds like an accusation of bad faith. It is not. It is a statement about geometry. If you separate the person who takes a decision from the person who absorbs its consequence, the decision degrades. Reliably. Regardless of character.&lt;/p&gt;

&lt;p&gt;The principal-agent literature that grew out of that period describes the same geometry from the other side: whenever one party acts on behalf of another whose interests differ, and the acting party knows things the other does not, the acting party’s rational move is to optimise for what will be observed rather than for what actually matters. A process that is auditable will beat a process that is effective, every time, if only the audit is checked.&lt;/p&gt;

&lt;p&gt;Put those two together and you have the mechanism this whole essay is about. A rule can be written to achieve its stated purpose. A rule can also be written to produce evidence that its stated purpose was pursued. The second is cheaper, faster to demonstrate, and defensible in front of a regulator, an insurer or a court. Organisations are not stupid. They pick the second more often than they admit, and they rarely pick it consciously enough to feel dishonest about it.&lt;/p&gt;

&lt;h2 id=&quot;organised-irresponsibility-describes-what-mature-structures-produce-on-purpose&quot;&gt;Organised irresponsibility describes what mature structures produce on purpose&lt;/h2&gt;

&lt;p&gt;Ulrich Beck gave this its sharpest name. Writing on the risk society, most famously in &lt;em&gt;Risikogesellschaft&lt;/em&gt; (1986, published in English as &lt;em&gt;Risk Society&lt;/em&gt; in 1992) and then in &lt;em&gt;Gegengifte: die organisierte Unverantwortlichkeit&lt;/em&gt; (1988), he argued that modern institutions have become extremely good at generating hazards while simultaneously generating the procedural conditions under which nobody can be held accountable for them. Organised irresponsibility: the phrase does the work.&lt;/p&gt;

&lt;p&gt;The word that matters there is “organised”. Not “accidental”. Not “emergent”. The dilution of responsibility is an output of the system working as designed, and the system is often improved in that direction over time. Every incident produces a new procedure. Every new procedure adds a documented step, a sign-off, a delegated control. The chain lengthens. The audit trail thickens. And the number of people who could actually be held to answer for an outcome goes down, not up.&lt;/p&gt;

&lt;p&gt;This is why “we have a process for that” is such a durable sentence in corporate life. It is not a description of capability. It is a claim about liability, and it is usually true.&lt;/p&gt;

&lt;p&gt;Here is the part that should bother a chief executive. The same maturity curve that makes a large organisation reliable also makes it a very efficient exporter of risk. Its counterparties are almost always smaller, less lawyered, and less able to say no. So the risk moves outward, to suppliers, subcontractors, partners, franchisees, and eventually to individual employees on the last rung. Each transfer is documented. Each transfer is agreed. None of it looks like coercion, because at every step somebody signed.&lt;/p&gt;

&lt;h2 id=&quot;a-case-the-secure-process-that-secured-nothing&quot;&gt;A case: the secure process that secured nothing&lt;/h2&gt;

&lt;p&gt;I want to reconstruct one case in detail, anonymised, because the abstraction only becomes useful when you can see the machinery turning.&lt;/p&gt;

&lt;p&gt;A mid-sized company works with one of the very largest names on the French market. Being in that supply chain is commercially significant. It changes what other buyers think, it stabilises the order book, and it justifies hiring. The relationship is asymmetric in every dimension that matters: revenue concentration, legal capacity, and who can walk away.&lt;/p&gt;

&lt;p&gt;The work requires the smaller company to hand over genuinely sensitive material. Commercial terms. Unit pricing and the reasoning behind it. Technical architecture. An honest inventory of what the company can and cannot do, which is the single most exploitable document any business produces about itself.&lt;/p&gt;

&lt;p&gt;The large group has a secure document process. This is not a fiction and not a shortcut. It is written down, it is referenced in the contract, it has an internal owner, it appears in the group’s compliance reporting, and it has been signed off by people whose job title contains the word security. It has an official-looking external platform in front of it, operated by a third party with a public-sector flavour, which does a great deal of work on the perception side.&lt;/p&gt;

&lt;p&gt;The process, executed as designed, does the following. The supplier uploads the document to the platform. The platform applies a watermark. The watermarked PDF is then attached to an email and sent onward to whoever inside the group needs it.&lt;/p&gt;

&lt;p&gt;That is the whole control.&lt;/p&gt;

&lt;p&gt;A watermark encrypts nothing. It restricts nothing. It expires nothing. It cannot be revoked once the file is out. It does exactly one thing, and it does it well: it writes the supplier’s identity onto every page. And the email carrying the file lands in an unknown number of mailboxes, on devices nobody has enumerated, subject to retention rules the supplier has never been shown, forwarded onward by people acting in good faith with no idea what the file is worth.&lt;/p&gt;

&lt;p&gt;Anyone with a security background sees this instantly. Which raises the real question: how does a process like this survive inside an organisation that employs competent security people?&lt;/p&gt;

&lt;p&gt;It survives because it is not a security control. It is a liability instrument, and as a liability instrument it is excellent.&lt;/p&gt;

&lt;p&gt;Follow the incentives. Procurement needs a documented process in order to close the contract. Compliance needs a control it can name in a report. Legal needs the process referenced in the agreement so that the group’s obligation is defined and bounded. The internal auditor needs something checkable, and “was the platform used” is checkable in a way that “was the file actually protected” is not. The security team may well have flagged it, but the security team does not own procurement’s contract template, and the finding sits in a backlog behind things with owners.&lt;/p&gt;

&lt;p&gt;None of these people is acting in bad faith. Each is optimising for what is observed in their function. The result of all that local rationality is a process whose real function is to establish that a procedure existed and was followed.&lt;/p&gt;

&lt;p&gt;Now run the failure.&lt;/p&gt;

&lt;p&gt;Eighteen months in, the file surfaces where it should not be. Maybe a laptop, maybe a departing employee, maybe an unrelated breach at a fourth party, maybe a forward to a consultant who also works for a competitor. The vector barely matters. What matters is what each side is holding when the music stops.&lt;/p&gt;

&lt;p&gt;The group is holding a documented process, an audit trail showing it was followed, a contract clause defining its obligation narrowly, and a watermark that names the source of the leaked document. Its exposure is procedural and it is covered. Internally, this will be handled as an incident, closed with an action item, and possibly used to justify one more step in the process.&lt;/p&gt;

&lt;p&gt;The smaller company is holding something else. Its pricing logic is now readable by anyone who wants to undercut it, and pricing logic is far more damaging than a price, because it tells a competitor where the floor is and why. Its honest inventory of weaknesses is now available to be quoted back at it in the next competitive situation. Its commercial terms with this group become the reference point every other large buyer will demand to match. And in the next negotiation with the group itself, its margin is no longer private information.&lt;/p&gt;

&lt;p&gt;None of that appears as a line item. There is no invoice for it. The chief executive of the smaller company will feel it as a slow deterioration in win rates and negotiating position over the following two years, and will attribute it to market conditions, because that is the only explanation available without the document in hand.&lt;/p&gt;

&lt;p&gt;The recourse is close to nil. Not because the law is unfair, but because the process was followed. The obligation was defined and met. The supplier accepted the process at contract signature, at a moment when refusing it would have meant not signing at all, and when nobody in the room framed it as accepting a transfer of risk. It was framed as security. It said security on the label. It had a platform.&lt;/p&gt;

&lt;p&gt;That is what a flag of convenience looks like when it is made of paper. The group registered the handling of your most sensitive material under a regime that cannot hold it responsible, and it did so while telling you, accurately, that the regime existed and was documented.&lt;/p&gt;

&lt;h2 id=&quot;the-cost-always-lands-on-whoever-is-furthest-from-the-decision&quot;&gt;The cost always lands on whoever is furthest from the decision&lt;/h2&gt;

&lt;p&gt;In every version of this pattern, the party that pays is the one with the least power to have shaped the rule. No coincidence there. Risk moves along the path of least resistance, and resistance is a function of power, so the selection mechanism does the work on its own.&lt;/p&gt;

&lt;p&gt;The crew on the abandoned ship did not pick the registry. The supplier did not draft the document process. The apprentice put in charge of a critical technical subject, because the contractor who used to hold it was judged too expensive, did not decide to concentrate a company’s survival into the hands of its least experienced person. In each case the decision was taken several levels above, by someone whose exposure to the outcome had already been engineered away.&lt;/p&gt;

&lt;p&gt;And the person who ends up carrying it is almost always grateful at first. That detail is worth sitting with. The apprentice is pleased to be trusted with something real. The supplier is pleased to be in the supply chain. Consent is present at every step, which is exactly why the arrangement is stable and why it does not read as abuse from the inside.&lt;/p&gt;

&lt;p&gt;For a chief executive, the uncomfortable half of this is that the same logic runs in both directions. You inherit transferred risk from regulators, from large customers, from vendors whose terms you accepted because you needed the deal. You also transfer it: onto an underpowered hire on a subject nobody in your company understands, onto a supplier whose liability cap is smaller than the damage they could cause you, onto an internal process that documents an approval instead of producing a judgement. You will pay for the second kind later, and you will pay for it as an operational surprise rather than as a decision you remember making.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/flags-of-convenience-cover.jpg&quot; alt=&quot;Cargo ship at the edge of a port&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;read-a-rule-by-asking-who-wrote-it&quot;&gt;Read a rule by asking who wrote it&lt;/h2&gt;

&lt;p&gt;There is one question that cuts through all of it, and it is not a technical question. Who wrote this rule, and what would happen to them if it failed?&lt;/p&gt;

&lt;p&gt;If the answer is “nothing”, you are not looking at a protection. You are looking at a transfer, and you are standing at the receiving end of it. That holds for a supplier’s security process, for a large customer’s subcontracting clauses, for an insurance exclusion, for an internal approval workflow, and for the training certificate nobody in the building could act on.&lt;/p&gt;

&lt;p&gt;The repair is unglamorous and it is not more process. It is naming. Take the decisions in your organisation that would genuinely hurt if they went wrong, and put a person’s name against each one, not a committee, not a vendor, not a procedure. Then take the rules imposed on you from outside and mark, for each, who is exposed if it fails. What remains unnamed after that exercise is the list of risks you are carrying without knowing it.&lt;/p&gt;

&lt;p&gt;Doing this does not make an organisation safer on its own. It makes the exposure visible, which is the only condition under which a leader is actually deciding rather than discovering. The alternative is to keep sailing under a flag somebody else chose, and to find out what it was worth on the day it matters.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;International Transport Workers’ Federation, &lt;em&gt;Flags of Convenience&lt;/em&gt;: &lt;a href=&quot;https://www.itfglobal.org/en/sector/seafarers/flags-of-convenience&quot;&gt;https://www.itfglobal.org/en/sector/seafarers/flags-of-convenience&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Paris Memorandum of Understanding on Port State Control, &lt;em&gt;Flag and RO Performance Lists (White, Grey and Black List)&lt;/em&gt;: &lt;a href=&quot;https://parismou.org/Statistics%26Current-Lists/white-grey-and-black-list&quot;&gt;https://parismou.org/Statistics%26Current-Lists/white-grey-and-black-list&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;International Maritime Organization, &lt;em&gt;Our Work: Safety&lt;/em&gt;: &lt;a href=&quot;https://www.imo.org/en/OurWork/Safety/Pages/Default.aspx&quot;&gt;https://www.imo.org/en/OurWork/Safety/Pages/Default.aspx&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Kenneth J. Arrow, “Uncertainty and the Welfare Economics of Medical Care”, &lt;em&gt;The American Economic Review&lt;/em&gt;, vol. LIII, no. 5, December 1963, pp. 941 to 973: &lt;a href=&quot;https://assets.aeaweb.org/asset-server/files/9442.pdf&quot;&gt;https://assets.aeaweb.org/asset-server/files/9442.pdf&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Ulrich Beck, bibliographical record including &lt;em&gt;Risikogesellschaft&lt;/em&gt; (1986) and &lt;em&gt;Gegengifte: die organisierte Unverantwortlichkeit&lt;/em&gt; (1988): &lt;a href=&quot;https://en.wikipedia.org/wiki/Ulrich_Beck&quot;&gt;https://en.wikipedia.org/wiki/Ulrich_Beck&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>The Taxonomy Nobody Draws: Four Things Hiding Under Simple and Complex</title>
      <link href="https://francois.aichelbaum.com/2026/09/08/taxonomy-of-simple-and-complex" />
      <updated>2026-09-08T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/09/08/taxonomy-of-simple-and-complex</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#two-words-carry-four-different-operations&quot; id=&quot;markdown-toc-two-words-carry-four-different-operations&quot;&gt;Two words carry four different operations&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#reduction-destroys-substance-and-calls-itself-simplification&quot; id=&quot;markdown-toc-reduction-destroys-substance-and-calls-itself-simplification&quot;&gt;Reduction destroys substance and calls itself simplification&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#manufactured-complexity-is-a-pricing-strategy-not-an-engineering-outcome&quot; id=&quot;markdown-toc-manufactured-complexity-is-a-pricing-strategy-not-an-engineering-outcome&quot;&gt;Manufactured complexity is a pricing strategy, not an engineering outcome&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#natural-complexity-is-irreducible-and-only-yields-to-atomisation&quot; id=&quot;markdown-toc-natural-complexity-is-irreducible-and-only-yields-to-atomisation&quot;&gt;Natural complexity is irreducible and only yields to atomisation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#simplification-is-the-rarest-of-the-four-because-it-requires-knowing-what-things-are-for&quot; id=&quot;markdown-toc-simplification-is-the-rarest-of-the-four-because-it-requires-knowing-what-things-are-for&quot;&gt;Simplification is the rarest of the four because it requires knowing what things are for&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#case-the-capability-that-had-no-name&quot; id=&quot;markdown-toc-case-the-capability-that-had-no-name&quot;&gt;Case: the capability that had no name&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#organisations-confuse-the-four-because-their-vocabulary-has-only-two-words&quot; id=&quot;markdown-toc-organisations-confuse-the-four-because-their-vocabulary-has-only-two-words&quot;&gt;Organisations confuse the four because their vocabulary has only two words&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-cost-of-the-confusion-is-paid-twice&quot; id=&quot;markdown-toc-the-cost-of-the-confusion-is-paid-twice&quot;&gt;The cost of the confusion is paid twice&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#naming-the-four-is-an-executive-skill-not-a-technical-one&quot; id=&quot;markdown-toc-naming-the-four-is-an-executive-skill-not-a-technical-one&quot;&gt;Naming the four is an executive skill, not a technical one&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;Simple and complex are not two categories. They are two words covering four distinct operations: simplification, reduction, manufactured complexity, and natural complexity. Two of the four are counterfeits sold as virtues, and two are real conditions that most organisations refuse to name. The cost of the confusion is not intellectual. It is paid in capabilities that vanish quietly and in invoices that buy volume instead of judgment.&lt;/p&gt;

&lt;h2 id=&quot;two-words-carry-four-different-operations&quot;&gt;Two words carry four different operations&lt;/h2&gt;

&lt;p&gt;The vocabulary is the failure point. When an executive says “simplify this”, four different things can come back, and the language offers no way to tell them apart before the money is spent.&lt;/p&gt;

&lt;p&gt;Simplification removes what is in the way and keeps what mattered. Reduction removes until the thing stops doing its job, and borrows the word simplification to describe the damage. Manufactured complexity adds weight that no requirement asked for, because weight reads as rigour and rigour justifies a price. Natural complexity is the part that was already hard before anyone touched it, and stays hard after every tool has been bought.&lt;/p&gt;

&lt;p&gt;Four operations. Two words. Every organisation I have looked at owns a rich vocabulary for cost and almost none for this.&lt;/p&gt;

&lt;h2 id=&quot;reduction-destroys-substance-and-calls-itself-simplification&quot;&gt;Reduction destroys substance and calls itself simplification&lt;/h2&gt;

&lt;p&gt;Reduction is always presented from the side of what remains. That is its signature and it is reliable.&lt;/p&gt;

&lt;p&gt;A vendor demonstrates a workflow that used to take fifteen steps and now takes three. The three steps are real. What left the building is not discussed, because the person demonstrating does not know your business well enough to know what left. The export your accountant relied on, the record of who changed what, the ability to correct an entry after a close: none of those appear in a demonstration, because a demonstration shows capability, never absence.&lt;/p&gt;

&lt;p&gt;The interesting part is that reduction is rarely dishonest. Nobody in the room lies. The failure is structural: no one at the table holds the mandate to name what disappears. Sales does not, because it sells what exists. The operational team does not, because it was not invited. The executive does not, because from that seat the missing capability has no visible shape.&lt;/p&gt;

&lt;p&gt;John Gall, writing in 1975 in &lt;em&gt;General Systemantics&lt;/em&gt; and again in the 1977 edition, made the observation that systems tend to fail in ways their designers did not anticipate, and that a system’s behaviour cannot be deduced from its specification. Reduction is that failure with a marketing layer on top. The specification says fewer steps. The behaviour says a capability is gone and someone will discover it on a bad day.&lt;/p&gt;

&lt;h2 id=&quot;manufactured-complexity-is-a-pricing-strategy-not-an-engineering-outcome&quot;&gt;Manufactured complexity is a pricing strategy, not an engineering outcome&lt;/h2&gt;

&lt;p&gt;Manufactured complexity grows when you ask for a price and never when you ask for a result. That asymmetry is the whole tell.&lt;/p&gt;

&lt;p&gt;A framing exercise runs six weeks before the first decision that changes anything. Three governance bodies exist where one would do. Forty slides carry six slides of content. None of this is incompetence, and reading it as incompetence is the mistake that keeps executives from acting on it. The volume is the product. The heaviness is what makes the invoice defensible, both to the buyer and to the buyer’s board.&lt;/p&gt;

&lt;p&gt;The internal version is quieter and more durable. A team over-designs: three layers of abstraction for a requirement that has one shape, an architecture split into fourteen services for a product with three hundred users. Reading this as laziness is also wrong. It is insurance. Work that nobody else can understand cannot be handed to anybody else, which means the person holding it cannot be moved, questioned cheaply, or replaced. Manufactured complexity is a career strategy long before it is an architecture.&lt;/p&gt;

&lt;p&gt;Larry Tesler’s law of conservation of complexity, formulated around 1984, says that the irreducible complexity of an application cannot be deleted, only moved between the user, the application developer, and the platform developer. Manufactured complexity is the inverse operation and it deserves its own name: complexity that was not there, created and then relocated onto the buyer, who now pays to carry it.&lt;/p&gt;

&lt;h2 id=&quot;natural-complexity-is-irreducible-and-only-yields-to-atomisation&quot;&gt;Natural complexity is irreducible and only yields to atomisation&lt;/h2&gt;

&lt;p&gt;Natural complexity does not respond to slogans, tools, or reorganisations, and pretending otherwise is more expensive than admitting it.&lt;/p&gt;

&lt;p&gt;Thirty years of pricing rules, seven of which come from contracts nobody can reopen. Three enterprise systems that arrived with three acquisitions. A regulatory constraint that moves twice a year. None of that is a defect. It is the shape of the business, written down in software. Frederick Brooks named this in 1986 in &lt;em&gt;No Silver Bullet&lt;/em&gt;, separating the difficulties inherent to the problem from the difficulties introduced by our tools, and arguing that the second category had already been largely harvested. Forty years later the accidental layer has been harvested several times over, and the essential layer is exactly where it was.&lt;/p&gt;

&lt;p&gt;The only honest treatment is decomposition. Herbert Simon described in 1962, in &lt;em&gt;The Architecture of Complexity&lt;/em&gt;, why this works: complex systems that survive tend to be near-decomposable, meaning interactions inside a subsystem are much stronger than interactions between subsystems. That property is what makes a hard system understandable at all. It is also what makes a hard problem tractable: break it into unit problems, each with an owner, a definition of done, and a date, and you get twelve small things you can stop individually instead of one large thing you can only abandon.&lt;/p&gt;

&lt;p&gt;This is the test that separates real complexity from the manufactured kind, and it requires no technical skill to run. Ask for the decomposition. Real complexity accepts being cut into pieces, and some of those pieces will be ugly, and two or three will have no clean solution. Manufactured complexity resists, because it needs to stay whole to stay impressive. The refusal is the information.&lt;/p&gt;

&lt;h2 id=&quot;simplification-is-the-rarest-of-the-four-because-it-requires-knowing-what-things-are-for&quot;&gt;Simplification is the rarest of the four because it requires knowing what things are for&lt;/h2&gt;

&lt;p&gt;Simplification costs more upfront than reduction and looks worse in a meeting, which is why it is the least practised of the four operations.&lt;/p&gt;

&lt;p&gt;The removal is trivial. Knowing what can be removed is not. Most of what looks useless is used: by one person, once a quarter, for something nobody wrote down. Documentation does not help, because documentation describes intent and the question is about usage. The only reliable method is observation: who opens this, at what point in the month, and what do they do with the output.&lt;/p&gt;

&lt;p&gt;An honest simplification produces a sentence its author is willing to sign before acting: here is what you lose, here is who it hurts, here is why we are doing it anyway. Reduction sold as simplification never writes that sentence. It does not need to lie. It only needs to leave the subject closed.&lt;/p&gt;

&lt;h2 id=&quot;case-the-capability-that-had-no-name&quot;&gt;Case: the capability that had no name&lt;/h2&gt;

&lt;p&gt;What follows is a composite. The details are changed and no single organisation is being described. The mechanism is untouched, because the mechanism is the point, and I have watched it run more than once.&lt;/p&gt;

&lt;p&gt;A distribution business, around a hundred and eighty people, four sites, roughly forty years old. Eleven tools in the operational stack, several of them older than half the staff. A consolidation programme is launched with a slogan that nobody could reasonably argue with: one system, one version of the truth. The business case is sound. The eleven tools genuinely cost more than they should, the reconciliation work between them genuinely consumed people, and the executive committee genuinely wanted the simplification. Every intention in this story is good. That is what makes it useful.&lt;/p&gt;

&lt;p&gt;The old order-management system had grown a path over roughly fourteen years, added one patch at a time, that handled a specific situation: partial delivery with substitution and repricing. When a reference was short, the system would propose an equivalent from a different range, reprice the line according to a matrix of customer-specific rules, split the order, and keep the commitment date on the part that could ship. It was ugly. It had been built by three different people, none of whom were still there. It touched perhaps six per cent of order lines.&lt;/p&gt;

&lt;p&gt;Those six per cent carried a disproportionate share of the margin, for a reason that never appeared in any document: they were how the business kept its largest customers supplied during shortages, which was how it kept those customers at all. Sales knew this in the way people know weather. Nobody had written it down, and more importantly, nobody had a name for it. No catalogue listed it as a feature. No process map carried it as a line. It was a behaviour of a system, understood by usage.&lt;/p&gt;

&lt;p&gt;The requirements workshops for the new platform ran for nine weeks and were well conducted. Every documented process was mapped. Every named feature was assessed, scored, and either retained or dropped with a rationale. The substitution path was never assessed, because it was never named. It appeared in the workshop notes once, as “handles some special cases”, and moved to a backlog category that nobody revisited. The new platform handled partial delivery, which sounded close enough to anyone reading the summary. It did not handle substitution with repricing, and the vendor was never asked whether it could, because nobody in the room knew there was a question.&lt;/p&gt;

&lt;p&gt;Go-live was declared a success, and by the criterion in the programme charter it was one: eleven tools became one, on schedule, within budget, with training completed. The criterion measured the transition, not the business.&lt;/p&gt;

&lt;p&gt;The six per cent became manual within three weeks. First a spreadsheet maintained by one person in customer service, who reconstructed the substitution matrix from memory and from old order confirmations. Then a shared mailbox, because one person could not hold it. Then two people, then a third during quarter ends. Response time on shortage substitution went from same-day, handled by software, to two to four days, handled by humans with incomplete rules. Errors appeared: wrong equivalents proposed, prices applied from the wrong matrix, credit notes issued to fix them.&lt;/p&gt;

&lt;p&gt;Fourteen months after go-live, someone finally counted. The manual handling of a capability the new system did not have was consuming more salary than the licence and maintenance cost of the tool it had replaced. That number was uncomfortable but it was not the real loss. The real loss was that the business had stopped being the supplier who solved shortages faster than its competitors, which had been its actual differentiator for two decades, and nobody had decided to stop being that. It had simply not survived a requirements workshop.&lt;/p&gt;

&lt;p&gt;The post-mortem, when it happened, blamed the vendor selection, then the workshops, then change management. All three are wrong. The vendor sold what it had. The workshops did exactly what workshops do, which is assess named things. Change management managed the change that was described to it.&lt;/p&gt;

&lt;p&gt;The failure was lexical. A capability with no name cannot be defended, because defending it requires someone to say the words out loud in a room where decisions are made, and there were no words. The programme did not make a bad trade-off between simplicity and capability. It never knew a trade-off was on the table, which is the difference between simplification and reduction, and the difference is entirely in whether anyone said what was being given up.&lt;/p&gt;

&lt;p&gt;What a competent intervention looks like here is unglamorous. Before a consolidation programme opens its first workshop, someone spends three weeks not in documentation but in usage: which screens are opened, by whom, at what point in the month, and what happens to the output. Anything with no detectable usage across a full business cycle is a candidate for removal. Anything used rarely and by few people is exactly where the value hides, and gets named before it gets assessed. That work is slow, it produces no slide anyone enjoys presenting, and it is the difference between a programme that simplifies and a programme that reduces.&lt;/p&gt;

&lt;h2 id=&quot;organisations-confuse-the-four-because-their-vocabulary-has-only-two-words&quot;&gt;Organisations confuse the four because their vocabulary has only two words&lt;/h2&gt;

&lt;p&gt;The confusion comes from missing names, not from missing intelligence, and names are cheap to fix.&lt;/p&gt;

&lt;p&gt;An executive team can distinguish gross margin from contribution margin without a finance degree, because someone once insisted the two words be used correctly and the distinction was enforced in meetings. No equivalent discipline exists for simplicity. Two counterfeits and two real conditions share two words, and the words are used interchangeably by vendors, by consultants, by internal teams, and by the executives buying from all three.&lt;/p&gt;

&lt;p&gt;The consequence is predictable. Reduction gets approved because it is described as simplification and simplification is agreed to be good. Manufactured complexity gets approved because it is described as rigour and rigour is agreed to be responsible. Natural complexity gets refused, because admitting a problem is genuinely hard reads as an excuse, and the person who says it is asked to come back with a simpler plan. Real simplification gets refused too, because it costs three weeks of observation before anyone sees a result.&lt;/p&gt;

&lt;p&gt;The two counterfeits are bought. The two real things are declined. That is what a missing vocabulary does.&lt;/p&gt;

&lt;h2 id=&quot;the-cost-of-the-confusion-is-paid-twice&quot;&gt;The cost of the confusion is paid twice&lt;/h2&gt;

&lt;p&gt;Every organisation that cannot name the four operations pays once for the counterfeit and once again for the repair.&lt;/p&gt;

&lt;p&gt;The first payment is visible on the invoice: a tool that dropped a capability, a framing exercise that produced volume, an architecture that needs two full-time people to stay upright. The second payment is invisible on any ledger: the manual workaround that grows a headcount at a time, the differentiator that was never decided away, the internal knowledge that walks out with the person who was holding the spreadsheet.&lt;/p&gt;

&lt;p&gt;The second payment is always larger, and it is never attributed to the decision that caused it, because eighteen months have passed and the decision was declared a success at the time.&lt;/p&gt;

&lt;h2 id=&quot;naming-the-four-is-an-executive-skill-not-a-technical-one&quot;&gt;Naming the four is an executive skill, not a technical one&lt;/h2&gt;

&lt;p&gt;None of this requires an executive to understand a system. It requires an executive to hold four labels and insist that people use them.&lt;/p&gt;

&lt;p&gt;Ask what you can no longer do after the change, and require the answer in writing. Ask for the decomposition, and watch whether it is refused. Ask for the short version, and watch whether the subject survives being short. Ask who uses the thing you are about to remove, and accept that the honest answer takes three weeks to obtain.&lt;/p&gt;

&lt;p&gt;Four questions, four labels. The technical work belongs to someone else. The naming belongs to the person who signs, and it cannot be delegated to the party being paid.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Frederick P. Brooks Jr., &lt;em&gt;No Silver Bullet: Essence and Accident in Software Engineering&lt;/em&gt;, 1986. https://worrydream.com/refs/Brooks_1986_-_No_Silver_Bullet.pdf&lt;/li&gt;
  &lt;li&gt;Larry Tesler, &lt;em&gt;Law of Conservation of Complexity&lt;/em&gt;, c. 1984. https://www.nomodes.com/Larry_Tesler_Consulting/Complexity_Law.html&lt;/li&gt;
  &lt;li&gt;Herbert A. Simon, &lt;em&gt;The Architecture of Complexity&lt;/em&gt;, 1962. https://faculty.sites.iastate.edu/tesfatsi/archive/tesfatsi/ArchitectureOfComplexity.HSimon1962.pdf&lt;/li&gt;
  &lt;li&gt;John Gall, &lt;em&gt;Systemantics: How Systems Work and Especially How They Fail&lt;/em&gt;, 1977 (first edition 1975 as &lt;em&gt;General Systemantics&lt;/em&gt;). https://archive.org/details/systemanticshows00gall&lt;/li&gt;
  &lt;li&gt;Laws of UX, &lt;em&gt;Tesler’s Law&lt;/em&gt;. https://lawsofux.com/teslers-law/&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>The Chain Nobody Cut</title>
      <link href="https://francois.aichelbaum.com/2026/09/01/the-chain-nobody-cut" />
      <updated>2026-09-01T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/09/01/the-chain-nobody-cut</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#aviation-separated-investigation-from-judgment-on-purpose-and-wrote-it-down&quot; id=&quot;markdown-toc-aviation-separated-investigation-from-judgment-on-purpose-and-wrote-it-down&quot;&gt;Aviation separated investigation from judgment on purpose, and wrote it down&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#an-accident-is-a-trajectory-not-a-decision&quot; id=&quot;markdown-toc-an-accident-is-a-trajectory-not-a-decision&quot;&gt;An accident is a trajectory, not a decision&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#blame-is-expensive-because-it-changes-what-people-are-willing-to-say&quot; id=&quot;markdown-toc-blame-is-expensive-because-it-changes-what-people-are-willing-to-say&quot;&gt;Blame is expensive because it changes what people are willing to say&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-data-migration-that-lost-fourteen-months-of-history-reconstructed-as-a-chain&quot; id=&quot;markdown-toc-a-data-migration-that-lost-fourteen-months-of-history-reconstructed-as-a-chain&quot;&gt;A data migration that lost fourteen months of history, reconstructed as a chain&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#high-reliability-organisations-treat-failure-as-data-not-as-misconduct&quot; id=&quot;markdown-toc-high-reliability-organisations-treat-failure-as-data-not-as-misconduct&quot;&gt;High reliability organisations treat failure as data, not as misconduct&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-blameless-post-mortem-is-a-discipline-not-a-mood&quot; id=&quot;markdown-toc-a-blameless-post-mortem-is-a-discipline-not-a-mood&quot;&gt;A blameless post-mortem is a discipline, not a mood&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-changes-when-a-leader-stops-asking-who&quot; id=&quot;markdown-toc-what-changes-when-a-leader-stops-asking-who&quot;&gt;What changes when a leader stops asking who&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;Blame is a mechanism, not a moral position. Asking who is responsible before you know what happened destroys the only material an organisation has to understand its own failure, because the people holding that material immediately start protecting themselves instead of describing what they saw. A serious failure never has a single cause: it has a chain of decisions, each defensible on its own, that nobody cut. The chain is the only object a leader can actually act on, and it becomes unreadable the moment a name is on the table.&lt;/p&gt;

&lt;h2 id=&quot;aviation-separated-investigation-from-judgment-on-purpose-and-wrote-it-down&quot;&gt;Aviation separated investigation from judgment on purpose, and wrote it down&lt;/h2&gt;

&lt;p&gt;Air accident investigation is built on a rule that reads as generosity and is in fact a piece of engineering. The international framework governing these investigations sets a single objective for a safety investigation: prevention. It states that apportioning blame or liability is not the purpose of that activity. The French safety board says the same thing in its own words, describing its investigations as aimed solely at improving aviation safety, distinct from and without prejudice to any proceedings intended to establish faults or liabilities.&lt;/p&gt;

&lt;p&gt;Two processes, two purposes, two sets of files. A court looks for someone responsible, which is a legitimate social need. An investigation looks for a cause, which is an operational need. They coexist, and they are kept apart.&lt;/p&gt;

&lt;p&gt;The separation is not there to protect crews from consequences. It is there because the two objectives are technically incompatible in the same room at the same time. An investigator needs a pilot, a mechanic, a controller and a dispatcher to describe what they thought was happening, including the part where their reasoning was wrong. Nobody describes their own faulty reasoning to someone who can end their career with it. So the investigation is given a protected space, and the judicial process is given its own evidence to gather.&lt;/p&gt;

&lt;p&gt;Companies do not have this luxury. In a company, the investigator and the judge are the same person, in the same office, often within the same hour. That is not a flaw to be fixed. It is the constraint to be managed, and almost nobody manages it explicitly.&lt;/p&gt;

&lt;h2 id=&quot;an-accident-is-a-trajectory-not-a-decision&quot;&gt;An accident is a trajectory, not a decision&lt;/h2&gt;

&lt;p&gt;James Reason gave this shape a name in the British Medical Journal in 2000. His paper contrasts what he calls the person approach, which focuses on the unsafe acts of people at the sharp end and whose natural countermeasures are naming, blaming and shaming, with the system approach, which starts from the premise that humans are fallible and errors are to be expected even in the best organisations.&lt;/p&gt;

&lt;p&gt;The image most people remember from his work is the layered one. An organisation is a series of defences. Each defence has holes. The holes are not fixed: they open and close with workload, staffing, deadlines, software versions, who happens to be on shift. An accident happens when the holes in every layer line up long enough for a trajectory to pass through all of them.&lt;/p&gt;

&lt;p&gt;What matters in that model is not the picture. It is the consequence for anyone trying to learn from a failure.&lt;/p&gt;

&lt;p&gt;If a failure requires alignment across several layers, then every single layer, taken alone, was working within its own definition of correct. That is why interviews after a serious incident produce the same sentence over and over: I did what I was asked to do. The sentence is not a defence. It is usually accurate. And it is exactly the sentence a blame-oriented process cannot process, so it gets treated as evasion.&lt;/p&gt;

&lt;h2 id=&quot;blame-is-expensive-because-it-changes-what-people-are-willing-to-say&quot;&gt;Blame is expensive because it changes what people are willing to say&lt;/h2&gt;

&lt;p&gt;The cost of a blame reflex is never booked anywhere. It appears as an absence, and absences do not show up on dashboards.&lt;/p&gt;

&lt;p&gt;Once responsibility has been assigned publicly one time, an organisation learns. What follows is not disengagement, which would at least be visible. It is defensive hygiene. People copy more colleagues on email. They ask for written confirmation of things that used to be settled standing up in a corridor. They timestamp. They write for the future reader who might be a lawyer rather than for the colleague who needs to act.&lt;/p&gt;

&lt;p&gt;Each of those behaviours is individually rational. Together they add latency to every decision and remove the informal channel through which weak signals used to travel. The organisation becomes slower and blinder at the same time, and it experiences this as a process problem rather than as a consequence of how it handled one incident eighteen months earlier.&lt;/p&gt;

&lt;p&gt;There is a second-order cost that is harder to talk about and easier to observe. The people who leave first, in an organisation that has learned to assign blame, are not the weakest ones. They are the ones with the clearest read on where the next incident is going to come from, because they are the ones for whom staying quiet is the most expensive thing psychologically. What remains is a team that is technically competent and structurally silent, and a leadership team that has no idea it is now flying on instruments that report only good news.&lt;/p&gt;

&lt;p&gt;Sidney Dekker has spent a career on this trade-off. The argument in &lt;em&gt;Just Culture: Balancing Safety and Accountability&lt;/em&gt; is not that nobody should ever be held to account. It is that accountability and learning pull in different directions, that the pull is real, and that most organisations resolve it implicitly, by reflex, without ever noticing they made a choice. In &lt;em&gt;The Field Guide to Understanding Human Error&lt;/em&gt;, the same point is turned toward practice: human error is not an explanation, it is the thing that still needs explaining.&lt;/p&gt;

&lt;h2 id=&quot;a-data-migration-that-lost-fourteen-months-of-history-reconstructed-as-a-chain&quot;&gt;A data migration that lost fourteen months of history, reconstructed as a chain&lt;/h2&gt;

&lt;p&gt;Here is a failure I have seen in enough variations to treat it as a type rather than an anecdote. The details below are reconstructed and anonymised. No organisation is identifiable, and the point is the structure, not the story.&lt;/p&gt;

&lt;p&gt;A company consolidates two customer databases after an internal reorganisation. The two systems came from two business units that used to operate separately. The consolidation is not a technical vanity project: a regulatory reporting obligation requires a single view of the customer base by a specific date, and that date is not negotiable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decision one.&lt;/strong&gt; The executive committee approves the consolidation and fixes the go-live to land before the reporting date, with a small buffer. That is the correct call. The date is externally imposed. A leadership team that lets an internal migration slip past a regulatory deadline has failed at its actual job.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decision two.&lt;/strong&gt; During schema work, an engineer finds that roughly two per cent of records from the older system carry a legacy identifier format that the new schema cannot represent. These are the oldest customers, the ones with the longest history. He does exactly what he should: he documents it, quantifies it, and proposes a mapping table with an estimate of three weeks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decision three.&lt;/strong&gt; The programme manager holds the deadline. Three weeks eats the buffer. She asks a reasonable question: can those records be migrated in a second pass, after go-live? The answer is yes, technically nothing prevents it. She decides on a second pass and records the decision. Given her mandate and the information she has, this is not a compromise. It is good programme management. The regulatory report does not depend on the two per cent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decision four.&lt;/strong&gt; The second pass is entered in the project tracker as a follow-up task with an owner. Two months later, that owner moves to another role in a reorganisation that has nothing to do with this project. The task was in the tracker, not in anyone’s objectives, not in a service catalogue, not in a risk register. The project closes on time. Its tracker is archived, which is standard practice for a closed project and which any auditor would approve of.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decision five.&lt;/strong&gt; Post-go-live validation compares record counts between the old and the new system. The counts match. They match because the two per cent were written to a quarantine table during migration, and the reconciliation query counts every row present in the target environment. Nobody wrote that query in bad faith. It was written before the quarantine table existed as a concept, and counting everything that arrived is the intuitive definition of a successful migration.&lt;/p&gt;

&lt;p&gt;Fourteen months later, a commercial dispute with one of those long-standing customers requires the transaction history that predates the reorganisation. It is not there. The quarantine table was dropped during a storage clean-up, executed under a documented retention rule, by someone who had no reason to grant it an exemption because nothing anywhere described it as holding production data.&lt;/p&gt;

&lt;p&gt;Five decision points. Not one of them was wrong when it was taken. Five people could have cut the chain, and each of them was doing the thing their role rewards.&lt;/p&gt;

&lt;p&gt;Now watch what the blame reflex produces here. It produces the engineer. He is the only person in the sequence who saw the problem, named it, and then let it go. That reading is satisfying, and it is the single most expensive conclusion available, because it teaches every engineer in the company that flagging a two per cent anomaly attaches your name to whatever happens next. The next anomaly will not be flagged. It will be worked around quietly, and the workaround will be undocumented, because documenting a workaround is documenting that you knew.&lt;/p&gt;

&lt;p&gt;The chain reading produces something different. It produces five cut points, each with an answer that outlives the people involved. A deferred migration item does not survive in a project tracker, so deferred work with a data consequence needs a home that is not a tracker. A validation query that counts rows in the target environment answers the wrong question, so reconciliation has to compare against a business definition of the record, not against a row count. A retention rule applied to a table nobody classified will delete production data eventually, so classification is a precondition of retention, not a nice-to-have. A follow-up task with an owner and no objective is a task with no owner. And a project cannot close while it still holds an open data commitment, which is a governance rule, not an engineering one.&lt;/p&gt;

&lt;p&gt;None of that is discoverable from a name. All of it is discoverable from a sequence.&lt;/p&gt;

&lt;h2 id=&quot;high-reliability-organisations-treat-failure-as-data-not-as-misconduct&quot;&gt;High reliability organisations treat failure as data, not as misconduct&lt;/h2&gt;

&lt;p&gt;Karl Weick and Kathleen Sutcliffe studied organisations that operate in conditions where failure is catastrophic and yet failure is rare. In &lt;em&gt;Managing the Unexpected: Sustained Performance in a Complex World&lt;/em&gt;, the pattern they describe is not heroic vigilance. It is a set of habits, and two of them are directly relevant to any company.&lt;/p&gt;

&lt;p&gt;The first is preoccupation with failure, meaning that small anomalies are treated as information about the system rather than as noise to be filtered. The second is reluctance to simplify, meaning that convenient single-factor explanations are actively distrusted, because a simple explanation of a complex event is almost always a truncated one.&lt;/p&gt;

&lt;p&gt;A single named culprit is the most convenient simplification available. It is also the one that ends inquiry fastest, which is precisely why it feels like resolution.&lt;/p&gt;

&lt;p&gt;The software reliability world arrived at the same place from a different direction and gave it a name. The postmortem chapter in Google’s &lt;em&gt;Site Reliability Engineering&lt;/em&gt; describes a blameless postmortem as one that identifies contributing causes without indicting any individual or team, and it states the working assumption plainly: everyone involved had good intentions and did the right thing with the information they had. The operational logic in that chapter is worth quoting in substance rather than in form, because it is the whole argument compressed: you cannot fix people, but you can fix the systems and processes that support people in making the right choices.&lt;/p&gt;

&lt;h2 id=&quot;a-blameless-post-mortem-is-a-discipline-not-a-mood&quot;&gt;A blameless post-mortem is a discipline, not a mood&lt;/h2&gt;

&lt;p&gt;The most common failure mode of this idea is to treat it as a tone of voice. A meeting where everyone is polite and nobody says anything useful is not a blameless post-mortem. It is a blame-avoidant meeting, which is the same information loss with better manners.&lt;/p&gt;

&lt;p&gt;The discipline has a few hard edges.&lt;/p&gt;

&lt;p&gt;It starts with an assumption stated out loud before anything else: every person in this sequence acted correctly given what they knew at that moment. That assumption is not up for debate during the session. It is the axiom that makes the rest possible. What remains to be examined is far more interesting anyway: why did the available information lead to that decision.&lt;/p&gt;

&lt;p&gt;It produces a dated sequence, not a narrative. Times, decisions, who knew what, what was written down and where. The output is a chain, with the cut points marked.&lt;/p&gt;

&lt;p&gt;It separates the question of consequence in time. A leader who needs to sanction someone retains that right. Doing it during the reconstruction destroys the reconstruction. Doing it after means the decision is made by someone who now understands what happened, which tends to change the decision.&lt;/p&gt;

&lt;p&gt;It also has a guest list, and the guest list is where most attempts die. A reconstruction attended by the person who signs the budget of everyone in the room is not a reconstruction. It does not matter how sincere that person is about wanting the truth: the people in the room are doing arithmetic about their own exposure, and they are right to. Either the sponsor stays out and receives the written sequence afterwards, or the sponsor comes in and accepts that what they will hear is the version that survives being heard by them. Both are workable. Pretending the choice does not exist is not.&lt;/p&gt;

&lt;p&gt;And it is governed. A post-mortem practice that depends on the goodwill of whoever runs the meeting lasts exactly as long as that person. It needs a trigger threshold, a named owner of the practice rather than of the incident, a standard output format, and a rule about who reads it. Without those four things it will be applied to the incident that is politically safe and skipped on the one that matters.&lt;/p&gt;

&lt;h2 id=&quot;what-changes-when-a-leader-stops-asking-who&quot;&gt;What changes when a leader stops asking who&lt;/h2&gt;

&lt;p&gt;The habit is in the phrasing, and the phrasing is contagious. A leader who opens with who validated this has already told the room which process is running. A leader who opens with walk me through the sequence has told them something else, and the room adjusts within minutes. That is not a soft-skills observation. It is the highest-leverage change available, and it costs nothing.&lt;/p&gt;

&lt;p&gt;What comes back is different in kind. Not a defence, a chain. And a chain has an uncomfortable property: it always passes through governance. The deferred item with no home, the validation that answered the wrong question, the ownership that evaporated in a reorganisation, the closed project with an open commitment. None of those belong to the engineer. They belong to whoever designed the system in which those things are normal.&lt;/p&gt;

&lt;p&gt;Which is the real reason the question who is so attractive. It ends outside the leader. The chain does not.&lt;/p&gt;

&lt;p&gt;A failure that produces a name teaches an organisation to hide. A failure that produces a sequence teaches it something it can use. Both are choices, and one of them is made every time by default, in the first twenty minutes, by whoever speaks first.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;James Reason, &lt;em&gt;Human error: models and management&lt;/em&gt;, BMJ, 2000, 320:768-770. https://www.bmj.com/content/320/7237/768&lt;/li&gt;
  &lt;li&gt;SKYbrary, &lt;em&gt;Introduction to Accident Investigation&lt;/em&gt; (citing the sole objective of a safety investigation under ICAO Annex 13). https://skybrary.aero/articles/introduction-accident-investigation&lt;/li&gt;
  &lt;li&gt;Sidney Dekker, &lt;em&gt;Just Culture: Balancing Safety and Accountability&lt;/em&gt;, 2nd edition, CRC Press, 2016. https://www.taylorfrancis.com/books/mono/10.4324/9781315251271/culture-sidney-dekker&lt;/li&gt;
  &lt;li&gt;Sidney Dekker, &lt;em&gt;The Field Guide to Understanding Human Error&lt;/em&gt;, CRC Press, 2017. https://www.taylorfrancis.com/books/mono/10.1201/9781315239675/field-guide-understanding-human-error-sidney-dekker&lt;/li&gt;
  &lt;li&gt;Karl E. Weick and Kathleen M. Sutcliffe, &lt;em&gt;Managing the Unexpected: Sustained Performance in a Complex World&lt;/em&gt;, 3rd edition, Wiley, 2015. https://pure.johnshopkins.edu/en/publications/managing-the-unexpected-sustained-performance-in-a-complex-world-/&lt;/li&gt;
  &lt;li&gt;John Lunney and Sue Lueder, &lt;em&gt;Postmortem Culture: Learning from Failure&lt;/em&gt;, chapter 15 of &lt;em&gt;Site Reliability Engineering&lt;/em&gt;, O’Reilly. https://sre.google/sre-book/postmortem-culture/&lt;/li&gt;
  &lt;li&gt;BEA (Bureau d’Enquêtes et d’Analyses), &lt;em&gt;Our mission&lt;/em&gt;. https://bea.aero/en/the-bea/our-mission/&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>You Cannot Verify Your Own Interpreter</title>
      <link href="https://francois.aichelbaum.com/2026/08/25/you-cannot-verify-your-own-interpreter" />
      <updated>2026-08-25T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/08/25/you-cannot-verify-your-own-interpreter</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#every-technology-decision-a-chief-executive-makes-is-made-on-a-translation&quot; id=&quot;markdown-toc-every-technology-decision-a-chief-executive-makes-is-made-on-a-translation&quot;&gt;Every technology decision a chief executive makes is made on a translation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-interpreter-is-the-only-person-in-the-room-you-cannot-audit&quot; id=&quot;markdown-toc-the-interpreter-is-the-only-person-in-the-room-you-cannot-audit&quot;&gt;The interpreter is the only person in the room you cannot audit&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#smoothing-is-not-lying-which-is-why-nobody-stops-it&quot; id=&quot;markdown-toc-smoothing-is-not-lying-which-is-why-nobody-stops-it&quot;&gt;Smoothing is not lying, which is why nobody stops it&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#four-things-a-chief-executive-structurally-cannot-verify&quot; id=&quot;markdown-toc-four-things-a-chief-executive-structurally-cannot-verify&quot;&gt;Four things a chief executive structurally cannot verify&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-case-the-migration-that-wrote-its-own-business-case&quot; id=&quot;markdown-toc-a-case-the-migration-that-wrote-its-own-business-case&quot;&gt;A case: the migration that wrote its own business case&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#an-independent-translator-is-a-control-not-a-comfort&quot; id=&quot;markdown-toc-an-independent-translator-is-a-control-not-a-comfort&quot;&gt;An independent translator is a control, not a comfort&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#you-do-not-need-to-speak-the-language&quot; id=&quot;markdown-toc-you-do-not-need-to-speak-the-language&quot;&gt;You do not need to speak the language&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;A chief executive never receives information about his own technology. He receives a translation of it, produced by the people whose work that same information is used to judge. This is not a communication problem that better dashboards will solve. It is a governance problem, and the structural answer to it is a translator who works for him and for nobody else.&lt;/p&gt;

&lt;h2 id=&quot;every-technology-decision-a-chief-executive-makes-is-made-on-a-translation&quot;&gt;Every technology decision a chief executive makes is made on a translation&lt;/h2&gt;

&lt;p&gt;No chief executive reads the state of his own systems. He reads a rendering of that state: a slide, a status colour, a sentence in a steering committee, a paragraph in a board pack. Between the machine and the decision there is always at least one human act of translation, and often three or four stacked on top of each other.&lt;/p&gt;

&lt;p&gt;This is not a failure. It is the only way a company of two hundred people can function. Nobody expects a chief executive to read logs, and a chief executive who reads logs is usually a chief executive who has stopped doing his job. The translation layer exists because it has to exist.&lt;/p&gt;

&lt;p&gt;The problem starts one step later. The translation is produced by people who are inside the thing being translated. The engineering lead who tells you the platform is fine is also the person whose team would be blamed if it were not fine. The vendor who tells you the migration is necessary is also the vendor who invoices the migration. The head of product who reports amber instead of red is also the person who committed to the date in front of your board six months ago. None of these people is dishonest. All of them are translating with something at stake.&lt;/p&gt;

&lt;p&gt;An interpreter with something at stake is still an interpreter. He simply is not a neutral one, and there is no version of the arrangement in which he becomes neutral because you asked him nicely.&lt;/p&gt;

&lt;h2 id=&quot;the-interpreter-is-the-only-person-in-the-room-you-cannot-audit&quot;&gt;The interpreter is the only person in the room you cannot audit&lt;/h2&gt;

&lt;p&gt;Sit in a negotiation conducted in a language you do not speak. You say a sentence. The interpreter turns and speaks. You watch the other party’s face, which tells you nothing, because a face does not translate. The other party answers. The interpreter turns back and gives you a version.&lt;/p&gt;

&lt;p&gt;Everyone else in that room can be checked. You can check the contract afterwards. You can check the numbers with your own finance team. You can check the other party’s reputation with three phone calls. The interpreter is the single node in the entire circuit whose output you have no independent way of testing, and he is also the node through which every single piece of information travels.&lt;/p&gt;

&lt;p&gt;That is a remarkable structural position for one person to hold, and it exists in your company right now. Not because anyone engineered it, but because information about technology travels along exactly one path: from the people who built the thing, to the people who manage those people, to you. Each hop is a translation. No hop has a second channel.&lt;/p&gt;

&lt;p&gt;The interpreting profession understands this danger better than most corporate functions do. Professional interpreter bodies build their standards around impartiality and professional secrecy precisely because the interpreter’s position is unverifiable from the inside. AIIC, the international association of conference interpreters, maintains a code of professional ethics and a set of professional standards whose entire purpose is to compensate for the fact that the client cannot check the work in real time. The profession solved the trust problem with an external framework, because it could not be solved with goodwill.&lt;/p&gt;

&lt;p&gt;Your technology reporting has no such framework. It has goodwill.&lt;/p&gt;

&lt;h2 id=&quot;smoothing-is-not-lying-which-is-why-nobody-stops-it&quot;&gt;Smoothing is not lying, which is why nobody stops it&lt;/h2&gt;

&lt;p&gt;Ask any working interpreter what actually happens in the booth and you will hear a version of the same thing: some things get rounded. An aggressive sentence is delivered a little softer, because breaking the atmosphere is not in anyone’s interest. A vague conditional in one language has no clean equivalent in the other, so it becomes a yes or a no. A technical detail the interpreter did not follow is dropped, on the reasonable assumption that it was probably not the important part.&lt;/p&gt;

&lt;p&gt;Every single one of those choices is helpful. That is the difficulty. Nobody involved has done anything wrong, and nobody involved could reasonably be asked to behave differently. The interpreter who refuses to smooth anything produces a conversation nobody can follow.&lt;/p&gt;

&lt;p&gt;The same three moves happen in every technology report that reaches an executive committee. Severity gets softened, because a red status in month four has political consequences that a red status in month nine does not. Ambiguity gets resolved into a decision, because a chief executive who is told “it depends” three times stops asking. Detail that the reporter did not fully grasp gets dropped, because reporting something you do not understand is professionally risky, and dropping it costs nothing this month.&lt;/p&gt;

&lt;p&gt;Individually, each of these is a rounding error. Stacked over two quarters, they produce a picture of the company’s technical reality that is not false in any single line and is wrong as a whole. And the person who discovers this last is always the person who does not speak the language.&lt;/p&gt;

&lt;p&gt;Claude Shannon established in 1948 that a noisy channel can be made reliable only by adding redundancy: with a single pass and no second reading, the receiver has no way to separate the message from the error. Corporate reporting removed the redundancy on purpose, in the name of executive time. One channel, one summary, nothing to compare it against.&lt;/p&gt;

&lt;h2 id=&quot;four-things-a-chief-executive-structurally-cannot-verify&quot;&gt;Four things a chief executive structurally cannot verify&lt;/h2&gt;

&lt;p&gt;Not “does not have time to verify”. Cannot. These four are unverifiable from the chief executive’s chair, by construction, regardless of how good he is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Whether the risk he has been given is the risk that exists.&lt;/strong&gt; A risk register is a translation of engineering anxiety into executive language. The conversion rate is set by the translator. When the same team reports a risk as moderate for four consecutive quarters and then the thing fails, nobody lied at any point: the word moderate simply meant something different inside the team than it meant on the slide.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Whether the option he was offered was the best option or the most comfortable one.&lt;/strong&gt; Every technical recommendation that reaches a chief executive has already been filtered. Options that would have required admitting an earlier mistake, or that would have moved work away from the team proposing them, tend not to survive the filter. The chief executive sees three options and believes he is choosing. He is choosing among the survivors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Whether the cost he is quoted includes the cost of the way it will actually be done.&lt;/strong&gt; Estimates arrive as numbers, which look verifiable. They are not: they are a translation of a set of assumptions, and the assumptions do not travel with the number. The chief executive can audit the arithmetic and has no way to audit the assumptions, which is where the entire variance lives.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Whether what he decided is what got built.&lt;/strong&gt; This is the one that hurts. A decision leaves the room as a sentence and arrives in the code as an interpretation of that sentence, made by people who were not in the room. Melvin Conway described the mechanism in Datamation in 1968: the structure of a system mirrors the structure of the organisation that produced it. The corollary is less quoted and more useful. If your organisation’s communication path to engineering has one lossy hop in it, your systems will encode that loss, permanently, in a form nobody can point at later.&lt;/p&gt;

&lt;p&gt;These four are not the same problem four times. They are one problem: the chief executive holds the accountability for decisions whose inputs he is structurally prevented from testing. Kenneth Arrow described the general economics of this in 1963, in a paper about medical care of all things, and the mechanism transfers cleanly: when one party cannot evaluate the quality of what the other party is providing, the relationship stops being a transaction and becomes an act of faith. George Akerlof made the consequence explicit in 1970. Markets in which the buyer cannot verify quality do not merely become inefficient. They degrade, because the participants who benefit from opacity outlast the ones who do not.&lt;/p&gt;

&lt;h2 id=&quot;a-case-the-migration-that-wrote-its-own-business-case&quot;&gt;A case: the migration that wrote its own business case&lt;/h2&gt;

&lt;p&gt;A company of roughly a hundred and forty people, profitable, growing at a rate that makes the board comfortable and the engineering team nervous. The platform is eight years old. It works. It is also, according to everyone who touches it, at the end of something.&lt;/p&gt;

&lt;p&gt;In February the engineering leadership brings a proposal to the executive committee: migrate the core platform to a new architecture, eighteen months, a budget that is large but not absurd relative to revenue. The business case is well built. It contains a cost of inaction, a competitive argument, a hiring argument, and a risk section. Every number in it is defensible. The chief executive, who is not technical, reads it twice, asks four good questions, receives four good answers, and approves.&lt;/p&gt;

&lt;p&gt;Here is what the business case is, structurally. It is a document written by the people who will execute the work, justifying the work, using information that only they hold, evaluated by someone who cannot check any of it. Every actor is honest. The document is still, in the strict sense, an interpreter speaking on behalf of both parties at once.&lt;/p&gt;

&lt;p&gt;Look at what the translation does to each of the four arguments.&lt;/p&gt;

&lt;p&gt;The cost of inaction is expressed as a probability of a serious incident rising over time. That probability is not measured, because it cannot be measured. It is an engineering intuition converted into a percentage, and the conversion happened in a room where the people converting it already believed the migration was necessary. The intuition may well be right. The number is not evidence, it is the intuition wearing the clothes of evidence.&lt;/p&gt;

&lt;p&gt;The competitive argument says the current architecture prevents the company from shipping two features that customers are asking for. This is the part a chief executive feels most equipped to evaluate, and it is the part where the translation is most complete. In the engineering conversation, the actual sentence was closer to: those features are possible in the current architecture, but building them there is unpleasant, and the people capable of doing it do not want to. That is a legitimate constraint. It is a staffing and morale constraint, not an architectural one. Somewhere between the corridor and the slide, it changed category.&lt;/p&gt;

&lt;p&gt;The hiring argument says the current stack makes recruitment harder. True, and unfalsifiable in the direction that matters. It is also the argument with the strongest personal alignment: the engineers proposing the migration would each become more employable on completion. Nobody says this, because it would be graceless, and because it is not the reason they believe the migration is right. It remains a fact about the incentive structure of the translation.&lt;/p&gt;

&lt;p&gt;The risk section lists execution risks and rates them moderate. Not one of them is rated high. In a project of eighteen months touching the revenue-generating core of the business, that distribution is telling you something about the reporting culture rather than about the project.&lt;/p&gt;

&lt;p&gt;Now the part that makes it a governance story rather than a story about a bad decision.&lt;/p&gt;

&lt;p&gt;Month nine. Delivery is behind, in the way these things are behind: no single dramatic failure, a series of reasonable slips. The status reported to the executive committee has been amber for five months. Amber, in this company, means the team believes it can recover. It has meant that for five months, because the team has believed it for five months, and because the first person to say red will be the person who said it.&lt;/p&gt;

&lt;p&gt;The chief executive asks the only question available to him: are we going to make it. He receives an honest answer from people who are exhausted and sincere: yes, if the next two sprints go well. The next two sprints do not go well. He asks again. Same answer, same sincerity.&lt;/p&gt;

&lt;p&gt;At month fourteen the old platform is still running production and the new one is running eleven per cent of traffic. Both must now be maintained. The engineering team is split across two systems, which halves its throughput on everything else, which slows the migration further. This is the moment where the project stops being a project and becomes the company’s operating condition.&lt;/p&gt;

&lt;p&gt;Nobody defrauded anybody. The chief executive made a defensible decision on the information he had, and re-made it a dozen times on the information he kept receiving. That is the point. There was no version of this in which better questions from him produced better answers, because every answer he got was a translation produced by the only people who could produce it, all of whom were inside the outcome.&lt;/p&gt;

&lt;p&gt;What would have changed it is not a smarter chief executive. It is a second interpreter in the room at the February meeting: someone fluent in both languages, with no stake in the migration happening or not happening, whose entire function was to read the same business case and say which of the four arguments were architectural, which were about people, and which were about comfort. That conversation takes two weeks and costs a rounding error against eighteen months.&lt;/p&gt;

&lt;p&gt;The company did not have that person. It had an excellent, honest, motivated engineering team, and a chief executive who trusted them, which is not a governance structure. It is a hope.&lt;/p&gt;

&lt;h2 id=&quot;an-independent-translator-is-a-control-not-a-comfort&quot;&gt;An independent translator is a control, not a comfort&lt;/h2&gt;

&lt;p&gt;In serious negotiation, each side brings its own interpreter. This is standard practice and it is not read as an insult. It is read as evidence that the parties are taking the conversation seriously.&lt;/p&gt;

&lt;p&gt;The reason it works is not that two interpreters translate better than one. It is that each interpreter now knows he is being heard by someone competent. The mere presence of a second channel changes the behaviour of the first one, before anybody has corrected anything. This is the oldest control mechanism there is, and every mature governance function in a company already uses it. Jensen and Meckling gave it a name in 1976: monitoring cost, one of the three components of what it costs to have anyone act on your behalf. Monitoring is not what you pay because you suspect someone. It is what the arrangement costs, and refusing to pay it does not remove the cost, it defers it. An external auditor does not do the accounting better than the finance team. He makes the finance team’s account checkable. Nobody argues that hiring an auditor implies the chief financial officer is a liar.&lt;/p&gt;

&lt;p&gt;Technology is the last executive domain where a company of two hundred people routinely operates with one unverifiable channel and calls it trust. The reasons are historical and mostly bad: technology was a cost centre for thirty years, it arrived in the executive committee late, and the vocabulary is hard enough that the people who hold it were able to keep it.&lt;/p&gt;

&lt;p&gt;The independent translator’s job is narrow and worth being precise about. He does not decide. He does not manage. He does not replace the engineering leadership, and if he starts competing with it he has become a second interested party rather than a control. What he does is make the existing translation checkable: name what was rounded, restore what was dropped, say which recommendation is architectural and which is organisational, and tell the chief executive what he was not told, including the parts that are inconvenient for everyone including the translator.&lt;/p&gt;

&lt;p&gt;The test of independence is simple and it is not about competence. Does this person’s income, career or reputation depend on the outcome of the decision he is translating? If yes, he is a party. If no, he is an interpreter. There is no third category, and no amount of integrity converts the first into the second.&lt;/p&gt;

&lt;h2 id=&quot;you-do-not-need-to-speak-the-language&quot;&gt;You do not need to speak the language&lt;/h2&gt;

&lt;p&gt;The instinct, once you see the mechanism, is to try to learn the language. That instinct is wrong and expensive. A chief executive who spends a year becoming semi-technical arrives at a worse place than where he started: he now has enough vocabulary to be argued with, and not enough to win, which converts every technical conversation into a negotiation he is guaranteed to lose slowly.&lt;/p&gt;

&lt;p&gt;The useful move is smaller. Stop asking whether you understand the technology. Start asking who translates it, and on whose behalf.&lt;/p&gt;

&lt;p&gt;That question has answers. Who wrote the document I am deciding on. What would have had to be true for a different recommendation to reach me. Which of these arguments would still hold if the person making it had nothing to gain. Who in this building is paid to tell me the thing nobody wants to say, and if the answer is nobody, that is not a personality gap in my team, it is a hole in the structure.&lt;/p&gt;

&lt;p&gt;A chief executive does not need to speak the language of his own systems. He needs an interpreter he can trust, which means one whose interests do not sit on either side of the table. Until that person exists, every technology decision he signs is a decision made on a translation he cannot read, and the accountability for it is his alone.&lt;/p&gt;

&lt;p&gt;What you cannot verify governs you. That is true whether or not you have noticed it.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Kenneth J. Arrow, &lt;em&gt;Uncertainty and the Welfare Economics of Medical Care&lt;/em&gt;, The American Economic Review, 1963. &lt;a href=&quot;https://www.jstor.org/stable/1812044&quot;&gt;https://www.jstor.org/stable/1812044&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;George A. Akerlof, &lt;em&gt;The Market for “Lemons”: Quality Uncertainty and the Market Mechanism&lt;/em&gt;, The Quarterly Journal of Economics, 1970. &lt;a href=&quot;https://www.jstor.org/stable/1879431&quot;&gt;https://www.jstor.org/stable/1879431&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Michael C. Jensen and William H. Meckling, &lt;em&gt;Theory of the Firm: Managerial Behavior, Agency Costs and Ownership Structure&lt;/em&gt;, Journal of Financial Economics, 1976. &lt;a href=&quot;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=94043&quot;&gt;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=94043&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Melvin E. Conway, &lt;em&gt;How Do Committees Invent?&lt;/em&gt;, Datamation, 1968. &lt;a href=&quot;https://www.melconway.com/Home/Committees_Paper.html&quot;&gt;https://www.melconway.com/Home/Committees_Paper.html&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Claude E. Shannon, &lt;em&gt;A Mathematical Theory of Communication&lt;/em&gt;, The Bell System Technical Journal, 1948. &lt;a href=&quot;https://people.math.harvard.edu/~ctm/home/text/others/shannon/entropy/entropy.pdf&quot;&gt;https://people.math.harvard.edu/~ctm/home/text/others/shannon/entropy/entropy.pdf&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;AIIC, &lt;em&gt;Basic Texts: Code of Professional Ethics and Professional Standards&lt;/em&gt;. &lt;a href=&quot;https://aiic.org/site/about-us/basic_texts&quot;&gt;https://aiic.org/site/about-us/basic_texts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>Your Hiring Process Is a Filter Against Your Own Blind Spot</title>
      <link href="https://francois.aichelbaum.com/2026/08/18/hiring-filter-against-your-blind-spot" />
      <updated>2026-08-18T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/08/18/hiring-filter-against-your-blind-spot</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#organisations-do-not-select-for-insight-they-select-for-low-friction&quot; id=&quot;markdown-toc-organisations-do-not-select-for-insight-they-select-for-low-friction&quot;&gt;Organisations do not select for insight, they select for low friction&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-traits-an-organisation-corrects-are-the-traits-that-read-a-system&quot; id=&quot;markdown-toc-the-traits-an-organisation-corrects-are-the-traits-that-read-a-system&quot;&gt;The traits an organisation corrects are the traits that read a system&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-filter-operates-in-four-moments-and-none-of-them-looks-like-a-filter&quot; id=&quot;markdown-toc-the-filter-operates-in-four-moments-and-none-of-them-looks-like-a-filter&quot;&gt;The filter operates in four moments, and none of them looks like a filter&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-post-office-spent-two-decades-proving-that-the-system-was-never-questioned-by-anyone-the-organisation-could-hear&quot; id=&quot;markdown-toc-the-post-office-spent-two-decades-proving-that-the-system-was-never-questioned-by-anyone-the-organisation-could-hear&quot;&gt;The Post Office spent two decades proving that the system was never questioned by anyone the organisation could hear&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#cultural-fit-is-a-technical-risk-not-an-hr-preference&quot; id=&quot;markdown-toc-cultural-fit-is-a-technical-risk-not-an-hr-preference&quot;&gt;Cultural fit is a technical risk, not an HR preference&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-this-actually-costs-in-money-you-already-recognise&quot; id=&quot;markdown-toc-what-this-actually-costs-in-money-you-already-recognise&quot;&gt;What this actually costs, in money you already recognise&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-a-ceo-can-change-without-hiring-anybody&quot; id=&quot;markdown-toc-what-a-ceo-can-change-without-hiring-anybody&quot;&gt;What a CEO can change without hiring anybody&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-uncomfortable-person-is-the-control-you-removed&quot; id=&quot;markdown-toc-the-uncomfortable-person-is-the-control-you-removed&quot;&gt;The uncomfortable person is the control you removed&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;Companies do not accidentally lose the people who would have spotted the failure in their information system. They filter them out on purpose, using recruitment and performance processes they are proud of. The traits that make someone hard to sit in a meeting with, refusing to close a subject, following a decision down to its fourth consequence, hearing what nobody said out loud, are the same traits that detect low probability, high cost failure modes years before a dashboard does. An executive who wants fewer surprises in his systems has to look at who his organisation finds exhausting, and why that person stopped speaking.&lt;/p&gt;

&lt;h2 id=&quot;organisations-do-not-select-for-insight-they-select-for-low-friction&quot;&gt;Organisations do not select for insight, they select for low friction&lt;/h2&gt;

&lt;p&gt;Every hiring process optimises for something. Very few optimise for what they claim.&lt;/p&gt;

&lt;p&gt;Ask a management team what it recruits for and you will hear competence, ownership, culture. Watch the same team decide, and the actual criterion surfaces fast: how easy will this person be to work with, week after week, in a room where twelve subjects have to be closed before lunch.&lt;/p&gt;

&lt;p&gt;That criterion is not stupid. An organisation that cannot close subjects does not ship. Friction has a real cost, paid daily, visible to everyone. The cost of the opposite failure, closing a subject that was not resolved, is paid once, later, by someone else, often by a successor.&lt;/p&gt;

&lt;p&gt;Lauren Rivera documented the mechanism in elite professional service firms. Evaluators consistently favoured candidates who felt culturally familiar, and constructed their definition of merit around that familiarity. They were not lying about wanting the best. They genuinely could not separate “best” from “reads like us”.&lt;/p&gt;

&lt;p&gt;The output is an organisation with a narrow band of cognitive style. Everyone in the room processes information roughly the same way, at roughly the same speed, with roughly the same tolerance for open questions. Meetings get shorter. Alignment gets easier. Risk detection gets worse, because risk detection is a minority function. It requires someone who is willing to be the only person still talking about a subject the room has already agreed to leave.&lt;/p&gt;

&lt;p&gt;Cass Sunstein and Reid Hastie described what happens to groups when that person is absent or silent. Errors get amplified instead of corrected. Early speakers set the direction. Information held by a single member never reaches the table. A group of intelligent people reliably produces a decision worse than its best member would have produced alone.&lt;/p&gt;

&lt;p&gt;None of this is a diversity argument in the moral sense. It is a detection argument. A system that filters for low friction is a system that has removed its own alarm.&lt;/p&gt;

&lt;h2 id=&quot;the-traits-an-organisation-corrects-are-the-traits-that-read-a-system&quot;&gt;The traits an organisation corrects are the traits that read a system&lt;/h2&gt;

&lt;p&gt;Look at what actually goes into performance reviews.&lt;/p&gt;

&lt;p&gt;Goes off on tangents. Struggles to prioritise. Gets stuck on details. Overthinks. Too direct. Reads too much into things. Does not switch off.&lt;/p&gt;

&lt;p&gt;Now look at what an information system failure actually requires, in order to be seen before it costs money.&lt;/p&gt;

&lt;p&gt;Going off on tangents means walking the consequence tree of a decision past the point where the vendor’s demo stops. Getting stuck on details means refusing to accept “it restarted, it is fine” as an explanation of why a service stopped. Reading too much into things means noticing that the project manager has stopped escalating, which has never meant everything is fine. Not switching off means covering ground on a Sunday that nobody covered in three years of steering committees.&lt;/p&gt;

&lt;p&gt;The overlap is not partial. It is close to total. Every trait a company spends money correcting is a trait that, pointed at a system, produces early detection.&lt;/p&gt;

&lt;p&gt;This is where most writing on the subject goes wrong. It turns into a celebration, a claim that unusual minds are better, a request for recognition. That framing is useless to an executive, and it is not the point. The point is narrower and colder: a company that trains this behaviour out of its people has traded a permanent detection capability for a modest gain in meeting comfort, without ever putting the trade on a slide.&lt;/p&gt;

&lt;p&gt;Robert Austin and Gary Pisano made a version of the same argument in Harvard Business Review, and it is worth reading for the operational detail. Their case is that standard hiring processes screen out capabilities the firm actually needs, then the firm pays consultants for those capabilities later. The screening is not malicious. It is procedural, and it is invisible from the inside.&lt;/p&gt;

&lt;h2 id=&quot;the-filter-operates-in-four-moments-and-none-of-them-looks-like-a-filter&quot;&gt;The filter operates in four moments, and none of them looks like a filter&lt;/h2&gt;

&lt;p&gt;Executives who accept the argument in principle usually reject it in practice, because they cannot see where the filtering happens. Nobody in their company has ever written “reject candidates who ask too many questions” in a hiring guideline. The filter is real anyway. It operates in four moments, and each one is defensible on its own.&lt;/p&gt;

&lt;p&gt;The first is the screening call. A recruiter with fifteen candidates and forty minutes each is measuring one thing above all others: is this conversation smooth. A candidate who answers a question with a better question, or who needs to understand the business before answering a technical one, is producing friction at the exact moment friction is most expensive to the recruiter. That candidate does not fail. He is simply not moved forward, which is a different thing and leaves no trace.&lt;/p&gt;

&lt;p&gt;The second is the probation period. New arrivals who ask about things outside their remit in their first three months are read as either promising or presumptuous, and the reading depends almost entirely on how confident their manager is. An insecure manager experiences the same behaviour as a challenge to authority. Nothing in the process distinguishes the two interpretations, and the outcome is recorded as a fit issue.&lt;/p&gt;

&lt;p&gt;The third is the annual review, which is where most of the damage happens, precisely because it is the moment everybody trusts. The vocabulary is developmental. Learn to prioritise. Work on your executive presence. Pick your battles. Every one of those sentences is well intentioned, most are individually reasonable, and their aggregate effect over three years is a person who has learned to stop mentioning things.&lt;/p&gt;

&lt;p&gt;The fourth is promotion. Organisations promote people who make the level above comfortable. It is not a conspiracy, it is a preference expressed under time pressure by humans who will have to work with the result. The consequence is that the further you go up the structure, the fewer people you will meet whose instinct is to reopen a closed subject, which is another way of saying that your detection capability decreases with seniority exactly where your decision stakes increase.&lt;/p&gt;

&lt;p&gt;Four moments, four defensible decisions, one outcome. Your organisation has removed its ability to see what you cannot see, and it did so using processes you would defend in front of a board.&lt;/p&gt;

&lt;p&gt;The only way to notice from the top floor is by absence. Nothing gets flagged. Nothing appears on a risk register. You simply stop receiving a category of information, and you cannot miss what never arrives.&lt;/p&gt;

&lt;h2 id=&quot;the-post-office-spent-two-decades-proving-that-the-system-was-never-questioned-by-anyone-the-organisation-could-hear&quot;&gt;The Post Office spent two decades proving that the system was never questioned by anyone the organisation could hear&lt;/h2&gt;

&lt;p&gt;The clearest case I know of an organisation destroying its own detection capability is the Horizon scandal in the United Kingdom.&lt;/p&gt;

&lt;p&gt;Horizon is the accounting and point of sale system supplied by Fujitsu and deployed across Post Office branches from 1999. Sub-postmasters, the people who actually run those branches, began reporting shortfalls they could not explain. Money that the system said was missing, that they had not taken, that appeared and reappeared across branches with no common cause.&lt;/p&gt;

&lt;p&gt;The Post Office response, sustained over roughly two decades, was that the system was reliable and the sub-postmasters were not. More than 900 people were prosecuted for theft, fraud or false accounting on the strength of Horizon data. People went to prison. People lost homes. Some died before their convictions were overturned.&lt;/p&gt;

&lt;p&gt;Read the structure of that failure rather than its scale, because the structure is what repeats.&lt;/p&gt;

&lt;p&gt;The organisation had a large population of front line users reporting a consistent, reproducible anomaly. That is, in engineering terms, an excellent signal. Hundreds of independent observers, same symptom, different geographies, no coordination between them. Any system owner receiving that pattern should treat it as the highest quality bug report available.&lt;/p&gt;

&lt;p&gt;The organisation reclassified it. The signal became a personnel problem: dishonest or incompetent postmasters. Once that classification was made, every further report confirmed it. More reports meant more dishonest postmasters, never a more probable defect. The reclassification was self sealing.&lt;/p&gt;

&lt;p&gt;Inside the organisation, the people who could have broken the seal were exactly the people whose input was structurally hard to hear. Raising it required going off topic, questioning a system the board had already declared sound, and doing so repeatedly, against colleagues who had a professional interest in the subject staying closed. It required, in short, every behaviour a well run corporate performance process discourages.&lt;/p&gt;

&lt;p&gt;The English High Court found in 2019 that Horizon contained bugs, errors and defects, and that remote access to branch accounts had been possible, contrary to what had been asserted for years. A statutory public inquiry chaired by Sir Wyn Williams has since spent years reconstructing how an organisation reached that state and stayed there.&lt;/p&gt;

&lt;p&gt;What matters for an executive reading this is not the legal outcome. It is the timeline. The information required to prevent the entire disaster existed inside the organisation from the early years. It was not missing. It was present, repeated, and structurally unhearable, because hearing it meant reopening a subject that senior people had closed, and because the individuals inclined to keep reopening it had either been managed out, moved on, or learned what happens to people who do that.&lt;/p&gt;

&lt;p&gt;Nothing about Horizon required exceptional insight. It required someone with the standing to be exhausting, and a room willing to sit through it.&lt;/p&gt;

&lt;p&gt;Every company I look at has a smaller version of this. Not with the same human cost, and rarely with the same duration. Same shape. A recurring anomaly that has been explained away often enough that the explanation has become the official account. A vendor whose reassurances are accepted because reopening the question implies the original decision was wrong. A team whose warnings arrive in a format the executive committee does not process, and stop arriving after a while.&lt;/p&gt;

&lt;p&gt;The organisation is not lying to its CEO. It has simply optimised itself into a state where the truth about its systems has no route to the top floor.&lt;/p&gt;

&lt;h2 id=&quot;cultural-fit-is-a-technical-risk-not-an-hr-preference&quot;&gt;Cultural fit is a technical risk, not an HR preference&lt;/h2&gt;

&lt;p&gt;Executives treat hiring style as a people topic, delegated to HR, reviewed once a year. It belongs on the risk register.&lt;/p&gt;

&lt;p&gt;When you standardise the cognitive profile of everyone who touches your critical systems, you have made an architecture decision. You have decided that your detection layer will be composed entirely of people who process the world the same way, which means they will miss the same things, in the same direction, at the same time. Correlated sensors. Any engineer would flag that design.&lt;/p&gt;

&lt;p&gt;Katherine Phillips summarised the research on the mechanism in Scientific American: groups that contain genuine difference prepare more carefully, examine facts harder, and reach better conclusions, while reporting that the experience felt worse. Homogeneous groups report smoother meetings and produce weaker decisions. The subjective signal is inverted relative to the actual quality of the output.&lt;/p&gt;

&lt;p&gt;That inversion is the whole trap. Your comfort in the room is anti correlated with the quality of the scrutiny in the room. If your steering committee feels easy, that is information, and it is not good news.&lt;/p&gt;

&lt;p&gt;Charles Perrow’s work on complex systems, and Diane Vaughan’s reconstruction of the Challenger launch decision, both land on a related point from a different direction. Catastrophic outcomes in tightly coupled systems rarely come from a single dramatic error. They come from an accumulation of small deviations, each individually justified, each accepted because the last one was accepted. Vaughan called it the normalisation of deviance. Stopping that accumulation requires someone whose reaction to “we have always done it that way and it has been fine” is to ask why, again, for the fifth time.&lt;/p&gt;

&lt;p&gt;That person is expensive to manage and cheap to ignore. Ignoring them costs nothing today.&lt;/p&gt;

&lt;h2 id=&quot;what-this-actually-costs-in-money-you-already-recognise&quot;&gt;What this actually costs, in money you already recognise&lt;/h2&gt;

&lt;p&gt;Abstractions do not move executives. Invoices do.&lt;/p&gt;

&lt;p&gt;The unexplained infrastructure budget increase, where nobody can name the decision that caused it, is a consequence tree that was never walked. Somebody chose a product, the demo covered the first branch, and the cost of the sixth branch arrives eighteen months later as a line item with no owner.&lt;/p&gt;

&lt;p&gt;The migration that slipped by two quarters was visible in team behaviour before it was visible in the plan. Somebody heard it. That person either did not have a route to you, or had learned that using it produced friction and no result.&lt;/p&gt;

&lt;p&gt;The vendor you cannot leave was a reversibility clause that nobody read closely, because reading it closely meant slowing down a deal the whole room wanted to close.&lt;/p&gt;

&lt;p&gt;The outage on a component nobody knew was critical was documented, once, by someone who was told the subject was resolved.&lt;/p&gt;

&lt;p&gt;Each of these has the same root. Not incompetence. Not bad luck. A detection function that was removed because it was uncomfortable, and an executive who never saw the removal happen, because it happened in performance reviews and hiring loops, one polite conversation at a time.&lt;/p&gt;

&lt;h2 id=&quot;what-a-ceo-can-change-without-hiring-anybody&quot;&gt;What a CEO can change without hiring anybody&lt;/h2&gt;

&lt;p&gt;The useful part of this argument is that it does not require a recruitment programme.&lt;/p&gt;

&lt;p&gt;Start by finding out who in your organisation used to raise things and stopped. Not who complains. Who used to, and no longer does. That transition is recorded in the memory of every team, and it is not in any of your systems. The people who went quiet are your decommissioned sensors.&lt;/p&gt;

&lt;p&gt;Then look at your last three significant technical decisions and ask a single question about each: who in the room was allowed to be tiresome, and for how long. If the honest answer is nobody, or five minutes, you did not make a decision. You ratified a proposal.&lt;/p&gt;

&lt;p&gt;Then check what happens to a disagreement in your organisation when it survives past the first meeting. In healthy structures it escalates and gets arbitrated. In most structures it dies quietly, and the person who raised it learns something about the cost of raising things.&lt;/p&gt;

&lt;p&gt;Amy Edmondson’s work on psychological safety is the academic version of this, and it is worth noting that her finding is not about being nice. It is about whether interpersonal risk taking is survivable, because learning behaviour depends on it. A team that cannot survive its own dissent cannot detect its own failures.&lt;/p&gt;

&lt;p&gt;None of this requires a budget line. It requires an executive willing to be told things that make the week longer.&lt;/p&gt;

&lt;h2 id=&quot;the-uncomfortable-person-is-the-control-you-removed&quot;&gt;The uncomfortable person is the control you removed&lt;/h2&gt;

&lt;p&gt;There is a version of this article that ends as an appeal for tolerance. That version is worthless to you.&lt;/p&gt;

&lt;p&gt;Here is the useful ending instead.&lt;/p&gt;

&lt;p&gt;Your information system will fail in a way you did not anticipate. Not maybe. The only variables are when, how expensive, and whether anyone saw it coming and could not get through.&lt;/p&gt;

&lt;p&gt;The probability that someone saw it coming is high. Organisations rarely fail from a total absence of information. They fail from information that had no route.&lt;/p&gt;

&lt;p&gt;The traits that produce that information, the tangents, the stubbornness, the register switching, the reading of what was not said, the mind that does not stop at 18h, are traits your processes are actively grinding down right now, in good faith, with the language of professional development. Every one of those conversations is a small, deliberate, well intentioned reduction of your own visibility.&lt;/p&gt;

&lt;p&gt;You do not have to like the person. You do not have to promote them. You have to know where they are, and make sure that when they say the subject is not closed, the sentence reaches you before the invoice does.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Lauren A. Rivera, &lt;em&gt;Hiring as Cultural Matching: The Case of Elite Professional Service Firms&lt;/em&gt;, American Sociological Review 77(6), 2012. https://journals.sagepub.com/doi/10.1177/0003122412463213&lt;/li&gt;
  &lt;li&gt;Robert D. Austin and Gary P. Pisano, &lt;em&gt;Neurodiversity as a Competitive Advantage&lt;/em&gt;, Harvard Business Review, May 2017. https://hbr.org/2017/05/neurodiversity-as-a-competitive-advantage&lt;/li&gt;
  &lt;li&gt;Cass R. Sunstein and Reid Hastie, &lt;em&gt;Making Dumb Groups Smarter&lt;/em&gt;, Harvard Business Review, December 2014. https://hbr.org/2014/12/making-dumb-groups-smarter&lt;/li&gt;
  &lt;li&gt;Katherine W. Phillips, &lt;em&gt;How Diversity Makes Us Smarter&lt;/em&gt;, Scientific American, October 2014. https://www.scientificamerican.com/article/how-diversity-makes-us-smarter/&lt;/li&gt;
  &lt;li&gt;Diane Vaughan, &lt;em&gt;The Challenger Launch Decision: Risky Technology, Culture, and Deviance at NASA&lt;/em&gt;, University of Chicago Press, enlarged edition 2016. https://press.uchicago.edu/ucp/books/book/chicago/C/bo22781921.html&lt;/li&gt;
  &lt;li&gt;Post Office Horizon IT Inquiry, chaired by Sir Wyn Williams, official inquiry site. https://www.postofficehorizoninquiry.org.uk/&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>Permission Not to Decide: The Quiet Technology of Diluted Responsibility</title>
      <link href="https://francois.aichelbaum.com/2026/08/11/permission-not-to-decide" />
      <updated>2026-08-11T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/08/11/permission-not-to-decide</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#a-process-is-a-machine-for-spreading-responsibility-thin&quot; id=&quot;markdown-toc-a-process-is-a-machine-for-spreading-responsibility-thin&quot;&gt;A process is a machine for spreading responsibility thin&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#check-with-the-relevant-team-is-where-decisions-go-to-die&quot; id=&quot;markdown-toc-check-with-the-relevant-team-is-where-decisions-go-to-die&quot;&gt;“Check with the relevant team” is where decisions go to die&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-ceiling-always-turns-into-a-floor&quot; id=&quot;markdown-toc-a-ceiling-always-turns-into-a-floor&quot;&gt;A ceiling always turns into a floor&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-steering-committee-that-decided-nothing&quot; id=&quot;markdown-toc-the-steering-committee-that-decided-nothing&quot;&gt;The steering committee that decided nothing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-people-a-delay-does-not-touch-will-always-set-the-pace&quot; id=&quot;markdown-toc-the-people-a-delay-does-not-touch-will-always-set-the-pace&quot;&gt;The people a delay does not touch will always set the pace&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#naming-a-single-owner-is-the-only-fix-that-works&quot; id=&quot;markdown-toc-naming-a-single-owner-is-the-only-fix-that-works&quot;&gt;Naming a single owner is the only fix that works&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-opposite-of-process-is-not-chaos-it-is-a-name&quot; id=&quot;markdown-toc-the-opposite-of-process-is-not-chaos-it-is-a-name&quot;&gt;The opposite of process is not chaos. It is a name&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;A process is not only a way to get things done. It is also a social technology, and one of its quiet functions is to spread responsibility so thin that no single person has to decide anything, or answer for the result. The more hands a decision passes through, the less any hand owns it. That is not a flaw most organisations are trying to fix. For many of them, without ever saying so out loud, it is the reason the process exists.&lt;/p&gt;

&lt;h2 id=&quot;a-process-is-a-machine-for-spreading-responsibility-thin&quot;&gt;A process is a machine for spreading responsibility thin&lt;/h2&gt;

&lt;p&gt;Every process distributes a decision across more people than the decision needs. That is what a process is for, on paper: no single point of failure, no lone cowboy, no unchecked call. In practice, the same design has a second effect that nobody prints in the handbook. When a decision belongs to five people, it belongs to no one.&lt;/p&gt;

&lt;p&gt;Psychologists gave this a name a long time ago. In 1968, John Darley and Bibb Latané described the diffusion of responsibility: the more witnesses are present, the less any one of them feels obliged to act. Each assumes someone else will, or already has. The effect is strongest precisely when the group is largest, which is the opposite of what common sense predicts.&lt;/p&gt;

&lt;p&gt;An organisation is a permanent crowd. A process is the crowd written down. Every approval step, every “consulted party,” every sign-off adds a witness to the decision and subtracts a fraction of ownership from each of them. Albert Bandura made the point sharper: when work is cut into subtasks, people focus on their piece and quietly forget the whole. The division of labour is also a division of conscience.&lt;/p&gt;

&lt;p&gt;None of this requires bad people. It requires only a structure in which no individual is the person the outcome lands on. Give me a slow, evasive organisation and I will rarely find laziness. I will find a process that lets everyone be blameless while nothing moves.&lt;/p&gt;

&lt;p&gt;There is a small, almost comic piece of evidence for this. Researchers who study how people answer requests have found that the same message gets a longer, more useful reply when it is sent to one named person than when it is sent to a group, even a small one. Address a crowd and each member quietly assumes someone else will take it. Address a person and the excuse disappears. An organisation runs on the first kind of message far more than it likes to admit. Most of its procedure is, in the end, a way of speaking to the group instead of to a person.&lt;/p&gt;

&lt;h2 id=&quot;check-with-the-relevant-team-is-where-decisions-go-to-die&quot;&gt;“Check with the relevant team” is where decisions go to die&lt;/h2&gt;

&lt;p&gt;There is a sentence you hear in every organisation, and it always means the same thing. “You will need to check with the relevant team.” On its face, it is diligence: route the question to the people who know. Nine times out of ten, it is deferral wearing the costume of rigour.&lt;/p&gt;

&lt;p&gt;The relevant team, once you reach it, tends to point you at another relevant team. That one is relevant too. The decision, meanwhile, is relevant to no one. Everyone in the chain has technically done their job. They forwarded, they escalated, they looped in. Not one of them decided.&lt;/p&gt;

&lt;p&gt;David Graeber, in &lt;em&gt;The Utopia of Rules&lt;/em&gt; (2015), described bureaucracy as the water we have stopped noticing we swim in. His argument was not that rules are useless. It was that we have come to treat procedure as a form of intelligence, when often it is a way to avoid the discomfort of a judgment call. A rule you can hide behind is more valuable, to the person hiding, than a rule that works.&lt;/p&gt;

&lt;p&gt;The tell is simple. Ask who can say yes. In a healthy structure, someone can, and they know it. In a sick one, the honest answer is a shrug and a redirection. The process has become a maze with no room marked “decision.” You can route a person around that maze for months. You can route a whole company around it for years.&lt;/p&gt;

&lt;p&gt;It helps to separate two kinds of rule. One kind exists to make a good decision easier: it strips out noise, it guards against the obvious mistake, it lets a busy person act without reinventing the basics every time. The other kind exists to make a decision optional: it adds a step whose real function is to give everyone a reason to wait. On a slide they look identical. You can tell them apart with a single question. Does this rule end in someone deciding, or does it end in someone being consulted? A rule that always ends in consultation is not governance. It is a waiting room with better furniture.&lt;/p&gt;

&lt;h2 id=&quot;a-ceiling-always-turns-into-a-floor&quot;&gt;A ceiling always turns into a floor&lt;/h2&gt;

&lt;p&gt;Give someone a maximum and they will treat it as a target. Tell a supplier “three weeks at the most” and you have not set a limit. You have set an expectation, and it is the wrong one. You meant the latest acceptable date. They heard the date they are allowed to aim for.&lt;/p&gt;

&lt;p&gt;Cyril Northcote Parkinson put the mechanism in print in 1955, in a satirical essay that turned out to be one of the most durable observations in management: work expands so as to fill the time available for its completion. Offer three weeks, the work takes three weeks. Offer six, it takes six. The size of the container decides the size of the contents.&lt;/p&gt;

&lt;p&gt;Eliyahu Goldratt described the human engine behind it in &lt;em&gt;Critical Chain&lt;/em&gt; (1997), under the name student syndrome. People start a task at the last responsible moment, then compress all the real effort into the final stretch before the deadline. Any safety margin you built into the estimate is spent before the work even begins. So the maximum is not just reached. It is reached with no slack left, which means the first surprise pushes it past the line.&lt;/p&gt;

&lt;p&gt;This is why padding estimates makes projects later, not safer. Every buffer you add is read as permission, consumed early, and gone when you need it. The ceiling you set to protect yourself becomes the floor everyone builds on. Then the floor gives way.&lt;/p&gt;

&lt;h2 id=&quot;the-steering-committee-that-decided-nothing&quot;&gt;The steering committee that decided nothing&lt;/h2&gt;

&lt;p&gt;I once watched a company try to fix slow decisions by building a machine for making them. It is the clearest case I know of a process quietly doing the opposite of its stated job, so it is worth telling slowly.&lt;/p&gt;

&lt;p&gt;The company was scaling. It had grown from a room of people who all knew each other into several floors of people who did not. Decisions that used to happen in a corridor now took weeks, and leadership felt it. The diagnosis, reasonable on its face, was that the organisation lacked structure. So they built some. A weekly steering committee for anything that crossed team lines. A responsibility matrix, the familiar grid of Responsible, Accountable, Consulted, Informed, filled in for every significant initiative.&lt;/p&gt;

&lt;p&gt;On paper it was textbook. In the room it was a beautifully lit dead end. The committee met every week. Minutes were taken. Actions were “assigned.” And almost nothing was decided, because the design had made deciding optional. Everyone at the table was Consulted, which meant everyone had a right to an opinion and no obligation to a conclusion. The “Accountable” letter sat in a cell on a spreadsheet, attached to a role rather than to a human being who could feel it in their stomach on a Sunday night.&lt;/p&gt;

&lt;p&gt;Here is the part my brain would not let go of. The more thorough the structure looked, the less anyone owned. Each week, a hard question would arrive. It would be discussed, genuinely and intelligently, by people who were not stupid and not lazy. And then it would be parked: pending more input, pending another team, pending the next session. The grid gave everyone a place to stand where the decision was always someone else’s line item.&lt;/p&gt;

&lt;p&gt;The clearest moment came in one of those weekly sessions. Someone finally asked the plain question: who actually owns this, as a person, not as a box on a grid. The room went quiet in a very particular way. Not hostile. Genuinely puzzled. Three people could each explain which part of it touched their team. Not one could say the words this is mine. The letter that marked the accountable party pointed at a role that, in practice, no single human occupied. Everyone had assumed the structure contained an owner somewhere, the way you assume a building has a night watchman you have never met. It did not. The owner was a cell in a spreadsheet, and a cell does not lie awake on a Sunday night.&lt;/p&gt;

&lt;p&gt;I keep seeing the same shape in places that have nothing to do with each other. A person waits all day for a delivery that never comes, calls three numbers, and is told by each that it is not their part. A board spends an hour on a decision and adjourns without making it. A committee reviews a plan for the fourth time. Different rooms, identical physics. When responsibility is spread across enough surfaces, it stops resting on any of them. I do not experience this as a metaphor. I experience it as the same event happening in different costumes, and I cannot switch off the recognition.&lt;/p&gt;

&lt;p&gt;What broke the loop was not a better matrix. It was one sentence, said out loud by the CEO in the room: “This one is mine. I will decide it by Thursday, and you can hold me to that.” Nothing else about the process changed that week. The committee still met. The grid still existed. But a single decision now had a single human attached to it, with a date and a witness, and it moved. The lesson was not that structure is bad. It was that structure had been used, without anyone intending it, as a way to make sure no one ever had to say “mine.”&lt;/p&gt;

&lt;h2 id=&quot;the-people-a-delay-does-not-touch-will-always-set-the-pace&quot;&gt;The people a delay does not touch will always set the pace&lt;/h2&gt;

&lt;p&gt;A delay only accelerates for the person it lands on. This is the mechanism that explains most stuck projects better than any story about skill or motivation, and it is the one leaders are slowest to name, because naming it sounds like an accusation.&lt;/p&gt;

&lt;p&gt;It is not. Consider the honest position of someone who is blocking your project without malice. The delay does not reach them. It reaches the next team, the end client, the leader who has to report upward. Their own week is full of things that do reach them. So they are not dragging their feet on purpose. They are simply, rationally, somewhere else. You are urgent to you. You are background noise to them.&lt;/p&gt;

&lt;p&gt;Maximilien Ringelmann measured a version of this in 1913, pulling on ropes. He found that as you add people to a group, the effort each person contributes goes down, not up. Part of it is coordination, but part of it is motivation: in a crowd, individual effort becomes invisible, so it quietly shrinks. Add a second condition, that the consequences of slowness fall on someone else entirely, and the effort does not just shrink. It evaporates, cheerfully and with a clear conscience.&lt;/p&gt;

&lt;p&gt;You cannot fix this with more meetings, because meetings do not change who the delay touches. You fix it by changing the incidence: by making sure the person setting the pace is also a person the outcome reaches.&lt;/p&gt;

&lt;p&gt;Changing the incidence is unglamorous and specific. It can mean that the person who owns the deadline is the one who has to stand in front of the client if it slips, rather than a colleague two doors down. It can mean that the team causing the wait is made to feel the wait, instead of exporting it cleanly to the team next door. You are not making anyone work harder through willpower. You are moving the consequence back to where the choice is made. Effort follows consequence. It almost always has.&lt;/p&gt;

&lt;h2 id=&quot;naming-a-single-owner-is-the-only-fix-that-works&quot;&gt;Naming a single owner is the only fix that works&lt;/h2&gt;

&lt;p&gt;The cure for diluted responsibility is not more process. It is a name. Not a role, not a committee, not a box on a chart. A specific person who can decide, who knows the outcome is theirs, and who can be seen carrying it.&lt;/p&gt;

&lt;p&gt;Ringelmann’s own experiments point straight at the remedy. Effort recovers when contribution becomes identifiable, when the group is small enough that each member is visibly indispensable, and when the goal is explicit rather than vague. Every one of those is a way of undoing anonymity. A named owner is anonymity’s opposite. The moment a decision has one person’s name on it, the diffusion collapses, because there is no longer a crowd to hide inside.&lt;/p&gt;

&lt;p&gt;This is unglamorous work. It is not a transformation programme. Most of the time it is the reverse: removing the layer of procedure that let everyone be a little bit responsible, and replacing it with one line that says who answers for the result. Organisations resist it, not because they disagree, but because a named owner is exposed, and exposure is exactly what the process was quietly protecting people from.&lt;/p&gt;

&lt;h2 id=&quot;the-opposite-of-process-is-not-chaos-it-is-a-name&quot;&gt;The opposite of process is not chaos. It is a name&lt;/h2&gt;

&lt;p&gt;People defend process as the only thing standing between them and chaos. It is a false choice, and it is worth refusing. The opposite of a process that decides nothing is not a free-for-all. It is a person who can decide, and who answers for it.&lt;/p&gt;

&lt;p&gt;Think of the one who commissions a building. The mason answers for the wall. The electrician answers for the wiring. Each is faultless on their own stretch, and the building is late anyway, because no trade answers for the building. Only the client does. They are the single party for whom the whole thing exists as one object rather than a set of parts.&lt;/p&gt;

&lt;p&gt;Every organisation needs that person for every outcome that matters. Not a committee that owns the building. A name. The test is not whether your process is thorough. Thorough is easy. The test is whether, for anything that matters, you can point at one human being who answers for the whole, and who has more than their voice to make it happen. If you cannot, you do not have a governance problem. You have a very well documented way of never deciding anything.&lt;/p&gt;

&lt;p&gt;I am not against process. I have built plenty of it, and I will build more. What I am against is the quiet substitution: the day a process stops helping people decide and starts standing in for the decision itself. That substitution never announces itself. It arrives dressed as diligence, as maturity, as the thing a serious company is supposed to do as it grows. Which is exactly why someone has to keep asking the rude question out loud, about every outcome that matters. Who answers for this. Not which team. Who.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;John M. Darley, Bibb Latané, &lt;em&gt;Bystander Intervention in Emergencies: Diffusion of Responsibility&lt;/em&gt;, 1968: &lt;a href=&quot;https://en.wikipedia.org/wiki/Diffusion_of_responsibility&quot;&gt;https://en.wikipedia.org/wiki/Diffusion_of_responsibility&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;C. Northcote Parkinson, &lt;em&gt;Parkinson’s Law&lt;/em&gt;, 1955: &lt;a href=&quot;https://en.wikipedia.org/wiki/Parkinson%27s_law&quot;&gt;https://en.wikipedia.org/wiki/Parkinson%27s_law&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;David Graeber, &lt;em&gt;The Utopia of Rules: On Technology, Stupidity, and the Secret Joys of Bureaucracy&lt;/em&gt;, 2015: &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Utopia_of_Rules&quot;&gt;https://en.wikipedia.org/wiki/The_Utopia_of_Rules&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Maximilien Ringelmann, &lt;em&gt;Recherches sur les moteurs animés&lt;/em&gt; (Ringelmann effect), 1913: &lt;a href=&quot;https://en.wikipedia.org/wiki/Ringelmann_effect&quot;&gt;https://en.wikipedia.org/wiki/Ringelmann_effect&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Eliyahu M. Goldratt, &lt;em&gt;Critical Chain&lt;/em&gt; (student syndrome), 1997: &lt;a href=&quot;https://en.wikipedia.org/wiki/Student_syndrome&quot;&gt;https://en.wikipedia.org/wiki/Student_syndrome&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>Sovereignty Is Not a Slogan, It&apos;s a Four-Question Test</title>
      <link href="https://francois.aichelbaum.com/2026/08/04/sovereignty-is-not-a-slogan" />
      <updated>2026-08-04T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/08/04/sovereignty-is-not-a-slogan</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#sovereignty-is-a-test-not-a-posture&quot; id=&quot;markdown-toc-sovereignty-is-a-test-not-a-posture&quot;&gt;Sovereignty is a test, not a posture&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#four-questions-decide-who-is-in-control&quot; id=&quot;markdown-toc-four-questions-decide-who-is-in-control&quot;&gt;Four questions decide who is in control&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-rule-written-into-the-architecture-does-not-get-argued-in-meetings&quot; id=&quot;markdown-toc-a-rule-written-into-the-architecture-does-not-get-argued-in-meetings&quot;&gt;A rule written into the architecture does not get argued in meetings&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-missing-mandate-is-the-right-to-say-no&quot; id=&quot;markdown-toc-the-missing-mandate-is-the-right-to-say-no&quot;&gt;The missing mandate is the right to say no&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-sovereignty-looks-like-on-an-ordinary-tuesday&quot; id=&quot;markdown-toc-what-sovereignty-looks-like-on-an-ordinary-tuesday&quot;&gt;What sovereignty looks like on an ordinary Tuesday&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;Sovereignty in technology is one of the most used and least defined words in a boardroom. It fills speeches, tenders, and vendor decks. It rarely reaches a contract. The honest version is narrow and testable. Sovereignty is a set of four written answers about any supplier your business cannot live without. When the answers are missing, sovereignty does not exist. What exists is a comfortable relationship that lasts exactly as long as it suits the other side.&lt;/p&gt;

&lt;h2 id=&quot;sovereignty-is-a-test-not-a-posture&quot;&gt;Sovereignty is a test, not a posture&lt;/h2&gt;

&lt;p&gt;Most conversations about sovereignty stay at altitude. National clouds, strategic autonomy, data borders. Useful debates, and far too abstract for a leader who has to decide something on Tuesday.&lt;/p&gt;

&lt;p&gt;Bring it down to the ground. Sovereignty, at the level where a company actually lives or dies, means one thing. Can you keep operating, and keep control of what matters, when a supplier changes its mind. That is it. Everything else is commentary.&lt;/p&gt;

&lt;p&gt;A posture is a statement you make about yourself. A test is a question reality asks you. The difference shows up the day a supplier raises its price, changes its terms, gets acquired, or simply has a bad week. A posture collapses that day. A test you passed in advance holds.&lt;/p&gt;

&lt;p&gt;So the useful question is never whether you feel sovereign. It is whether you would pass the test if someone ran it on you tomorrow.&lt;/p&gt;

&lt;h2 id=&quot;four-questions-decide-who-is-in-control&quot;&gt;Four questions decide who is in control&lt;/h2&gt;

&lt;p&gt;I use the same four questions on every critical supplier. They are deliberately concrete, because sovereignty dies in abstraction and survives in specifics.&lt;/p&gt;

&lt;p&gt;Who decides when an update ships to your systems. You, on your schedule, or the vendor, unilaterally, on a random morning, with no warning.&lt;/p&gt;

&lt;p&gt;Who holds the encryption key to your data. You, or the vendor, which means the vendor can technically read everything you store.&lt;/p&gt;

&lt;p&gt;Can you cut the service yourself, cleanly, without depending on the vendor’s goodwill or notice period. A switch you cannot reach is not a switch you own.&lt;/p&gt;

&lt;p&gt;What happens to your access the day the vendor is acquired. By a competitor, by a fund, by an actor under another jurisdiction with other rules.&lt;/p&gt;

&lt;p&gt;Four questions. If the answers are not written into the relationship, you are not sovereign over that supplier. You are trusting. Trust is a fine fuel for a partnership. It is not a guarantee, and it should never be mistaken for one.&lt;/p&gt;

&lt;h2 id=&quot;a-rule-written-into-the-architecture-does-not-get-argued-in-meetings&quot;&gt;A rule written into the architecture does not get argued in meetings&lt;/h2&gt;

&lt;p&gt;Answering the four questions is step one. Making the answers stick is the harder part, and this is where most sovereignty efforts quietly fail. They live in a policy. Policies decay.&lt;/p&gt;

&lt;p&gt;Leo Casagrande framed a useful idea under the name framework by design. A rule that matters belongs in the infrastructure, not in a charter. It gets encoded to the point where doing the wrong thing is no longer an option. The constraint lives in the wall, not in the wiki.&lt;/p&gt;

&lt;p&gt;Apply that to connectivity and sovereignty together. You can write we value high availability and reversibility in a policy. No one reads it on the day it matters. Or you build it in. Two carriers instead of one. Multi-factor authentication imposed on everyone by the system itself. A recovery plan that has actually been tested, not filed. Data you have already proven you can extract, in a usable format, within a day.&lt;/p&gt;

&lt;p&gt;Casagrande has a line I keep. The framework has won when you no longer need to enforce it. A sovereign architecture is exactly that. You pay the cost once, at design time, and after that the constraint works for you while you sleep. A policy asks for discipline every single day. A wall asks for nothing.&lt;/p&gt;

&lt;h2 id=&quot;the-missing-mandate-is-the-right-to-say-no&quot;&gt;The missing mandate is the right to say no&lt;/h2&gt;

&lt;p&gt;There is a second discipline, and it is human, not technical. In conversations with other practitioners, the same pattern keeps surfacing. Organizations hand out plenty of mandates to execute. Almost none to contradict.&lt;/p&gt;

&lt;p&gt;Think about your own company. Who has the written authority to block a signature that creates lock-in with no priced exit. Not to advise against it. Not to add a cautious note to the file. To stop it. In most organizations that authority sits nowhere. An architect can warn. A security lead can flag. The decision then travels upward, toward people with neither the time nor the detail to see the trap close.&lt;/p&gt;

&lt;p&gt;This matters because reversibility looks like a technical question and behaves like a political one. The ability to leave a vendor, to recover your data, to switch off a service, is negotiated before you sign, or it is not negotiated at all. After signing, you no longer negotiate. You ask. And asking is a much weaker position than deciding.&lt;/p&gt;

&lt;p&gt;Giving someone a real mandate to contradict, in the cold, before the ink dries, is the cheapest insurance a company can buy against the dependencies it signs without seeing.&lt;/p&gt;

&lt;h2 id=&quot;what-sovereignty-looks-like-on-an-ordinary-tuesday&quot;&gt;What sovereignty looks like on an ordinary Tuesday&lt;/h2&gt;

&lt;p&gt;Sovereignty is not dramatic. It does not look like independence or a fortress. On a normal Tuesday, in a sovereign company, a vendor pushes an update and it lands when the company allowed it to. The data sits somewhere the company can point to and retrieve. A contract comes up for renewal and leaving is a real option, which is precisely why the price stays honest. Someone in the building has the mandate to look at all of this and the right to say no.&lt;/p&gt;

&lt;p&gt;None of that requires heroics. It requires four written answers, a few constraints built into the architecture instead of a charter, and one named person allowed to contradict. Sovereignty stops being a slogan the moment those three things exist, and stays a slogan every day they do not.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>The Paradox of Always-On Business</title>
      <link href="https://francois.aichelbaum.com/2026/07/28/the-paradox-of-always-on-business" />
      <updated>2026-07-28T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/07/28/the-paradox-of-always-on-business</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#two-cities-one-symptom&quot; id=&quot;markdown-toc-two-cities-one-symptom&quot;&gt;Two cities, one symptom&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-four-dependencies-no-one-audits-while-things-work&quot; id=&quot;markdown-toc-the-four-dependencies-no-one-audits-while-things-work&quot;&gt;The four dependencies no one audits while things work&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-decision-no-one-ever-made&quot; id=&quot;markdown-toc-the-decision-no-one-ever-made&quot;&gt;The decision no one ever made&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#resilience-is-a-name-before-it-is-a-value&quot; id=&quot;markdown-toc-resilience-is-a-name-before-it-is-a-value&quot;&gt;Resilience is a name before it is a value&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-a-leader-does-before-the-line-cuts&quot; id=&quot;markdown-toc-what-a-leader-does-before-the-line-cuts&quot;&gt;What a leader does before the line cuts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;A modern company runs on one silent assumption. The connection will be there. It almost always is. That word, almost, is where the risk lives, and no one has ever put a number on it. The day the line cuts, signing a document, releasing a payment, reaching a colleague, opening a file, all of it stops at the same moment. The outage is only the symptom. The real exposure is that no one on the org chart holds a written mandate to define what must remain possible when the line is gone.&lt;/p&gt;

&lt;h2 id=&quot;two-cities-one-symptom&quot;&gt;Two cities, one symptom&lt;/h2&gt;

&lt;p&gt;In Libreville, the line dropped without warning. A video call froze mid-sentence. A file refused to upload. You relaunch, you switch to the phone, you make do. The work slows to the speed of the weakest link, and the weakest link is invisible.&lt;/p&gt;

&lt;p&gt;Back in France, the same symptom in a different costume. A throttled connection, throughput collapsing at the wrong hours, a working day that stalls out of nowhere. Two settings with nothing in common. One shared result.&lt;/p&gt;

&lt;p&gt;The outage passes fast. What it exposes stays. Everything I had to handle that day hung on a single thing. The line. Not the laptop, not the team, not the plan. The line. When it went, competence and goodwill counted for nothing. The company was present and unable to act.&lt;/p&gt;

&lt;p&gt;That is the paradox. We have never been more capable and never more fragile at the same point. The capability is real. The fragility sits under it, unmeasured, until one bad hour makes it visible.&lt;/p&gt;

&lt;h2 id=&quot;the-four-dependencies-no-one-audits-while-things-work&quot;&gt;The four dependencies no one audits while things work&lt;/h2&gt;

&lt;p&gt;When a business is running well, leaders watch revenue, margin, pipeline. They rarely watch the four things that decide whether the company survives a bad day. These four wake up only during the outage, and by then it is too late to map them.&lt;/p&gt;

&lt;p&gt;The line itself comes first. One carrier, no redundancy, no 4G or 5G failover ready to take over. The day it drops, you discover there was no fallback. You discover it at the same moment your customers do.&lt;/p&gt;

&lt;p&gt;Authentication comes second. A single identity provider, one centralized multi-factor system, an administrator password living inside a third party you do not control. If that provider closes, errs, or gets breached, your teams no longer get in anywhere. Neither do you.&lt;/p&gt;

&lt;p&gt;Data comes third. Three questions decide whether you own it or merely rent the illusion of owning it. Where does it actually live. Who can hand it back to you. How long would that take. If the answer is not clear in one sentence, the data is not under your control. You are holding it elsewhere, on trust.&lt;/p&gt;

&lt;p&gt;The critical partner comes fourth. The cloud provider, the host, the box sitting at the edge of your network. Usually one actor, on whom the continuity of everything else depends. None of these four is expensive to map. Each is very expensive the day you did not.&lt;/p&gt;

&lt;h2 id=&quot;the-decision-no-one-ever-made&quot;&gt;The decision no one ever made&lt;/h2&gt;

&lt;p&gt;Ask a leadership team when they decided to give up the ability to work offline. You will get puzzled looks. No one decided it. There was never a meeting, never a vote, never a line in the minutes.&lt;/p&gt;

&lt;p&gt;The messaging moved to the cloud. A sound call. Then the ERP. Sound too. Then the CRM, the accounting, the electronic signature, the document storage. Each brick a good decision, taken at the right time, for the right reasons. Ten reasonable choices, laid end to end, produce a company that cannot run for one hour without the internet.&lt;/p&gt;

&lt;p&gt;The dependency was never chosen. It accumulated. That is what makes it so hard to see. There is no single culprit, no obvious mistake to point at. Every step made sense on its own. The exposure lives in the sum, and no one is responsible for the sum.&lt;/p&gt;

&lt;p&gt;This matters because you cannot fix by accident what you built by accident. The accumulation has to be made visible on purpose, listed, named, and put in front of someone with the authority to act on it.&lt;/p&gt;

&lt;h2 id=&quot;resilience-is-a-name-before-it-is-a-value&quot;&gt;Resilience is a name before it is a value&lt;/h2&gt;

&lt;p&gt;In most companies, resilience is a value. It appears in the charter, in the all-hands deck, in the risk section of the board pack. It belongs to everyone, which means it belongs to no one.&lt;/p&gt;

&lt;p&gt;Look at how the responsibilities actually split. The CIO owns the technology. The CFO owns financial risk. The COO owns execution. Each holds a column and holds it seriously. Global resilience does not sit inside any one of those columns. It lives between them. And what lives between functions has no owner by default.&lt;/p&gt;

&lt;p&gt;As long as no name is written against the word, resilience stays an intention. A good one, shared and sincere. An intention does not restart a system at three in the morning. A mandate does. A mandate names a person. It gives that person the right to block, to arbitrate, to spend, to say no to a decision that weakens the whole while helping one part.&lt;/p&gt;

&lt;p&gt;The difference between a company that absorbs an outage and one that is flattened by it is decided long before the outage itself. It is decided on the day a leader writes a name against the word resilience. Everything else is hope, and hope holds only as long as the line holds.&lt;/p&gt;

&lt;h2 id=&quot;what-a-leader-does-before-the-line-cuts&quot;&gt;What a leader does before the line cuts&lt;/h2&gt;

&lt;p&gt;None of this calls for a six-month program or a frightening budget. It calls for three moves, in order.&lt;/p&gt;

&lt;p&gt;Start with an inventory. List the dependencies one by one. Where the data lives, who holds the keys, which contracts have no exit, which single supplier could stop everything. Most of this can be written down in a few working sessions. The list is almost always longer than expected, and the surprise itself is useful.&lt;/p&gt;

&lt;p&gt;Then set a priority. You do not fix everything at once. You start where the pain would be worst and where the fix is fastest. Those two are not always in the same place, which is exactly where an outside eye earns its keep.&lt;/p&gt;

&lt;p&gt;Then assign the mandate. One person, named, with the authority to carry the subject across functions and the right to contradict a decision that creates a trap. Not to slow the company down. To make sure the company keeps a door it can walk through.&lt;/p&gt;

&lt;p&gt;The line will cut one day. That is arithmetic, not pessimism. The only real choice is whether someone was made responsible, in advance and in writing, for what remains possible when it does. A company that made that choice barely notices the bad hour. A company that did not spends it discovering, live, everything it never priced.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>The Right to Cut: What Gabon Taught Me About Sovereignty</title>
      <link href="https://francois.aichelbaum.com/2026/07/21/what-gabon-taught-me-about-sovereignty" />
      <updated>2026-07-21T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/07/21/what-gabon-taught-me-about-sovereignty</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#ownership-has-three-parts-and-only-the-third-one-frightens-anyone&quot; id=&quot;markdown-toc-ownership-has-three-parts-and-only-the-third-one-frightens-anyone&quot;&gt;Ownership has three parts, and only the third one frightens anyone&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-sovereignty-you-are-handed-is-inert-until-someone-exercises-it&quot; id=&quot;markdown-toc-a-sovereignty-you-are-handed-is-inert-until-someone-exercises-it&quot;&gt;A sovereignty you are handed is inert until someone exercises it&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-right-to-cut-costs-you-before-it-pays-you&quot; id=&quot;markdown-toc-the-right-to-cut-costs-you-before-it-pays-you&quot;&gt;The right to cut costs you before it pays you&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#france-taught-the-doctrine-and-mislaid-the-practice&quot; id=&quot;markdown-toc-france-taught-the-doctrine-and-mislaid-the-practice&quot;&gt;France taught the doctrine and mislaid the practice&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-the-man-in-the-car-already-knew&quot; id=&quot;markdown-toc-what-the-man-in-the-car-already-knew&quot;&gt;What the man in the car already knew&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;Real sovereignty is not the capacity you are granted. It is the capacity you are willing to use, and its sharpest test is the right to cut: to leave a vendor, to delete your data, to sever a dependency you no longer accept. Gabon reminded me of this over a single week. France, which taught the world a great deal about sovereignty, seems to have mislaid the practice of it.&lt;/p&gt;

&lt;h2 id=&quot;ownership-has-three-parts-and-only-the-third-one-frightens-anyone&quot;&gt;Ownership has three parts, and only the third one frightens anyone&lt;/h2&gt;

&lt;p&gt;Roman law split ownership into three rights. Usus, the right to use a thing. Fructus, the right to enjoy what it produces. Abusus, the right to dispose of it, to change it, to destroy it. You did not truly own something until you held the third right. A tenant has usus. A shareholder has fructus. Only the owner has abusus.&lt;/p&gt;

&lt;p&gt;Carry that distinction into a modern company and it cuts deep.&lt;/p&gt;

&lt;p&gt;You use your software every day. That is usus. You build your operations on top of it and you profit from it. That is fructus. Now the third question. Can you dispose of it? Can you export everything, delete the account, sever the vendor, and walk away without asking anyone’s permission? That is abusus, and most organisations simply do not have it.&lt;/p&gt;

&lt;p&gt;They feel like owners because they use the system and profit from it. Two rights out of three. The right that actually defines ownership, they signed away without noticing, usually inside a data-format clause or an access policy nobody read to the end.&lt;/p&gt;

&lt;p&gt;Picture the test in practice. You decide, on a Monday, to leave your main platform. How long until your data is fully in your hands, in a form your next system can read, with the old vendor no longer able to hold anything back. If the honest answer is measured in quarters, or if it depends on the vendor’s goodwill, you were never the owner. You were a long-term guest with a confident vocabulary.&lt;/p&gt;

&lt;p&gt;I keep meeting leaders who are surprised by this. They run the company. They pay the invoices. And they discover, the day they want to leave, that leaving was never theirs to decide.&lt;/p&gt;

&lt;p&gt;There is a reason this stays invisible. Usus and fructus are felt every day. You touch them. Abusus is felt once, on the day you try to leave, and by then it is too late to acquire it. The one right that matters most is also the one nobody misses until the exit is blocked. Ownership hides its most important part behind the least used door.&lt;/p&gt;

&lt;h2 id=&quot;a-sovereignty-you-are-handed-is-inert-until-someone-exercises-it&quot;&gt;A sovereignty you are handed is inert until someone exercises it&lt;/h2&gt;

&lt;p&gt;Here the history of the place I visited stops being background and becomes the argument.&lt;/p&gt;

&lt;p&gt;In November 1959, Léon M’ba, who would become Gabon’s first president, argued openly for departmentalization. He wanted the territory to stay a French department rather than become an independent state. Jacques Foccart, de Gaulle’s man for African affairs, told him the idea was unthinkable. Gabon became independent on 17 August 1960, whether its leading politician had chosen that path or not.&lt;/p&gt;

&lt;p&gt;That detail has stayed with me. A sovereignty handed down from above is not the same object as a sovereignty taken up from below. One is a status printed on a document. The other is a capacity that somebody wakes up and exercises. You can be declared independent and still spend every morning waiting for someone else to decide the things that matter.&lt;/p&gt;

&lt;p&gt;Companies inherit sovereignty the same inert way. A contract says the data is yours. An audit says you are compliant. A slide says you are in control. None of it moves until a named person chooses to use the third right, and proves it.&lt;/p&gt;

&lt;p&gt;Proof is the whole point. An unexercised right decays into a decoration. A muscle you never use still shows on the anatomy chart and still cannot lift anything. Sovereignty is that kind of muscle. It exists on the org chart, in the contract, in the compliance file. Whether it can lift anything is a separate question, and the only honest way to answer it is to try.&lt;/p&gt;

&lt;h2 id=&quot;the-right-to-cut-costs-you-before-it-pays-you&quot;&gt;The right to cut costs you before it pays you&lt;/h2&gt;

&lt;p&gt;Abusus has a price, and the price comes first.&lt;/p&gt;

&lt;p&gt;To keep the right to leave, you pay upfront. You insist on open export formats when a proprietary one would be smoother today. You keep the root access even when handing it over would be more convenient. You build a little internal competence you could have rented. Every one of these choices is more expensive now and cheaper later.&lt;/p&gt;

&lt;p&gt;The dependency trap is the mirror image. It is cheaper now and far more expensive later. You take the smooth onboarding, the managed everything, the format that only the vendor reads. Nothing hurts on day one. The bill arrives the day you try to exercise a right you quietly gave up.&lt;/p&gt;

&lt;p&gt;Most organisations optimise for the comfortable start. They buy usus and fructus at a discount and let abusus lapse. Then they call the result bad luck. It was not luck. It was a purchase order.&lt;/p&gt;

&lt;p&gt;I have watched this play out from both chairs, as the buyer who got it wrong years ago and as the advisor who now sees it coming. The pattern never changes. The discount at the start is visible and the bill at the end is deferred, so the brain that signs treats the first as real and the second as hypothetical. It is not hypothetical. It is scheduled. You simply have not been told the date.&lt;/p&gt;

&lt;h2 id=&quot;france-taught-the-doctrine-and-mislaid-the-practice&quot;&gt;France taught the doctrine and mislaid the practice&lt;/h2&gt;

&lt;p&gt;There is an irony I could not ignore on the flight home.&lt;/p&gt;

&lt;p&gt;France gave the modern world a great deal of its vocabulary of sovereignty. The theory is deep here, taught, debated, defended. And yet, inside the companies I work with, the practice of the third right is rare. Leaders optimise use. They optimise returns. The capacity to cut a dependency, to walk away from a vendor, to refuse a captivity, sits unexercised, often unassigned to anyone at all.&lt;/p&gt;

&lt;p&gt;The country that first refused Gabon its independence now often forgets to pick up its own. Not at the level of the state. At the level of the ordinary company that runs the country’s economy. The doctrine is intact. The muscle has gone soft.&lt;/p&gt;

&lt;p&gt;I say this without contempt. Comfort does this to everyone. When the power stays on, the vendors stay solid, and the formats mostly work, the reflex to keep an exit fades. Why pay for a door you never expect to use. The answer arrives with the first acquisition, the first price change, the first strategic pivot you did not choose. By then the door has been walled over, quietly, one convenient decision at a time.&lt;/p&gt;

&lt;p&gt;I am not romanticising anywhere. The infrastructure constraints I saw were real, sometimes severe. But a constraint you can name is not the thing that costs you the most. What costs you is a right you never use because you forgot you held it.&lt;/p&gt;

&lt;h2 id=&quot;what-the-man-in-the-car-already-knew&quot;&gt;What the man in the car already knew&lt;/h2&gt;

&lt;p&gt;Go back to the first evening, the long drive from the airport, the driver talking about his son who writes code.&lt;/p&gt;

&lt;p&gt;What he said, in his own words, was that he wanted his son to build things he could keep. Not rent forever. Keep. Change. Walk away from if needed. He did not know Roman law and he did not need to. He had the instinct that the lawyers spent centuries formalising. Ownership is the right to dispose.&lt;/p&gt;

&lt;p&gt;I think that is why the week unsettled me. I did not meet more knowledge there. I met more instinct. People who had never been able to assume that a system would simply keep working, and who therefore never confused using a thing with owning it. That confusion is a luxury. Luxuries make you soft in ways you only notice once they are taken away.&lt;/p&gt;

&lt;p&gt;I came home with that instinct ringing louder than any of my notes on bandwidth. Sovereignty is not the title. It is the third right, exercised by someone who is willing to pay for it before it pays them back. Ask yourself the uncomfortable version tonight. On the systems that run your company, do you hold the right to cut? And if you do, when did you last prove it?&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Wikipedia, “Léon M’ba”, 2026. https://en.wikipedia.org/wiki/L%C3%A9on_M%27ba&lt;/li&gt;
  &lt;li&gt;France 24, “1960: The year of independence”, 2010. https://www.france24.com/en/20100214-1960-year-independence&lt;/li&gt;
  &lt;li&gt;BlackPast.org, “Léon M’ba (1902-1967)”, 2011. https://www.blackpast.org/global-african-history/people-global-african-history/leon-mba-1902-1967/&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>Off the Books: The Technical Debt No Monitor Will Ever Show You</title>
      <link href="https://francois.aichelbaum.com/2026/07/14/off-the-books" />
      <updated>2026-07-14T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/07/14/off-the-books</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#a-balance-sheet-only-tells-you-half-of-what-a-company-owes&quot; id=&quot;markdown-toc-a-balance-sheet-only-tells-you-half-of-what-a-company-owes&quot;&gt;A balance sheet only tells you half of what a company owes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-debt-people-absorb-has-no-owner-and-that-is-what-makes-it-dangerous&quot; id=&quot;markdown-toc-the-debt-people-absorb-has-no-owner-and-that-is-what-makes-it-dangerous&quot;&gt;The debt people absorb has no owner, and that is what makes it dangerous&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-clean-modernisation-project-dies-on-what-nobody-wrote-down&quot; id=&quot;markdown-toc-a-clean-modernisation-project-dies-on-what-nobody-wrote-down&quot;&gt;A clean modernisation project dies on what nobody wrote down&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#some-people-do-not-just-hold-the-debt-they-guard-it&quot; id=&quot;markdown-toc-some-people-do-not-just-hold-the-debt-they-guard-it&quot;&gt;Some people do not just hold the debt, they guard it&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-ceo-cannot-audit-what-they-do-not-know-exists&quot; id=&quot;markdown-toc-a-ceo-cannot-audit-what-they-do-not-know-exists&quot;&gt;A CEO cannot audit what they do not know exists&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#put-the-off-balance-sheet-back-on-the-books&quot; id=&quot;markdown-toc-put-the-off-balance-sheet-back-on-the-books&quot;&gt;Put the off-balance-sheet back on the books&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;Every company carries technical debt it can count: the legacy to rewrite, the licences to migrate, the tickets in the backlog. It also carries a debt no monitor will ever show, because people absorb it for free. The manual export. The knowledge that lives in one head. The workaround nobody wrote down. This second debt has no functional owner. It surfaces only when someone leaves, a system breaks, or an audit finally drags it into the light. By then it is no longer a line item. It is a crisis with a calendar that does not wait.&lt;/p&gt;

&lt;h2 id=&quot;a-balance-sheet-only-tells-you-half-of-what-a-company-owes&quot;&gt;A balance sheet only tells you half of what a company owes&lt;/h2&gt;

&lt;p&gt;Accountants solved this problem a long time ago. A balance sheet shows what a company owns and what it owes. It does not show everything the company is committed to. A nine year lease. A pension obligation. A guarantee given to a partner. A lawsuit in progress. None of it sits in the liabilities column. All of it is real.&lt;/p&gt;

&lt;p&gt;This is what the off-balance-sheet annex is for. The accounting rule does not ask for it out of caution. It asks for it because without it, the balance sheet lies. The international standard that governs this, IAS 37 (Provisions, Contingent Liabilities and Contingent Assets), exists precisely to force what is owed but uncertain back into the open. The French Plan Comptable Général carries the same demand in its annex on off-balance-sheet commitments. Different rulebooks, one principle: what is not recorded is still owed.&lt;/p&gt;

&lt;p&gt;The most expensive lesson on this point was Enron, in 2001. The company moved enormous obligations into special purpose entities that never appeared on the main balance sheet. On paper, the group looked healthy. The obligations were real the whole time. When they came back into view, the company did not slow down. It imploded. I cite it as a textbook case, not as a thriller. The mechanism is what matters: what you keep off the books does not disappear. It waits for the conditions that make it visible.&lt;/p&gt;

&lt;p&gt;A company’s information system has the same two layers. There is the technical balance sheet: servers, licences, contracts, open tickets. Things you can name and cost. And there is the technical off-balance-sheet: everything that keeps the company running without appearing anywhere. That second layer is the one I want to talk about.&lt;/p&gt;

&lt;h2 id=&quot;the-debt-people-absorb-has-no-owner-and-that-is-what-makes-it-dangerous&quot;&gt;The debt people absorb has no owner, and that is what makes it dangerous&lt;/h2&gt;

&lt;p&gt;Recorded technical debt has a strange virtue. It is honest by construction. It only contains what teams know how to name and agree to report. A module flagged for a rewrite, an old framework past its support window: those make it into the register because someone can describe them.&lt;/p&gt;

&lt;p&gt;The off-balance-sheet layer never makes it in, because describing it would require someone to notice it first. The export reworked by hand every month, because two systems do not talk to each other. The knowledge of an old subsystem that nobody ever wrote down. The process workaround learned on the job, passed on by word of mouth, never documented. The team that has been compensating for a broken tool for three years no longer sees it as debt. They see it as doing their job well.&lt;/p&gt;

&lt;p&gt;There is a name for this in the research on work itself. Susan Leigh Star and Anselm Strauss, in 1999, described the invisible work that keeps systems running and never appears in the formal account of who does what. Their point was not technical. It was organisational. Some work only becomes visible when it stops. Until then, it is absorbed, silently, by the people doing it.&lt;/p&gt;

&lt;p&gt;That is the heart of it. This debt has no owner. Ward Cunningham coined the technical debt metaphor to talk about code you ship fast and pay for later, and Martin Fowler has spent years refining it. The metaphor holds, but it stops at the code. The version that hurts a non-technical CEO the most is not in the code. It is in the gap between what the organisation depends on and what the organisation actually owns. A skill in one person’s head is not an asset. It is a commitment with no maturity date, payable on the worst possible day.&lt;/p&gt;

&lt;h2 id=&quot;a-clean-modernisation-project-dies-on-what-nobody-wrote-down&quot;&gt;A clean modernisation project dies on what nobody wrote down&lt;/h2&gt;

&lt;p&gt;Here is how it plays out. Names and details changed, the shape is one I have seen more than once.&lt;/p&gt;

&lt;p&gt;A mid-sized company decides to modernise. The plan is sound. Replace an ageing platform, connect the systems that do not talk, retire the manual steps. The budget is approved. The timeline is tight but reasonable. On paper, it is a clean project. Everyone signs off.&lt;/p&gt;

&lt;p&gt;The first audit phase is supposed to be a formality. Map the existing processes, confirm the dependencies, start building. It is not a formality. It is where the off-balance-sheet comes out.&lt;/p&gt;

&lt;p&gt;The monthly closing, it turns out, depends on a spreadsheet. Not a system. A spreadsheet, built and maintained by one person, who pulls data from three places, reconciles it by hand, and produces the file the whole finance chain waits for. No one above that person knows the spreadsheet exists in this form. They know the number arrives on time. They never asked how.&lt;/p&gt;

&lt;p&gt;The same audit finds five more of these. A reporting flow that only runs because someone manually triggers it. A customer onboarding step that lives in a checklist on one laptop. A nightly job that breaks twice a year, and only one engineer knows the sequence to bring it back. Each one, on its own, looks small. Together, they are the load-bearing structure of the company. And not one of them is in the project plan, because the plan was built from the recorded debt, not the absorbed one.&lt;/p&gt;

&lt;p&gt;Now the project has a choice it did not budget for. Modernise on top of dependencies it does not understand, and risk breaking the closing in month two. Or stop, document everything first, and blow the timeline. Both options cost more than the original estimate. The debt that never showed up on a dashboard just became the single most expensive variable in the project. It was always there. It only acquired a price the moment the conditions changed.&lt;/p&gt;

&lt;p&gt;This is the off-balance-sheet, exactly as an accountant would recognise it. A commitment that costs nothing while everything holds, and everything the day it moves.&lt;/p&gt;

&lt;h2 id=&quot;some-people-do-not-just-hold-the-debt-they-guard-it&quot;&gt;Some people do not just hold the debt, they guard it&lt;/h2&gt;

&lt;p&gt;There is a sharper version of this, and it is the one most organisations refuse to name.&lt;/p&gt;

&lt;p&gt;Sometimes the debt is not absorbed by accident. It is cultivated. A person works out, consciously or not, that knowledge kept private becomes power. So they keep it private. They do not document. They make the process a little more complicated than it needs to be, just enough to stay the only one who can run it. They present dependency as expertise.&lt;/p&gt;

&lt;p&gt;The signals are easy to miss because they look like competence. The person delivers. They are precious. People around them say, with admiration, that they are irreplaceable. Irreplaceable is rarely a compliment. It is a diagnosis.&lt;/p&gt;

&lt;p&gt;The hardest cases add hostility to opacity. Challenge the work, and it does not turn into a technical debate. It turns into a political one. So people stop challenging. And every month, a little more of the company runs through one head, with the organisation quietly agreeing not to look. Management complicity is part of the mechanism. It is easier to keep the person happy than to confront what their indispensability is costing.&lt;/p&gt;

&lt;p&gt;This is where the absorbed debt becomes almost impossible to see from the top. Ordinary invisible work is just unrecorded. Guarded invisible work is actively hidden, by someone with an interest in keeping it hidden. A CEO cannot audit what no one will describe, and the one person who could describe it is the one person who never will.&lt;/p&gt;

&lt;h2 id=&quot;a-ceo-cannot-audit-what-they-do-not-know-exists&quot;&gt;A CEO cannot audit what they do not know exists&lt;/h2&gt;

&lt;p&gt;Here is the trap, stated plainly. The non-technical leader is asked to govern a risk they cannot see, through people who, for different reasons, will not show it to them.&lt;/p&gt;

&lt;p&gt;It is not a competence problem. You do not need to read code to run a company that depends on code. You need to know which questions to ask, and you need someone who can ask them without triggering the war. The leader sitting in the chair sees the top layer: the dashboards, the recorded debt, the reassuring sentence that the number always arrives on time. The layer underneath does not rise on its own. It comes out at the audit, at the departure, at the crisis. Always late. Always under pressure.&lt;/p&gt;

&lt;p&gt;The fix is not heroic. It is patient. You map where the company actually depends on individuals rather than systems. You make the implicit explicit, one process at a time. You turn what lives in two or three heads into something the company owns. You do it without putting anyone on trial, because the goal is not to punish the person who absorbed the debt. The goal is to stop the company from depending on an accident.&lt;/p&gt;

&lt;p&gt;That last word matters. An organisation that runs on accident eventually discovers the exact cost of that accident. The only real choice is whether you learn the number on your own terms, with time to act, or on the day someone hands in their notice and the inventory you never made becomes due all at once.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/off-the-books-cover.jpg&quot; alt=&quot;Hidden load-bearing structure&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;put-the-off-balance-sheet-back-on-the-books&quot;&gt;Put the off-balance-sheet back on the books&lt;/h2&gt;

&lt;p&gt;The discipline an accountant applies to commitments is the discipline a leader should apply to dependencies. Not because it is elegant. Because the alternative is a balance sheet that lies.&lt;/p&gt;

&lt;p&gt;Start with one question, asked of the right people, in a way that does not feel like an accusation: if this person were out for a month, what would stop? Then follow the answers, because they are never as narrow as the first response suggests. What stops is the map of your real off-balance-sheet. Write it down. Give each item an owner who is not a single irreplaceable individual. Turn the spreadsheet into a system, the tribal knowledge into documentation, the workaround into a decision someone made on purpose.&lt;/p&gt;

&lt;p&gt;None of this shows up on a monitor, which is exactly why it gets skipped. The debt people absorb is the cheapest thing in the company until the day it is the most expensive. A leader who learns the number before that day keeps the choice. A leader who waits inherits a debt they never signed.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;IFRS Foundation, &lt;em&gt;IAS 37 Provisions, Contingent Liabilities and Contingent Assets&lt;/em&gt;, 2001 (à jour 2026). https://www.ifrs.org/issued-standards/list-of-standards/ias-37-provisions-contingent-liabilities-and-contingent-assets/&lt;/li&gt;
  &lt;li&gt;Autorité des Normes Comptables, &lt;em&gt;Règlement ANC n° 2014-03 relatif au Plan Comptable Général&lt;/em&gt;, version consolidée au 1er janvier 2026 (section informations relatives aux engagements hors bilan). https://www.anc.gouv.fr/files/anc/files/1_Normes_fran%C3%A7aises/Reglements/Recueils/PCG_janvier2026/PCG–1er-janvier-2026.pdf&lt;/li&gt;
  &lt;li&gt;Peter Bondarenko, &lt;em&gt;Enron scandal&lt;/em&gt;, Encyclopædia Britannica, 2026. https://www.britannica.com/event/Enron-scandal&lt;/li&gt;
  &lt;li&gt;Susan Leigh Star &amp;amp; Anselm Strauss, &lt;em&gt;Layers of Silence, Arenas of Voice: The Ecology of Visible and Invisible Work&lt;/em&gt;, Computer Supported Cooperative Work, 1999. https://link.springer.com/article/10.1023/A:1008651105359&lt;/li&gt;
  &lt;li&gt;Martin Fowler, &lt;em&gt;Technical Debt&lt;/em&gt;, 2019. https://martinfowler.com/bliki/TechnicalDebt.html&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>The Chef Never Touches the Pan: Why Leaders Confuse Mastery With Judgment</title>
      <link href="https://francois.aichelbaum.com/2026/07/07/chef-never-touches-the-pan" />
      <updated>2026-07-07T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/07/07/chef-never-touches-the-pan</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#doing-mastering-and-understanding-are-three-different-things&quot; id=&quot;markdown-toc-doing-mastering-and-understanding-are-three-different-things&quot;&gt;Doing, mastering, and understanding are three different things&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#escoffier-wrote-the-answer-down-in-1903&quot; id=&quot;markdown-toc-escoffier-wrote-the-answer-down-in-1903&quot;&gt;Escoffier wrote the answer down in 1903&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-chef-who-tries-to-hold-every-station-loses-the-kitchen&quot; id=&quot;markdown-toc-the-chef-who-tries-to-hold-every-station-loses-the-kitchen&quot;&gt;The chef who tries to hold every station loses the kitchen&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#jeff-bezos-set-amazons-architecture-without-writing-a-line-of-it&quot; id=&quot;markdown-toc-jeff-bezos-set-amazons-architecture-without-writing-a-line-of-it&quot;&gt;Jeff Bezos set Amazon’s architecture without writing a line of it&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-non-technical-leader-makes-the-chefs-mistake-in-reverse&quot; id=&quot;markdown-toc-the-non-technical-leader-makes-the-chefs-mistake-in-reverse&quot;&gt;The non-technical leader makes the chef’s mistake in reverse&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#understanding-is-the-capacity-that-survives&quot; id=&quot;markdown-toc-understanding-is-the-capacity-that-survives&quot;&gt;Understanding is the capacity that survives&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-this-means-for-how-you-lead&quot; id=&quot;markdown-toc-what-this-means-for-how-you-lead&quot;&gt;What this means for how you lead&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;A head chef in a serious kitchen holds no station. He learned all of them, then left them. He still runs the service. The belief that a leader must be able to do every job before delegating it is the belief that quietly destroys delegation. You do not need to master a craft to govern it. You need to understand it well enough to know when it sounds right, and that is a different skill that takes a different amount of time.&lt;/p&gt;

&lt;p&gt;There is a story most leaders tell themselves, and it is wrong. It says authority comes from competence at the task. That to lead the people who do the work, you must be able to do the work, or to have done it, or at least to be able to follow every move. It feels humble. It feels rigorous. It is the most expensive mistake a non-technical leader makes, and it has a twin in the kitchen that has been solved for over a hundred years.&lt;/p&gt;

&lt;h2 id=&quot;doing-mastering-and-understanding-are-three-different-things&quot;&gt;Doing, mastering, and understanding are three different things&lt;/h2&gt;

&lt;p&gt;Most people collapse three distinct capacities into one word: competence. Pull them apart and the whole question changes.&lt;/p&gt;

&lt;p&gt;The first is knowing how to do a task. You have held the station. Your hands know the motion. This decays fast when you stop practising. A head chef who spent fifteen years away from the fish station would not cook a fillet as cleanly as the cook who does it every night. He knows this and does not pretend otherwise.&lt;/p&gt;

&lt;p&gt;The second is mastery. Not just doing the task, but doing it with the precision that holds up at every service, under pressure, three hundred covers deep. Mastery demands daily repetition. It is the rarest of the three and the first to erode. The head chef gave it up the day he stepped back. His fish cook owns it now.&lt;/p&gt;

&lt;p&gt;The third is understanding. Knowing what a correctly cooked fish is. Knowing why this one is not. Knowing what to say to the cook so the next one is right. Understanding does not decay the way the others do. Once you have it, it stays. You can lose your hands and keep your judgment.&lt;/p&gt;

&lt;p&gt;Leadership runs on the third. Not the first two. The leader who refuses to decide a technical question because he could not perform the task himself has confused mastery with judgment. He thinks he needs the hands. He needs the ear.&lt;/p&gt;

&lt;h2 id=&quot;escoffier-wrote-the-answer-down-in-1903&quot;&gt;Escoffier wrote the answer down in 1903&lt;/h2&gt;

&lt;p&gt;The professional kitchen solved this problem before the telephone was common. In 1903, Georges Auguste Escoffier published &lt;em&gt;Le Guide Culinaire&lt;/em&gt; and codified the brigade de cuisine: a kitchen organised into stations, each run by a chef de partie, the whole coordinated by a chef de cuisine who, in the full system, cooks almost nothing.&lt;/p&gt;

&lt;p&gt;The structure is deliberate. The saucier owns the sauces. The poissonnier owns the fish. The garde-manger owns the cold work, the pâtissier the desserts. Escoffier, who had served in the French army, borrowed the discipline of a military brigade and applied it to service. The point was scale: with specialised stations, a kitchen could send hundreds of covers without losing consistency. No single person could do that by cooking everything. Someone had to stop cooking and start listening.&lt;/p&gt;

&lt;p&gt;That someone is the chef de cuisine. He learned every station on the way up. He tasted each one for years. He can tell when a reduction has split, when a stock is flat, when a plate is two minutes late. He does none of the cooking. He hears the whole kitchen at once, and he decides. The system does not treat this as a loss of legitimacy. It treats it as the job.&lt;/p&gt;

&lt;p&gt;Nobody in a great house asks the chef to take back the pan to prove he deserves to command. The proof is in the service running clean. The day the chef drops back onto a single station and starts cooking, the brigade reads it instantly: something has gone wrong, and the whole kitchen is about to feel it.&lt;/p&gt;

&lt;h2 id=&quot;the-chef-who-tries-to-hold-every-station-loses-the-kitchen&quot;&gt;The chef who tries to hold every station loses the kitchen&lt;/h2&gt;

&lt;p&gt;A chef who insists on cooking everything is not more in control. He is less. He has his head down in one pan while the rest of the service drifts.&lt;/p&gt;

&lt;p&gt;Picture it. He is reducing a sauce that is going too fast, so his attention is on the pan. Meanwhile table 12 has been waiting eight minutes, the fish cook’s oven just failed, and a new ticket for twelve just landed. None of that reaches him, because he is cooking. He has traded the one thing only he can do, hold the whole picture, for a thing any of his cooks could do as well or better.&lt;/p&gt;

&lt;p&gt;This is the trap, and it is not about ability. It is about where attention goes. Attention is the scarcest resource a leader has. Spend it on a task you could delegate and you have nothing left for the judgment nobody else can supply. The kitchen does not slow down because the chef lacks skill. It slows down because everything routes through one person who insisted on staying in the work.&lt;/p&gt;

&lt;p&gt;The same physics governs a company. A leader who keeps a hand in every technical decision becomes the bottleneck the whole organisation waits on. The team stops deciding. They have learned that whatever they produce will be redone or overruled, so they bring everything up the line and wait. The leader reads this as proof that he is needed everywhere. It is the opposite. He built it.&lt;/p&gt;

&lt;h2 id=&quot;jeff-bezos-set-amazons-architecture-without-writing-a-line-of-it&quot;&gt;Jeff Bezos set Amazon’s architecture without writing a line of it&lt;/h2&gt;

&lt;p&gt;The clearest example of leading by understanding instead of doing is also one of the most consequential decisions in modern technology. In 2002, Jeff Bezos issued what is now remembered as the API mandate.&lt;/p&gt;

&lt;p&gt;The substance, as preserved in Steve Yegge’s well-known 2011 account, was blunt. All teams would expose their data and functionality through service interfaces. Teams would communicate only through those interfaces. No direct linking, no shared databases, no back doors. Every interface had to be designed from the ground up to be exposable to outside developers. And, in Yegge’s telling, a final line: anyone who does not do this will be fired.&lt;/p&gt;

&lt;p&gt;Bezos did not write those services. He did not architect the individual systems or implement the interfaces. He had the understanding to see what the company needed to become, a platform rather than a product, and he set the constraint that forced it. The engineers discovered the hard lessons themselves over the following years: service discovery, monitoring that doubles as QA, throttling so that peer teams do not become denial-of-service attackers. Bezos did not need to know those lessons in advance. He needed to understand the stakes well enough to point the organisation at the right hill and refuse to let it cheat.&lt;/p&gt;

&lt;p&gt;What came out of that constraint was, eventually, Amazon Web Services. A bookseller’s internal plumbing became a computing platform that now runs a large share of the internet. The decision that made it possible was not a feat of engineering by the man at the top. It was a feat of judgment, set by principle, executed by people who held the mastery he did not.&lt;/p&gt;

&lt;p&gt;This is the chef de cuisine at industrial scale. Bezos tasted enough of the craft to know what a good system was. He did not build it. He decided what it had to be, and he listened hard enough to know whether the answer coming back sounded right.&lt;/p&gt;

&lt;h2 id=&quot;the-non-technical-leader-makes-the-chefs-mistake-in-reverse&quot;&gt;The non-technical leader makes the chef’s mistake in reverse&lt;/h2&gt;

&lt;p&gt;A non-technical CEO who feels illegitimate deciding a technical question is making the same error as the chef who wants to cook every dish. Same false belief, opposite symptom.&lt;/p&gt;

&lt;p&gt;The chef who cooks everything believes mastery of the station is what earns him the right to run the kitchen, so he never leaves the stove. The CEO who recuses himself from technical arbitration believes mastery of the subject is what earns him the right to decide, so he never decides. Both are paralysed by the same idea: that you must be able to do it to be allowed to govern it.&lt;/p&gt;

&lt;p&gt;When a leader steps out of a technical decision because he is not technical, he does not hand it to a better decision-maker. He leaves a hole. His head of engineering has an engineering view. His CFO has a cost view. His sales lead has a deadline view. Each sees one station. None sees the whole kitchen. That is the leader’s view, and it is the only one in the room that integrates the others. Vacate it, and the question gets answered by default, usually by whoever speaks with the most confidence that day.&lt;/p&gt;

&lt;p&gt;The leader does not need to know how to write the code to decide whether to rewrite the system or keep it. He needs to understand what is actually at stake, what each option costs, what it forecloses, and how it sounds against everything else he is responsible for. That is judgment. It is learnable without ever touching the pan.&lt;/p&gt;

&lt;h2 id=&quot;understanding-is-the-capacity-that-survives&quot;&gt;Understanding is the capacity that survives&lt;/h2&gt;

&lt;p&gt;The reason this distinction matters so much is that the three capacities age differently. Two of them are perishable. One is not.&lt;/p&gt;

&lt;p&gt;Hands fade. A leader who once wrote code well will not write it well after years away, and chasing that lost fluency is a waste of the hours a leader has. Mastery fades faster still, because it was only ever held up by daily practice the leader no longer does. If your authority rests on either of those, it is decaying from the day you stop doing the work, and you will spend your energy defending a competence that is slipping rather than exercising the judgment that is not.&lt;/p&gt;

&lt;p&gt;Understanding behaves differently. Once you genuinely grasp why a system behaves the way it does, what good looks like, where the real risks sit, that knowledge compounds rather than erodes. It transfers across problems. The leader who understands his technology can walk into a decision he has never seen before and ask the three questions that matter, because he understands the shape of the thing even if he could not build it.&lt;/p&gt;

&lt;p&gt;This is why the chef de cuisine keeps running the kitchen long after his hands have left the stations. His understanding did not leave. It is what he leads with.&lt;/p&gt;

&lt;h2 id=&quot;what-this-means-for-how-you-lead&quot;&gt;What this means for how you lead&lt;/h2&gt;

&lt;p&gt;The practical move is to stop trying to earn legitimacy through mastery you will never reach and start building the understanding you can.&lt;/p&gt;

&lt;p&gt;You do not need to learn fifteen jobs. You will not have the hours, and even if you did, you would be optimising the wrong thing. What you need is the ear: enough understanding of your own systems to tell when they sound right and when they sound off, without putting your hands inside them. That is installable. It does not require turning a leader into a technician. It requires giving the leader the judgment to arbitrate, so the people who hold the mastery can get on with the work.&lt;/p&gt;

&lt;p&gt;The chef who tries to do everything is not the strong one. He is the bottleneck. The strong chef learned every station, left them all, and now hears the whole service in a single glance across the pass. He decides what goes out and what comes back. He does not pick up the pan, and nobody asks him to.&lt;/p&gt;

&lt;p&gt;You can run the kitchen without dressing the plate. Most leaders do not believe it. It is costing them the one job that was actually theirs.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Auguste Escoffier, &lt;em&gt;Le Guide Culinaire&lt;/em&gt; (1903). Full original French text on the Internet Archive: https://archive.org/details/bnf-bpt6k65768837 — overview: https://en.wikipedia.org/wiki/Le_guide_culinaire&lt;/li&gt;
  &lt;li&gt;Le Cordon Bleu, “What is the kitchen brigade system?” https://www.cordonbleu.edu/news/what-is-the-kitchen-brigade-system/en&lt;/li&gt;
  &lt;li&gt;Auguste Escoffier School of Culinary Arts, “Kitchen Hierarchy Explained: Different Jobs in the Brigade de Cuisine” (2025). https://www.escoffier.edu/blog/culinary-pastry-careers/different-types-of-chef-jobs-in-the-brigade-de-cuisine/&lt;/li&gt;
  &lt;li&gt;Steve Yegge, “Stevey’s Google Platforms Rant” (2011), preserving Jeff Bezos’s 2002 API mandate. Archived copy: https://courses.cs.washington.edu/courses/cse452/23wi/papers/yegge-platform-rant.html&lt;/li&gt;
  &lt;li&gt;Walter Isaacson, &lt;em&gt;Steve Jobs&lt;/em&gt; (Simon &amp;amp; Schuster, 2011). Reference via Library of Congress, “The Founding of Apple Computer, Inc.”: https://guides.loc.gov/this-month-in-business-history/april/apple-computer-founded&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>The Decision Nobody Reopens</title>
      <link href="https://francois.aichelbaum.com/2026/06/30/the-decision-nobody-reopens" />
      <updated>2026-06-30T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/06/30/the-decision-nobody-reopens</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#a-stable-decision-and-a-stable-patient-are-the-same-illusion&quot; id=&quot;markdown-toc-a-stable-decision-and-a-stable-patient-are-the-same-illusion&quot;&gt;A stable decision and a stable patient are the same illusion&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-paper-survives-the-ground-does-not&quot; id=&quot;markdown-toc-the-paper-survives-the-ground-does-not&quot;&gt;The paper survives, the ground does not&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-short-story-about-a-tool-that-was-right-until-it-wasnt&quot; id=&quot;markdown-toc-a-short-story-about-a-tool-that-was-right-until-it-wasnt&quot;&gt;A short story about a tool that was right until it wasn’t&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-role-that-keeps-decisions-fresh-is-missing-from-the-org-chart&quot; id=&quot;markdown-toc-the-role-that-keeps-decisions-fresh-is-missing-from-the-org-chart&quot;&gt;The role that keeps decisions fresh is missing from the org chart&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-person-who-reopens-the-file-should-not-be-the-person-who-runs-it&quot; id=&quot;markdown-toc-the-person-who-reopens-the-file-should-not-be-the-person-who-runs-it&quot;&gt;The person who reopens the file should not be the person who runs it&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-routine-mandate-is-harder-to-assign-than-a-crisis-mandate&quot; id=&quot;markdown-toc-a-routine-mandate-is-harder-to-assign-than-a-crisis-mandate&quot;&gt;A routine mandate is harder to assign than a crisis mandate&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-half-life-of-a-decision-is-shorter-than-the-record-suggests&quot; id=&quot;markdown-toc-the-half-life-of-a-decision-is-shorter-than-the-record-suggests&quot;&gt;The half-life of a decision is shorter than the record suggests&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#decisions-have-biomarkers-and-almost-nobody-reads-them&quot; id=&quot;markdown-toc-decisions-have-biomarkers-and-almost-nobody-reads-them&quot;&gt;Decisions have biomarkers, and almost nobody reads them&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-a-follow-up-protocol-for-decisions-actually-looks-like&quot; id=&quot;markdown-toc-what-a-follow-up-protocol-for-decisions-actually-looks-like&quot;&gt;What a follow-up protocol for decisions actually looks like&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;A technical decision is a dated act. It was made on a specific day, by specific people, under specific assumptions. Medicine treats a chronic condition this way: a patient who is stable today is not a patient who is cured, so the follow-up visit is scheduled before anyone leaves the room. Most organisations document the decision and schedule nobody to revisit it. The result is silent erosion, and the bill arrives as an incident rather than a review.&lt;/p&gt;

&lt;h2 id=&quot;a-stable-decision-and-a-stable-patient-are-the-same-illusion&quot;&gt;A stable decision and a stable patient are the same illusion&lt;/h2&gt;

&lt;p&gt;Both feel solved, and neither is.&lt;/p&gt;

&lt;p&gt;In type 2 diabetes care, French health authorities lay out something most companies never write down for their own decisions: a follow-up rhythm. Annual screening for complications. Regular reconsideration of the treatment strategy. A named pilot who coordinates the whole pathway. The point is not that the patient is fragile. The point is that the equilibrium reached today was reached under conditions that will change, and someone has to be responsible for noticing when they do.&lt;/p&gt;

&lt;p&gt;A treated patient who feels fine can deteriorate over a year without a single alarming event between the two visits. No symptom. No crisis. Just the slow drift of values that nobody measured. The follow-up protocol exists precisely because the absence of symptoms is not evidence of health. It is, at most, evidence that nobody looked.&lt;/p&gt;

&lt;p&gt;A technical arbitrage behaves the same way. The vendor you chose because your team mastered it. The architecture you picked because it fit the need. The contract you renewed without rereading it. Each was correct on the day it was decided. None of them comes with a follow-up visit.&lt;/p&gt;

&lt;h2 id=&quot;the-paper-survives-the-ground-does-not&quot;&gt;The paper survives, the ground does not&lt;/h2&gt;

&lt;p&gt;What erodes is never the record. It is the terrain the record stood on.&lt;/p&gt;

&lt;p&gt;Six months after a decision, the register still holds. The decision memo still holds. The selection criteria still hold. What has moved is everything the decision quietly depended on: the engineer who understood the tool has left, the vendor has been acquired, the workload has tripled, the assumption that traffic would stay flat turned out to be wrong. The decision did not fail. Its foundations were replaced underneath it, one piece at a time, and nobody re-checked whether it still stood.&lt;/p&gt;

&lt;p&gt;This is the gap between a decision and its half-life. We are good at making decisions and recording them. We are terrible at admitting they have an expiry date we cannot see in advance. So we treat the record as if it were the reality, and we manage the document instead of the thing the document described.&lt;/p&gt;

&lt;p&gt;The medical word for this is a silent recurrence. The clinical markers slip below the surface while the patient reports feeling well. It is detectable, but only if a test was ordered. In companies, the equivalent test is a scheduled reopening of the decision, and it is almost never ordered.&lt;/p&gt;

&lt;h2 id=&quot;a-short-story-about-a-tool-that-was-right-until-it-wasnt&quot;&gt;A short story about a tool that was right until it wasn’t&lt;/h2&gt;

&lt;p&gt;Consider a mid-sized company that standardised, years ago, on a single internal tool to run a critical part of its operations.&lt;/p&gt;

&lt;p&gt;At the time, the choice was sound. The team that requested it knew it inside out. It was cheaper than the alternatives. It integrated with what already existed. The decision was documented, approved, and filed. Everyone moved on, which is exactly what you are supposed to do with a settled question.&lt;/p&gt;

&lt;p&gt;Then the half-life began. The two engineers who had championed the tool moved to other roles, then out of the company. The vendor shifted its roadmap toward a different market and let the features this company relied on stagnate. The volume of work the tool handled grew well past what anyone had imagined when it was chosen. None of this triggered an alert, because no alert had been defined. The tool kept running. Dashboards stayed green. The decision stayed filed.&lt;/p&gt;

&lt;p&gt;The reopening, when it finally came, was not a review. It was a failure. A routine change broke something nobody now understood, because the people who understood it were gone and the documentation had aged into fiction. What should have been a calm reassessment eighteen months earlier became a scramble: emergency contracts, external help brought in at a premium, weeks of senior attention spent on a problem that had been visible, in principle, the whole time.&lt;/p&gt;

&lt;p&gt;The root cause was not the original choice. The original choice was good. The root cause was that no one had been mandated to ask, at a fixed date and regardless of whether anything seemed wrong, the simple question: does this decision still hold?&lt;/p&gt;

&lt;h2 id=&quot;the-role-that-keeps-decisions-fresh-is-missing-from-the-org-chart&quot;&gt;The role that keeps decisions fresh is missing from the org chart&lt;/h2&gt;

&lt;p&gt;Look at who, in your organisation, owns the freshness of past technical decisions. The honest answer is usually nobody.&lt;/p&gt;

&lt;p&gt;The CEO validates dozens of technical arbitrages a year and has neither the time nor the remit to reopen them all. The technology lead is absorbed by the run and the next project. The vendor is paid to deliver, not to audit its own continued relevance. The teams rotate. The committee that made the call dissolved the moment the call was made. Each of these actors is doing exactly what they are supposed to do. None of them is doing the one thing that was never assigned: the scheduled, routine reopening.&lt;/p&gt;

&lt;p&gt;A hospital does not leave follow-up to chance. The protocol names who looks at what, at which interval, and who reopens the file if the results drift. It is written down because memory and goodwill are not a system. In most companies, the equivalent role does not exist on any job description. The closest thing is an audit, but an audit is an event, not a rhythm, and it usually arrives because something already went wrong.&lt;/p&gt;

&lt;h2 id=&quot;the-person-who-reopens-the-file-should-not-be-the-person-who-runs-it&quot;&gt;The person who reopens the file should not be the person who runs it&lt;/h2&gt;

&lt;p&gt;Distance, not expertise, is what makes a reopening honest.&lt;/p&gt;

&lt;p&gt;The team that operates a system every day is the worst placed to judge whether it still belongs. Not through any failing, but because they live inside it. They have absorbed its quirks as normal. They have built the workarounds themselves and stopped seeing them as workarounds. They have a stake in the decision continuing to look right, because they implemented it, defended it, and built their routines around it. Asking them to reopen the file is asking them to argue against their own recent past, which is a lot to ask of anyone.&lt;/p&gt;

&lt;p&gt;This is why hospitals separate roles. The specialist who reads the follow-up results is not always the one who prescribed the original treatment, and the protocol is designed so that the review does not depend on the goodwill or the memory of a single overloaded actor. The structure carries the rigour, not the individual. Inside a company, the same separation matters. The reviewer needs enough distance to say “this no longer holds” without it landing as self-criticism, and enough remove from the daily run to not be dragged back into firefighting the moment something urgent appears.&lt;/p&gt;

&lt;p&gt;Sometimes that distance is internal: a person or function deliberately kept out of operations and given the explicit mandate to reopen. Sometimes it is external: someone who never made the original call, has nothing to defend, and reads the system the way a doctor reads a file they did not write, by looking at the results rather than asking whether everyone feels fine.&lt;/p&gt;

&lt;h2 id=&quot;a-routine-mandate-is-harder-to-assign-than-a-crisis-mandate&quot;&gt;A routine mandate is harder to assign than a crisis mandate&lt;/h2&gt;

&lt;p&gt;This is the uncomfortable part, and it explains why the role keeps disappearing.&lt;/p&gt;

&lt;p&gt;For a crisis, everyone knows who to call. For an audit, there is a budget line and a trigger. For routine review, there is nothing. Routine makes no noise. It does not escalate, it does not page anyone, it does not show up in this quarter’s numbers. So when the urgent crowds out the important, the first task to be quietly dropped is the one that watches the things not yet on fire. It is dropped without a decision, without a meeting, without anyone noticing. It simply stops being done.&lt;/p&gt;

&lt;p&gt;The doctor does not cancel the follow-up visit because the patient feels well. It is when the patient feels well that the visit matters most, because that is the only window in which a silent drift can be caught before it becomes an event. Inside organisations, this logic is inverted. We reopen decisions only once they have already cost us, which is the most expensive moment to do it and the least useful.&lt;/p&gt;

&lt;h2 id=&quot;the-half-life-of-a-decision-is-shorter-than-the-record-suggests&quot;&gt;The half-life of a decision is shorter than the record suggests&lt;/h2&gt;

&lt;p&gt;Most leaders overestimate how long a technical decision stays valid, because the record does not age and they read the record instead of the reality.&lt;/p&gt;

&lt;p&gt;A signed decision looks permanent. The PDF does not yellow. The line in the register does not move. So the mind files it as done, and done feels like forever. But the decision was never the PDF. It was a bet placed on a particular configuration of people, tools, costs, and assumptions, and that configuration starts decaying the day after the signature. The half-life is not measured in years. In a company that is growing, hiring, losing people, and changing direction, the conditions under which a decision made sense can be unrecognisable in twelve to eighteen months.&lt;/p&gt;

&lt;p&gt;There is a useful discipline here borrowed straight from chronic care. Doctors do not ask whether the diabetes is gone. They ask what the markers say now, against the markers from the last visit, and whether the gap is acceptable. The question is never “is this still true forever”. The question is “is this still true today, and by how much has it moved”. A decision deserves the same framing. Not “was this a good call” but “does this call still hold under conditions that have certainly changed”.&lt;/p&gt;

&lt;p&gt;The danger of the permanent-looking record is that it suppresses the question entirely. Nobody asks whether the vendor still fits, because the vendor question is closed, it says so right there in the register. Closure is comfortable. It is also the exact mechanism by which good decisions rot in plain sight.&lt;/p&gt;

&lt;h2 id=&quot;decisions-have-biomarkers-and-almost-nobody-reads-them&quot;&gt;Decisions have biomarkers, and almost nobody reads them&lt;/h2&gt;

&lt;p&gt;Every decaying decision sends early signals long before it fails, and the signals are usually sitting in data you already have.&lt;/p&gt;

&lt;p&gt;In medicine, a biomarker is a measurable proxy for a state you cannot see directly. Blood sugar for metabolic control. A handful of numbers that tell you the equilibrium is slipping before the patient feels anything. Technical decisions throw off the same kind of proxies, and they are rarely watched as such. The number of people who can still operate a given system, trending toward one, then zero. The age of the last meaningful update from a vendor. The growing distance between the volume a tool was chosen for and the volume it now carries. The frequency of small workarounds the team has quietly built to keep something alive.&lt;/p&gt;

&lt;p&gt;None of these is an incident. Each is a biomarker. Read together, at a fixed interval, they tell you which of your settled decisions are drifting toward a silent recurrence. The problem is not that the signals are hidden. The problem is that nobody has the job of taking the reading, so the signals accumulate unobserved until one of them crosses a threshold loudly enough to become a crisis.&lt;/p&gt;

&lt;p&gt;A follow-up protocol is, at bottom, a decision about which biomarkers to watch and how often to take the reading. It does not require new dashboards or new tooling. It requires that someone be named to look, on a schedule, at numbers that are already there.&lt;/p&gt;

&lt;h2 id=&quot;what-a-follow-up-protocol-for-decisions-actually-looks-like&quot;&gt;What a follow-up protocol for decisions actually looks like&lt;/h2&gt;

&lt;p&gt;The fix is not heroic. It is boring, and that is its strength.&lt;/p&gt;

&lt;p&gt;Take the register of significant technical decisions you most likely already have, and add one column to it: a review date. Then name a person, not a committee, who owns that date. The reviewer’s job is not to defend the original decision, because they did not make it. Their job is to reopen the file at the appointed time and ask what has changed underneath it. Who has left. What the vendor has become. Whether the assumptions still hold. Whether the people who can operate the thing still work here. The output is short: still valid, watch closely, or reopen for real.&lt;/p&gt;

&lt;p&gt;The value is not in the paperwork. It is in the existence of a person whose explicit mandate is to look at what is not currently broken. That mandate has to be protected from the gravity of the urgent, which means it cannot be the same person who runs the operation, and it works best when the reviewer has the distance not to be defending their own past call. This is, incidentally, where an outside eye earns its place: someone who did not make the original decision, has nothing to protect, and can read the silent drift the people living inside the system can no longer see.&lt;/p&gt;

&lt;p&gt;A technical decision that is never reopened is not a stable decision. It is a decision whose expiry date everyone has forgotten. The register tells you it was made. It cannot tell you whether it still holds. Only a reopening can do that, and only if someone was given the job before the incident, not after.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Haute Autorité de Santé, &lt;em&gt;Parcours de soins du patient adulte vivant avec un diabète de type 2 (guide)&lt;/em&gt;, 2025. https://www.has-sante.fr/jcms/p_3634754/fr/parcours-de-soins-du-patient-adulte-vivant-avec-un-diabete-de-type-2&lt;/li&gt;
  &lt;li&gt;Haute Autorité de Santé, &lt;em&gt;Diabète de type 2 : six épisodes de soins sous surveillance&lt;/em&gt;, 2025. https://www.has-sante.fr/jcms/pprd_2974646/fr/diabete-de-type-2-six-episodes-de-soins-sous-surveillance&lt;/li&gt;
  &lt;li&gt;Institut national du cancer, &lt;em&gt;Cancers du sein : le suivi après les traitements&lt;/em&gt;. https://www.e-cancer.fr/Patients-et-proches/Les-cancers/Cancer-du-sein/Le-suivi&lt;/li&gt;
  &lt;li&gt;Inserm, &lt;em&gt;Activité physique : Prévention et traitement des maladies chroniques (expertise collective)&lt;/em&gt;, 2019. https://www.ipubli.inserm.fr/handle/10608/9690&lt;/li&gt;
  &lt;li&gt;World Health Organization, &lt;em&gt;Noncommunicable Diseases (NCD) Management&lt;/em&gt;. https://www.who.int/europe/teams/ncd-management&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>Restoring Without Erasing</title>
      <link href="https://francois.aichelbaum.com/2026/06/23/restoring-without-erasing" />
      <updated>2026-06-23T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/06/23/restoring-without-erasing</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#a-damaged-painting-and-a-legacy-system-pose-the-same-question&quot; id=&quot;markdown-toc-a-damaged-painting-and-a-legacy-system-pose-the-same-question&quot;&gt;A Damaged Painting and a Legacy System Pose the Same Question&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-original-state-is-a-myth-that-destroys-what-it-touches&quot; id=&quot;markdown-toc-the-original-state-is-a-myth-that-destroys-what-it-touches&quot;&gt;The Original State Is a Myth That Destroys What It Touches&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#preventive-conservation-acts-on-the-environment-not-the-work&quot; id=&quot;markdown-toc-preventive-conservation-acts-on-the-environment-not-the-work&quot;&gt;Preventive Conservation Acts on the Environment, Not the Work&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#brandi-and-the-venice-charter-wrote-the-rules-executives-are-missing&quot; id=&quot;markdown-toc-brandi-and-the-venice-charter-wrote-the-rules-executives-are-missing&quot;&gt;Brandi and the Venice Charter Wrote the Rules Executives Are Missing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-pentimento-always-resurfaces&quot; id=&quot;markdown-toc-the-pentimento-always-resurfaces&quot;&gt;The Pentimento Always Resurfaces&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-luxury-house-taught-me-what-harmonizing-without-erasing-looks-like&quot; id=&quot;markdown-toc-a-luxury-house-taught-me-what-harmonizing-without-erasing-looks-like&quot;&gt;A Luxury House Taught Me What Harmonizing Without Erasing Looks Like&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-ceos-job-is-to-choose-the-posture-not-to-hold-the-brush&quot; id=&quot;markdown-toc-the-ceos-job-is-to-choose-the-posture-not-to-hold-the-brush&quot;&gt;The CEO’s Job Is to Choose the Posture, Not to Hold the Brush&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-remains-when-the-varnish-settles&quot; id=&quot;markdown-toc-what-remains-when-the-varnish-settles&quot;&gt;What Remains When the Varnish Settles&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;Inheriting a legacy information system is the same ethical situation as inheriting a damaged painting: you must choose between an impossible return to the original state, a deliberate decision to stabilize without touching, or a visible, documented, reversible intervention. Art restorers formalized this choice sixty years ago. Most executives make it by accident, without knowing they are making it. The mature move is not to rebuild. It is to pick one of the three postures consciously, and to own it.&lt;/p&gt;

&lt;h2 id=&quot;a-damaged-painting-and-a-legacy-system-pose-the-same-question&quot;&gt;A Damaged Painting and a Legacy System Pose the Same Question&lt;/h2&gt;

&lt;p&gt;The question a restorer faces in front of a darkened canvas is not technical, it is moral: what am I allowed to change in something that was entrusted to me?&lt;/p&gt;

&lt;p&gt;I did not expect to find the clearest framework for legacy IT decisions in an art conservation studio. But watch what happens when a seventeenth-century painting arrives on the easel. The varnish has gone amber. Paint lifts at the edges. There is a loss, a lacuna, in the lower corner. The owner wants it back “like new.”&lt;/p&gt;

&lt;p&gt;The restorer hears that sentence the way I hear a board member say “let’s just rebuild the whole thing.” With professional patience, and a firm intention to do no such thing.&lt;/p&gt;

&lt;p&gt;Because the restorer knows there are exactly three honest answers. Return the work to its original state: seductive, and destructive, since that state no longer exists anywhere except in imagination. Stabilize the work without intervening: control the environment, stop the decay, touch nothing. Or intervene while leaving the intervention visible: fill the lacuna with a technique a trained eye can identify, document every gesture, use materials a future restorer can remove.&lt;/p&gt;

&lt;p&gt;Three postures. No fourth. Every legacy system decision I have reviewed in the last decade falls into one of these, or fails because it pretended a fourth existed.&lt;/p&gt;

&lt;h2 id=&quot;the-original-state-is-a-myth-that-destroys-what-it-touches&quot;&gt;The Original State Is a Myth That Destroys What It Touches&lt;/h2&gt;

&lt;p&gt;The first posture, returning to the original, is the one that ruins both paintings and companies, because the original state is a reconstruction, not a destination.&lt;/p&gt;

&lt;p&gt;In conservation, this is settled doctrine. Strip a painting back to what you believe was its first appearance and you must scrape away layers that became part of the work: the artist’s own later revisions, historic retouches, the surface chemistry of centuries. You do not recover the original. You manufacture a clean forgery of your own assumptions.&lt;/p&gt;

&lt;p&gt;The corporate equivalent is the full rebuild fantasy. The system is old, therefore the system must be remade, this time properly, the way it should have been built from the start. I have sat in meetings where this was presented as obvious hygiene. It rests on the same illusion as the over-cleaned canvas: that somewhere beneath the accumulated layers there is a pure design waiting to be liberated.&lt;/p&gt;

&lt;p&gt;There is not. The accumulated layers are the system. Twenty years of pricing exceptions, regulatory adaptations, client-specific workflows, integrations born from acquisitions: this is not dirt on top of the system, this is the institution’s memory written in executable form. A rebuild does not liberate the design. It discards the memory and keeps the assumptions of whoever wrote the migration spec, who typically arrived eight months ago.&lt;/p&gt;

&lt;p&gt;Notice also who proposes the return to origin. In conservation history, the great over-cleanings were rarely demanded by the people who lived with the works. They were sold by intervening parties with something to gain from the gesture: prestige, a signature campaign, a budget. The pattern transposes intact. The rebuild is almost never requested by the operations teams who run the system daily and know where its bodies are buried. It arrives from outside, packaged with a deck, priced with optimism, and timed to a sponsor’s tenure rather than to the system’s actual condition.&lt;/p&gt;

&lt;p&gt;Some of that memory deserves to go. Plenty of it is genuine grime. The point is not that everything old is sacred. The point is that “back to original” is never the real choice on the table. The real choice is always between the two remaining postures.&lt;/p&gt;

&lt;h2 id=&quot;preventive-conservation-acts-on-the-environment-not-the-work&quot;&gt;Preventive Conservation Acts on the Environment, Not the Work&lt;/h2&gt;

&lt;p&gt;The second posture has a name in museums, preventive conservation, and it is the most underrated decision available to a non-technical CEO.&lt;/p&gt;

&lt;p&gt;Museums learned long ago that the cheapest way to save a collection is to never let it need saving. Humidity control, stable temperature, filtered light, vibration management. The work itself is not touched. Its environment is engineered so that decay slows to a crawl. The Venice Charter of 1964, the founding international text of modern conservation, made permanent maintenance the first duty owed to a monument, before any restoration gesture.&lt;/p&gt;

&lt;p&gt;Translate that to an information system and you get a program nobody brags about at conferences: tested backups, patched dependencies, revoked accesses, monitored performance, documented interfaces, contracts that do not silently expire. None of it changes the system. All of it changes how fast the system degrades.&lt;/p&gt;

&lt;p&gt;Here is what I keep observing in mid-sized companies: the environment work is skipped precisely because it is invisible. A CEO under pressure wants to announce something. “We are rebuilding our platform” is an announcement. “We now test our backups weekly” is not. So capital flows to interventions while the environment drifts, and the drift quietly creates the emergency that will later justify a panicked rebuild.&lt;/p&gt;

&lt;p&gt;Choosing preventive conservation is not refusing to decide. It is a dated, signed, active decision: this system stays as it is, and we spend our money making sure it stops getting worse while we figure out what it actually contains. For a company in M&amp;amp;A uncertainty, in leadership transition, or simply without the cash for a safe intervention, it is frequently the only adult choice available. It deserves to be presented to boards as a strategy, not as an absence of one.&lt;/p&gt;

&lt;h2 id=&quot;brandi-and-the-venice-charter-wrote-the-rules-executives-are-missing&quot;&gt;Brandi and the Venice Charter Wrote the Rules Executives Are Missing&lt;/h2&gt;

&lt;p&gt;The third posture, intervening without erasing, was codified with a precision that puts most IT governance documents to shame, and the two founding texts are worth naming.&lt;/p&gt;

&lt;p&gt;Cesare Brandi, first director of Rome’s Istituto Centrale per il Restauro, published &lt;em&gt;Teoria del restauro&lt;/em&gt; in 1963. His theory holds restoration in tension between two demands that he refused to collapse into one: the aesthetic instance, the work as a thing of beauty that must remain readable as a whole, and the historical instance, the work as a document of everything that happened to it. A restoration that sacrifices either is a failure. From this tension he derived practical consequences: interventions must aim at the potential unity of the work without faking completeness, must remain recognizable on close inspection, and must stay reversible so that future knowledge can undo present error. The Italian school built on his thinking even institutionalized a technique, tratteggio, where losses are filled with fine parallel strokes: invisible at viewing distance, unmistakable up close. The repair participates in the whole and never lies about being a repair.&lt;/p&gt;

&lt;p&gt;One year later, the Venice Charter brought the same discipline to architecture and made it international law of the profession. Its restoration articles read like a checklist I wish every CTO transition plan had to satisfy. Restoration stops where conjecture begins. Replacements must integrate harmoniously yet remain distinguishable from the original, so the restoration does not falsify the evidence. The valid contributions of all periods must be respected, because unity of style is not the aim. And every campaign of work must produce precise documentation, archived and published.&lt;/p&gt;

&lt;p&gt;Now reread those principles as a system owner. Do not rewrite what you do not understand: stop where conjecture begins. Make every change traceable and visibly distinct from the inherited behavior: distinguishable, documented. Do not flatten the layers added by previous eras of the company in the name of stylistic purity: respect the contributions of all periods. Keep a record a successor can audit: publish the report.&lt;/p&gt;

&lt;p&gt;Sixty years ago, a profession that handles irreplaceable objects concluded that the ethical intervention is visible, humble, documented and reversible. The software industry, which handles objects that are merely expensive, still mostly ships the opposite.&lt;/p&gt;

&lt;h2 id=&quot;the-pentimento-always-resurfaces&quot;&gt;The Pentimento Always Resurfaces&lt;/h2&gt;

&lt;p&gt;Painters themselves left us the proof that buried decisions do not stay buried: conservators call it the pentimento.&lt;/p&gt;

&lt;p&gt;The word comes from the Italian for repentance. A pentimento is a change the artist made during the painting: a repositioned arm, a hat brim moved, a figure painted over. The revision is hidden under the final layer, and for decades it stays hidden. Then the covering paint grows transparent with age, or an X-ray sweeps the panel, and the first gesture comes back, a ghost under the composition. The National Gallery’s glossary notes that these ghosts are precious: they reveal how the work was actually made, and help establish what is original.&lt;/p&gt;

&lt;p&gt;Every information system of respectable age is full of pentimenti. The ERP rollout that stopped at sixty percent. The module built for a flagship client who left. The half-finished migration whose two halves still run side by side, reconciled nightly by a script one person understands. Each abandoned decision was painted over, not removed. And like their pictorial cousins, they resurface at the worst archaeological moments: under load, during an audit, in the data room of a due diligence.&lt;/p&gt;

&lt;p&gt;You can read this as a horror story. Restorers read it the other way: pentimenti are evidence, and evidence is an asset if you find it before it finds you. A serious assessment of a legacy system is exactly this kind of imaging work, X-raying the layers before deciding which posture to adopt. The companies that get into trouble are not the ones with pentimenti, which is to say all of them. They are the ones that commission a rebuild without ever putting the canvas under the lamp.&lt;/p&gt;

&lt;h2 id=&quot;a-luxury-house-taught-me-what-harmonizing-without-erasing-looks-like&quot;&gt;A Luxury House Taught Me What Harmonizing Without Erasing Looks Like&lt;/h2&gt;

&lt;p&gt;The longest lesson I received in applied conservation did not happen in a museum, it happened inside one of the great French luxury groups, on a harmonization program whose name I will keep to myself: the mechanics matter here, not the logo.&lt;/p&gt;

&lt;p&gt;The setting, simplified: a group whose subsidiaries had each grown their own systems, their own data habits, their own operational gestures. Years of autonomy had produced exactly what you would expect, richness and divergence in the same proportions. The group needed common ground: shared standards, interoperable data, processes that could be read across entities.&lt;/p&gt;

&lt;p&gt;The obvious playbook exists, and every large integrator will sell it to you by the kilo: define the single target model, declare every local variation a deviation, migrate everyone onto the standard, celebrate the decommissioning count. It is the restoration equivalent of stripping every canvas in the collection back to the same bright white ground. Clean, uniform, and a massacre.&lt;/p&gt;

&lt;p&gt;What made this program a formative experience is that it made the other choice, deliberately. The work started not with a target architecture but with something closer to a conservator’s condition report: understanding, entity by entity, what each local system actually encoded. Some divergences turned out to be accidents of history, tooling chosen because a vendor happened to call that year. Those could be harmonized without loss, the grime of the piece. Other divergences encoded the way a specific métier actually worked, constraints of a craft, of a market, of a client relationship that the local system had absorbed over years. Erase those and you would not be cleaning the subsidiary, you would be amputating it.&lt;/p&gt;

&lt;p&gt;So the program drew the line the way Brandi drew it: harmonize what carries no identity, preserve what does, and make the interventions reversible wherever the knowledge was incomplete. Standards were introduced as layers the entities adopted, not as solvents poured over their existing operations. Where a subsidiary’s specificity was real, the standard bent around it, and the bend was documented as a conscious decision rather than hidden as a guilty exception. The intervention stayed visible: anyone reading the program’s records could tell what had been changed, what had been kept, and why.&lt;/p&gt;

&lt;p&gt;Two things struck me from the executive side of that program. First, the discipline was harder to sell internally than a clean-slate plan would have been, because its success looked undramatic: nothing collapsed, nothing flashy got inaugurated, the singularities were still there, now legible and connected instead of opaque and isolated. Preventive conservation never photographs well. Second, the discipline aged remarkably. Decisions that bent the standard around a real specificity did not come back as regrets. The few places where uniformity had been forced for elegance were precisely where friction kept resurfacing, pentimenti of the program itself, reminders that what you paint over does not disappear.&lt;/p&gt;

&lt;p&gt;I left with a conviction that has since survived contact with much smaller companies: the quality of a harmonization is not measured by how uniform the result is. It is measured by whether the people closest to the work still recognize their craft in the system afterwards. Uniformity is cheap to specify and brutal to live with. Legibility is the actual prize.&lt;/p&gt;

&lt;h2 id=&quot;the-ceos-job-is-to-choose-the-posture-not-to-hold-the-brush&quot;&gt;The CEO’s Job Is to Choose the Posture, Not to Hold the Brush&lt;/h2&gt;

&lt;p&gt;You inherited a system you did not build, the way a museum inherits a collection it did not paint, and nobody expects the museum director to retouch canvases.&lt;/p&gt;

&lt;p&gt;What the institution does expect from its director is the ethical choice: which works get stabilized, which get restored, what the house rules of intervention are, and the budget honesty that goes with each. That is precisely the part of the legacy IT decision that cannot be delegated to vendors, because every vendor at your table earns money on exactly one of the three postures and will argue for it with conviction.&lt;/p&gt;

&lt;p&gt;This is also why the choice has to be explicit and written down. An implicit posture is not a posture, it is a drift. The company that never formally chose conservation still practices it, badly: no environment work, no condition report, just neglect wearing the costume of prudence. The company that never formally chose intervention still intervenes, badly: a hundred undocumented patches a year, each invisible, each irreversible, none signed. The three postures exist whether or not you choose one. The only variable under your control is whether the posture was decided, by you, with the costs in front of you, or inherited from a thousand small defaults nobody owns.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://images.unsplash.com/photo-1700144387984-44122b36998c&quot; alt=&quot;Old master painting, National Historical Museum of Sweden&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-remains-when-the-varnish-settles&quot;&gt;What Remains When the Varnish Settles&lt;/h2&gt;

&lt;p&gt;The restorer’s ethic compresses into questions a non-technical executive can ask without writing a line of code, and they are sturdier than most steering committees.&lt;/p&gt;

&lt;p&gt;Before any intervention on the system you inherited: do we know what is varnish and what is paint, which layers are grime and which are memory? Has anyone put the canvas under the lamp, or are we deciding on the basis of the frame? Is the proposed change reversible, and if not, who signed the sentence that says we accept never coming back? Will the intervention stay visible, documented, distinguishable, or will the next leadership team find our choices disguised as original architecture? And the question that the whole market is built to keep you from asking: is the right move, this year, to touch the work at all, or to fix the thermostat and watch it stop degrading?&lt;/p&gt;

&lt;p&gt;On vous a dit qu’un SI vieux se refait, as I keep hearing in French boardrooms: an old system gets rebuilt, everyone knows that. The best restorers know something else. They know when not to intervene, and when intervening, how to do it without erasing the very thing they were hired to save. The maturity of a CEO in front of a legacy system is the same maturity, transposed: not mastering the brush, but owning the choice of posture, consciously, in writing, with its costs on the table.&lt;/p&gt;

&lt;p&gt;The painting does not need you to be a painter. It needs you to decide, and to leave a trace of having decided.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;ICOMOS, &lt;em&gt;International Charter for the Conservation and Restoration of Monuments and Sites (The Venice Charter)&lt;/em&gt;, 1964. https://civvih.icomos.org/wp-content/uploads/2022/03/Charter-of-Venice_1964.pdf&lt;/li&gt;
  &lt;li&gt;Wikipedia, &lt;em&gt;Cesare Brandi&lt;/em&gt;, on the life and restoration theory of the author of &lt;em&gt;Teoria del restauro&lt;/em&gt; (1963). https://en.wikipedia.org/wiki/Cesare_Brandi&lt;/li&gt;
  &lt;li&gt;The National Gallery, London, &lt;em&gt;Glossary: Pentimento&lt;/em&gt;. https://www.nationalgallery.org.uk/paintings/glossary/pentimento&lt;/li&gt;
  &lt;li&gt;Chiara L. M. Occelli, &lt;em&gt;The tradition of Brandi&lt;/em&gt;, ICCROM. https://www.iccrom.org/sites/default/files/publications/2020-05/the_tradition_of_brandi.pdf&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>Conducting Without an Instrument</title>
      <link href="https://francois.aichelbaum.com/2026/06/16/conducting-without-an-instrument" />
      <updated>2026-06-16T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/06/16/conducting-without-an-instrument</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#the-conductor-plays-nothing&quot; id=&quot;markdown-toc-the-conductor-plays-nothing&quot;&gt;The Conductor Plays Nothing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#audiation-hearing-without-playing&quot; id=&quot;markdown-toc-audiation-hearing-without-playing&quot;&gt;Audiation: Hearing Without Playing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-a-guest-conductor-does-before-a-difficult-concert&quot; id=&quot;markdown-toc-what-a-guest-conductor-does-before-a-difficult-concert&quot;&gt;What a Guest Conductor Does Before a Difficult Concert&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-ceo-who-tries-to-learn-the-cello&quot; id=&quot;markdown-toc-the-ceo-who-tries-to-learn-the-cello&quot;&gt;The CEO Who Tries to Learn the Cello&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-function-survives-the-practice&quot; id=&quot;markdown-toc-the-function-survives-the-practice&quot;&gt;The Function Survives the Practice&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-concert-belongs-to-whoever-plays-it&quot; id=&quot;markdown-toc-the-concert-belongs-to-whoever-plays-it&quot;&gt;The Concert Belongs to Whoever Plays It&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;A conductor doesn’t play any instrument. Not the cello, not the bassoon, not the oboe. The absence is not a deficiency. It is the condition that allows the function to exist. The non-technical CEO who tries to learn how to code so that they can decide on the code is, by the same mechanism, abandoning the seat from which a decision can be made. Mastery of the practice is not the prerequisite for the arbitration of the practice. Listening is.&lt;/p&gt;

&lt;h2 id=&quot;the-conductor-plays-nothing&quot;&gt;The Conductor Plays Nothing&lt;/h2&gt;

&lt;p&gt;A symphony orchestra is a room full of virtuosos. The first violin has spent twenty years refining a bow stroke. The bassoonist knows the twelve millimeters of their reed by heart. The percussionist can place a cymbal crash inside a measure to within a fortieth of a second. Every chair is occupied by an instrumentalist whose technique took decades to build.&lt;/p&gt;

&lt;p&gt;None of them conducts.&lt;/p&gt;

&lt;p&gt;The conductor stands in front of all of them, baton in hand, and produces no sound. Bruno Walter, one of the great conductors of the twentieth century, wrote in &lt;em&gt;Of Music and Music-Making&lt;/em&gt; (W. W. Norton, 1961) that the baton emits nothing. It points. It decides where the sound goes. The conductor’s function is the arbitration of a collective trajectory, not the execution of a melodic line.&lt;/p&gt;

&lt;p&gt;This is not a polite division of labor. It is a structural condition. A conductor who tried to play the cello during the performance would lose the orchestra in the second measure. The gesture of playing and the gesture of conducting are incompatible inside the same second. You cannot hold a bow at three hundred and fifty notes per minute and a baton at the same time. One excludes the other.&lt;/p&gt;

&lt;p&gt;For most of the nineteenth century, this was contested. Conductors were expected to be the best instrumentalist of the orchestra, the one who had occupied every chair before being entrusted with the podium. The twentieth century took that idea apart. By the time Walter wrote his book, it had become widely accepted in conservatories that the discipline of conducting was its own discipline, with its own training, its own ear, and its own demands. Mastery of an instrument was no longer the gateway. Some great conductors had been pianists, others had been violinists, others had begun their training as singers. The seat had stopped requiring a particular biography.&lt;/p&gt;

&lt;p&gt;What the seat required was something else. Something harder to name. Something that did not show up in the practice rooms.&lt;/p&gt;

&lt;h2 id=&quot;audiation-hearing-without-playing&quot;&gt;Audiation: Hearing Without Playing&lt;/h2&gt;

&lt;p&gt;Edwin Gordon, the American music education theorist (1927-2015), gave that capacity a name. He called it &lt;em&gt;audiation&lt;/em&gt;. He developed the concept in &lt;em&gt;Learning Sequences in Music: A Contemporary Music Learning Theory&lt;/em&gt; (GIA Publications, first edition 1980, multiple revised editions through the 2000s and 2010s) and refined it across forty years of work in music cognition.&lt;/p&gt;

&lt;p&gt;Audiation, in Gordon’s formulation, is the capacity to hear music inwardly when no music is physically being played, and to comprehend music heard. It is not memory. It is not imagination. It is a structural mental operation in which a person can hold the architecture of a piece in their mind, perceive its harmonic and rhythmic logic, anticipate its movement, and notice when an actual performance deviates from what the piece should be.&lt;/p&gt;

&lt;p&gt;A musician who can audiate well can read a score and hear the piece without an instrument in their hands. They can sit in a concert and notice that a phrase is taken too slowly even though the same phrase by the same orchestra was taken at the right tempo yesterday. They can detect, in real time, that something is off, before the off-ness becomes obvious to the rest of the room.&lt;/p&gt;

&lt;p&gt;This is the capacity that defines a conductor. Not the capacity to play. The capacity to audiate.&lt;/p&gt;

&lt;p&gt;Gordon’s work was developed in the context of music pedagogy. His point was that audiation can be cultivated. It is not a gift that some have and others lack. It is a trainable mental discipline. Children who are exposed early to varied musical material, in his framework, develop more refined audiation than children whose musical exposure is poor. Adults can also develop it, although more slowly, by deliberate listening, by score reading, by working with people who already have the capacity.&lt;/p&gt;

&lt;p&gt;The implication, taken seriously, reframes a wide swath of professional life. The transferability is not obvious in Gordon’s text, but it does not take much imagination to apply. Any domain where collective output depends on the coordinated work of many specialists, and where someone has to arbitrate the whole, involves audiation. The architect of a building does not lay the bricks. They audiate the building. The film director does not operate the camera, does not write the score, does not sew the costumes. They audiate the film. The hospital chief of staff does not perform the surgery. They audiate the institution.&lt;/p&gt;

&lt;p&gt;And the chief executive of a company does not write the code. Or build the warehouse. Or operate the call center. Or close the books. They audiate the company.&lt;/p&gt;

&lt;h2 id=&quot;what-a-guest-conductor-does-before-a-difficult-concert&quot;&gt;What a Guest Conductor Does Before a Difficult Concert&lt;/h2&gt;

&lt;p&gt;A few years ago, I worked as an interim infrastructure lead inside a French SaaS scale-up. The company sold video APIs to developers. The product was strong, the engineering team was talented, and the platform was growing fast enough that the choices made in the first two years were no longer adequate for the third year. Monitoring was incomplete. Deployments were manual. The architecture had been written for a customer base of a few hundred developers and was now serving thousands. The difficult concert was already on the calendar: the platform had to be industrialized, and it had to be industrialized in months, not years.&lt;/p&gt;

&lt;p&gt;I came in as a guest conductor. The metaphor is not decorative. I was not the chief technology officer of the company. I was not going to become the chief technology officer of the company. I had been asked to come in, prepare the orchestra for the concert, conduct the concert, and leave. The contract was scoped that way from the first day.&lt;/p&gt;

&lt;p&gt;I worked mostly alone. I built the monitoring stack that allowed the team to see, for the first time, what was actually happening on the platform in real time. I rewrote the deployment pipeline so that pushing to production was no longer a multi-hour manual procedure performed by one of two people who knew how. I refactored the architecture into a shape that the rest of the engineering team could read, modify, and operate without me.&lt;/p&gt;

&lt;p&gt;The numbers moved. Availability went from 95% to 99.95%. Deployment to a new point of presence went from several hours of manual work to under fifteen minutes of automated work. The platform stopped being fragile.&lt;/p&gt;

&lt;p&gt;When I left, the company recruited four people to take over the role I had been filling. Four. Not one. The work I had been doing alone, in compressed time, was structured to be picked up by a permanent team. The score I had assembled was readable. The passages I had drilled were workable. The orchestra could play the concert without me.&lt;/p&gt;

&lt;p&gt;That is the function of a guest conductor. To accord the orchestra. To work the difficult passages. To hand back the keys. To leave.&lt;/p&gt;

&lt;p&gt;I am writing this in 2026, several years after the mission ended. The company is still operating. The platform they took over still runs. The four people who replaced me have grown into a larger team. None of this is my work anymore. None of it ever was, in a permanent sense. The concert was theirs to play. My function was to make sure it could be played.&lt;/p&gt;

&lt;p&gt;The mechanism is not unique to that one mission. I have done variations of it inside other organizations, with different difficult concerts in front of them. Each time, the discipline is the same. Do not install yourself. Do not become the chief titular conductor. Prepare the orchestra. Conduct the difficult concert. Leave.&lt;/p&gt;

&lt;p&gt;The temptation to stay is real. There is always a reason to stay another quarter. There is always something else that could be tightened. The organization, having gotten used to the guest conductor, often offers to make the role permanent. The discipline is to refuse. The guest conductor who installs themselves becomes a different kind of figure entirely. They become a dependency. The orchestra stops learning to play without them. The whole point of the mission collapses.&lt;/p&gt;

&lt;h2 id=&quot;the-ceo-who-tries-to-learn-the-cello&quot;&gt;The CEO Who Tries to Learn the Cello&lt;/h2&gt;

&lt;p&gt;The mistake non-technical CEOs make is the symmetric one. They look at their technology organization, conclude that they cannot decide on it because they do not understand it, and decide to spend their time learning to play the cello. They take online courses. They follow internal technical reviews with growing intensity. They ask their CTO to explain microservices, then containers, then Kubernetes, then service meshes. They build, over months, a fragile vocabulary.&lt;/p&gt;

&lt;p&gt;At the end of that process, they have not become technologists. They have become non-technologists with a slightly larger lexicon. Their decisions on technology investments are not better. They are often worse, because the partial vocabulary creates the illusion of mastery, and the illusion of mastery silences the question that should have been asked first.&lt;/p&gt;

&lt;p&gt;Worse, while they were busy trying to play the cello, they were not in the conductor’s seat. The function they should have been performing was empty. The technology organization, deprived of arbitration, drifted. The first violin took over the tempo because nobody was holding it. The orchestra became less ensemble and more aggregate.&lt;/p&gt;

&lt;p&gt;The error is not laziness. It is misplaced diligence. The non-technical CEO who tries to learn to code believes they are doing the responsible thing. They are doing the wrong thing, more responsibly than most.&lt;/p&gt;

&lt;p&gt;The right thing is to develop audiation of the technology organization. To learn to hear how a healthy technical conversation sounds, what a credible roadmap sounds like, where the voice of the architect should sit in the harmonic field, when the operations chair has gone flat. This is a different discipline. It involves listening to many technologists, over time, in many contexts. It involves reading not the code but the patterns of how technology decisions are made. It involves working, when needed, with people who can play and conduct fluently enough to bring the CEO’s ear up.&lt;/p&gt;

&lt;p&gt;Audiation, in Gordon’s framework, is trainable. The CEO can develop it. They cannot develop it by learning to play the cello. They develop it by listening, by being exposed to varied technical material, by working with people who already have it.&lt;/p&gt;

&lt;h2 id=&quot;the-function-survives-the-practice&quot;&gt;The Function Survives the Practice&lt;/h2&gt;

&lt;p&gt;There is a phenomenon Gordon described, although he did not put it in these terms. The capacity to audiate can survive the loss of the capacity to play. A pianist who can no longer play, because of injury or illness or simply because they stopped practicing thirty years ago, may still be able to read a score and hear the piece. The gesture is gone. The audiation remains. In some cases, the audiation is sharper for being detached from the gesture, because the practitioner is no longer judging the piece by what their fingers can produce. They judge it by what it should be.&lt;/p&gt;

&lt;p&gt;For the non-technical CEO, this is the news they did not know they needed. They do not need to acquire the gesture of writing code. They need to develop the audiation of a technology organization. The two are independent capacities. The function does not require the practice. In some cases, the function is even better performed by someone who never had the practice, because they are not tempted to second-guess the first violin by playing along with them.&lt;/p&gt;

&lt;p&gt;The first violin should be left at the first chair. The CEO should hold the baton.&lt;/p&gt;

&lt;p&gt;That is the whole point.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/conducting-without-an-instrument-cover.jpg&quot; alt=&quot;Conducting podium and orchestra in rehearsal&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-concert-belongs-to-whoever-plays-it&quot;&gt;The Concert Belongs to Whoever Plays It&lt;/h2&gt;

&lt;p&gt;The conductor does not play the concert. The orchestra plays the concert. When the music is good, the conductor has done their job. When the music is bad, the conductor has not done their job. The conductor’s function is judged by the sound, not by the manuscript.&lt;/p&gt;

&lt;p&gt;So is the CEO’s. The technology organization produces the work. The CEO does not produce the technology. When the technology is sound, the CEO has done their job. When it is incoherent, the CEO has not. It is not the engineers who get judged at that level. It is the seat from which the tempo was held, or not held.&lt;/p&gt;

&lt;p&gt;A guest conductor, brought in for a difficult concert, sees this from inside. Most CEOs do not have a guest conductor in their lives. The few who do, in my experience, leave the mission with a sharper ear than they came in with. Not because they were taught to play. Because they were shown what it sounds like when the orchestra plays well.&lt;/p&gt;

&lt;p&gt;That is what is on offer here. Not a cello lesson. An ear training.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Bruno Walter, &lt;em&gt;Of Music and Music-Making&lt;/em&gt;, W. W. Norton &amp;amp; Company, 1961.&lt;/li&gt;
  &lt;li&gt;Edwin E. Gordon, &lt;em&gt;Learning Sequences in Music: A Contemporary Music Learning Theory&lt;/em&gt;, GIA Publications, 1980 (revised editions through 2012).&lt;/li&gt;
  &lt;li&gt;Edwin E. Gordon, &lt;em&gt;Audiation&lt;/em&gt;, Music Educators Journal, 1985-2000.&lt;/li&gt;
  &lt;li&gt;Wilhelm Furtwängler, &lt;em&gt;Notebooks 1924-1954&lt;/em&gt;, ed. Michael Tanner, Quartet Books, 1989.&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>The Story You Were Sold About Your System</title>
      <link href="https://francois.aichelbaum.com/2026/06/09/the-story-you-were-sold-about-your-system" />
      <updated>2026-06-09T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/06/09/the-story-you-were-sold-about-your-system</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#reports-do-not-lie-they-are-narrated&quot; id=&quot;markdown-toc-reports-do-not-lie-they-are-narrated&quot;&gt;Reports do not lie. They are narrated.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#wayne-booth-gave-us-the-word-in-1961-we-never-applied-it-to-the-audit-report&quot; id=&quot;markdown-toc-wayne-booth-gave-us-the-word-in-1961-we-never-applied-it-to-the-audit-report&quot;&gt;Wayne Booth gave us the word in 1961. We never applied it to the audit report.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#why-technical-reports-escape-the-unreliable-narrator-grid&quot; id=&quot;markdown-toc-why-technical-reports-escape-the-unreliable-narrator-grid&quot;&gt;Why technical reports escape the unreliable narrator grid&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-luxury-group-that-did-not-know-which-side-to-grab&quot; id=&quot;markdown-toc-the-luxury-group-that-did-not-know-which-side-to-grab&quot;&gt;The luxury group that did not know which side to grab&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-detail-that-does-not-fit&quot; id=&quot;markdown-toc-the-detail-that-does-not-fit&quot;&gt;The detail that does not fit&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-changes-when-a-ceo-becomes-kujan&quot; id=&quot;markdown-toc-what-changes-when-a-ceo-becomes-kujan&quot;&gt;What changes when a CEO becomes Kujan&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#sources&quot; id=&quot;markdown-toc-sources&quot;&gt;Sources&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;An information system never lies to its CEO. It is narrated to its CEO. Every audit, every dashboard, every internal report is a deposition, not a statement of fact. We apply the unreliable narrator grid to journalism, to courtroom testimony, to memoir, without any trouble at all. We refuse to apply it to the technical report we just commissioned, because we believe the technical report is somehow different. It is not.&lt;/p&gt;

&lt;h2 id=&quot;reports-do-not-lie-they-are-narrated&quot;&gt;Reports do not lie. They are narrated.&lt;/h2&gt;

&lt;p&gt;When a CEO opens an IT audit, the reading posture is almost always the same. The document is treated as a state of the system, not as the deposition of the person who wrote it. The figures are scanned. The risk matrix is glanced at. The conclusion is internalized. And the entire reading is done in a frame that assumes the author had no stake, no angle, no positioning interest.&lt;/p&gt;

&lt;p&gt;That frame is wrong. The author always has a stake. Not because auditors are dishonest. Because auditors are human, embedded in a market, paid by someone, scored by someone, recruited again by someone. Every audit is written knowing who will read it and who will commission the next one.&lt;/p&gt;

&lt;p&gt;This is not corruption. It is positioning. The same word, the same finding, the same recommendation can be phrased twenty ways. Each phrasing is a choice. Each choice carries a small directional vector. Twenty small vectors aligned in the same direction become a story. The CEO reads the story and calls it a state of the system.&lt;/p&gt;

&lt;h2 id=&quot;wayne-booth-gave-us-the-word-in-1961-we-never-applied-it-to-the-audit-report&quot;&gt;Wayne Booth gave us the word in 1961. We never applied it to the audit report.&lt;/h2&gt;

&lt;p&gt;The literary critic Wayne C. Booth defined the unreliable narrator in &lt;em&gt;The Rhetoric of Fiction&lt;/em&gt; in 1961. A narrator, Booth wrote, is reliable when he speaks for or acts in accordance with the norms of the work, and unreliable when he does not. The definition was technical, careful, and meant for fiction. It traveled. It traveled to cinema, to non-fiction memoir, to legal testimony analysis, to oral history.&lt;/p&gt;

&lt;p&gt;It never traveled to the corporate technical artifact.&lt;/p&gt;

&lt;p&gt;Read a critical review of a presidential biography, and you will see the unreliable narrator grid applied paragraph by paragraph. Watch a film studies seminar discuss Bryan Singer and Christopher McQuarrie’s 1995 film &lt;em&gt;The Usual Suspects&lt;/em&gt;, and you will see the same grid applied to Verbal Kint’s voiceover from minute one. Open a courtroom transcript, and you will see attorneys train juries to look for the gap between what the witness says and what the witness has reason to say.&lt;/p&gt;

&lt;p&gt;Now open an IT audit. Open the quarterly system review. Open the slide deck the integrator presented at the last steering committee. Where is the unreliable narrator grid? Nobody applies it. Not the CEO. Not the CFO. Not the board. The audit is treated as a state, and the state is acted upon.&lt;/p&gt;

&lt;p&gt;This asymmetry is not a small thing. It is the central blind spot of executive decision-making on technical matters. A CEO who would never accept a single-source story from a journalist, and who would interrogate any witness in a deal negotiation for hidden interest, accepts the audit report as if it had no narrator at all.&lt;/p&gt;

&lt;h2 id=&quot;why-technical-reports-escape-the-unreliable-narrator-grid&quot;&gt;Why technical reports escape the unreliable narrator grid&lt;/h2&gt;

&lt;p&gt;There are three reasons the grid does not get applied, and all three are worth naming.&lt;/p&gt;

&lt;p&gt;The first reason is that technical reports use the visual codes of objectivity. Numbers. Tables. Maturity matrices on a five-point scale. The visual codes mimic the look of measurement, and measurement is culturally coded as neutral. The CEO who would smell positioning in a paragraph of prose loses the reflex when the same positioning is hidden behind a green-yellow-red column.&lt;/p&gt;

&lt;p&gt;The second reason is that the CEO is, by self-assessment, not technical. The lack of subject matter expertise creates a reading posture that is structurally deferential. The audit author is the expert. The expert is treated as the source. The narrator-as-source is exactly what Booth told us, in 1961, to never assume in any narrated artifact.&lt;/p&gt;

&lt;p&gt;The third reason is more subtle. It is that the alternative is exhausting. To read an audit report as a deposition is to commit to the work of reading between the lines. It is to ask who paid for the work, who commissioned the framing, who chose the questions, who decided which findings would be in the executive summary and which would be in appendix C. Most executive readers do not have the time, the inclination, or the protected attention to do that. They want a state. They are given a story.&lt;/p&gt;

&lt;h2 id=&quot;the-luxury-group-that-did-not-know-which-side-to-grab&quot;&gt;The luxury group that did not know which side to grab&lt;/h2&gt;

&lt;p&gt;I spent some time, a few years ago, inside a global luxury group trying to harmonize a single technical standard across its subsidiaries. The standard was internal. It was supposed to be the same in Paris, in Milan, in Hong Kong, in New York. It was not.&lt;/p&gt;

&lt;p&gt;Each subsidiary told me, over several months, a coherent version of how their implementation of the standard worked, why it deviated from the others, and why their deviation was the legitimate one. The CTO of one subsidiary explained that historical sourcing constraints made his version the original. The CTO of another explained that volume scale forced his version to be the reference. A third explained that regulatory pressure in his geography made his deviation a compliance requirement, not a deviation.&lt;/p&gt;

&lt;p&gt;Four versions. Four internal coherences. None describing the same thing.&lt;/p&gt;

&lt;p&gt;For months, the central architecture team tried to broker consensus. The brokering followed the natural pattern. Workshops. Comparative documents. Side-by-side tables. Joint sessions. The pattern produced something predictable. Each subsidiary, when asked to describe the standard, doubled down on its own version, because each subsidiary had a deposition to defend.&lt;/p&gt;

&lt;p&gt;What ended the deadlock was not consensus. It was not a vote. It was not a synthesis.&lt;/p&gt;

&lt;p&gt;It was a formal mandate.&lt;/p&gt;

&lt;p&gt;A central architecture committee, convened with formal sponsorship from the group’s executive committee, ruled on the standard. Not by aggregating the four versions. By stating, with authority and on the record, what the standard would be from a defined date forward. The committee did not ask the subsidiaries which version they preferred. The committee stated which version would hold.&lt;/p&gt;

&lt;p&gt;The result was immediate. The subsidiaries did not love it. Two of them filed structured objections. But the four narratives collapsed at the moment the standard became a mandate. The story each subsidiary had been telling itself, with full internal coherence, lost its narrative authority because a different authority had been formally constituted.&lt;/p&gt;

&lt;p&gt;This is the deep mechanism. Narrators hold their narrative as long as nobody else holds anything. A formal mandate, properly sponsored and properly documented, takes the narration away from the narrators. The standard stops being told. It becomes stated.&lt;/p&gt;

&lt;p&gt;The CEO who was watching this from a distance learned something he had not learned in twenty years of running the group. The fight was not between four technical positions. The fight was over who held the right to narrate the standard. The committee did not win on technical grounds. It won by becoming the legitimate narrator.&lt;/p&gt;

&lt;h2 id=&quot;the-detail-that-does-not-fit&quot;&gt;The detail that does not fit&lt;/h2&gt;

&lt;p&gt;In Bryan Singer’s film, Detective Dean Kujan listens to Verbal Kint’s story for the entire runtime. The story is internally coherent. The witnesses he can check check out. The narrative does not snag. Kujan validates, in his own mind, almost every beat of it.&lt;/p&gt;

&lt;p&gt;What breaks the story is not a contradiction in the story. It is a detail in the room.&lt;/p&gt;

&lt;p&gt;A coffee cup falls. The detective looks down. He looks at the bulletin board behind his chair, sees the names of cities and people that match too perfectly the names Verbal Kint just produced. The detail that was always in the room, that Kujan had been looking at and not seeing, suddenly becomes the only thing that matters.&lt;/p&gt;

&lt;p&gt;The unreliable narrator does not get caught by interrogating the narration. He gets caught by stopping the interrogation and looking at what was always already in the room.&lt;/p&gt;

&lt;p&gt;This is the operational lesson for a CEO reading a technical report. The most useful work is not to demand more reports, more audits, more sources, more triangulation. Triangulation gives you three coherent stories. The most useful work is to slow down at the detail that does not fit, the figure that does not align, the silence in the report on a subject that should obviously be there.&lt;/p&gt;

&lt;p&gt;The technical artifact almost always contains the detail that does not fit. It is almost never in the executive summary. It is almost always in a footnote, in an appendix, in a sentence that begins with “we did not have access to” or “this dimension was out of scope”. The CEO who learns to read those sentences first learns more in fifteen minutes than the executive summary can give in two hours.&lt;/p&gt;

&lt;h2 id=&quot;what-changes-when-a-ceo-becomes-kujan&quot;&gt;What changes when a CEO becomes Kujan&lt;/h2&gt;

&lt;p&gt;The transformation I am describing is not technical. It is a reading posture.&lt;/p&gt;

&lt;p&gt;A CEO who reads a technical report as a state of the system will, over years, accumulate a series of decisions taken inside narratives constructed by people whose interests were never on the table. The decisions will look defensible. They will be auditable. They will be presentable to a board. They will also, in aggregate, slowly diverge from any state of the system that exists outside the narration.&lt;/p&gt;

&lt;p&gt;A CEO who reads a technical report as a deposition stops doing that. Not because the CEO becomes paranoid. Because the CEO becomes a reader of the kind Booth described in 1961. A reader who assumes that every narrator has a position, and who treats the narration as a piece of evidence about the narrator as much as about the subject.&lt;/p&gt;

&lt;p&gt;This posture does not require technical expertise. It requires a frame. The same frame the CEO already uses on memoirs, on press releases, on courtroom testimony, on competitive intelligence about other companies. The same frame nobody currently applies to the artifacts produced inside the CEO’s own organization.&lt;/p&gt;

&lt;p&gt;Applying the frame inside the organization is what changes the decision quality. Not more audits. Not more dashboards. Not more cross-checking. A different kind of reading.&lt;/p&gt;

&lt;p&gt;The moment a CEO becomes Kujan, the room changes. The narrators sense it. The reports start to be written differently because the writers know they are being read as narrators, not as instruments. The dashboards become more honest, because the green-yellow-red is no longer accepted as a measurement and is instead questioned as a framing choice.&lt;/p&gt;

&lt;p&gt;This is the work. Not commissioning more. Reading what already exists with the grid that exists, and that we already use on every other narrated artifact we encounter.&lt;/p&gt;

&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Wayne C. Booth, &lt;em&gt;The Rhetoric of Fiction&lt;/em&gt;, 1961 (2nd ed. 1983). University of Chicago Press. https://press.uchicago.edu/ucp/books/book/chicago/R/bo5965941.html&lt;/li&gt;
  &lt;li&gt;Wayne C. Booth, &lt;em&gt;The Rhetoric of Fiction&lt;/em&gt;, 1961, digital archive (full text, see definition of reliable/unreliable narrator pp. 158-159). https://archive.org/details/rhetoricoffictio00boot&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;Unreliable narrator&lt;/em&gt;, encyclopedic article tracing the concept from Booth to its extension in film and television, 2026. https://en.wikipedia.org/wiki/Unreliable_narrator&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;Confirmation bias&lt;/em&gt;, encyclopedic article on the cognitive bias of selectively interpreting evidence consistent with prior expectations, 2026. https://en.wikipedia.org/wiki/Confirmation_bias&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;Authority bias&lt;/em&gt;, encyclopedic article on the tendency to attribute greater accuracy to authority figures, with reference to Milgram 1963, 2026. https://en.wikipedia.org/wiki/Authority_bias&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;The Usual Suspects&lt;/em&gt;, encyclopedic article on the 1995 film directed by Bryan Singer, screenplay by Christopher McQuarrie, 2026. https://en.wikipedia.org/wiki/The_Usual_Suspects&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>When Organizations Believe</title>
      <link href="https://francois.aichelbaum.com/2026/06/02/when-organizations-believe" />
      <updated>2026-06-02T00:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/06/02/when-organizations-believe</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#tartaria-is-a-mud-flood-that-never-happened&quot; id=&quot;markdown-toc-tartaria-is-a-mud-flood-that-never-happened&quot;&gt;Tartaria is a mud flood that never happened&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#anatoly-fomenko-built-a-chronology-in-which-most-of-history-was-invented&quot; id=&quot;markdown-toc-anatoly-fomenko-built-a-chronology-in-which-most-of-history-was-invented&quot;&gt;Anatoly Fomenko built a chronology in which most of history was invented&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#a-closed-system-rewrites-its-own-history-not-the-worlds&quot; id=&quot;markdown-toc-a-closed-system-rewrites-its-own-history-not-the-worlds&quot;&gt;A closed system rewrites its own history, not the world’s&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#karl-popper-drew-the-line-in-1963-and-most-boards-do-not-know-it&quot; id=&quot;markdown-toc-karl-popper-drew-the-line-in-1963-and-most-boards-do-not-know-it&quot;&gt;Karl Popper drew the line in 1963 and most boards do not know it&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#organizations-ostracize-the-messenger-before-reading-the-message&quot; id=&quot;markdown-toc-organizations-ostracize-the-messenger-before-reading-the-message&quot;&gt;Organizations ostracize the messenger before reading the message&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-ceos-quiet-duty-is-to-keep-the-doctrine-falsifiable&quot; id=&quot;markdown-toc-the-ceos-quiet-duty-is-to-keep-the-doctrine-falsifiable&quot;&gt;The CEO’s quiet duty is to keep the doctrine falsifiable&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#three-tests-for-a-stack-that-may-have-stopped-being-a-hypothesis&quot; id=&quot;markdown-toc-three-tests-for-a-stack-that-may-have-stopped-being-a-hypothesis&quot;&gt;Three tests for a stack that may have stopped being a hypothesis&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;Some belief systems are not refuted by evidence. They feed on it. Every objection becomes a confirmation, every dissenter becomes a traitor, every external observation becomes part of the conspiracy. The non-technical CEO who cannot recognize the closed system inside his own organization will discover, too late, that his technology strategy stopped being a hypothesis years ago and turned into a doctrine that nobody can challenge.&lt;/p&gt;

&lt;h2 id=&quot;tartaria-is-a-mud-flood-that-never-happened&quot;&gt;Tartaria is a mud flood that never happened&lt;/h2&gt;

&lt;p&gt;Tartaria is the name of an empire that never existed and that, according to its believers, was deliberately erased from the historical record.&lt;/p&gt;

&lt;p&gt;The story goes like this. A vast, technologically advanced civilization once spanned Eurasia, with cities built in a style now visible only in pre-1900 photographs of European and Russian capitals. Then, sometime in the nineteenth century, a global mud flood buried it. Streets were paved over its lower floors. Buildings that were too magnificent to credibly belong to the modern world are attributed to this lost empire. Historians, the believers say, are complicit in the erasure. Architects who built the great train stations and opera houses of the 1800s could not possibly have built them with the tools of their time. So they did not.&lt;/p&gt;

&lt;p&gt;The theory works because it is generative. Every old photograph that shows a building with windows partially below street level becomes evidence. Every grand exposition site that was demolished after a single fair becomes a coverup. Every nineteenth-century structure that survived a war becomes a relic that was already there. The believer is not asked to find new evidence. He is asked to reinterpret existing evidence under a new key. The supply is unlimited.&lt;/p&gt;

&lt;p&gt;The mechanism that interests me is not the content. It is the impossibility of refutation.&lt;/p&gt;

&lt;p&gt;Show a believer the construction documents of an 1893 train station, archived, dated, signed by the architect. He will tell you the documents were fabricated. Show him the bricks, the foundations, the contracts. He will tell you the foundations are older than the documents and were repurposed. Show him a continuous photographic record from the period. He will tell you the photographs are part of the cover. There is no fact that the system cannot absorb. There is no datum that does not strengthen it.&lt;/p&gt;

&lt;p&gt;This is not a problem of intelligence. Many of the people who believe in Tartaria are functional, articulate, and curious. The problem is structural. The belief is held in a form that no external evidence can ever penetrate. It is a closed system.&lt;/p&gt;

&lt;h2 id=&quot;anatoly-fomenko-built-a-chronology-in-which-most-of-history-was-invented&quot;&gt;Anatoly Fomenko built a chronology in which most of history was invented&lt;/h2&gt;

&lt;p&gt;The intellectual scaffolding for Tartaria did not come from TikTok. It came from a Soviet mathematician.&lt;/p&gt;

&lt;p&gt;Anatoly Fomenko, a topologist at Moscow State University, began publishing in the late 1970s a theory he called the New Chronology. He claimed that most of recorded history before the seventeenth century was either invented, duplicated, or dated incorrectly. Ancient Greece, the Roman Empire, biblical history, the medieval European chronologies, all collapsed into a much shorter period and were largely the work of later forgers. Jesus Christ, in his framework, lived in the twelfth century. The Mongol invasions were a misnaming of Russian Christianization. And so on.&lt;/p&gt;

&lt;p&gt;Fomenko’s work was rejected by every recognized historian, archaeologist, linguist, and astronomer who examined it. The dating he proposed contradicts dendrochronology, ice cores, sediment records, independent astronomical observations, coin metallurgy, and the textual cross-references of dozens of unrelated traditions. None of this mattered to the theory. Fomenko’s framework had been designed, mathematically, in a way that absorbed contradiction by attributing it to the very forgeries it was trying to expose.&lt;/p&gt;

&lt;p&gt;In the 1990s, the writer Nikolai Levashov took elements of Fomenko’s chronology and rewove them with Russian nationalist mysticism. The result was the embryonic version of what would later be called Tartaria. Internet forums in the 2000s, especially on Russian-language sites, kept the thread alive. Reddit picked it up around 2015 to 2016, attracted by the photographs of half-buried buildings. TikTok, after 2020, made it a meme. By the time it began appearing in mainstream feeds, the theory had a complete vocabulary, a stable iconography, and a clear list of acceptable historical periods.&lt;/p&gt;

&lt;p&gt;What made Tartaria viable as a contemporary internet phenomenon was not its truth value. It was its productivity. The framework can be applied to any old building anywhere in the world. Each application produces engagement. Each new applier feels he has discovered something. The believer is not consuming a story. He is participating in the rewriting of history. It is fundamentally democratic. That, too, is part of its appeal.&lt;/p&gt;

&lt;h2 id=&quot;a-closed-system-rewrites-its-own-history-not-the-worlds&quot;&gt;A closed system rewrites its own history, not the world’s&lt;/h2&gt;

&lt;p&gt;Here is the part of Tartaria that should interest a CEO.&lt;/p&gt;

&lt;p&gt;A flat-earther refuses to revise his model of the world. A Tartaria believer refuses to revise his model of the past. The difference matters. Flat-earthism takes a stable, observable claim about the geometry of the Earth and tries to override it. Tartaria takes the much softer terrain of historical interpretation and rewrites it in a way that locks itself in.&lt;/p&gt;

&lt;p&gt;Most organizations are closer to the second case than to the first.&lt;/p&gt;

&lt;p&gt;A company does not usually develop a closed system about its product or its market. The market answers back. Sales numbers move. Customers churn. Competitors win deals. The terrain is too noisy to sustain a fully closed doctrine.&lt;/p&gt;

&lt;p&gt;But a company can develop a closed system about its own history. About why the stack was chosen. About why the architecture was designed the way it was. About what the previous CTO meant when he signed the original ADRs. About what the former auditor recommended. About the reasoning behind the SAP migration in 2017. Internal history is much softer than market reality. It can be rewritten without anyone outside noticing. And if the leadership team has been there long enough, the rewriting will be done in the leadership team’s favor.&lt;/p&gt;

&lt;p&gt;The pattern looks like this. A choice was made years ago. It was defensible at the time. It became a doctrine over time. Newcomers who question it are told, “you weren’t here, you don’t understand the context.” Outsiders who question it are told, “you don’t know the history of this company.” Departing employees who questioned it are remembered, after the fact, as having had attitude problems. The choice itself is never re-examined on its merits. It has been moved, quietly, from the category of hypothesis to the category of identity.&lt;/p&gt;

&lt;p&gt;You can audit this. You walk into the room and ask a simple question. “Under what conditions would we conclude that this choice was wrong?” In a system that is still falsifiable, somebody will answer. In a closed system, the question itself will be received as an attack.&lt;/p&gt;

&lt;h2 id=&quot;karl-popper-drew-the-line-in-1963-and-most-boards-do-not-know-it&quot;&gt;Karl Popper drew the line in 1963 and most boards do not know it&lt;/h2&gt;

&lt;p&gt;In &lt;em&gt;Conjectures and Refutations&lt;/em&gt;, published in 1963, Karl Popper proposed a criterion for distinguishing scientific theories from non-scientific ones. The criterion is not whether the theory is true. The criterion is whether the theory could, in principle, be shown to be false.&lt;/p&gt;

&lt;p&gt;A scientific theory is one that takes risks. It says, explicitly, the world should look like this, and if instead it looks like that, then I am wrong. A non-scientific theory, in Popper’s view, is one that has been constructed in such a way that no possible observation could contradict it. Such a theory is not false. Worse than false, it has placed itself outside the conditions of being either true or false. It is unfalsifiable.&lt;/p&gt;

&lt;p&gt;This criterion is rarely taught in business schools. It should be. Most strategic discussions in the executive committee of a non-technical CEO are conducted, implicitly, in the unfalsifiable mode. We have a great culture. Our brand is strong. Our infrastructure is modern. Our DSI knows what he is doing. These are not hypotheses. They are not designed to be tested. They are designed to be expressed.&lt;/p&gt;

&lt;p&gt;The role of an external advisor, in the Popperian sense, is not to assert a competing truth. The competing truth would be just another doctrine. The role is to reintroduce the conditions of refutation. To take statements that have been held in the unfalsifiable mode and rewrite them in a form that could, in principle, be disconfirmed. “Our infrastructure is modern” becomes “if we ran a load test of this specification on this date, the system would respond within this latency.” The statement is now risky. It can be wrong. It is back inside the domain of inquiry.&lt;/p&gt;

&lt;p&gt;Most CEOs do not understand that the value of an audit is not in the answer. The value is in restoring the question. The competent external never sells truth. He sells the conditions under which truth can again be produced internally.&lt;/p&gt;

&lt;h2 id=&quot;organizations-ostracize-the-messenger-before-reading-the-message&quot;&gt;Organizations ostracize the messenger before reading the message&lt;/h2&gt;

&lt;p&gt;There is a second mechanism that closed systems share with closed organizations. The treatment of dissidents.&lt;/p&gt;

&lt;p&gt;In the sociology of organizations, a long tradition has examined how groups protect their doctrine not by refuting the dissenter, but by neutralizing him socially. The mechanism is well documented. It does not require malice. It requires only that the cost of engaging with the dissenter’s content exceed the cost of disqualifying his standing. When that threshold is crossed, the group reflexively redirects energy from the message to the messenger.&lt;/p&gt;

&lt;p&gt;You can observe it in the executive committee. A new hire raises a concern about the data architecture. The committee does not engage with the concern. The committee asks who he is, where he comes from, why he is raising it now, who he has spoken to. The concern itself becomes secondary. By the time the conversation ends, the participant remembers the new hire’s tone, not the substance of what he said. The concern has not been refuted. It has been displaced.&lt;/p&gt;

&lt;p&gt;This is exactly what happens to former believers when they leave a closed belief system. Ex-flat-earthers are described as having been bought, as having lost their nerve, as having succumbed to social pressure. Ex-Tartaria adherents are said to have failed to keep digging. The community does not engage with the substance of their departure. It rewrites them as renegades whose exit confirms the doctrine.&lt;/p&gt;

&lt;p&gt;A CEO who wants to know whether his executive committee has become a closed system should look at how it treats its former dissenters. Not its current ones, who can still be persuaded to come around. Its former ones, who have left, been pushed out, or now work for competitors. If the leadership team describes them in moral terms rather than analytic terms, the system has closed.&lt;/p&gt;

&lt;h2 id=&quot;the-ceos-quiet-duty-is-to-keep-the-doctrine-falsifiable&quot;&gt;The CEO’s quiet duty is to keep the doctrine falsifiable&lt;/h2&gt;

&lt;p&gt;A CEO does not have to dismantle his stack. He does not have to fire his DSI. He does not have to redo the SAP migration.&lt;/p&gt;

&lt;p&gt;He has to keep his organization in the falsifiable mode.&lt;/p&gt;

&lt;p&gt;This means tolerating, sometimes provoking, the periodic confrontation of the internal doctrine with external observation. It means having a clear answer to the question, “under what conditions would I conclude that our current technical strategy is wrong?” If the answer is “I would not, because the strategy is right,” the system is closed. If the answer is “the strategy would be wrong if we observed X, Y, or Z,” the system is still open. The difference is not trivial. It is the entire game.&lt;/p&gt;

&lt;p&gt;A non-technical CEO is at higher risk than a technical one for one specific reason. His authority on technical choices comes from his trust in the people who hold them. Once those people have constructed a doctrine, he has no native instrument for cracking it. The doctrine sits inside the very team he has authorized to defend it. The system closes not because he wants it to, but because he has nothing left to push against it with.&lt;/p&gt;

&lt;p&gt;The external mandate exists precisely to provide that instrument. Not a competing truth. A discipline. The discipline is to bring the doctrine back into the domain of inquiry.&lt;/p&gt;

&lt;h2 id=&quot;three-tests-for-a-stack-that-may-have-stopped-being-a-hypothesis&quot;&gt;Three tests for a stack that may have stopped being a hypothesis&lt;/h2&gt;

&lt;p&gt;You can run these tests yourself before bringing anyone in.&lt;/p&gt;

&lt;p&gt;Pick the three statements your leadership team makes most often about the technical stack. Write them down. Now ask, for each statement, under what observable conditions you would conclude that the statement is wrong. If you cannot answer for at least two of the three, the stack has stopped being a hypothesis.&lt;/p&gt;

&lt;p&gt;Pick the last three people who left your tech organization in the past eighteen months. Ask three of their colleagues to describe why they left. If the descriptions converge on character (he was difficult, she could not adapt, he was not aligned), and not on substance (he disagreed about X, she pushed against Y, he could not get traction on Z), the system has started to disqualify its messengers before reading their messages.&lt;/p&gt;

&lt;p&gt;Pick the last technical decision your committee made unanimously without external input. Ask yourself what would have had to be true, six months earlier, for the committee to have made the opposite decision. If nothing would have changed the outcome, the decision was professed, not chosen.&lt;/p&gt;

&lt;p&gt;Three signals do not prove a closed system. They suggest one. The work of keeping the doctrine falsifiable, year after year, is the quiet, unglamorous discipline of a CEO who does not want to wake up one day inside a Tartaria of his own making.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>What Privateers Knew About Tech Contracts</title>
      <link href="https://francois.aichelbaum.com/2026/05/26/what-privateers-knew-about-tech-contracts" />
      <updated>2026-05-26T08:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/05/26/what-privateers-knew-about-tech-contracts</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#what-a-letter-of-marque-actually-was&quot; id=&quot;markdown-toc-what-a-letter-of-marque-actually-was&quot;&gt;What a Letter of Marque Actually Was&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-1681-ordinance&quot; id=&quot;markdown-toc-the-1681-ordinance&quot;&gt;The 1681 Ordinance&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#why-this-matters-for-modern-tech-contracts&quot; id=&quot;markdown-toc-why-this-matters-for-modern-tech-contracts&quot;&gt;Why This Matters for Modern Tech Contracts&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-three-questions-before-you-sign&quot; id=&quot;markdown-toc-the-three-questions-before-you-sign&quot;&gt;The Three Questions Before You Sign&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#pirates-of-modernity&quot; id=&quot;markdown-toc-pirates-of-modernity&quot;&gt;Pirates of Modernity&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-art-of-the-return&quot; id=&quot;markdown-toc-the-art-of-the-return&quot;&gt;The Art of the Return&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;On October 7th, 1800, in the Bay of Bengal, two ships met in conditions that should have produced a quick result.&lt;/p&gt;

&lt;p&gt;The first was the Kent, an East Indiaman owned by the British East India Company. Forty guns. Four hundred and thirty-seven men. Twelve hundred tons of cargo and crew, returning slowly under sail along a known trade route.&lt;/p&gt;

&lt;p&gt;The second was the Confiance, a French privateer corvette under the command of a twenty-seven-year-old captain from Saint-Malo named Robert Surcouf. Eighteen guns. One hundred and fifty men.&lt;/p&gt;

&lt;p&gt;By every reasonable calculation, the Kent should have won this encounter. It had nearly three times the men, more than twice the guns, and the structural advantage of a heavier hull built for global commerce.&lt;/p&gt;

&lt;p&gt;It did not win. Surcouf boarded the Kent, took it, and brought the prize back to the French Île de France, today’s Mauritius, in November of that year. The British Admiralty subsequently put a price on his head.&lt;/p&gt;

&lt;p&gt;The reason this attack was a celebrated military exploit and not a piracy charge punishable by hanging is the same reason most modern tech contracts go quietly wrong. It comes down to a piece of paper, dated and signed, with five specific elements on it.&lt;/p&gt;

&lt;p&gt;The piece of paper was called a letter of marque. The five elements are what your prestataire’s contract is probably missing.&lt;/p&gt;

&lt;h2 id=&quot;what-a-letter-of-marque-actually-was&quot;&gt;What a Letter of Marque Actually Was&lt;/h2&gt;

&lt;p&gt;Letters of marque were not, despite the romantic image, blank licenses to attack enemy ships. They were precise, bounded, and accountable instruments of state warfare conducted through private operators.&lt;/p&gt;

&lt;p&gt;A letter of marque had five constitutive elements, and a letter that lacked any of them was either invalid or an instrument of piracy under another name.&lt;/p&gt;

&lt;p&gt;The first element was a defined geographical scope. The Bay of Bengal, yes. The territorial waters of a neutral nation, no. A privateer who took prizes outside the geographical scope of his letter could be, and frequently was, prosecuted by his own crown for piracy. The geographical bound was not decorative. It was the substantive limit of legitimate action.&lt;/p&gt;

&lt;p&gt;The second was a defined time horizon. Six months, a year, two years. Not indefinite. The mandate was an operation, not a position. When the letter expired, the privateer either returned to port for a new commission or stopped operating entirely. Continuing to take prizes after expiration was, again, piracy.&lt;/p&gt;

&lt;p&gt;The third was a defined target. Which flags were lawful prey. Which were not. Neutrals, allies, and certain protected categories of merchant traffic were excluded. The list was explicit, not implicit. A privateer who attacked an unauthorized target was operating outside the letter, regardless of how rich the prize was.&lt;/p&gt;

&lt;p&gt;The fourth was the share. The royal treasury took a percentage of every prize, fixed in advance, paid before the privateer touched his cut. This was not a tax on success. It was the price of the mandate itself. Without paying the share, the privateer was not a privateer. He was an unsanctioned operator, which is to say, a pirate.&lt;/p&gt;

&lt;p&gt;The fifth was accountability at the return. When the privateer came back to port, he produced his logs, his prize manifests, his casualty records, and any evidence of his conduct on the voyage. The prize court reviewed everything. A privateer whose paperwork did not match his prizes, or who could not account for his conduct, lost his commission, his prizes, or his head, depending on the severity.&lt;/p&gt;

&lt;p&gt;Five elements. Geographical scope. Time horizon. Defined target. Pre-agreed share. Mandatory accountability at the return.&lt;/p&gt;

&lt;p&gt;This is what made the Kent a legitimate prize and not a crime.&lt;/p&gt;

&lt;h2 id=&quot;the-1681-ordinance&quot;&gt;The 1681 Ordinance&lt;/h2&gt;

&lt;p&gt;The five-element structure was not an oral tradition or a customary practice. It was codified in French law in August 1681, under the direction of Jean-Baptiste Colbert, in what became known as the Grande Ordonnance de la Marine, or simply the Ordinance of 1681.&lt;/p&gt;

&lt;p&gt;The Ordinance was the first comprehensive maritime code in modern Europe. It covered shipping contracts, charter parties, sailor wages, marine insurance, and the law of prizes. The privateering provisions sat inside the prizes section, alongside the procedural rules for adjudicating captured property.&lt;/p&gt;

&lt;p&gt;Colbert drew explicitly on Dutch maritime statutes from Amsterdam and Antwerp. He was not inventing a regime. He was systematizing a practice that already existed in fragmentary form, and giving it the legal weight that allowed French privateers to operate, and French prize courts to adjudicate, with predictable rules.&lt;/p&gt;

&lt;p&gt;The Ordinance survived in modified form until the Declaration of Paris of 1856, which abolished privateering across most of Europe. For 175 years, the privateer-pirate distinction was a stable feature of European maritime law, and the five-element structure was its operational core.&lt;/p&gt;

&lt;p&gt;What is interesting, for present purposes, is not the legal history. It is that the same five-element structure recurs, almost intact, every time a society needs to give private operators substantial autonomy without losing the ability to call them to account.&lt;/p&gt;

&lt;p&gt;It recurs in modern military rules of engagement. It recurs in police use-of-force authorizations. It recurs in financial fiduciary mandates. It recurs in clinical trial protocols.&lt;/p&gt;

&lt;p&gt;It does not, generally, recur in tech consulting contracts.&lt;/p&gt;

&lt;h2 id=&quot;why-this-matters-for-modern-tech-contracts&quot;&gt;Why This Matters for Modern Tech Contracts&lt;/h2&gt;

&lt;p&gt;If you are a CEO who has signed a tech consulting contract recently, take it out and read the first page.&lt;/p&gt;

&lt;p&gt;You are looking for five things. You will probably find two of them, partially.&lt;/p&gt;

&lt;p&gt;You will find a list of services. Not a defined scope, but an enumeration of what is included. The difference is significant. An enumeration tells you what is in. A defined scope tells you what is in, what is out, and what the procedure is when something is in dispute. Most tech contracts enumerate. Almost none define.&lt;/p&gt;

&lt;p&gt;You will find a duration, but it is likely to be either a fixed term with an automatic renewal clause, or an indefinite duration with a termination procedure. Neither of these is a time horizon in the letter-of-marque sense. A letter of marque ended on its expiration date and required a new commission to continue. A renewable contract ends only when one party affirmatively decides to end it, which means it has a default toward continuation. The two structures produce different incentives, and the default-toward-continuation structure produces drift.&lt;/p&gt;

&lt;p&gt;You will probably not find a defined target in the operational sense. You will find a description of the work. Whether the work is succeeding, however, is rarely defined in the contract itself. It is left to the parties to assess at periodic reviews, which means it is left to relational dynamics rather than contractual structure.&lt;/p&gt;

&lt;p&gt;You will find a price, but the price is rarely a share of outcomes. It is usually a fee for time and effort. This is not a moral problem. It is a structural one. A fee for effort produces an incentive to produce more effort, regardless of whether more effort is what is needed. A share of outcomes, on the other hand, produces an incentive to produce outcomes efficiently. The privateer’s share was the latter, and it was the price of the mandate.&lt;/p&gt;

&lt;p&gt;You will find some form of reporting, but you are unlikely to find mandatory accountability at the return, in the sense of a defined moment when the relationship is reviewed against its full record and either renewed, modified, or closed. Most tech contracts have ongoing reporting and quiet attrition. They rarely have a clear moment when everything is laid on the table for review.&lt;/p&gt;

&lt;p&gt;In other words, most tech consulting contracts have a contract structure that, if you compare it to the letter of marque, is missing three of the five constitutive elements.&lt;/p&gt;

&lt;h2 id=&quot;the-three-questions-before-you-sign&quot;&gt;The Three Questions Before You Sign&lt;/h2&gt;

&lt;p&gt;If you do not have time to redesign your prestataire contracts from scratch, there are three questions you can ask before signing that will tell you whether you are looking at a mandate or a cohabitation.&lt;/p&gt;

&lt;p&gt;The first question is about scope. Not “what services are included?”, but “what happens when something is in the gray zone, and how do we know in advance?”. The answer should not be “we discuss it as it comes up”. The answer should be a procedure. If your prestataire cannot describe the procedure for resolving scope ambiguity in fewer than three sentences, the scope is not defined.&lt;/p&gt;

&lt;p&gt;The second question is about ending. Not “what is the duration?”, but “how do we know we are done, and what is the test for that?”. The answer should be a state, a deliverable, or a date, with the test specified in advance. The answer should not be “when the engagement no longer adds value”, because that test produces continuous mission creep without a single moment of clear completion.&lt;/p&gt;

&lt;p&gt;The third question is about review. Not “how often do we have status meetings?”, but “when do we lay everything on the table and decide whether to continue?”. The answer should be a calendar entry. It should not be “we review continuously”, because continuous review without a forcing function produces continuous reporting without continuous decision.&lt;/p&gt;

&lt;p&gt;A contract that survives these three questions cleanly is rare. It is also, almost without exception, a contract that produces good outcomes for both sides.&lt;/p&gt;

&lt;p&gt;A contract that does not survive these questions is not necessarily fraudulent or even badly intentioned. Most of the time, it has been written by people who have always written contracts that way, and who have not had the occasion to ask whether the structure they have inherited produces the outcomes they want.&lt;/p&gt;

&lt;p&gt;The three questions are uncomfortable to ask. They are also the cheapest piece of due diligence available to a CEO before signing a long-term tech contract.&lt;/p&gt;

&lt;h2 id=&quot;pirates-of-modernity&quot;&gt;Pirates of Modernity&lt;/h2&gt;

&lt;p&gt;The privateer-pirate distinction is not, even in its historical form, a moral distinction. It is a structural one.&lt;/p&gt;

&lt;p&gt;A privateer with a valid letter of marque, attacking a permitted target in the permitted area within the permitted time, was a legal combatant. The same person, doing the same act, the day after the letter expired, was a pirate, subject to summary execution.&lt;/p&gt;

&lt;p&gt;The act was identical. The structure had changed.&lt;/p&gt;

&lt;p&gt;In modern tech consulting, the same person, doing the same work, can be operating either as a mandataire under a defined commission or as something closer to an embedded resource without a clear sponsor. The work might look identical from the outside. The structural posture is entirely different.&lt;/p&gt;

&lt;p&gt;The privateer-pirate distinction in modern terms does not have a hanging at the end. It has, instead, a slow erosion of accountability, a quiet inflation of scope, and a gradual conversion of what was meant to be a mission into what becomes, in practice, a permanent annex to the organization.&lt;/p&gt;

&lt;p&gt;This is not a catastrophic outcome. It is an expensive one. It is also a quiet one, which is why it goes unnoticed until someone, usually a new finance director or a new CEO, starts asking why a particular prestataire has been on the books for six years and what, exactly, the original mandate was.&lt;/p&gt;

&lt;p&gt;The answer is often that the original mandate has long since been completed, and what remains is a residual relationship that nobody has the political energy to terminate cleanly.&lt;/p&gt;

&lt;h2 id=&quot;the-art-of-the-return&quot;&gt;The Art of the Return&lt;/h2&gt;

&lt;p&gt;There is one final element of the letter of marque that does not appear on the document itself but that runs through the entire institution.&lt;/p&gt;

&lt;p&gt;A privateer was supposed to return.&lt;/p&gt;

&lt;p&gt;The voyage had a beginning, a duration, and a return to port. The return was not optional. It was the moment when accountability was rendered, the prizes adjudicated, the share distributed, and the next commission, if there was to be one, negotiated on the basis of what had just been done.&lt;/p&gt;

&lt;p&gt;A privateer who did not return became, by default, a pirate. Not because anyone declared him so, but because the structural conditions of his legitimacy required the return to close the loop.&lt;/p&gt;

&lt;p&gt;Most modern tech mandates have no equivalent return.&lt;/p&gt;

&lt;p&gt;The work continues, the invoices continue, the meetings continue, but the moment of accountability, the moment when everything is laid on the table and the question is asked whether the original mandate has been fulfilled, never comes.&lt;/p&gt;

&lt;p&gt;The simplest fix is to put it on the calendar before the work begins. Six months, twelve months, eighteen months. A specific date. A defined review. An explicit decision to continue, modify, or close.&lt;/p&gt;

&lt;p&gt;This is not a complication of the relationship. It is the frame that makes the relationship a mandate at all.&lt;/p&gt;

&lt;p&gt;If you are signing a tech consulting contract this quarter, find the return date.&lt;/p&gt;

&lt;p&gt;If it is not in the contract, write it in.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Saturation Is Not the Problem</title>
      <link href="https://francois.aichelbaum.com/2026/05/19/saturation-is-not-the-problem" />
      <updated>2026-05-19T10:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/05/19/saturation-is-not-the-problem</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#four-dune-adaptations-one-lesson&quot; id=&quot;markdown-toc-four-dune-adaptations-one-lesson&quot;&gt;Four Dune adaptations, one lesson&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#frank-herbert-the-saturated-source&quot; id=&quot;markdown-toc-frank-herbert-the-saturated-source&quot;&gt;Frank Herbert, the saturated source&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-corporate-version&quot; id=&quot;markdown-toc-the-corporate-version&quot;&gt;The corporate version&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#three-lived-examples&quot; id=&quot;markdown-toc-three-lived-examples&quot;&gt;Three lived examples&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-contrarian-recommendation&quot; id=&quot;markdown-toc-the-contrarian-recommendation&quot;&gt;The contrarian recommendation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-to-ask-of-your-next-report&quot; id=&quot;markdown-toc-what-to-ask-of-your-next-report&quot;&gt;What to ask of your next report&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;A CEO once handed me an eighty-page IT audit and asked what I thought of it. I read it on the train home. Every page was technically correct. The taxonomy of incidents was rigorous. The vendor benchmark covered the right comparators. The recommendations matched the standards.&lt;/p&gt;

&lt;p&gt;I told him the report was excellent and useless. He had paid for it. He filed it. He kept calling for committees on the same subject.&lt;/p&gt;

&lt;p&gt;That conversation is the reason I want to talk about Frank Herbert and four films.&lt;/p&gt;

&lt;h2 id=&quot;four-dune-adaptations-one-lesson&quot;&gt;Four Dune adaptations, one lesson&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Dune&lt;/em&gt;, Frank Herbert’s 1965 novel, has been adapted four times depending on how you count. Each attempt tells you more about reports than about science fiction.&lt;/p&gt;

&lt;p&gt;Alejandro Jodorowsky tried first, between 1974 and 1976. Fourteen months of pre-production. Moebius drew thousands of storyboards. H.R. Giger designed the Harkonnen world. Pink Floyd were attached to score one section, Magma another. Salvador Dalí had agreed to play the Emperor for a fee that became part of the pre-production legend. Orson Welles was set for Baron Harkonnen. Mick Jagger was Feyd. The screenplay grew into a book several kilos thick that circulated through studio archives across Hollywood for years.&lt;/p&gt;

&lt;p&gt;The film was never shot. Studios refused to commit. Two million dollars vanished into a project that ended on a dining table in Paris. Frank Pavich’s 2013 documentary &lt;em&gt;Jodorowsky’s Dune&lt;/em&gt; is the public record of this failure. And yet. Star Wars borrowed from those storyboards. Alien borrowed Giger directly. Blade Runner used the visual grammar. The Fifth Element pulled from Moebius’s costume drawings. Prometheus revisited the biomechanical lineage.&lt;/p&gt;

&lt;p&gt;The work survived. The decision was never made.&lt;/p&gt;

&lt;p&gt;David Lynch shot &lt;em&gt;Dune&lt;/em&gt; in 1984 because someone had to. Universal had bought the rights, signed distribution, locked release dates. The Jodorowsky failure had taught them caution about Dune projects, which is precisely why they wanted theirs done quickly. Lynch was hired. Lynch delivered. Lynch disowned the result and refuses to discuss it to this day.&lt;/p&gt;

&lt;p&gt;The SyFy mini-series &lt;em&gt;Dune&lt;/em&gt; in 2000, directed by John Harrison, is what completists love. It is faithful. It is exhaustive. It includes the Bene Gesserit politics, the gom jabbar test, the Litany Against Fear in the right scene, an Arrakis you can almost map. &lt;em&gt;Children of Dune&lt;/em&gt;, the second mini-series in 2003, has lines that genuinely land, including a moment where Leto II recognises his father in the desert wind. The score by Brian Tyler does work the visuals never quite reach. But the whole thing is flat. Everything is there. Nothing strikes.&lt;/p&gt;

&lt;p&gt;Then Denis Villeneuve gives us five hours of cinema across &lt;em&gt;Dune&lt;/em&gt; (2021) and &lt;em&gt;Dune: Part Two&lt;/em&gt; (2024) to cover the first novel in full. Five hours. One book. Not a minute committed to the sequels. He understood that the good adaptation is the one that knows when to stop.&lt;/p&gt;

&lt;p&gt;You may have already noticed that I have not described any of these as a film. They are reports. About reports.&lt;/p&gt;

&lt;h2 id=&quot;frank-herbert-the-saturated-source&quot;&gt;Frank Herbert, the saturated source&lt;/h2&gt;

&lt;p&gt;The book itself was written by a man who spent six years documenting before he wrote a first chapter. Botany of arid biomes. Hydrology. Comparative theology of monotheistic systems. Geopolitics of oil economies. The biology of camels and other water-conserving mammals. Six years of stacking material.&lt;/p&gt;

&lt;p&gt;The result is a six-hundred-page novel saturated with invented terminology, unpronounceable proper names, fictional institutions, footnotes inside the narrative, appendices that rival the main text in length. Total saturation. The Bene Gesserit, the Mentat training, the Kwisatz Haderach prophecy, the Atreides line, the Harkonnen baroque, the Fremen sietches, the spice that grants prescience and shortens lives, Shai-Hulud rolling beneath the dunes.&lt;/p&gt;

&lt;p&gt;And yet. The book opens on the gom jabbar test, where Paul Atreides keeps his hand inside a box of induced pain under the watch of a Bene Gesserit, and the dread passes before any explanation lands. A few chapters later it is the dust in the mouth, the dry heat of Arrakis, the silent menace of an institution we have not yet seen act. The fear is felt before it is named. Something passes that no Wikipedia summary will ever transmit.&lt;/p&gt;

&lt;p&gt;Saturation is not the problem. Intention is.&lt;/p&gt;

&lt;p&gt;Most IT reports I have read in twenty years of working in technology fail this test in ways that have nothing to do with their length.&lt;/p&gt;

&lt;h2 id=&quot;the-corporate-version&quot;&gt;The corporate version&lt;/h2&gt;

&lt;p&gt;Every report I have read sits somewhere on this spectrum.&lt;/p&gt;

&lt;p&gt;Some are Jodorowsky reports. Brilliant, expensive, never decided on, leaking influence into other places where the original author has no name. The work is real. The decision never happens. Years later you spot the strategy in a competitor’s roadmap.&lt;/p&gt;

&lt;p&gt;Some are Lynch reports. Filmed because the cameras were rolling and the studio needed something to release. Disowned by their own authors after delivery. The agenda preceded the question. The deliverable could not say what it had been built to say.&lt;/p&gt;

&lt;p&gt;Some are SyFy reports. Faithful to the brief, technically complete, evoking nothing, leaving the executive holding two hundred pages and no decision. Everything is there. Every section is correct. The reader closes the document with no next action and a vague sense that something has been done.&lt;/p&gt;

&lt;p&gt;The one I describe to clients most often is the Villeneuve report. The one that knows where to stop. The one that takes five chapters where the matter needs five chapters and refuses the temptation of the sixth.&lt;/p&gt;

&lt;h2 id=&quot;three-lived-examples&quot;&gt;Three lived examples&lt;/h2&gt;

&lt;p&gt;Three reports from the field. None of them named. None of them recognisable.&lt;/p&gt;

&lt;p&gt;The first is an audit commissioned not to understand a problem but to remove a consultant. The previous consultant had done the work, said what needed to be said, and politely declined to endorse a personal initiative of the chief executive. He had to go. The audit was the instrument. It was produced. It was signed. The consultant was ejected. The investment decision underneath, which was what was actually broken, kept costing money and going nowhere. The report was a Lynch. It existed because the cameras were rolling. The director knew it.&lt;/p&gt;

&lt;p&gt;The second is a several-month engagement where the brief looked organisational and the actual mandate was political. Build the dossier that designates the IT team as the source of every problem. The IT team would become the fuse. Someone needed to be the fuse. The report was produced. The fuse blew. Several engineers left. The product governance, the unstaffed finance steering, the over-promising commercial pipeline, all stayed in place. The CEO had seen sharply. He had only allowed himself to see in one direction.&lt;/p&gt;

&lt;p&gt;There is a particular trap in seeing too clearly. Herbert calls it prescience and treats it as a curse rather than a gift across the entire Dune saga. Seeing all paths is not seeing. Seeing one path very sharply is worse. It looks like clarity. It is selection. The Litany Against Fear in the book is recited by characters about to lose themselves to exactly this kind of false vision. Most CEO dashboards are exercises in the same false vision dressed in green and red.&lt;/p&gt;

&lt;p&gt;The third is a luxury group. Several months of analysis and conceptualisation. A real report, dense, abundant, with intention behind every section. A few weeks after delivery, an internal IT director had rewritten the executive summary in their own name, edited the cover, and circulated the version upward. The internal version was thinner, less coherent, but it carried the right signature. It checked the box. The original kept gathering dust. The plagiarised version made decisions that the original would have refused to permit.&lt;/p&gt;

&lt;p&gt;Lynch eating Jodorowsky. The richer work existed. It was replaced by a degraded version that served the photo opportunity.&lt;/p&gt;

&lt;h2 id=&quot;the-contrarian-recommendation&quot;&gt;The contrarian recommendation&lt;/h2&gt;

&lt;p&gt;The standard advice given to executives sounds clean. Ask for more visibility. Map everything. Commission a full audit. Put every option on the table before deciding.&lt;/p&gt;

&lt;p&gt;That advice is what paralyses you.&lt;/p&gt;

&lt;p&gt;The more complete the report, the less the CEO decides. The more committees come back, the less they cut. Seeing every possible path means losing the ability to choose one. The Bene Gesserit knew this about prescience. It is not a tool. It is a hall of mirrors that absorbs the operator. The Kwisatz Haderach in &lt;em&gt;Dune&lt;/em&gt; is not the answer to a problem of vision. He is the consequence of trying to engineer total vision in the first place, and Herbert spends four sequels showing what that costs.&lt;/p&gt;

&lt;p&gt;What you actually need is a report with intention. A report that closes questions instead of opening them. Dense where decision needs density. Short where decision needs no further air. Saturated, in the spirit of Herbert, only where saturation evokes something the reader has to feel before they can decide.&lt;/p&gt;

&lt;p&gt;Privateer does not write the report you can plagiarise. It writes the report that stops where the next action begins. It refuses the eighty pages whose only function is to look like enough to justify the line item. It refuses the audit that exists because someone has to take the fall.&lt;/p&gt;

&lt;p&gt;The good report names the next thing to do and then stops talking.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/blog-post-saturation.jpg&quot; alt=&quot;Stack of old books with weathered pages&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-to-ask-of-your-next-report&quot;&gt;What to ask of your next report&lt;/h2&gt;

&lt;p&gt;Frank Herbert spent six years documenting and then wrote a novel that closes. The novel ends. There are sequels for those who want them, but the first book finishes its sentence. That is the discipline of intention.&lt;/p&gt;

&lt;p&gt;Most reports never finish their sentence. They trail off into recommendations for further analysis. They list considerations to be examined. They suggest committees to revisit them.&lt;/p&gt;

&lt;p&gt;That is the spice that paralyses. That is what extends the meeting, narrows the executive, and ends the quarter with the same question still open.&lt;/p&gt;

&lt;p&gt;If your next IT or strategy report does not name three or four decisions you can make this quarter, it is not finished. The brilliance of the analysis is not the issue. Eighty rigorous pages can be empty. Twenty ruthless pages can decide the year.&lt;/p&gt;

&lt;p&gt;Ask for intention. Ask the author what they want you to do after reading. If they cannot answer in two sentences, the report is not for you. It is for the file.&lt;/p&gt;

&lt;p&gt;The desert in the book is felt before it is described because Herbert wanted you to feel it. The five hours of Villeneuve’s two-part adaptation are what they are because Villeneuve refused to film what could not be filmed yet. The Jodorowsky storyboards still influence cinema half a century later because someone refused to dilute them into something studios could approve.&lt;/p&gt;

&lt;p&gt;The reports that work for executives are not the longest. They are the ones whose author wanted the executive to do something specific.&lt;/p&gt;

&lt;p&gt;Saturation is not the problem.&lt;/p&gt;

&lt;p&gt;Intention is.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>The Accusation Already Written</title>
      <link href="https://francois.aichelbaum.com/2026/05/12/the-accusation" />
      <updated>2026-05-12T10:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/05/12/the-accusation</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#the-one-sided-hearing&quot; id=&quot;markdown-toc-the-one-sided-hearing&quot;&gt;The one-sided hearing&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#charge-of-proof-inverted&quot; id=&quot;markdown-toc-charge-of-proof-inverted&quot;&gt;Charge of proof, inverted&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-auditor-i-encountered-by-accident&quot; id=&quot;markdown-toc-the-auditor-i-encountered-by-accident&quot;&gt;The auditor I encountered by accident&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#when-the-process-is-perfect-and-the-outcome-is-unjust&quot; id=&quot;markdown-toc-when-the-process-is-perfect-and-the-outcome-is-unjust&quot;&gt;When the process is perfect and the outcome is unjust&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-designated-fuse&quot; id=&quot;markdown-toc-the-designated-fuse&quot;&gt;The designated fuse&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-the-right-to-confrontation-actually-does&quot; id=&quot;markdown-toc-what-the-right-to-confrontation-actually-does&quot;&gt;What the right to confrontation actually does&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#who-convenes-the-absent&quot; id=&quot;markdown-toc-who-convenes-the-absent&quot;&gt;Who convenes the absent&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;There is a principle in criminal procedure that most people take for granted without understanding what it actually protects.&lt;/p&gt;

&lt;p&gt;The accused has the right to know the accusation. Not at the verdict. Not during deliberation. Before the hearing begins. They have the right to examine the evidence, to call their own witnesses, to confront the opposing testimony, to respond to each element of the case against them.&lt;/p&gt;

&lt;p&gt;If you strip this principle away, you do not get a faster trial. You get a ceremony that looks like a trial and produces a conviction every time.&lt;/p&gt;

&lt;p&gt;I think about this when I walk into an organization and discover a decision that has already been taken about a technical situation where only one version of events has been heard.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/blog-post-justice.jpg&quot; alt=&quot;A wooden gavel on a desk&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-one-sided-hearing&quot;&gt;The one-sided hearing&lt;/h2&gt;

&lt;p&gt;The most common configuration I encounter when I enter a technical mission in crisis is this: the executive team has built an interpretation of what is going wrong, they have a candidate explanation, they have a candidate responsible party, and they are now looking for the independent expert who will confirm it.&lt;/p&gt;

&lt;p&gt;They do not describe it this way. They describe it as wanting a diagnosis. But the scope of the diagnosis has already been narrowed. The questions that would open alternative explanations are not on the agenda. The people who would provide the opposing testimony are not in the meeting.&lt;/p&gt;

&lt;p&gt;I have sat through executive briefings where the CEO described the situation, the COO confirmed the COO version, the CFO added a financial angle that supported the same reading, and the entire room agreed on what needed to happen next, while the technical team responsible for the execution of the contested decision was not in the building, had not been consulted, and would only learn about the verdict when the implementation order arrived.&lt;/p&gt;

&lt;p&gt;This is not a conspiracy. It is the default configuration of organizational decision-making in the absence of procedural discipline. The people with the most access to executive attention get to tell the story. The people with the least access to executive attention have the story told about them.&lt;/p&gt;

&lt;p&gt;The problem is not that the story being told is wrong. Sometimes it is exactly right. The problem is that there is no procedure for finding out whether it is right before a decision based on it is executed.&lt;/p&gt;

&lt;h2 id=&quot;charge-of-proof-inverted&quot;&gt;Charge of proof, inverted&lt;/h2&gt;

&lt;p&gt;In a proper trial, the burden of proof sits on the accusation. The prosecution must demonstrate guilt beyond reasonable doubt. The defense is not required to prove innocence; the absence of proof against them is sufficient.&lt;/p&gt;

&lt;p&gt;Inside organizations, this principle is almost universally inverted.&lt;/p&gt;

&lt;p&gt;A technical team produces a system that is performing below expectations. A decision is contemplated to replace the vendor, terminate the partnership, restructure the team, or change the technical approach. The burden of proof, in practice, sits on the technical team to prove that the current situation is acceptable, that the expectations were unrealistic, that the external pressures were unmanageable.&lt;/p&gt;

&lt;p&gt;They are not asked to defend a specific accusation. They are asked to justify their continued existence against a diffuse sense that things should be going better.&lt;/p&gt;

&lt;p&gt;This is a structurally losing position. You cannot prove the counterfactual. You cannot demonstrate what would have happened if a different decision had been made two years ago. You cannot adequately contest an accusation that has never been formally articulated.&lt;/p&gt;

&lt;p&gt;The accused technical team does what anyone in that position does. They produce defensive documentation. They explain context that nobody asked to hear. They preemptively justify choices that may or may not have been the actual source of the problem. And they lose, because they are fighting against a verdict that was reached before they understood they were on trial.&lt;/p&gt;

&lt;h2 id=&quot;the-auditor-i-encountered-by-accident&quot;&gt;The auditor I encountered by accident&lt;/h2&gt;

&lt;p&gt;Some years ago, I was leading a technical team inside an organization going through a governance crisis. A minority shareholder had commissioned an independent audit to understand what was actually happening in the business.&lt;/p&gt;

&lt;p&gt;The audit was conducted professionally. The auditor interviewed the executive committee, mapped the formal decision-making structure, reviewed the financial data, and built a picture of the organization from the vantage point of its governance documents and its leadership team.&lt;/p&gt;

&lt;p&gt;My team was not mentioned in those interviews. We were in a different building, working on a different floor, isolated from the political center for reasons that had more to do with internal positioning than with technical necessity. The auditor had no reason to know we existed, and nobody in the governance reviews had any incentive to surface our existence.&lt;/p&gt;

&lt;p&gt;One afternoon, the auditor came to the building for a coffee break. Someone happened to mention my team. He came to find me. We spoke for fifteen minutes.&lt;/p&gt;

&lt;p&gt;At the end of that fifteen-minute conversation, he called his assistant from my office, and canceled every meeting he had scheduled for the rest of the afternoon.&lt;/p&gt;

&lt;p&gt;The audit’s conclusions changed. Not because my testimony was privileged or definitive. Because it was a version of events that no one at the governance level had any interest in surfacing, and the auditor recognized immediately that the picture he had been building was structurally incomplete.&lt;/p&gt;

&lt;p&gt;The most useful information about what is actually happening inside an organization is almost never where the formal inquiry is looking for it. It is in the rooms nobody thought to check, with the people nobody thought to call.&lt;/p&gt;

&lt;h2 id=&quot;when-the-process-is-perfect-and-the-outcome-is-unjust&quot;&gt;When the process is perfect and the outcome is unjust&lt;/h2&gt;

&lt;p&gt;There is a specific kind of failure mode in organizational decision-making that looks like success from every procedural angle.&lt;/p&gt;

&lt;p&gt;The process was followed. The committee was consulted. The documents were produced. The decision was ratified by the appropriate governing body. Nothing was skipped. Nothing was expedited. Nothing was irregular.&lt;/p&gt;

&lt;p&gt;And someone walks out of the outcome with a completely legitimate sense that they have been treated unjustly.&lt;/p&gt;

&lt;p&gt;I have seen this repeatedly in technical organizations. A procurement process that selected the lowest bidder over the incumbent partner who knew the system, because the procurement rules rewarded price over capability transfer. A reorganization that respected every applicable labor protection while eliminating the person who carried two critical systems in their head, because the formal criteria did not value tacit knowledge. An investment committee that approved a project because it ticked every box, while ignoring the weak signals from the operational team that the assumptions were wrong.&lt;/p&gt;

&lt;p&gt;In each case, the rigidity of the process produced the illusion of neutrality. The decision was “not personal” because the process had been followed. The outcome was “not anyone’s fault” because every step was documented.&lt;/p&gt;

&lt;p&gt;The procedural integrity of the decision was used, implicitly, to avoid the substantive judgment that someone in authority needed to make and did not want to make.&lt;/p&gt;

&lt;p&gt;This is how organizations avoid accountability for decisions that require it. The process absorbs the responsibility. Nobody has to say: I chose this, and here is why, and if it is wrong it is wrong on me.&lt;/p&gt;

&lt;h2 id=&quot;the-designated-fuse&quot;&gt;The designated fuse&lt;/h2&gt;

&lt;p&gt;In electrical engineering, a fuse is a deliberately weak point in a circuit. It is designed to fail first so that the more expensive, harder-to-replace components behind it survive.&lt;/p&gt;

&lt;p&gt;When a fuse blows, the electrician’s first question is not “why did this fuse fail?” The question is “what upstream condition forced this component to sacrifice itself?”&lt;/p&gt;

&lt;p&gt;Organizations use people as fuses.&lt;/p&gt;

&lt;p&gt;A project goes badly. The explanation converges on a single individual or a single team, usually the one that arrived most recently, or that had the least political cover, or that was in the room last when the failure became visible. That person absorbs the organizational verdict. A reorganization follows. The problem is declared solved.&lt;/p&gt;

&lt;p&gt;Six months later, a similar failure occurs. A different fuse blows. The cycle repeats.&lt;/p&gt;

&lt;p&gt;The reason it repeats is that the fuse is not the cause of the failure. The cause of the failure is further upstream, in the governance configuration, in the decision-making protocols, in the political alignment that forced the fuse into a role it was never equipped to succeed in. The fuse fails because something else, structurally, could not hold.&lt;/p&gt;

&lt;p&gt;When the fuse is replaced, the underlying condition remains. The next fuse fails the same way.&lt;/p&gt;

&lt;p&gt;Recognizing this pattern is difficult from inside the organization, because everyone upstream of the fuse has a direct interest in the fuse being the explanation. The explanation that blames the fuse protects the circuit behind it. The explanation that audits the circuit threatens the positions of everyone who designed it.&lt;/p&gt;

&lt;p&gt;This is not a moral failure. It is a structural one. It requires, almost by definition, someone from outside the circuit to see what is actually happening.&lt;/p&gt;

&lt;h2 id=&quot;what-the-right-to-confrontation-actually-does&quot;&gt;What the right to confrontation actually does&lt;/h2&gt;

&lt;p&gt;The right to confront one’s accuser, one of the oldest principles in adversarial legal systems, is not primarily about fairness to the accused. It is about the quality of the evidence that reaches the decision-maker.&lt;/p&gt;

&lt;p&gt;Testimony that cannot be cross-examined is structurally less reliable than testimony that can. Not because the witness is lying. Because the full picture of what the witness knows, and does not know, and how the information came to them, is only visible when the testimony is contested.&lt;/p&gt;

&lt;p&gt;In corporate decision-making, the equivalent principle is almost never applied. The technical team’s version of events is heard, if at all, in a separate meeting from the executive team’s version. The consultant’s report is received. The vendor’s pushback is dismissed as self-interested. Each source of testimony is evaluated in isolation, by people with their own prior commitments, without the discipline of contradictory examination.&lt;/p&gt;

&lt;p&gt;The decision that emerges from this process is not better than the best testimony. It is an average of the available testimony, weighted by the political influence of each source.&lt;/p&gt;

&lt;p&gt;In a courtroom, this would be recognized immediately as a miscarriage of procedure. In a boardroom, it is the normal operating mode.&lt;/p&gt;

&lt;h2 id=&quot;who-convenes-the-absent&quot;&gt;Who convenes the absent&lt;/h2&gt;

&lt;p&gt;When I enter a technical situation in crisis, the first thing I look for is not who is being accused. It is who has not been heard.&lt;/p&gt;

&lt;p&gt;The auditor who found my team by accident is the template for how this work actually gets done. You cannot trust the formal inquiry to surface the most important testimony, because the formal inquiry is structured by the same political dynamics that produced the crisis in the first place. The people with the best view of the actual mechanics of the failure are almost always the people the formal inquiry has the least incentive to interview.&lt;/p&gt;

&lt;p&gt;You have to go find them. Not as an afterthought, not as a completeness check, but as the primary activity of the diagnosis. The verdict that reaches the executive committee should reflect every material version of events, examined under contradiction, with the procedural discipline that is mandatory in courts and optional in corporations.&lt;/p&gt;

&lt;p&gt;This is not a neutral activity. It changes the outcome. In many of the situations where I have done this work, the conclusion that the executive team initially favored was not the conclusion that held up under full examination. A vendor was not replaced. A team was not dissolved. A reorganization was halted. The actual cause was further upstream than anyone wanted to look.&lt;/p&gt;

&lt;p&gt;The cost of not doing this work is not only that innocent parties take the fall. It is that the organization learns nothing. The circuit continues to blow fuses. Each verdict confirms the previous bias. The institutional memory of what actually goes wrong degrades over time, because every autopsy is conducted by the same people with the same interests.&lt;/p&gt;

&lt;p&gt;The value of the adversarial principle is not that it is fair. It is that it produces decisions grounded in the strongest available evidence. That value does not disappear when you move from the courtroom to the boardroom. The requirement for it does not diminish because the defendant is a technical team instead of a citizen.&lt;/p&gt;

&lt;p&gt;It just becomes optional. And in its absence, the verdict is written before the hearing begins.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;The pattern of stories told about teams rather than with them is the inversion of &lt;a href=&quot;/2026/04/07/looking-inside-the-walls/&quot;&gt;Looking Inside the Walls&lt;/a&gt;. The external vantage point required to surface unheard testimony is the argument of &lt;a href=&quot;/2026/04/28/the-pit-wall/&quot;&gt;The Pit Wall and the Cockpit&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>The Leica Eye</title>
      <link href="https://francois.aichelbaum.com/2026/05/05/the-leica-eye" />
      <updated>2026-05-05T10:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/05/05/the-leica-eye</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#what-the-algorithm-corrects-away&quot; id=&quot;markdown-toc-what-the-algorithm-corrects-away&quot;&gt;What the algorithm corrects away&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-photocopy-bias&quot; id=&quot;markdown-toc-the-photocopy-bias&quot;&gt;The photocopy bias&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-this-looks-like-in-an-is-audit&quot; id=&quot;markdown-toc-what-this-looks-like-in-an-is-audit&quot;&gt;What this looks like in an IS audit&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-tool-versus-the-oracle&quot; id=&quot;markdown-toc-the-tool-versus-the-oracle&quot;&gt;The tool versus the oracle&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;Arnaud said it during an internal meeting last week. We were reviewing a deliverable, talking about quality tolerances, the gap between what looks right and what is right. He wasn’t making a point. He was thinking out loud.&lt;/p&gt;

&lt;p&gt;“The imperfection that creates perfection.”&lt;/p&gt;

&lt;p&gt;I wrote it down. Not because it was clever. Because it described something I’d been circling around for months without finding the right frame.&lt;/p&gt;

&lt;p&gt;In Wetzlar, Germany, Leica assembles every lens by hand. Not as a marketing claim. As a manufacturing constraint. The tolerances involved in high-end optical engineering mean that two lenses of the exact same model, built on the same line, by the same technicians, will not produce exactly the same image. Photographers know this. They call it the “Leica rendering.” An organic quality to the image. Slightly warm, slightly imperfect, immediately recognizable. Not a flaw. A signature.&lt;/p&gt;

&lt;p&gt;No image correction algorithm reproduces it. Because it isn’t a setting. It’s the accumulated result of specific imperfections in that specific lens, ground by that specific hand, on that specific day.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/blog-post-leica.jpg&quot; alt=&quot;Leica camera and lens detail&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-the-algorithm-corrects-away&quot;&gt;What the algorithm corrects away&lt;/h2&gt;

&lt;p&gt;Take the same scene. Same light, same frame. Shoot it with an iPhone and with a Leica M.&lt;/p&gt;

&lt;p&gt;The iPhone gives you a perfect image. Sharp everywhere. Colors corrected. Sky enhanced. Skin smoothed. Fourteen algorithms decided for you what you wanted to see. The result is technically excellent. It is also functionally identical to the image anyone else would have taken with the same phone, in the same conditions.&lt;/p&gt;

&lt;p&gt;The Leica gives you your image. With the grain of that moment. The sharpness of that particular lens, not another. The depth of field you chose, not the one a computational model calculated as optimal.&lt;/p&gt;

&lt;p&gt;One produces consensus. The other produces point of view.&lt;/p&gt;

&lt;p&gt;I keep thinking about this when a CEO shows me an IS audit he received from a previous provider. Clean. Complete. Twenty pages. All the right sections. All the expected recommendations. And this strange feeling that it could be the audit of any company of the same size, in the same sector.&lt;/p&gt;

&lt;p&gt;The audit is technically correct. The recommendations are defensible. Nothing is wrong. But nothing is specifically right either. The report describes an archetype, not an organization. The algorithmic correction smoothed away everything that made this company’s situation unique.&lt;/p&gt;

&lt;p&gt;The photographer William Eggleston once said something about the democratic forest: everything in the frame has the same value. The gas station and the cathedral get the same attention. That’s what a good diagnostic does. It doesn’t privilege what the framework says should be important. It reads the whole frame with equal attention and lets the actual situation determine what matters.&lt;/p&gt;

&lt;p&gt;Most IS audits do the opposite. They arrive with the framework already loaded. The equivalent of an iPhone’s computational photography: before the shutter clicks, the software has already decided what the image should look like.&lt;/p&gt;

&lt;h2 id=&quot;the-photocopy-bias&quot;&gt;The photocopy bias&lt;/h2&gt;

&lt;p&gt;In 1928, Alexander Fleming left a petri dish open by mistake before going on holiday. A mold contaminated the bacterial culture. The bacteria around the mold died. Any rigorous lab technician would have discarded the contaminated dish, sterilized the bench, and started the experiment over.&lt;/p&gt;

&lt;p&gt;Fleming looked at it.&lt;/p&gt;

&lt;p&gt;What followed was penicillin. Millions of lives saved. Born from an error that any automated protocol would have corrected before it became visible.&lt;/p&gt;

&lt;p&gt;The discovery wasn’t the accident. The discovery was the gaze. Someone who saw in the anomaly something other than a problem to fix.&lt;/p&gt;

&lt;p&gt;I think about Fleming when I watch what’s happening with generative AI and the knowledge cycle. Models trained on content. That produce content. Ingested by other models. That produce more content. Each iteration smooths the outliers. Eliminates the accidents. The distribution tightens around an artificial center of gravity that nobody chose.&lt;/p&gt;

&lt;p&gt;This is the photocopy bias. Copy a text. Copy the copy. Copy that copy. After twenty iterations, the fine details are gone. What remains is legible, but it’s no longer the original text. The signal-to-noise ratio didn’t improve. The signal converged toward noise.&lt;/p&gt;

&lt;p&gt;In IS diagnostics, I see it emerging. Audits starting to look alike. Not because organizations look alike. Because the tools look alike. Same analysis frameworks. Same pattern libraries. Same standard recommendations. “Refactor your technical debt.” “Migrate to the cloud.” “Implement data governance.”&lt;/p&gt;

&lt;p&gt;Fine. But the technical debt in this particular organization exists because a CTO who left three years ago made a political decision disguised as a technical one, and nobody has dared to revisit it since. The real question isn’t in the code. It’s in the org chart. In a meeting that never happened.&lt;/p&gt;

&lt;p&gt;No model trained on ten thousand cases sees that. It’s too local. Too contextual. Too human. The algorithm corrected it away.&lt;/p&gt;

&lt;h2 id=&quot;what-this-looks-like-in-an-is-audit&quot;&gt;What this looks like in an IS audit&lt;/h2&gt;

&lt;p&gt;I was called into a mid-sized industrial company last year. A hundred and twenty people. Three different providers had audited their IS in two years. Each one recommended refactoring the in-house ERP. Each report was thorough, well-structured, defensible. Each one arrived at the same conclusion through the same analytical path.&lt;/p&gt;

&lt;p&gt;The CEO was hesitant to start a fourth project. Not because he doubted the diagnosis. Because something felt off and he couldn’t name what.&lt;/p&gt;

&lt;p&gt;We spent two days on site. Not in the code. In the corridors. With the teams. The ERP worked. Badly documented, fragile in places, but it ran. The real issue was an architecture decision taken in 2021 by a CTO who had left the company six months after making it. A political choice dressed as a technical one. Everyone knew. Nobody had written it down.&lt;/p&gt;

&lt;p&gt;The three previous audits had all seen the symptoms. Fragile ERP, inconsistent architecture, slow deployments. They’d all applied the standard pattern: the system is old, refactor it. None of them had asked why the system looked the way it did. Because the answer wasn’t in the system. It was in the history of the organization, in a decision that lived in the memory of three people who were still there but had never been asked.&lt;/p&gt;

&lt;p&gt;We didn’t recommend refactoring. We recommended a conversation. Between the CEO, his operations director, and the dev team. Three hours in a room. With the real question on the table: do we own this inheritance and build on it, or do we start over, but knowing why.&lt;/p&gt;

&lt;p&gt;Six months later, the system is running on the same base. Stabilized. Documented. The cost of a migration that didn’t need to happen was saved entirely.&lt;/p&gt;

&lt;p&gt;That’s the Leica eye. Not sharper than the algorithm. Differently focused. Tuned to what makes this particular situation unlike any other, even when the surface pattern says otherwise.&lt;/p&gt;

&lt;p&gt;The three previous audits weren’t bad. They were generic. They did exactly what they were designed to do: apply a proven framework to an observable situation and produce a defensible recommendation. The problem is that defensible and correct are not the same thing. A recommendation can be perfectly reasonable and entirely wrong for this specific organization, at this specific moment, given this specific history.&lt;/p&gt;

&lt;p&gt;The Leica doesn’t take better photos than the iPhone. It takes different ones. Ones where the photographer’s judgment is the primary variable, not the algorithm’s optimization target.&lt;/p&gt;

&lt;h2 id=&quot;the-tool-versus-the-oracle&quot;&gt;The tool versus the oracle&lt;/h2&gt;

&lt;p&gt;I should be direct about something before anyone reads this as an anti-AI argument. I use AI tools. Every day. For synthesis, for modeling, for accelerating the parts of the work where speed doesn’t compromise quality. The carpenter who uses a power drill doesn’t apologize for not drilling by hand.&lt;/p&gt;

&lt;p&gt;But the carpenter doesn’t ask the drill where to put the hole.&lt;/p&gt;

&lt;p&gt;The distinction matters. AI as a tool in the hands of a practitioner is formidable. AI as an oracle replacing the practitioner is something else entirely. It confuses computational power with contextual understanding.&lt;/p&gt;

&lt;p&gt;When I build a diagnostic for a client, AI helps me process information. It doesn’t help me sense that the CIO and the CFO haven’t spoken in six months. That the cloud migration was sold by a salesperson before an architect validated it. That the real problem isn’t the legacy system but the fear of touching something that still works.&lt;/p&gt;

&lt;p&gt;That comes from accumulated experience. Hundreds of situations read, reread, sometimes gotten wrong. A filter that nobody could train because the data doesn’t exist anywhere. It lives in the meeting room. In the unspoken. In the look on the CEO’s face when someone says the word “overhaul.”&lt;/p&gt;

&lt;p&gt;An iPhone gives you a perfect photo. A Leica gives you one that only you could have taken.&lt;/p&gt;

&lt;p&gt;The question for the person commissioning the audit isn’t which tool was used. It’s whether the person behind it was looking through a calibrated lens or just pointing and shooting.&lt;/p&gt;

&lt;p&gt;There’s a reason Leica still assembles lenses by hand in 2026, while every economic incentive in the world pushes toward automation. Some things cannot be produced by optimizing for the average. The specific, the contextual, the particular: these require a human hand that has done this enough times to know exactly why this time is different.&lt;/p&gt;

&lt;p&gt;Your IS doesn’t need a better algorithm. It needs someone who has looked through enough lenses to know which one fits.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;The view from outside the cockpit that the driver structurally cannot have is &lt;a href=&quot;/2026/04/28/the-pit-wall/&quot;&gt;The Pit Wall and the Cockpit&lt;/a&gt;. The IS equivalent of a building where nobody has looked inside the walls is &lt;a href=&quot;/2026/04/07/looking-inside-the-walls/&quot;&gt;Looking Inside the Walls&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>The Pit Wall and the Cockpit</title>
      <link href="https://francois.aichelbaum.com/2026/04/28/the-pit-wall" />
      <updated>2026-04-28T10:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/04/28/the-pit-wall</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#the-undercut-and-the-timing-of-decisions&quot; id=&quot;markdown-toc-the-undercut-and-the-timing-of-decisions&quot;&gt;The undercut and the timing of decisions&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-thresholds-dont-tell-you&quot; id=&quot;markdown-toc-what-thresholds-dont-tell-you&quot;&gt;What thresholds don’t tell you&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-decision-that-isnt-made-where-it-appears-to-be-made&quot; id=&quot;markdown-toc-the-decision-that-isnt-made-where-it-appears-to-be-made&quot;&gt;The decision that isn’t made where it appears to be made&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#when-the-safety-car-comes-out&quot; id=&quot;markdown-toc-when-the-safety-car-comes-out&quot;&gt;When the safety car comes out&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-radio-problem&quot; id=&quot;markdown-toc-the-radio-problem&quot;&gt;The radio problem&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-i-do-from-the-pit-wall&quot; id=&quot;markdown-toc-what-i-do-from-the-pit-wall&quot;&gt;What I do from the pit wall&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;In Formula 1, there are always two versions of the race happening simultaneously.&lt;/p&gt;

&lt;p&gt;The version on the pit wall: tire degradation curves updated every sector, gap to competitors measured to the hundredth of a second, undercut windows calculated by simulation, weather models updated every few minutes.&lt;/p&gt;

&lt;p&gt;The version in the cockpit: the rear end stepping out under traction on turn nine, the steering vibrating differently since lap thirty-two, the car feeling planted or loose in ways no sensor fully captures, the competitor’s line through the last corner suggesting he’s managing something.&lt;/p&gt;

&lt;p&gt;These are not the same race. They are complementary views of the same race. Neither is complete without the other.&lt;/p&gt;

&lt;p&gt;The decisions that win championships are not made from the pit wall alone. They are made in the gap between these two readings — in the quality of the interface between the engineer with the data and the driver with the feel.&lt;/p&gt;

&lt;p&gt;I think about this constantly when I audit an information system.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/blog-post-f1.jpg&quot; alt=&quot;Racing circuit at night with pit lane&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-undercut-and-the-timing-of-decisions&quot;&gt;The undercut and the timing of decisions&lt;/h2&gt;

&lt;p&gt;The undercut is one of the more elegant strategic concepts in modern Formula 1, and it illustrates something important about how good technical decisions work.&lt;/p&gt;

&lt;p&gt;A driver is running second, unable to pass on track. The gap to the leader is stable but not closing. On raw pace, they’re equal. The race appears locked.&lt;/p&gt;

&lt;p&gt;The pit wall brings the second car in for fresh tires several laps before the normal window. The driver exits with a ten-second deficit but considerably faster tires. He attacks. He posts fastest lap. Fastest lap. Fastest lap again.&lt;/p&gt;

&lt;p&gt;When the leader finally pits, he comes out behind.&lt;/p&gt;

&lt;p&gt;The position changed in the pit lane, not on track. The decisive move happened before anyone in the grandstands understood that a move was being made.&lt;/p&gt;

&lt;p&gt;What makes the undercut work is not speed. It’s the decision being made before the situation becomes obvious. By the time the undercut window is apparent to everyone — to the commentators, to the rival team, to the fans — it’s already too late to execute it cleanly.&lt;/p&gt;

&lt;p&gt;The teams that win on strategy are the ones that decided before the window opened. Not because they had better data. Because they acted on what the data was beginning to show before the picture was complete.&lt;/p&gt;

&lt;p&gt;Technical organizations fail in exactly the inverse way. They wait for the situation to be unambiguous. They want the full diagnosis before committing to treatment. By the time the technical debt, the architectural limit, or the team capacity problem is obvious to everyone in the room, the window for a clean resolution has usually closed. What remains is a forced pit stop under pressure, with cold tires, in traffic.&lt;/p&gt;

&lt;h2 id=&quot;what-thresholds-dont-tell-you&quot;&gt;What thresholds don’t tell you&lt;/h2&gt;

&lt;p&gt;There is a recurring argument I have with technical leaders that I now recognize as structurally identical to the threshold-versus-pattern debate in monitoring.&lt;/p&gt;

&lt;p&gt;The threshold argument: if a metric exceeds a value, trigger an alert. Simple, auditable, defensible.&lt;/p&gt;

&lt;p&gt;The pattern argument: monitor the shape of what’s happening, not just whether a number has crossed a line.&lt;/p&gt;

&lt;p&gt;On a mission for a startup that was in the process of fundraising — brought in by a business angel, the company had significant technical problems they weren’t fully seeing — I built a complete monitoring infrastructure. The ability to ingest every available metric, store it, display it, correlate it.&lt;/p&gt;

&lt;p&gt;The CEO wanted threshold-based alerts. Clear, readable, binary. Something exceeds X, notify me.&lt;/p&gt;

&lt;p&gt;I built something different. Behavioral detection. Patterns. Graphs that showed the form of what was happening, not just whether a number had crossed a boundary.&lt;/p&gt;

&lt;p&gt;He never fully understood why.&lt;/p&gt;

&lt;p&gt;His engineers did.&lt;/p&gt;

&lt;p&gt;The day they had scaling problems, the pattern had been visible in the graphs for six hours before any threshold was breached. The team could point to exactly what was forming, how it was forming, and why. They could act on the mechanism, not just observe the symptom.&lt;/p&gt;

&lt;p&gt;A threshold tells you the tire is hot. A pattern tells you how it’s going to fail and approximately when.&lt;/p&gt;

&lt;p&gt;In F1, the difference between a proactive pit stop and a tire failure on the main straight at 300 kilometers per hour is often the team’s ability to read the degradation curve rather than wait for a temperature alert.&lt;/p&gt;

&lt;h2 id=&quot;the-decision-that-isnt-made-where-it-appears-to-be-made&quot;&gt;The decision that isn’t made where it appears to be made&lt;/h2&gt;

&lt;p&gt;Hamilton. Silverstone. 2013.&lt;/p&gt;

&lt;p&gt;The British Grand Prix, late in the race. Mercedes kept Hamilton out three laps longer than the data suggested was safe. The rear-left tire was degrading faster than the models predicted — an issue that would affect multiple cars that afternoon.&lt;/p&gt;

&lt;p&gt;The tire failed at speed on the Hangar Straight.&lt;/p&gt;

&lt;p&gt;The data showed the tire was holding. The car wasn’t holding. These are different statements, and they diverged with consequences.&lt;/p&gt;

&lt;p&gt;I’ve been brought into COMEX presentations where the data was telling a story. Clean, coherent, well-formatted. The numbers supported the decision the room had already decided to make.&lt;/p&gt;

&lt;p&gt;The problem: I had the context. The actual data. Evidence that showed what was being constructed in that room — not an honest reading of the situation, but a political narrative dressed as analysis. The goal was to win an internal argument, not to act in the company’s interest.&lt;/p&gt;

&lt;p&gt;What struck me was not the maneuver. What struck me was that it worked.&lt;/p&gt;

&lt;p&gt;It worked because the executives in the room didn’t know what questions would break the story. They didn’t know what data existed that the presentation had chosen not to show. They couldn’t tell the difference between a dashboard that reflected reality and a dashboard built to reflect a decision already made.&lt;/p&gt;

&lt;p&gt;The pit wall was deciding. On filtered telemetry.&lt;/p&gt;

&lt;p&gt;(I should be precise about what I mean here: this isn’t necessarily cynical. People often genuinely believe the story they’re constructing. The mechanism is more subtle than deliberate fraud. When you’ve spent eight months building a case for an architectural decision, you start reading data through that lens. The confirmation isn’t fabricated — it’s selected. The effect is the same. The tire isn’t holding.)&lt;/p&gt;

&lt;p&gt;In that particular case, I had already put the necessary things in place. The political decision didn’t change the technical outcome. But it shouldn’t have required that kind of preparation. The failure was upstream — in a governance structure that couldn’t distinguish between telemetry and a story about telemetry.&lt;/p&gt;

&lt;h2 id=&quot;when-the-safety-car-comes-out&quot;&gt;When the safety car comes out&lt;/h2&gt;

&lt;p&gt;One of the most operationally revealing moments in Formula 1 is the safety car period.&lt;/p&gt;

&lt;p&gt;The race neutralizes. Every car closes up. Teams have ninety seconds, perhaps less, to make a decision: pit and take fresh rubber, or stay out and hold position.&lt;/p&gt;

&lt;p&gt;The teams that perform consistently well in these moments share one characteristic: they’ve already made the decision, before the safety car came out.&lt;/p&gt;

&lt;p&gt;Not the specific decision for this specific race. The framework. The decision tree. The predefined criteria that determine when you pit under safety car and when you don’t, who has the authority to override the simulation, what information is required before committing.&lt;/p&gt;

&lt;p&gt;The worst performances I’ve seen under safety car are from teams trying to improvise the decision criteria in real time while also executing the tactical choice. They’re simultaneously deciding how to decide and deciding. The cognitive load collapses the window.&lt;/p&gt;

&lt;p&gt;Technical organizations have safety car moments constantly. An unexpected departure. A security incident. A competitor shipping something that changes the market. A regulatory change with a six-week compliance window.&lt;/p&gt;

&lt;p&gt;The organizations that respond well are not necessarily the ones with the fastest leaders or the most data. They’re the ones that have defined, in advance, who decides what, with what minimum information, in what timeframe. Not a process document — a decision protocol. The difference is that a process describes steps. A protocol specifies authority, information minimums, and time constraints.&lt;/p&gt;

&lt;p&gt;Most technical organizations have processes. Almost none have decision protocols.&lt;/p&gt;

&lt;h2 id=&quot;the-radio-problem&quot;&gt;The radio problem&lt;/h2&gt;

&lt;p&gt;Everything I’ve described so far depends on something that Formula 1 teams have invested enormous effort in getting right and still frequently get wrong: the radio communication between the pit wall and the cockpit.&lt;/p&gt;

&lt;p&gt;The driver has three seconds per corner to receive information, process it, respond. The engineer has a firehose of incoming data and a driver whose attention is 95% on the car.&lt;/p&gt;

&lt;p&gt;The teams that communicate well have developed an extreme discipline about what gets said, when, and how. Critical information first. Short sentences. Acknowledged, not assumed. They’ve mapped the moments when the driver can process complex information versus moments where only immediate tactical instructions work.&lt;/p&gt;

&lt;p&gt;They’ve also developed an explicit protocol for the failure mode: what happens when the driver and the pit wall have conflicting reads of the situation. Not who wins the argument — the procedure for surfacing the conflict fast enough that both pieces of information can inform the decision.&lt;/p&gt;

&lt;p&gt;In technical organizations, this translation problem is almost universally unaddressed.&lt;/p&gt;

&lt;p&gt;The CTO has the system’s technical reality in his head in a form that took years to develop. The CEO has the business context and the strategic constraints. These two people meet for ninety minutes per week in a format designed for status updates, not for surfacing the kind of complex, ambiguous, partially-formed information that would actually be useful for joint decision-making.&lt;/p&gt;

&lt;p&gt;The radio doesn’t work. Not because either party is failing. Because nobody designed the communication protocol for the actual content that needs to travel across it.&lt;/p&gt;

&lt;h2 id=&quot;what-i-do-from-the-pit-wall&quot;&gt;What I do from the pit wall&lt;/h2&gt;

&lt;p&gt;I want to be direct about what role I’m describing here, because it’s easy to misread.&lt;/p&gt;

&lt;p&gt;The pit wall doesn’t drive the car better than the driver. It doesn’t have better instincts, better physical feedback, better situational awareness in the cockpit. What it has is a different vantage point — one that the driver structurally cannot occupy while driving.&lt;/p&gt;

&lt;p&gt;When I work with a technical organization, I’m not bringing superior technical judgment to the engineers who’ve been inside the system for three years. They know things about that system that I will never know.&lt;/p&gt;

&lt;p&gt;What I bring is the view from the pit wall. The ability to read the full picture from a position outside the cockpit. The ability to see what the data is beginning to show before the situation becomes unambiguous. The ability to name what the telemetry is actually measuring versus what the story about the telemetry is claiming.&lt;/p&gt;

&lt;p&gt;And critically: no stake in the decision. No architecture to defend. No team to protect. No political position to maintain.&lt;/p&gt;

&lt;p&gt;The driver who knows the car is wrong but can’t say so clearly because the team has six months invested in the current setup needs someone at the pit wall who will read the lap times without the attachment.&lt;/p&gt;

&lt;p&gt;Most technical organizations don’t have that position filled. Not because they lack competent people. Because everyone is in the cockpit.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;The pattern detection that lets you see problems forming before thresholds break is in &lt;a href=&quot;/2026/04/07/looking-inside-the-walls/&quot;&gt;Looking Inside the Walls&lt;/a&gt;. The decision paralysis that keeps cars in the wrong tire window is &lt;a href=&quot;/2026/04/21/pekin-express/&quot;&gt;Pekin Express&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Pekin Express</title>
      <link href="https://francois.aichelbaum.com/2026/04/21/pekin-express" />
      <updated>2026-04-21T10:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/04/21/pekin-express</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#the-truck-you-didnt-stop&quot; id=&quot;markdown-toc-the-truck-you-didnt-stop&quot;&gt;The truck you didn’t stop&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#we-need-more-data-is-not-an-analytical-statement&quot; id=&quot;markdown-toc-we-need-more-data-is-not-an-analytical-statement&quot;&gt;“We need more data” is not an analytical statement&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-constraint-actually-does&quot; id=&quot;markdown-toc-what-constraint-actually-does&quot;&gt;What constraint actually does&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#recovery-speed-is-the-measurement-that-doesnt-exist&quot; id=&quot;markdown-toc-recovery-speed-is-the-measurement-that-doesnt-exist&quot;&gt;Recovery speed is the measurement that doesn’t exist&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-constraint-is-already-there&quot; id=&quot;markdown-toc-the-constraint-is-already-there&quot;&gt;The constraint is already there&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;Pekin Express. Two people. One euro a day. No GPS. No hotel reservation. No plan beyond “get to the checkpoint before the elimination.”&lt;/p&gt;

&lt;p&gt;The show has been running for years. I’ve watched enough seasons to have a clear, uncomfortable opinion about why most teams lose. It’s not the one the show wants you to have.&lt;/p&gt;

&lt;p&gt;The teams who fail aren’t the ones without skills. They’re the ones who can’t stop waiting for better conditions before deciding to move.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/blog-post-roadtrip.jpg&quot; alt=&quot;Road through open landscape&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-truck-you-didnt-stop&quot;&gt;The truck you didn’t stop&lt;/h2&gt;

&lt;p&gt;There’s a pattern that appears in almost every season.&lt;/p&gt;

&lt;p&gt;A team is standing by the side of a road in the middle of nowhere. A truck drives past. They hesitate. Is it going in the right direction? Do they speak enough of the language? What if there’s a better option in twenty minutes?&lt;/p&gt;

&lt;p&gt;The truck is gone. Another team fifty meters away ran to the road the moment they heard the engine, gestured something universally understandable, and is now in the cab while the first team finishes its deliberation.&lt;/p&gt;

&lt;p&gt;The difference between these two teams is not intelligence. Not preparation. Not experience.&lt;/p&gt;

&lt;p&gt;It’s the tolerance for being wrong.&lt;/p&gt;

&lt;p&gt;The team that stopped the truck doesn’t know where it’s going. They might get out in three kilometers because it’s heading the wrong direction. They accept that. They’ve built into their operating model the assumption that some decisions will be wrong, and that speed of correction matters more than accuracy of first attempt.&lt;/p&gt;

&lt;p&gt;The team that waited had a different implicit model: make fewer, better decisions. Wait for more information. Optimize the choice. They’re still standing by the road when the other team reaches the checkpoint.&lt;/p&gt;

&lt;h2 id=&quot;we-need-more-data-is-not-an-analytical-statement&quot;&gt;“We need more data” is not an analytical statement&lt;/h2&gt;

&lt;p&gt;I want to name something that gets dressed up in analytical language constantly in technical organizations.&lt;/p&gt;

&lt;p&gt;“We need more data before we can decide on the architecture.”&lt;/p&gt;

&lt;p&gt;“We need another quarter of metrics before we can evaluate the team’s performance.”&lt;/p&gt;

&lt;p&gt;“We need to complete the RFP process before we can assess whether to change vendors.”&lt;/p&gt;

&lt;p&gt;These statements sound rigorous. They position the speaker as careful, methodical, evidence-based. In my experience, approximately half the time they’re accurate. And the other half of the time, they’re a political maneuver dressed as analytical discipline.&lt;/p&gt;

&lt;p&gt;Here’s how you tell the difference: ask what specific data point, if provided, would change the decision. If the answer is clear and concrete — “if retention drops below 85%, we change the approach” — it’s analytical. If the answer is vague — “we just need to have a clearer picture” — it’s not.&lt;/p&gt;

&lt;p&gt;The clearer picture is never coming. The picture is always incomplete. The decision is being avoided because making it creates accountability for the outcome, and not making it preserves the ability to say “we hadn’t decided yet” if things go wrong.&lt;/p&gt;

&lt;p&gt;In Pekin Express, that team is still standing by the road when the show ends.&lt;/p&gt;

&lt;h2 id=&quot;what-constraint-actually-does&quot;&gt;What constraint actually does&lt;/h2&gt;

&lt;p&gt;I spent years believing that resources solve problems. More budget, more time, more people, more clarity before committing. I was wrong, and I’ve watched enough technical organizations confirm it that I’m no longer polite about this.&lt;/p&gt;

&lt;p&gt;Constraint doesn’t just create urgency. It changes the decision-making process itself.&lt;/p&gt;

&lt;p&gt;When you have one euro a day, you stop optimizing and start deciding. Not chaotically — strategically. Every interaction has to count. You develop a sharp instinct for what’s worth trying and what isn’t, because the cost of a failed attempt is real and immediate. You become economical with your hypotheses.&lt;/p&gt;

&lt;p&gt;The teams with unlimited resources spend three months planning and ship something with seventeen dependencies, four of which nobody has time to maintain. The constraint teams ship in six weeks, own every decision they made, and can explain the reasoning for each one.&lt;/p&gt;

&lt;p&gt;I’ve seen this repeatedly in technical organizations. The teams that produced the most coherent work were not the ones with the most resources. They were the ones who had internalized a constraint-first mindset — who built features you could actually ship with the team you had, who made architecture decisions you could actually maintain at the current headcount, who said no to things that were theoretically good but practically impossible given the actual operating conditions.&lt;/p&gt;

&lt;p&gt;Unlimited budget doesn’t produce good decisions. Clarity about constraints does.&lt;/p&gt;

&lt;h2 id=&quot;recovery-speed-is-the-measurement-that-doesnt-exist&quot;&gt;Recovery speed is the measurement that doesn’t exist&lt;/h2&gt;

&lt;p&gt;The teams who win Pekin Express are not the ones who make the best first decisions.&lt;/p&gt;

&lt;p&gt;They’re the ones who recover fastest when their decisions don’t work out.&lt;/p&gt;

&lt;p&gt;They get dropped off in the wrong city. They adapt immediately. They stop a truck, discover it’s going the wrong direction, get out three kilometers later, and try again. They don’t spend twenty minutes processing the mistake. They’re already working the next problem.&lt;/p&gt;

&lt;p&gt;This is the capability that actually separates high-functioning technical organizations from struggling ones. And I’ll be direct: most companies hire for first-decision quality and have no idea how to measure recovery speed.&lt;/p&gt;

&lt;p&gt;Job interviews ask how you solved the hard problem. They don’t ask how long it took your team to acknowledge that an approach wasn’t working and change course. They don’t ask how you managed the transition from “we’re committed to this architecture” to “this architecture is wrong and we need to move” without losing six months of progress and three engineers who burned out during the pivot.&lt;/p&gt;

&lt;p&gt;Recovery speed is the metric. A team that decides carefully but recovers slowly will get lapped by a team that moves quickly, fails occasionally, and corrects without drama. Every time.&lt;/p&gt;

&lt;h2 id=&quot;the-constraint-is-already-there&quot;&gt;The constraint is already there&lt;/h2&gt;

&lt;p&gt;The executives I find most effective to work with share one characteristic: they want to understand the actual state of their technical system, including the uncomfortable parts, specifically because a decision is coming and they want to make it with accurate information. Not to delay the decision. To make it faster and better.&lt;/p&gt;

&lt;p&gt;The other kind — the one who commissions a study to validate a direction already decided — wants something else. They want coverage, not diagnosis. They’re not standing by the road waiting for a truck. They’re waiting for someone to confirm that waiting was the right strategy.&lt;/p&gt;

&lt;p&gt;I’m not useful for that second scenario.&lt;/p&gt;

&lt;p&gt;What I find useful to say, clearly: your technical debt is already accumulating. Your architecture already has limits your team is navigating around every sprint. Your system is already gaining complexity at a rate your current headcount cannot absorb indefinitely.&lt;/p&gt;

&lt;p&gt;That’s not a future risk. That’s the road you’re currently standing on. The truck has been passing for months.&lt;/p&gt;

&lt;p&gt;The question is not whether to move. The question is whether you’re going to build a decision-making model that lets you move with 60% of the information, recover fast when you’re wrong, and make the next decision without relitigating the last one.&lt;/p&gt;

&lt;p&gt;Or whether you’re going to wait for better conditions.&lt;/p&gt;

&lt;p&gt;They’re not coming.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;The authority structure that makes the first decision stick — or not — is in &lt;a href=&quot;/2026/03/23/the-referee/&quot;&gt;Three Seconds&lt;/a&gt;. The full diagnostic picture before you move is &lt;a href=&quot;/2026/04/07/looking-inside-the-walls/&quot;&gt;Looking Inside the Walls&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>The Kitchen</title>
      <link href="https://francois.aichelbaum.com/2026/04/14/the-kitchen" />
      <updated>2026-04-14T10:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/04/14/the-kitchen</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#what-happens-when-the-kitchen-falls-apart&quot; id=&quot;markdown-toc-what-happens-when-the-kitchen-falls-apart&quot;&gt;What happens when the kitchen falls apart&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-kitchen-that-runs-on-heroism&quot; id=&quot;markdown-toc-the-kitchen-that-runs-on-heroism&quot;&gt;The kitchen that runs on heroism&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-brigade-structure-and-why-nobody-implements-it&quot; id=&quot;markdown-toc-the-brigade-structure-and-why-nobody-implements-it&quot;&gt;The brigade structure and why nobody implements it&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-question-the-ceo-doesnt-ask&quot; id=&quot;markdown-toc-the-question-the-ceo-doesnt-ask&quot;&gt;The question the CEO doesn’t ask&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;A good kitchen is invisible.&lt;/p&gt;

&lt;p&gt;The food arrives hot. The timing is right. The table doesn’t wait between courses. From the dining room, the experience is seamless, apparently effortless.&lt;/p&gt;

&lt;p&gt;What the customer doesn’t see: ten minutes ago, the main course station was three dishes behind. Someone called it. Another station covered. A dish got plated in the wrong order and was reset in thirty seconds. The expediter absorbed two problems that never left the kitchen.&lt;/p&gt;

&lt;p&gt;The customer got his food on time. He has no idea anything happened. That’s the point — in a well-run kitchen, the customer never knows what it cost to serve him.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/blog-post-kitchen.jpg&quot; alt=&quot;Professional kitchen&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-happens-when-the-kitchen-falls-apart&quot;&gt;What happens when the kitchen falls apart&lt;/h2&gt;

&lt;p&gt;From the dining room you can tell. The entrees come out unevenly — some hot, some clearly plated ten minutes ago and kept waiting. The server starts apologizing with a look that says she’s been apologizing since service started. The bread basket gets refilled twice in five minutes and then not at all for half an hour.&lt;/p&gt;

&lt;p&gt;Nobody in the dining room saw the kitchen. But everyone felt that something broke.&lt;/p&gt;

&lt;p&gt;I think about this constantly when I audit an information system.&lt;/p&gt;

&lt;p&gt;The executive team is the dining room. They see what reaches the table. Deliveries, reports, incidents, release notes. They have opinions about team velocity, product quality, technical decisions. All of those opinions are formed from what arrives in front of them.&lt;/p&gt;

&lt;p&gt;They almost never see the kitchen.&lt;/p&gt;

&lt;p&gt;And this is not a metaphor. It’s a structural description of how most technical organizations operate. The people who make technical decisions at the organizational level do so from a position of almost complete information asymmetry. They know what they’re served. They don’t know what it cost to produce it, what was absorbed invisibly, what problem was routed around without being fixed, what the person who made it work has been doing for the last three sprints that isn’t on any roadmap.&lt;/p&gt;

&lt;h2 id=&quot;the-kitchen-that-runs-on-heroism&quot;&gt;The kitchen that runs on heroism&lt;/h2&gt;

&lt;p&gt;The worst technical kitchens I’ve encountered aren’t the ones with bad engineers. They’re the ones with excellent engineers running a system that only works because of them personally.&lt;/p&gt;

&lt;p&gt;One person who knows where everything is. One person who gets called at 3am when the production system breaks. One person whose departure would create an immediate crisis that nobody in management has modeled or prepared for, because as long as he’s there, the crisis doesn’t materialize and nobody needs to confront what his presence is actually hiding.&lt;/p&gt;

&lt;p&gt;The system works. Food comes out. Executives are satisfied with the delivery rate. The kitchen is invisible because one person is making it invisible, every single day, at a personal cost that isn’t on any dashboard.&lt;/p&gt;

&lt;p&gt;Then he leaves. Or burns out. Or gets an offer from a company that pays him what he’s actually worth. And the entire kitchen is exposed at once.&lt;/p&gt;

&lt;p&gt;This is where I find myself being brutally direct with CEOs: your senior engineer’s availability is not a performance indicator. It’s a risk indicator. The fact that he solves every crisis is evidence that the crises are structural and recurring — not that the system is healthy.&lt;/p&gt;

&lt;p&gt;A fire department that puts out fires efficiently is not proof that your building is safe. It’s proof that you have good firefighters. The building is still on fire.&lt;/p&gt;

&lt;h2 id=&quot;the-brigade-structure-and-why-nobody-implements-it&quot;&gt;The brigade structure and why nobody implements it&lt;/h2&gt;

&lt;p&gt;Escoffier’s brigade de cuisine wasn’t invented because restaurants got complicated. It was invented because the model where one head chef does everything by memory while helpers execute blindly doesn’t survive scale.&lt;/p&gt;

&lt;p&gt;Every role defined. Every station autonomous. Every hand-off explicit. The expediter at the pass ensures that timing aligns across stations before anything leaves the kitchen. When it works, a problem at the patissier station doesn’t cascade to the entremettier, because dessert is downstream and isolated from what’s happening at other stations.&lt;/p&gt;

&lt;p&gt;The IS equivalent is obvious and almost universally absent.&lt;/p&gt;

&lt;p&gt;Clear ownership of each technical domain. Explicit interfaces between systems. Defined decision authority. An architecture where a problem in the billing module doesn’t corrupt the delivery pipeline because the coupling was designed out at the start, not discovered during an incident at 2am.&lt;/p&gt;

&lt;p&gt;What I find instead, in almost every engagement: a kitchen where every station is connected to every other station. A change in one place requires three people to coordinate on two other things before anything can deploy. The expediter — usually the CTO or the senior engineer — spends his day managing dependencies rather than ensuring quality.&lt;/p&gt;

&lt;p&gt;You can hire better engineers into that structure. You can run sprints, ceremonies, retrospectives. You will improve the output rate at the margins. You will not solve the architecture.&lt;/p&gt;

&lt;p&gt;The kitchen is badly designed. You’re optimizing the chefs.&lt;/p&gt;

&lt;h2 id=&quot;the-question-the-ceo-doesnt-ask&quot;&gt;The question the CEO doesn’t ask&lt;/h2&gt;

&lt;p&gt;I ask executives one question at the start of every engagement: describe a time in the last six months when a technical project took significantly longer than you expected.&lt;/p&gt;

&lt;p&gt;Every answer has the same shape. We thought it would take three weeks. It took four months. We kept discovering dependencies we didn’t know existed. Every time we fixed one thing, three other things needed attention.&lt;/p&gt;

&lt;p&gt;The CEO tasted a late dish. What he experienced as a delivery problem was a kitchen architecture problem. And he’d been solving it by apologizing to the dining room.&lt;/p&gt;

&lt;p&gt;You can’t fix what you can’t see. You can’t restructure a kitchen you’ve never walked through. Status meetings and sprint reviews are the equivalent of reading the menu — they tell you what’s supposed to arrive, not what’s actually happening between the stations.&lt;/p&gt;

&lt;p&gt;The plates tell you the symptom. The kitchen shows you the cause. And until you’ve been in the kitchen — not for a tour, but to understand how it actually runs, where the dependencies live, what the known structural weaknesses are, who is the single point of failure — you’re making decisions about performance based on incomplete information.&lt;/p&gt;

&lt;p&gt;Most executives haven’t been in the kitchen. Because the kitchen is the engineers’ domain. The food is the CEO’s concern.&lt;/p&gt;

&lt;p&gt;This separation is expensive. More expensive than the four-month project that took eighteen months. Because the same structural cause will produce the same structural effect, in the next project, and the one after that, until someone walks through the kitchen and decides to redesign it.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;The IS equivalent of a kitchen running on heroism is described in &lt;a href=&quot;/2026/04/07/looking-inside-the-walls/&quot;&gt;Looking Inside the Walls&lt;/a&gt;. The decision paralysis that keeps bad kitchens running is &lt;a href=&quot;/2026/04/21/pekin-express/&quot;&gt;Pekin Express&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Looking Inside the Walls</title>
      <link href="https://francois.aichelbaum.com/2026/04/07/looking-inside-the-walls" />
      <updated>2026-04-07T10:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/04/07/looking-inside-the-walls</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#nobody-reads-page-11&quot; id=&quot;markdown-toc-nobody-reads-page-11&quot;&gt;Nobody reads page 11&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-real-reason-nobody-looks&quot; id=&quot;markdown-toc-the-real-reason-nobody-looks&quot;&gt;The real reason nobody looks&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-the-survey-actually-reveals&quot; id=&quot;markdown-toc-what-the-survey-actually-reveals&quot;&gt;What the survey actually reveals&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-decision-to-proceed-anyway&quot; id=&quot;markdown-toc-the-decision-to-proceed-anyway&quot;&gt;The decision to proceed anyway&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-youre-deciding-when-you-dont-look&quot; id=&quot;markdown-toc-what-youre-deciding-when-you-dont-look&quot;&gt;What you’re deciding when you don’t look&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;I know people who signed property contracts without reading the diagnostic report. Not naive people. Smart people with good judgment and functioning careers, who spent months finding the right property, found it, and then treated the due diligence as a bureaucratic formality that stood between them and the decision they’d already made.&lt;/p&gt;

&lt;p&gt;The crack was in the report. Page 11. Forty thousand euros they hadn’t planned for.&lt;/p&gt;

&lt;p&gt;They’d been shown the property. They liked it. The rest was detail.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/blog-post-house-survey.jpg&quot; alt=&quot;Building inspection&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;nobody-reads-page-11&quot;&gt;Nobody reads page 11&lt;/h2&gt;

&lt;p&gt;I am searching for a space for a project. Every visit starts the same way. Before we discuss price, before we discuss layout: who ran the diagnostics, when, and can I read the full report?&lt;/p&gt;

&lt;p&gt;I’ve walked away from properties that looked perfect on the surface. Right neighborhood, right price, right light. But the asbestos survey was from 2009. The electrical assessment was marked incomplete. The structural report had a note that the inspector himself described as “requiring further investigation.”&lt;/p&gt;

&lt;p&gt;That note is the whole story. When the inspector says further investigation, he means: I found something I couldn’t resolve. That’s not a minor remark buried in an appendix. That’s the professional who examined the building telling you there’s something he couldn’t see clearly and that warrants a specialist.&lt;/p&gt;

&lt;p&gt;In property, the diagnostic is legally mandatory. The system forces the look because the regulators understood, correctly, that almost nobody does it voluntarily. Without the legal requirement, the market would run entirely on presentation.&lt;/p&gt;

&lt;p&gt;In tech, there’s no legal requirement. You can hire a new CTO, launch a full rebuild, raise a funding round, sign an enterprise contract — without anyone having examined the actual state of your information system. Nothing stops you. Nothing forces the look.&lt;/p&gt;

&lt;p&gt;And so most companies don’t look. They buy on presentation.&lt;/p&gt;

&lt;h2 id=&quot;the-real-reason-nobody-looks&quot;&gt;The real reason nobody looks&lt;/h2&gt;

&lt;p&gt;I want to be direct about something that rarely gets said: most leadership teams avoid the IS audit not because they don’t know it exists, but because they sense what it will find.&lt;/p&gt;

&lt;p&gt;They’ve been managing around problems they can’t name for months. Deliveries that take longer than they should. Decisions that require five people to coordinate something that should require one. Specific initiatives that always get blocked at the same point. They know something is wrong. They don’t know exactly what.&lt;/p&gt;

&lt;p&gt;Commissioning an audit makes the invisible visible. And once it’s visible, you’re obligated to address it. Or you’re explicitly choosing not to, which is a different kind of accountability.&lt;/p&gt;

&lt;p&gt;The survey creates obligation. Not commissioning it preserves optionality — the comfortable fiction that maybe it’s not that bad, maybe it resolves itself, maybe next quarter the context will be better.&lt;/p&gt;

&lt;p&gt;I’ve seen this explicitly. A CEO who told me, directly and without embarrassment: “I know we have technical debt. I’d rather not know exactly how much until after the fundraise closes.” He wasn’t ignorant. He was managing his information exposure deliberately. The fundraise closed. He called me three months later. The technical debt had not respected his timeline.&lt;/p&gt;

&lt;h2 id=&quot;what-the-survey-actually-reveals&quot;&gt;What the survey actually reveals&lt;/h2&gt;

&lt;p&gt;The reaction I see most often when I deliver a technical survey isn’t panic. It’s relief.&lt;/p&gt;

&lt;p&gt;The executive has been living with a weight he couldn’t name or locate. Specific decisions kept taking longer than expected. Certain questions couldn’t be answered without involving four people and taking two weeks. There was a pattern, a recurring friction, that he’d learned to route around because he didn’t know what was causing it.&lt;/p&gt;

&lt;p&gt;The survey names it. Gives it edges and a scope. Turns “there’s something wrong with the way we make technical decisions” into “your authentication layer is tightly coupled to your billing module, which means any change to pricing logic requires a full regression test across two systems that have no separation of concerns.”&lt;/p&gt;

&lt;p&gt;Before the name, it’s anxiety. After the name, it’s a project. Projects are manageable. Anxiety is not.&lt;/p&gt;

&lt;p&gt;The survey didn’t create the problem. The problem existed long before we looked. The survey changed it from the vague category to the specific one, and specific problems have solutions.&lt;/p&gt;

&lt;h2 id=&quot;the-decision-to-proceed-anyway&quot;&gt;The decision to proceed anyway&lt;/h2&gt;

&lt;p&gt;Here’s where I need to be honest about what happens after the survey, because it’s not always what you’d hope.&lt;/p&gt;

&lt;p&gt;I’ve had clients who read the report, understood it completely, and decided to proceed with the acquisition or the launch anyway. Knowing the roof needed replacing. Having read page 11 this time.&lt;/p&gt;

&lt;p&gt;That’s not necessarily wrong. You can buy the house with the roof if the price reflects it and you’ve allocated the budget. You can launch on architecture with known debt if you’ve modeled the risk and have a remediation plan with real dates on it.&lt;/p&gt;

&lt;p&gt;What’s not acceptable is the CEO reading the executive summary, asking two questions, and announcing that they’re proceeding with the product launch because the fundraise timeline doesn’t allow a four-month architecture pause — and then being surprised eight months later when the architecture breaks at the worst possible moment.&lt;/p&gt;

&lt;p&gt;Technical debt doesn’t respect launch timelines. It surfaces at maximum load: the product launch, the enterprise contract, the press mention that brings ten times normal traffic. The system held through the testing environment. It holds through the pilot. It fails the day you need it most, because the day you need it most is the first time it’s under production conditions at production scale.&lt;/p&gt;

&lt;p&gt;At that point it doesn’t cost four months. It costs eight months, a botched launch, a client who left, and three engineers who are quietly updating their CVs.&lt;/p&gt;

&lt;h2 id=&quot;what-youre-deciding-when-you-dont-look&quot;&gt;What you’re deciding when you don’t look&lt;/h2&gt;

&lt;p&gt;Not reading the report is a decision. It’s a decision to proceed with a known information gap, dressed as an oversight.&lt;/p&gt;

&lt;p&gt;I’m taking time on a current project to look properly before we commit. Some people in the room think we’re moving too slowly. They’re counting the weeks we’re not producing deliverables.&lt;/p&gt;

&lt;p&gt;I’m counting the problems we won’t have in eight months. That math always comes out the same way.&lt;/p&gt;

&lt;p&gt;The question isn’t whether to commission a technical survey of your IS. The question is whether you’re prepared to act on what it finds, including the findings that are inconvenient for the decisions you’ve already leaned toward.&lt;/p&gt;

&lt;p&gt;If the answer is no — if you know in advance that the survey won’t change what you’re going to do — then you’re not missing a diagnostic. You’re missing the organizational honesty to admit you’ve already decided.&lt;/p&gt;

&lt;p&gt;That’s a different problem. And it doesn’t have a technical solution.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;Why executives avoid the diagnostic is covered in &lt;a href=&quot;/2026/03/30/prescribing-without-examining/&quot;&gt;Prescribing Without Examining&lt;/a&gt;. Why the same kitchen breaks every time is in &lt;a href=&quot;/2026/04/14/the-kitchen/&quot;&gt;The Kitchen&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Prescribing Without Examining</title>
      <link href="https://francois.aichelbaum.com/2026/03/30/prescribing-without-examining" />
      <updated>2026-03-30T10:00:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2026/03/30/prescribing-without-examining</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#the-brief-already-has-the-conclusion&quot; id=&quot;markdown-toc-the-brief-already-has-the-conclusion&quot;&gt;The brief already has the conclusion&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-consulting-industry-has-a-structural-incentive-to-keep-you-sick&quot; id=&quot;markdown-toc-the-consulting-industry-has-a-structural-incentive-to-keep-you-sick&quot;&gt;The consulting industry has a structural incentive to keep you sick&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#referred-pain&quot; id=&quot;markdown-toc-referred-pain&quot;&gt;Referred pain&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-questions-i-ask-that-arent-in-the-brief&quot; id=&quot;markdown-toc-the-questions-i-ask-that-arent-in-the-brief&quot;&gt;The questions I ask that aren’t in the brief&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-happens-when-the-diagnosis-is-inconvenient&quot; id=&quot;markdown-toc-what-happens-when-the-diagnosis-is-inconvenient&quot;&gt;What happens when the diagnosis is inconvenient&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;You would never accept a doctor who walks into the examination room, hears you say “my head hurts,” and writes a prescription without touching you.&lt;/p&gt;

&lt;p&gt;In medicine, that’s a fault. It can cost a doctor their license.&lt;/p&gt;

&lt;p&gt;In tech consulting, it’s the business model.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/blog-post-medical.jpg&quot; alt=&quot;Doctor with stethoscope&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;the-brief-already-has-the-conclusion&quot;&gt;The brief already has the conclusion&lt;/h2&gt;

&lt;p&gt;I receive these kinds of briefs regularly. Not occasionally. Regularly.&lt;/p&gt;

&lt;p&gt;“Our team is slow. We need a process audit.” Translation: confirm that the problem is the team lead and recommend replacing them. We’ve already told him his contract isn’t being renewed. We need documentation for HR.&lt;/p&gt;

&lt;p&gt;“Our cloud costs are out of control. We need an optimization plan.” Translation: confirm that the migration was poorly handled and recommend a new vendor. We’ve already started conversations with AWS. We need an outside voice to close the internal debate.&lt;/p&gt;

&lt;p&gt;“Our CTO isn’t performing. We need an outside view.” Translation: we’ve decided to let him go. We need a professional who’ll write it up in a way that holds legally and looks objective.&lt;/p&gt;

&lt;p&gt;I’ve turned down these missions. Not out of principle — principle is a luxury. Because the work is structurally corrupt. You spend the entire engagement justifying a conclusion that existed before you started. Anything you find that doesn’t support the original diagnosis gets quietly deprioritized. And at the end, the client gets what they paid for, which was never the truth about their system. It was ammunition.&lt;/p&gt;

&lt;p&gt;The consultant who takes that work isn’t doing consulting. They’re doing litigation support without the courtroom.&lt;/p&gt;

&lt;h2 id=&quot;the-consulting-industry-has-a-structural-incentive-to-keep-you-sick&quot;&gt;The consulting industry has a structural incentive to keep you sick&lt;/h2&gt;

&lt;p&gt;Here’s what I rarely hear said directly: the dominant economic model in tech consulting rewards the prescription, not the diagnosis.&lt;/p&gt;

&lt;p&gt;If I run a team of fifty consultants and I need them billable, I need ongoing engagements. An engagement that finds the problem, solves it in four months, and ends is bad for revenue. An engagement that validates a migration, manages the migration, then optimizes the result of the migration is eighteen months of billings.&lt;/p&gt;

&lt;p&gt;I’m not describing bad actors. I’m describing rational actors in a system that rewards perpetuation over resolution.&lt;/p&gt;

&lt;p&gt;The client is often not aware of this. They’ve hired a firm. The firm has good people. The people are well-intentioned. But the incentive structure means that the questions the firm asks are shaped by what they can subsequently sell, not by what the client actually needs to understand.&lt;/p&gt;

&lt;p&gt;This is why “referred pain” is so prevalent and so expensive.&lt;/p&gt;

&lt;h2 id=&quot;referred-pain&quot;&gt;Referred pain&lt;/h2&gt;

&lt;p&gt;In medicine, referred pain means the injury is in one place and the pain manifests somewhere else entirely. You treat the shoulder. The problem is in the heart.&lt;/p&gt;

&lt;p&gt;Tech systems have referred pain as their default mode.&lt;/p&gt;

&lt;p&gt;A cloud bill that keeps growing is almost never a cloud problem. It’s usually an architecture decision made under time pressure three years ago, without visibility on what the business would become. The engineer made a reasonable choice given what they knew. The business grew in a direction nobody fully anticipated. The architecture didn’t adapt. The bill reflects the structural gap, not cloud mismanagement.&lt;/p&gt;

&lt;p&gt;You hire a cloud optimization consultant. You shave 22% off the invoice in quarter one. You’re satisfied. In quarter three, the bill is back at 90% of where it started, because you changed the symptom, not the cause. The consultant will offer you a phase two engagement.&lt;/p&gt;

&lt;p&gt;A CTO who “isn’t performing” is almost never performing badly on purpose. More often, he’s navigating an organization that gave him the title without the authority, expects him to deliver technical transformation while fighting every budget conversation alone, and has a product roadmap that changes direction every quarter. He can’t perform because the structural conditions for performance don’t exist.&lt;/p&gt;

&lt;p&gt;Replace him. You get a new person in the same structural trap. I’ve watched this happen. The new CTO quit eight months in. The outgoing CTO found a role at a company with actual governance. The board called it a hiring failure.&lt;/p&gt;

&lt;p&gt;It was a diagnostic failure.&lt;/p&gt;

&lt;h2 id=&quot;the-questions-i-ask-that-arent-in-the-brief&quot;&gt;The questions I ask that aren’t in the brief&lt;/h2&gt;

&lt;p&gt;I start every engagement by asking things the brief didn’t ask for.&lt;/p&gt;

&lt;p&gt;“Before we look at team velocity — walk me through the last three times a technical decision was overridden after it was made.” That’s not a process question. That’s a governance question. It tells me whether the CTO leads or manages upward anxiety. The answer usually comes with a pause.&lt;/p&gt;

&lt;p&gt;“Show me the last significant vendor choice that went against what the technical team recommended.” If it exists, the story it tells about authority and accountability in that organization is almost always the real brief.&lt;/p&gt;

&lt;p&gt;I’ve had clients tell me these questions are off-topic. “We hired you for the cloud costs.”&lt;/p&gt;

&lt;p&gt;I keep asking anyway. Because the referring pain is never in the cloud bill, and a doctor who only examines where it hurts is going to miss the thing that matters.&lt;/p&gt;

&lt;h2 id=&quot;what-happens-when-the-diagnosis-is-inconvenient&quot;&gt;What happens when the diagnosis is inconvenient&lt;/h2&gt;

&lt;p&gt;Finding the problem is not the hard part. Problems are visible once you stop looking where you were told to look.&lt;/p&gt;

&lt;p&gt;The hard part is delivering a finding that contradicts the decision the client has already committed to emotionally. That’s when the room gets quiet in an uncomfortable way.&lt;/p&gt;

&lt;p&gt;I’ve delivered reports that said the CTO was not the problem. That the architecture was sound given the constraints. That the cloud costs reflected real business growth, not waste. Three times in four, the client takes the report, says it’s very interesting, and proceeds with the replacement or migration they had already decided on.&lt;/p&gt;

&lt;p&gt;That’s their right. It’s their company.&lt;/p&gt;

&lt;p&gt;But here’s what I want to be clear about: the problem doesn’t go away because you changed the person or the vendor. The structural conditions that produced the symptoms remain intact. In twelve months, you’ll have new symptoms. And someone will recommend a new prescription.&lt;/p&gt;

&lt;p&gt;The question isn’t whether your technical situation is a problem. It’s whether you actually want to know what’s causing it. Those two questions have different answers more often than anyone in this industry admits.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;The authority problem behind “who makes the call” is explored in &lt;a href=&quot;/2026/03/23/the-referee/&quot;&gt;Three Seconds&lt;/a&gt;. The structural consequence — an IS nobody has properly examined — is in &lt;a href=&quot;/2026/04/07/looking-inside-the-walls/&quot;&gt;Looking Inside the Walls&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Three Seconds</title>
      <link href="https://francois.aichelbaum.com/2026/03/23/the-referee" />
      <updated>2026-03-23T10:00:00+01:00</updated>
      <id>https://francois.aichelbaum.com/2026/03/23/the-referee</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-bookmark&quot;&gt;&lt;/i&gt; Contents&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#300-decisions-per-match-with-incomplete-information&quot; id=&quot;markdown-toc-300-decisions-per-match-with-incomplete-information&quot;&gt;300 decisions. Per match. With incomplete information.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-executives-in-that-room-had-been-spectators&quot; id=&quot;markdown-toc-the-executives-in-that-room-had-been-spectators&quot;&gt;The executives in that room had been spectators&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#not-deciding-is-also-a-decision&quot; id=&quot;markdown-toc-not-deciding-is-also-a-decision&quot;&gt;Not deciding is also a decision&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#most-companies-dont-know-who-the-referee-is&quot; id=&quot;markdown-toc-most-companies-dont-know-who-the-referee-is&quot;&gt;Most companies don’t know who the referee is&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;I sponsor the SCO. I hold a corporate box. I go to almost every home game.&lt;/p&gt;

&lt;p&gt;For years I thought I understood football. I had opinions about the referee. Loud ones, sometimes. Like every executive who has opinions about their IS without having looked at it.&lt;/p&gt;

&lt;p&gt;Then I spent an evening with Pierre Chevreux — 13 years as a Ligue 1 assistant referee, now running a café in Angers. He dismantled something I’d been doing professionally for twenty-five years without knowing it.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/blog-post-referee.jpg&quot; alt=&quot;Referee on a pitch&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;300-decisions-per-match-with-incomplete-information&quot;&gt;300 decisions. Per match. With incomplete information.&lt;/h2&gt;

&lt;p&gt;300 decisions per match. One every 18 seconds. Some clusters of ten decisions in under a minute. No pause, no rewind, no committee, no “let’s schedule a follow-up.”&lt;/p&gt;

&lt;p&gt;Pierre described a Bordeaux-PSG where the keeper picks up a backpass because Ibrahimovic is charging. Obvious foul. Pierre sees it clearly from his position on the line, signals it. The central referee doesn’t follow. And in a trio, you trust each other. You don’t override each other publicly. Pierre swallows it. The decision holds. The match moves on.&lt;/p&gt;

&lt;p&gt;What struck me wasn’t the injustice. It was the architecture.&lt;/p&gt;

&lt;p&gt;Each official has a zone, a role, an angle of vision. The system only works if everyone accepts its constraints. The moment one person starts overriding another’s zone, the whole structure collapses. What looks like a wrong call from the stands is often the correct application of a governance model the crowd doesn’t know exists.&lt;/p&gt;

&lt;h2 id=&quot;the-executives-in-that-room-had-been-spectators&quot;&gt;The executives in that room had been spectators&lt;/h2&gt;

&lt;p&gt;Everyone in that room — including me — had spent years building confident opinions about referee quality. From sixty meters away. At a sprint. Under floodlights. With thirty thousand people shouting in our ears.&lt;/p&gt;

&lt;p&gt;We had never seriously considered what the role actually requires.&lt;/p&gt;

&lt;p&gt;This is the exact cognitive posture most executives bring to their information system. They’ve watched it from the stands. They have opinions. The system is slow. The team doesn’t deliver. The CTO doesn’t communicate. The architecture is outdated.&lt;/p&gt;

&lt;p&gt;All of that might be true. But it’s spectator analysis. Built from what reaches the dining room, not from what happens in the kitchen. Built from the output, not from understanding the constraints that produced it.&lt;/p&gt;

&lt;p&gt;I’ve sat across from CEOs who were completely convinced their architecture problem was a people problem. Three months into the engagement, it turned out their “slow team” was navigating an undocumented maze of dependencies that took me two weeks to fully map. The team wasn’t slow. They were doing the equivalent of refereeing with one eye, one arm, and a rulebook written in a language nobody remembered having learned.&lt;/p&gt;

&lt;p&gt;The CEO had watched the match. He hadn’t looked at the referee’s operating conditions.&lt;/p&gt;

&lt;h2 id=&quot;not-deciding-is-also-a-decision&quot;&gt;Not deciding is also a decision&lt;/h2&gt;

&lt;p&gt;The part that stopped me cold: Pierre said, not saying anything is also a decision.&lt;/p&gt;

&lt;p&gt;A referee’s silence has consequences exactly like his whistle. Except we never replay the abstentions after the match. We only analyze the interventions. The non-calls, the moments where play was allowed to continue — nobody reviews those.&lt;/p&gt;

&lt;p&gt;I think about this in every COMEX I’ve observed where a technical decision was avoided for months. The call to replace a brittle architecture. The call to exit a vendor relationship that costs more than it produces. The call to tell the board that the product roadmap assumes a technical capacity the team doesn’t have.&lt;/p&gt;

&lt;p&gt;Silence is not neutrality. Silence is a decision with deferred consequences. And the deferred consequences in tech are almost always more expensive than the call would have been, because technical debt compounds exactly like financial debt — with interest.&lt;/p&gt;

&lt;p&gt;The organizations I’ve seen handle this well have one thing in common: someone with the actual authority to make a call and have it hold. Not just the title. Not the meeting organizer. The person whose whistle the rest of the organization respects without relitigating it.&lt;/p&gt;

&lt;h2 id=&quot;most-companies-dont-know-who-the-referee-is&quot;&gt;Most companies don’t know who the referee is&lt;/h2&gt;

&lt;p&gt;Here’s the question I now ask at the start of every engagement, and it’s rarely answered cleanly:&lt;/p&gt;

&lt;p&gt;In your organization, who has the actual authority to make a technical call and have it hold?&lt;/p&gt;

&lt;p&gt;Not who has the title. Not who calls the meetings. Who, when they blow the whistle, has the rest of the organization move forward without negotiating the call?&lt;/p&gt;

&lt;p&gt;The most common answer: the CEO thinks it’s the CTO. The CTO thinks he needs buy-in from the CFO. The CFO thinks it’s a product question. Nobody whistles. The play continues. The foul compounds. And eighteen months later, you’re looking at a bill that represents the accumulated cost of decisions that were never made when they should have been.&lt;/p&gt;

&lt;p&gt;Pierre Chevreux made 300 calls per match. He had authority within his zone. He trusted the system. He delivered clean results under conditions most executive teams would find unworkable.&lt;/p&gt;

&lt;p&gt;Your organization makes fewer decisions than a Ligue 1 referee. It takes longer. And the authority structure is less clear.&lt;/p&gt;

&lt;p&gt;That’s not a football problem.&lt;/p&gt;

&lt;hr /&gt;

&lt;p&gt;&lt;em&gt;On a related note: the same executives who can’t name their referee are often the same ones who pre-write the verdict before commissioning the audit. &lt;a href=&quot;/2026/03/30/prescribing-without-examining/&quot;&gt;Prescribing Without Examining&lt;/a&gt; goes into that.&lt;/em&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Social benefits and risks from AI</title>
      <link href="https://francois.aichelbaum.com/2023/01/23/social-benefits-and-risks-from-ai" />
      <updated>2023-01-23T08:01:01+01:00</updated>
      <id>https://francois.aichelbaum.com/2023/01/23/social-benefits-and-risks-from-ai</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-book&quot;&gt;&lt;/i&gt; Social benefits and risks from AI&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#will-it-help-or-will-it-hurt&quot; id=&quot;markdown-toc-will-it-help-or-will-it-hurt&quot;&gt;Will it help or will it hurt?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-social-benefit&quot; id=&quot;markdown-toc-the-social-benefit&quot;&gt;The social benefit&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-social-risk&quot; id=&quot;markdown-toc-the-social-risk&quot;&gt;The social risk&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#some-examples&quot; id=&quot;markdown-toc-some-examples&quot;&gt;Some examples&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#conclusion&quot; id=&quot;markdown-toc-conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;There’s a lot of talk about the benefits and risks of artificial intelligence (AI). Some people believe that AI will make our lives better, while others fear that it could do harm. We’re not going to settle that debate here–but we will look at what some experts say about how AI might affect society in general.&lt;/p&gt;

&lt;h2 id=&quot;will-it-help-or-will-it-hurt&quot;&gt;Will it help or will it hurt?&lt;/h2&gt;

&lt;p&gt;It’s unclear whether AI will help or hurt society, but there are both risks and benefits associated with the technology.&lt;/p&gt;

&lt;p&gt;AI is a tool, like any other technology: it has the potential to be used for good or bad. It depends on how it is applied. There are many examples of AI being used for good: for example, Facebook’s Messenger bot that helps identify suicidal posts; or Microsoft’s Tay chatbot that was trained on twitter data and quickly became racist after interacting with real people online (in response to this failure, Microsoft decided not to release its new teen girl chatbot Zo).&lt;/p&gt;

&lt;p&gt;It’s not all about the technology though—it’s also about how people use it.&lt;/p&gt;

&lt;p&gt;When a company becomes a monopoly, it can charge higher prices than would be possible with competition. This makes consumers worse off because they have to pay more for products or services that would cost less if there were multiple companies in the market. In addition, monopolies reduce the incentive for firms to innovate new products because there is no reason to improve on their existing product if they don’t have any competitors that can offer something different. This is why we need AI more than ever before. The world is changing faster than ever before, and it’s only going to get faster. We can either embrace those changes or fight them - but if we want the best possible future for ourselves and our children, then we have no choice but to embrace them. The same technology can be used for both good and bad. For example, the internet has been used to create jobs that didn’t exist before (like being an Uber driver) but also allowed terrorists to recruit and plan attacks…&lt;/p&gt;

&lt;p&gt;AI is no different. It will be used for both good and bad purposes, but the good uses far outweigh the bad ones. That’s why it’s so important that we continue to develop AI technology so that it can help humanity solve some of its biggest problems&lt;/p&gt;

&lt;h2 id=&quot;the-social-benefit&quot;&gt;The social benefit&lt;/h2&gt;

&lt;p&gt;The social benefit of AI is that it will make life better for everyone.&lt;/p&gt;

&lt;p&gt;AI will help us find jobs, learn new skills, and make better decisions. It will help us solve problems in new ways and enjoy life more than ever before. And it will also connect people together in ways that were never possible before - bringing families closer together and making the world a better place for all of us to live in.&lt;/p&gt;

&lt;p&gt;AI is already making a huge difference in the lives of many people. AI can help us find jobs, learn new skills and make better decisions. AI will help us solve problems in new ways and enjoy life more than ever before.&lt;/p&gt;

&lt;p&gt;AI will connect people together in ways that were never possible before. AI will bring families closer together and make the world a better place for all of us to live in.
AI is already making a huge difference in the lives of many people.&lt;/p&gt;

&lt;p&gt;AI can help us find jobs, learn new skills and make better decisions. AI will help us solve problems in new ways and enjoy life more than ever before. AI will connect people together in ways that were never possible before - bringing families closer together and making the world a better place for all of us to live in. AI is already making a huge difference in the lives of many people.&lt;/p&gt;

&lt;h2 id=&quot;the-social-risk&quot;&gt;The social risk&lt;/h2&gt;

&lt;p&gt;The social risk of AI is that the technology companies will turn into monopolies.&lt;/p&gt;

&lt;p&gt;Monopolies are companies that dominate an industry and have no or few competitors. Examples of monopolies include Starbucks, Walmart, and Google. When a firm becomes a monopoly, it can charge higher prices than would be possible with competition. This makes consumers worse off because they have to pay more for products or services that would cost less if there were multiple companies in the market. In addition, monopolies reduce the incentive for firms to innovate new products because there is no reason to improve on their existing product if they don’t have any competitors that can offer something different.&lt;/p&gt;

&lt;p&gt;As AI technology continues to progress, the risk that technology companies will become monopolies increases. With the power of AI, companies will be able to create products and services that are so advanced that no other company can compete. This could lead to a situation where a single company controls the entire market, leaving consumers with no other choice.&lt;/p&gt;

&lt;p&gt;This could result in a decrease in consumer welfare and an increase in social inequality.&lt;/p&gt;

&lt;h2 id=&quot;some-examples&quot;&gt;Some examples&lt;/h2&gt;

&lt;h3 id=&quot;chatgpt-and-copyai&quot;&gt;Chatgpt and Copy.ai&lt;/h3&gt;

&lt;p&gt;They are both two examples of how AI can be used for good.&lt;/p&gt;

&lt;p&gt;Chatgpt is an example of how AI can be used to help people with autism. Chatgpt is a chatbot that helps people learn social skills, including what it means to be autistic and ways they can interact with others. It’s designed as a resource for children who have been diagnosed with autism and their parents, but anyone can use it too!&lt;/p&gt;

&lt;p&gt;Copy.ai is another example of how AI can be used for good: It’s an intelligent personal assistant that learns from your behavior and helps you make decisions based on what you’ve done before. For example, if you want to make sure you never forget about a dentist appointment again (and who doesn’t?), Copy will remind you every day at noon—unless it notices that Dr. Snickerdoodle has become your dentist after all, in which case he’ll let himself into your office space at 6 pm every evening until he sees the light go off in his office next door when everyone leaves after 7 pm.”&lt;/p&gt;

&lt;p&gt;As a society, we need to be careful about how we approach AI. I believe there is an ethical dimension to AI that needs more attention. This means thinking about the implications of AI and how it could impact our lives before it becomes mainstream. It’s important for us to have conversations now—about who will control this technology and how it will be used in society—rather than reacting once it’s already out there.&lt;/p&gt;

&lt;p&gt;Another area I’m interested in is how AI can help us with our emotions. For example, we could use a system like this to help people who are suffering from depression or anxiety.&lt;/p&gt;

&lt;h3 id=&quot;midjourney-can-draw-it-for-you&quot;&gt;Midjourney can draw it for you&lt;/h3&gt;

&lt;p&gt;Midjourney is a platform designed to connect people with similar values and interests.&lt;/p&gt;

&lt;p&gt;Midjourney is a social network designed to help you connect with like-minded people. Whether you’re looking to make friends, find a partner or a business connection, Midjourney makes it easy for you to find them. Midjourney isn’t just another place where people can share their ideas—it’s also a place where people can come together and support each other in their shared values.&lt;/p&gt;

&lt;p&gt;It’s a revolutionary social network that has been designed to make it easier than ever to meet like-minded people. Whether you’re looking to make friends, find a romantic partner, or establish a business connection, Midjourney makes it simple to find the right person.&lt;/p&gt;

&lt;p&gt;It is the place where you can connect with other people who are interested in self-development, personal growth and spiritual awareness. We know that there are many ways to achieve these goals, so we don’t want to limit what you share.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Mijourney top list&quot; src=&quot;/images/2023/01/midjourney-top.png&quot; title=&quot;Midjourney top list&quot; srcset=&quot;/assets/resized/480/midjourney-top.png 480w,/assets/resized/800/midjourney-top.png 800w, /images/2023/01/midjourney-top.png 1077w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Midjourney top list&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Midjourney is revolutionizing the way people connect with each other. It’s a social network designed to help you find like-minded people and build meaningful relationships. Whether you’re looking for a friend, a partner, or a business connection, Midjourney makes it easy to find them.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;As you can see, there are a lot of benefits and risks associated with AI. The technology is still in its early stages, so it’s difficult to predict exactly how it will affect our lives. We do know that AI will have a big impact on our society and economy as it continues to develop over time.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Only the bias is biased</title>
      <link href="https://francois.aichelbaum.com/2023/01/06/only-the-bias-is-biased" />
      <updated>2023-01-06T08:01:01+01:00</updated>
      <id>https://francois.aichelbaum.com/2023/01/06/only-the-bias-is-biased</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-book&quot;&gt;&lt;/i&gt; Only the bias is biased&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#types-of-bias&quot; id=&quot;markdown-toc-types-of-bias&quot;&gt;Types of bias&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#impact-of-bias&quot; id=&quot;markdown-toc-impact-of-bias&quot;&gt;Impact of bias&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-next&quot; id=&quot;markdown-toc-what-next&quot;&gt;What next?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#conclusion&quot; id=&quot;markdown-toc-conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;Cognitive bias is a phenomenon that occurs when our brain processes information in a way that is systematically different from the way a rational, unbiased mind would. These biases can affect our decision-making, our perceptions and our memory, and they can have a significant impact on our lives.&lt;/p&gt;

&lt;h2 id=&quot;types-of-bias&quot;&gt;Types of bias&lt;/h2&gt;

&lt;p&gt;There are many different types of cognitive biases, and they can be grouped into several categories. Some common types of cognitive biases include:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Confirmation bias: This is the tendency to seek out and give more weight to information that confirms our preexisting beliefs and assumptions. This bias can lead us to ignore or downplay evidence that contradicts our beliefs, and it can make it difficult for us to change our minds even when presented with new or conflicting information.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Anchoring bias: This is the tendency to give too much weight to the first piece of information we receive, even if it is not necessarily relevant or accurate. For example, if we are asked to estimate the number of jelly beans in a jar and are first told that there are 50, we may anchor our subsequent estimates to that initial number, even if it is not a reasonable estimate.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Framing effect: This is the way in which the way a problem or situation is presented can influence our decision-making. For example, if we are asked whether we would rather have a 60% chance of winning $100 or a 40% chance of winning $150, we may choose the first option because it is framed in terms of probability, even though the second option is clearly a better deal.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Representativeness bias: This is the tendency to judge the likelihood of an event based on how closely it resembles our mental concept of that event, rather than on statistical analysis. For example, if we are asked to estimate the likelihood that a person is a doctor based on the fact that they are wearing a white coat and carrying a stethoscope, we may judge that the probability is high, even though there are many other professions that also involve wearing a white coat and using a stethoscope.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img alt=&quot;Perceval and Karadoc - Kaamelott&quot; src=&quot;/images/2023/01/perceval-karadoc.jpg&quot; title=&quot;Perceval and Karadoc - Kaamelott&quot; srcset=&quot;/assets/resized/480/perceval-karadoc.jpg 480w,/assets/resized/800/perceval-karadoc.jpg 800w, /images/2023/01/perceval-karadoc.jpg 1280w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Perceval and Karadoc - Kaamelott&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;These are just a few examples of the many cognitive biases that can influence our thinking and decision-making. Other common biases include the availability heuristic (the tendency to judge the likelihood of an event based on how easily we can recall similar events), the sunk cost fallacy (the tendency to continue investing in a project or course of action because of the resources we have already invested), and the halo effect (the tendency to judge a person or thing more favorably based on one positive characteristic).&lt;/p&gt;

&lt;h2 id=&quot;impact-of-bias&quot;&gt;Impact of bias&lt;/h2&gt;

&lt;p&gt;Cognitive biases can have a significant impact on our lives and decision-making, and they can lead us to make judgments that are not based on accurate or objective information. For example, confirmation bias can make it difficult for us to accept new or conflicting information, even when it is supported by evidence, and the sunk cost fallacy can lead us to continue investing in a project even when it is not likely to be successful.&lt;/p&gt;

&lt;p&gt;It is important to be aware of these biases and to try to correct for them as much as possible in order to make more informed and rational decisions. There are several strategies that can help us to mitigate the effects of cognitive bias, including seeking out diverse sources of information, questioning our assumptions and beliefs, and using tools like decision trees and cost-benefit analysis to help us make more objective decisions.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Double Impact&quot; src=&quot;/images/2023/01/double-impact.png&quot; title=&quot;Double Impact&quot; srcset=&quot;/assets/resized/480/double-impact.png 480w,/assets/resized/800/double-impact.png 800w,/assets/resized/1400/double-impact.png 1400w, /images/2023/01/double-impact.png 2400w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Double Impact&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;By understanding the ways in which our brains can distort or simplify information, we can work to overcome cognitive bias and make more informed and rational decisions. This is important not only for our personal lives, but also for the many complex problems and challenges we face as a society.&lt;/p&gt;

&lt;p&gt;Cognitive biases can have a significant impact on how we evaluate and make decisions about risks. The availability heuristic, for example, can lead us to overestimate the likelihood of rare or highly publicized events, such as plane crashes or terrorist attacks. This can lead us to make decisions that are not based on a realistic assessment of the risks we face, and it can also affect public policy and resource allocation.&lt;/p&gt;

&lt;p&gt;Cognitive biases can also have an impact on how we perceive and remember events and experiences. For example, the misinformation effect is the tendency for new information to overwrite or distort our memories of events. This can have serious consequences in legal settings, where eyewitness testimony is often an important piece of evidence.&lt;/p&gt;

&lt;h2 id=&quot;what-next&quot;&gt;What next?&lt;/h2&gt;

&lt;p&gt;There is a growing body of research on cognitive biases and how to mitigate their effects, and there are several strategies that can help us to make more informed and rational decisions. These include:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;Seeking out diverse sources of information: By exposing ourselves to a wide range of perspectives and viewpoints, we can help to mitigate the effects of confirmation bias and other biases that can distort our perceptions.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Questioning our assumptions and beliefs: By actively questioning our own assumptions and beliefs, we can help to identify and correct for biases that might otherwise distort our thinking.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Using tools like decision trees and cost-benefit analysis: These tools can help us to make more objective and unbiased decisions by forcing us to consider multiple factors and to weigh the pros and cons of different options.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overall, it is important to be aware of the ways in which our brains can distort or simplify information, and to take steps to correct for these biases in order to make more informed and rational decisions. By understanding and addressing cognitive biases, we can improve our decision-making and increase our chances of success in both our personal and professional lives.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Inspired by one of my extra-professional presentations during a monthly event at &lt;a href=&quot;https://www.enyx.com&quot;&gt;Enyx&lt;/a&gt;, I decided to try the &lt;a href=&quot;https://openai.com/blog/chatgpt/&quot;&gt;ChatGPT&lt;/a&gt; experiment on the theme of cognitive bias. The question? “Rédige un article de 20000 caractères sur le biais cognitif en anglais” in French, as-is. What do you think of the result?&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>JSON, MongoDB and rsyslog are on a boat</title>
      <link href="https://francois.aichelbaum.com/2020/12/23/json-mongodb-rsyslog-are-on-a-boat" />
      <updated>2020-12-23T11:01:01+01:00</updated>
      <id>https://francois.aichelbaum.com/2020/12/23/json-mongodb-rsyslog-are-on-a-boat</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-book&quot;&gt;&lt;/i&gt; JSON, MongoDB and rsyslog are on a boat&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#json-is-standard&quot; id=&quot;markdown-toc-json-is-standard&quot;&gt;JSON is standard&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#nginx-knows-about-cee&quot; id=&quot;markdown-toc-nginx-knows-about-cee&quot;&gt;Nginx knows about @cee&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#rsyslog-is-great-its-documentation-is-not&quot; id=&quot;markdown-toc-rsyslog-is-great-its-documentation-is-not&quot;&gt;Rsyslog is great. Its documentation is not.&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#thats-not-all-folks&quot; id=&quot;markdown-toc-thats-not-all-folks&quot;&gt;That’s not all folks!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#at-the-end&quot; id=&quot;markdown-toc-at-the-end&quot;&gt;At the end&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;When dealing with log management, obvious solutions emerge earlier, often before you even discussed the purpose of the log management. We can discuss about &lt;a href=&quot;https://www.elastic.co/fr/what-is/elk-stack&quot;&gt;ELK&lt;/a&gt;, &lt;a href=&quot;https://www.graylog.org/&quot;&gt;Graylog&lt;/a&gt;, &lt;a href=&quot;https://www.splunk.com/&quot;&gt;Splunk&lt;/a&gt;, … Those are great tools but they may not fit will all your needs. Lately, I had to work for one of my customer on enforcing log management for billing purposed. Rsyslog was already set to collect and centralize all the logs (and manage their backups). MongoDB seemed as a perfect tips for storing JSON extract of the logs to generate the proper stats.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Invoice Management - DronaHQ&quot; src=&quot;/images/2020/12/invoice-management.jpg&quot; title=&quot;Invoice Management - DronaHQ&quot; srcset=&quot;/assets/resized/480/invoice-management.jpg 480w,/assets/resized/800/invoice-management.jpg 800w, /images/2020/12/invoice-management.jpg 1280w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Invoice Management - DronaHQ&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;json-is-standard&quot;&gt;JSON is standard&lt;/h2&gt;

&lt;p&gt;From &lt;a href=&quot;https://www.json.org/json-en.html&quot;&gt;json.org&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language Standard ECMA-262 3rd Edition - December 1999. JSON is a text format that is completely language independent but uses conventions that are familiar to programmers of the C-family of languages, including C, C++, C#, Java, JavaScript, Perl, Python, and many others. These properties make JSON an ideal data-interchange language.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On top of that format, we can used a more structured syntax, adapted to log management: &lt;a href=&quot;https://cee.mitre.org/language/0.6/CEE_Common_Log_Syntax-JSON-v0.6.html&quot;&gt;CEE Log Syntax&lt;/a&gt;. This defined format is well used by various tools you might use, in the present case: nginx, rsyslog, and mongodb. Up to a certain level…&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Structured JSON&quot; src=&quot;/images/2020/12/json.gif&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/json.gif 480w, /images/2020/12/json.gif 628w&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;nginx-knows-about-cee&quot;&gt;Nginx knows about @cee&lt;/h2&gt;

&lt;p&gt;Sort of. Nginx has a &lt;a href=&quot;https://nginx.org/en/docs/syslog.html&quot;&gt;native syslog export&lt;/a&gt; for both error_log and access_log. Out of the box, it will simply push all logs from the default log formats to syslog. This won’t be very convenient for proper management afterwards. But nginx is easy to use, and you can define your own custom format. You’ll find plenty of blogposts, tutorials, and others as &lt;a href=&quot;https://ahelpme.com/software/rsyslog/send-access-logs-in-json-to-elasticsearch-using-rsyslog/&quot;&gt;Any IT here? Help me!&lt;/a&gt; describing the &lt;em&gt;proper&lt;/em&gt; @cee JSON log format you need:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-nginx&quot; data-lang=&quot;nginx&quot;&gt;&lt;span class=&quot;k&quot;&gt;log_format&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;mainJSON&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;escape=json&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;@cee:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;vhost&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$server_name&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;remote_addr&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$remote_addr&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;time_iso8601&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$time_iso8601&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;request_uri&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$request_uri&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;request_length&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$request_length&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;request_method&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$request_method&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;request_time&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$request_time&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;server_port&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$server_port&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;server_protocol&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$server_protocol&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;ssl_protocol&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$ssl_protocol&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;status&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$status&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;bytes_sent&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$bytes_sent&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;http_referer&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$http_referer&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;http_user_agent&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$http_user_agent&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;upstream_response_time&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$upstream_response_time&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;upstream_addr&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$upstream_addr&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;upstream_connect_time&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$upstream_connect_time&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;upstream_cache_status&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$upstream_cache_status&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;tcpinfo_rtt&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$tcpinfo_rtt&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;tcpinfo_rttvar&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$tcpinfo_rttvar&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;They all give you the very same structure. Not sure who started it, but that’s not the point: they’re all wrong about it!&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;I am this close - Terminator 2&quot; src=&quot;/images/2020/12/close.gif&quot; title=&quot;I am this close - Terminator 2&quot; srcset=&quot;/assets/resized/480/close.gif 480w, /images/2020/12/close.gif 720w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;I am this close - Terminator 2&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;They are close, indeed, but some details have to be fixed first. Why are they wrong? Because JSON, and especially the @cee version of it, has datatypes. Numbers (integers and floats) should not be encapsulated between quotes: quotes are for string only.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-nginx&quot; data-lang=&quot;nginx&quot;&gt;&lt;span class=&quot;k&quot;&gt;log_format&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;mainJSON&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;escape=json&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&apos;@cee:&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;kn&quot;&gt;&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;vhost&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$server_name&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;remote_addr&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$remote_addr&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;time_iso8601&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$time_iso8601&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;request_uri&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$request_uri&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;request_length&quot;:&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$request_length&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;request_method&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$request_method&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;request_time&quot;:&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$request_time&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;server_port&quot;:&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$server_port&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;server_protocol&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$server_protocol&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;ssl_protocol&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$ssl_protocol&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;status&quot;:&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$status&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;bytes_sent&quot;:&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$bytes_sent&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;http_referer&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$http_referer&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;http_user_agent&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$http_user_agent&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;upstream_response_time&quot;:&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$upstream_response_time&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;upstream_addr&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$upstream_addr&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;upstream_connect_time&quot;:&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$upstream_connect_time&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;upstream_cache_status&quot;:&quot;&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$upstream_cache_status&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;tcpinfo_rtt&quot;:&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$tcpinfo_rtt&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;,&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&quot;tcpinfo_rttvar&quot;:&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$tcpinfo_rttvar&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;&lt;/span&gt;
        &lt;span class=&quot;s&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;err&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Now we are good to go. Then, as all documentations state it, we can use this log format to push logs to syslog:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-nginx&quot; data-lang=&quot;nginx&quot;&gt;&lt;span class=&quot;k&quot;&gt;access_log&lt;/span&gt;      &lt;span class=&quot;s&quot;&gt;syslog:server=10.10.10.2:514,facility=local7,tag=nginx,severity=info&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;mainJSON&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;For sure, you can adapt the faciliy, the tag and the severity of it, along with the log format name.&lt;/p&gt;

&lt;h2 id=&quot;rsyslog-is-great-its-documentation-is-not&quot;&gt;Rsyslog is great. Its documentation is not.&lt;/h2&gt;

&lt;p&gt;That’s a fact, technical documentation, made by technical individuals, for technical persons, are not the best. Rsyslog might be one of the best example about this statement. Rainer Gerhards did a great work with his tool, one of the best syslog manager in my humble opinion. Thought, the documentation is a hell to read. Add to this fact, that it not as accurate as it should be.&lt;/p&gt;

&lt;p&gt;In the use case I was working on, the infrastructure is benefiting from &lt;a href=&quot;https://www.rsyslog.com/doc/v8-stable/&quot;&gt;rsyslog v8-sable&lt;/a&gt;. And as stated, we want to use the mongodb exporter, aka &lt;a href=&quot;https://www.rsyslog.com/doc/v8-stable/configuration/modules/ommongodb.html&quot;&gt;ommongodb&lt;/a&gt;. Seems easy and straight forward? Almost. But remember this IT mantra:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If all goes well, we forget something.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For reasons out of my mind while writing down this post, I can tell you that it just do not work. Several aspects are to be considering before dealing with those logs.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;You need to ensure about the encoding: BSON (the JSON variant mongodb uses internally) only supports valid UTF-8 character. For that, you need to properly fix the encoding before sending them. There is a &lt;a href=&quot;https://www.rsyslog.com/doc/v8-stable/configuration/modules/mmutf8fix.html&quot;&gt;module&lt;/a&gt; for that.&lt;/li&gt;
  &lt;li&gt;The structured @cee sent using the default configuration to mongodb will just push data “as-is”: first issue and main issue you’ll hit is about the date which will be pushed as a regular string.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;img alt=&quot;But why? - Ryan Reynolds&quot; src=&quot;/images/2020/12/why.gif&quot; title=&quot;But why? - Ryan Reynolds&quot; srcset=&quot; /images/2020/12/why.gif 480w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;But why? - Ryan Reynolds&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Why? Simply because rsyslog only understand numbers and strings as &lt;a href=&quot;https://www.rsyslog.com/doc/v8-stable/configuration/templates.html&quot;&gt;datatypes&lt;/a&gt; on one end, and mongodb doesn’t auto detect date and timestamps on the other end. Is it an issue at the end? If you want to benefit from mongodb filtering features on dates, yes it is. For that purpose, you need to use the ISODate() functions that mongodb only knows about.&lt;/p&gt;

&lt;p&gt;After a tremendous number of attempts, trying to deal with the documentation to find the proper format, I decided to read the &lt;a href=&quot;https://github.com/rsyslog/rsyslog/blob/master/plugins/ommongodb/ommongodb.c#L392-L393&quot;&gt;ommongodb module source code&lt;/a&gt;. Pretty easy as it’s a well written C code:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-c&quot; data-lang=&quot;c&quot;&gt;		&lt;span class=&quot;cm&quot;&gt;/* Convert text to ISODATE when needed */&lt;/span&gt;
		&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;date&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;strncmp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;name&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;time&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;5&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;You’ve just read it well: the code does not expect the fieldname to start with a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;date&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;time&lt;/code&gt;, but it expect the fieldname to be &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;date&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;time&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Two solutions there:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;either update the log format, in nginx configuration, from &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;time_iso8601:&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;date:&lt;/code&gt;&lt;/li&gt;
  &lt;li&gt;update your rsyslog configuration&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I’m not found of the string exporter used in the default documentation of rsyslog for mongodb: we’re using JSON as an input, we expect JSON at the output, why should we use strings in between?&lt;/p&gt;

&lt;p&gt;For that reason, I moved to a JSON manipulation, thanks to the JSON parse module, and list type for the template:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-rsyslog&quot; data-lang=&quot;rsyslog&quot;&gt;module(load=&quot;mmutf8fix&quot;)
module(load=&quot;mmjsonparse&quot;)
module(load=&quot;ommongodb&quot;)

template(name=&quot;json-syslog&quot; type=&quot;list&quot; option.jsonf=&quot;on&quot;) {
        property(outname=&quot;vhost&quot; name=&quot;$!vhost&quot; format=&quot;jsonf&quot; datatype=&quot;string&quot; onEmpty=&quot;null&quot;)
        property(outname=&quot;remote_addr&quot; name=&quot;$!remote_addr&quot; format=&quot;jsonf&quot; datatype=&quot;string&quot; onEmpty=&quot;null&quot;)
        property(outname=&quot;time_iso8601&quot; name=&quot;$!time_iso8601&quot; format=&quot;jsonf&quot;)
        property(outname=&quot;date&quot; name=&quot;$!time_iso8601&quot;)
        property(outname=&quot;request_uri&quot; name=&quot;$!request_uri&quot; format=&quot;jsonf&quot; datatype=&quot;string&quot; onEmpty=&quot;null&quot;)
        property(outname=&quot;request_length&quot; name=&quot;$!request_length&quot; format=&quot;jsonf&quot; datatype=&quot;number&quot;)
        property(outname=&quot;request_method&quot; name=&quot;$!request_method&quot; format=&quot;jsonf&quot; datatype=&quot;string&quot; onEmpty=&quot;null&quot;)
        property(outname=&quot;request_time&quot; name=&quot;$!request_time&quot; format=&quot;jsonf&quot; datatype=&quot;number&quot;)
        property(outname=&quot;server_port&quot; name=&quot;$!server_port&quot; format=&quot;jsonf&quot; datatype=&quot;number&quot;)
        property(outname=&quot;server_protocol&quot; name=&quot;$!server_protocol&quot; format=&quot;jsonf&quot; datatype=&quot;string&quot; onEmpty=&quot;null&quot;)
        property(outname=&quot;ssl_protocol&quot; name=&quot;$!ssl_protocol&quot; format=&quot;jsonf&quot; datatype=&quot;string&quot; onEmpty=&quot;null&quot;)
        property(outname=&quot;status&quot; name=&quot;$!status&quot; format=&quot;jsonf&quot; datatype=&quot;number&quot;)
        property(outname=&quot;bytes_sent&quot; name=&quot;$!bytes_sent&quot; format=&quot;jsonf&quot; datatype=&quot;number&quot;)
        property(outname=&quot;http_referer&quot; name=&quot;$!http_referer&quot; format=&quot;jsonf&quot; datatype=&quot;string&quot; onEmpty=&quot;null&quot;)
        property(outname=&quot;http_user_agent&quot; name=&quot;$!http_user_agent&quot; format=&quot;jsonf&quot; datatype=&quot;string&quot; onEmpty=&quot;null&quot;)
        property(outname=&quot;upstream_response_time&quot; name=&quot;$!upstream_response_time&quot; format=&quot;jsonf&quot; datatype=&quot;string&quot; onEmpty=&quot;null&quot;)
        property(outname=&quot;upstream_addr&quot; name=&quot;$!upstream_addr&quot; format=&quot;jsonf&quot; datatype=&quot;string&quot; onEmpty=&quot;null&quot;)
        property(outname=&quot;upstream_connect_time&quot; name=&quot;$!upstream_connect_time&quot; format=&quot;jsonf&quot; datatype=&quot;string&quot; onEmpty=&quot;null&quot;)
        property(outname=&quot;upstream_cache_status&quot; name=&quot;$!upstream_cache_status&quot; format=&quot;jsonf&quot; datatype=&quot;string&quot; onEmpty=&quot;null&quot;)
        property(outname=&quot;tcpinfo_rtt&quot; name=&quot;$!tcpinfo_rtt&quot; format=&quot;jsonf&quot; datatype=&quot;number&quot;)
        property(outname=&quot;tcpinfo_rttvar&quot; name=&quot;$!tcpinfo_rttvar&quot; format=&quot;jsonf&quot; datatype=&quot;number&quot;)
}&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;&lt;img alt=&quot;Now we can talk. - Kyle Maclachlan - Twin Peaks&quot; src=&quot;/images/2020/12/talk.gif&quot; title=&quot;Now we can talk. - Kyle Maclachlan - Twin Peaks&quot; srcset=&quot;/assets/resized/480/talk.gif 480w, /images/2020/12/talk.gif 498w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Now we can talk. - Kyle Maclachlan - Twin Peaks&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;thats-not-all-folks&quot;&gt;That’s not all folks!&lt;/h2&gt;

&lt;p&gt;Following that changes, nginx logs are pushed to mongodb, allowing easy statistics aggregation for billing purpose. As we just want to push these lines to mongodb, best is to proceed with something like:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-rsyslog&quot; data-lang=&quot;rsyslog&quot;&gt;if ($syslogfacility-text == &apos;local7&apos; and $syslogseverity-text == &apos;info&apos;) then {
        action(type=&quot;mmutf8fix&quot;)
        action(type=&quot;mmjsonparse&quot;)
        action(type=&quot;ommongodb&quot; uristr=&quot;mongodb://--REDACTED--:--REDACTED--@--REDATED--:27017/?authSource=logs&amp;amp;authMechanism=SCRAM-SHA-1&quot; db=&quot;logs&quot; collection=&quot;nginx&quot; template=&quot;json-syslog&quot;)
        &amp;amp; stop
}&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uristr&lt;/code&gt; is a bit different from the the documentation because, once again, the document is not really explicit enough about it. For most real-life scenarios, even if you use a mongodb cluster, you want to rely on dedicated database and dedicated user, with the proper set of permissions. To benefit from it, you need to add some details within the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;uristr&lt;/code&gt; as the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;user:password&lt;/code&gt; but also some query parameters:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;authSource&lt;/code&gt;: the db to rely on for authentication, as you user has only permissons on it&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;authMechanism&lt;/code&gt;: you’re pushing a password via the dsn&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;at-the-end&quot;&gt;At the end&lt;/h2&gt;

&lt;p&gt;We went through. We’ve set up nginx to push JSON @cee-compliant logs to syslog, then we prepare the logs to be properly pushed to mongodb, and we publish them.&lt;/p&gt;

&lt;p&gt;Now our folks can run their micro-batching to generate live billing and usage statistics for the customers.&lt;/p&gt;

&lt;p&gt;How would you have tackled this kind of need? Did you suffer from technical documentations not adequate or not uptodate?&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Too big to fall, not to fail!</title>
      <link href="https://francois.aichelbaum.com/2020/11/09/too-big-to-fall-no-to-fail" />
      <updated>2020-11-09T11:03:06+01:00</updated>
      <id>https://francois.aichelbaum.com/2020/11/09/too-big-to-fall-no-to-fail</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-book&quot;&gt;&lt;/i&gt; Too big to fall, not to fail&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#internet-is-dead-nope-just-facebook&quot; id=&quot;markdown-toc-internet-is-dead-nope-just-facebook&quot;&gt;Internet is dead! Nope, just Facebook&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#no-one-has-ever-been-fired-for-opting-for-ibm&quot; id=&quot;markdown-toc-no-one-has-ever-been-fired-for-opting-for-ibm&quot;&gt;No one has ever been fired for opting for IBM&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#you-said-to-say-hardy&quot; id=&quot;markdown-toc-you-said-to-say-hardy&quot;&gt;You said to say Hardy!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#me-myself-and-the-apocalypse&quot; id=&quot;markdown-toc-me-myself-and-the-apocalypse&quot;&gt;Me, myself, and the Apocalypse&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;The late US election inspired me, mixed with several of my customers suffering from their providers’ failure, and led me to write this post to remind about &lt;em&gt;the&lt;/em&gt; reality, and not someone’s reality.
When dealing with a provider, or selecting a one, you may thing about the consequences and his failure on your business: often, you’ll prefer a big player, as he might be too big to fall. Even if falling and failing are just a character away, they are far more different.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;lem.mings (‘lem-ingz): adorable yet incredible stupid furry creatures. Without your help, they have no chance of survival.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img alt=&quot;Lemmings Puzzle&quot; src=&quot;/images/2020/11/lemmings.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/lemmings.jpg 480w,/assets/resized/800/lemmings.jpg 800w, /images/2020/11/lemmings.jpg 1100w&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;internet-is-dead-nope-just-facebook&quot;&gt;Internet is dead! Nope, just Facebook&lt;/h2&gt;

&lt;p&gt;No need to go back to the beginning of Zuck’s company history: an ultra-fast search on your favorite search engine will lead you to a major crash &lt;a href=&quot;https://www.express.co.uk/life-style/science-technology/1233407/Facebook-DOWN-MAJOR-outage-leaves-social-media-users-unable-to-login&quot;&gt;beginning of 2020&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;We often confuse failing our company’s box with failing our customers. That’s why I prefer the term “falling” in the first case. With this little vocabulary point, we can dig a little more into what we call the “To big to &lt;del&gt;fail&lt;/del&gt;fall”. This has been a recurring topic since the subprime crisis of 2008. The fact that banks can fall, disappear, what about the major players in each field.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Too-big-to-fail banks not only threaten our financial system – they also distort competition © Frédéric Hache / Finance Watch&quot; src=&quot;/images/2020/11/too_big_to_fail.png&quot; title=&quot;Too-big-to-fail banks not only threaten our financial system – they also distort competition © Frédéric Hache / Finance Watch&quot; srcset=&quot;/assets/resized/480/too_big_to_fail.png 480w,/assets/resized/800/too_big_to_fail.png 800w, /images/2020/11/too_big_to_fail.png 814w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Too-big-to-fail banks not only threaten our financial system – they also distort competition © Frédéric Hache / Finance Watch&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The fall of “too big” would theoretically cause the whole system to fall. Although this is not without disastrous consequences, no system disappeared with the fall of the American banks. No system disappeared with the massive fall of the car manufacturers. Massive bankruptcies, unemployment, people on the street yes. But the system did not. So those “too big” can fall.&lt;/p&gt;

&lt;p&gt;Well, that’s not really the subject of this post, but you’ve understood: we suppose that a big actor can’t disappear because we’ll do everything we can to hold him, because after all, if he were to disappear, we suppose the consequences would be far too disastrous. So let’s move on.&lt;/p&gt;

&lt;h2 id=&quot;no-one-has-ever-been-fired-for-opting-for-ibm&quot;&gt;No one has ever been fired for opting for IBM&lt;/h2&gt;

&lt;p&gt;Choosing “too big” is reassuring. It is known, it has thousands of employees, it weighs hundreds of millions of dollars, … It cannot &lt;del&gt;fail&lt;/del&gt;fall. Nope, but it can fail.&lt;/p&gt;

&lt;p&gt;The first source of error is and has always been human. This is the primary reason for relying on a principle such as HAZOP (HAZard and OPerability studies). The principle of HAZOP is the decomposition of the system to be analyzed into several subsets, called “nodes” so that the risk analysis can be shared between individuals or multidisciplinary teams. Assume that something will fail, and then you can prevent the risk. In fact, in IT, we often use the expression:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;If everything went well, then you’ve forgotten something.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Not for nothing.&lt;/p&gt;

&lt;p&gt;In 2017, AWS suffered a huge incident on its massive storage (AWS S3). &lt;a href=&quot;https://aws.amazon.com/message/41926/&quot;&gt;This incident&lt;/a&gt; was the direct consequence of human error, to debug another situation. As a result, all companies relying on AWS’ S3 service in this region have been impacted by the service outage, but worse, some have lost data, with no hope of ever finding it again. How many customers have gone out of business due to a failure at AWS?&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Bigger is not better&quot; src=&quot;/images/2020/11/bigger_better.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/bigger_better.jpg 480w,/assets/resized/800/bigger_better.jpg 800w, /images/2020/11/bigger_better.jpg 1024w&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Very often, the first reaction of a customer of these “too big”, on this type of incident, is that given the massive failure, and the number of companies impacted, your own users, the end-users, will have other things to deal with.&lt;/p&gt;

&lt;p&gt;This is true, but within a certain limit. On the other hand, it also shows that you have not calculated the risks, and assume that this risk would be borne unilaterally by this “too big”.&lt;/p&gt;

&lt;h2 id=&quot;you-said-to-say-hardy&quot;&gt;You said to say Hardy!&lt;/h2&gt;

&lt;p&gt;Very often, in order to respond to these human errors, we decide that the best way is the constraint, the limitation, the process. Do what you are told and strictly what you are told. This is how your “too big”, under cover of a Quality certification for example, will set up various levels of support, each with its own forms, processes, …&lt;/p&gt;

&lt;p&gt;Here, we can echo one of my customers, who ordered from the largest French hosting provider (Hello there, OVH), servers, proudly announced available in 120s, without specifying the quantity. Well yes, marketing doesn’t have the same concern for quality process and transparency as technology: after all, it’s not a service ;)&lt;/p&gt;

&lt;p&gt;Anyway, servers ordered, but only partially delivered two weeks later. Impossible to have a status because the delivery process is jammed. But the fun doesn’t stop there. In order not to be caught off guard, this customer decides to start installing the servers already delivered, using the tools of this provider. Except, that these tools are bug’d. A support ticket is opened, without reaction. The customer’s teams continue to work on it all the weekend, hoping to get the whole thing up and running, and at times, receive charming mails from the provider, as:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;you have set such a value to 0: except that the provider’s installation tool forbids such a value … which is only the result of a bug&lt;/li&gt;
  &lt;li&gt;stop loop crashing: except that it crashes in a loop, because installing it crashes in a loop.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Solution proposed by the founder of OVH? Replace the famous servers with its Object Storage service. The same service, which has been in error for a week, with no solution, and where some customers are complaining about a loss of revenue of several thousand euros over the same period.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;The company feels that if we ease up just because someone dies, it will encourage other people to die&quot; src=&quot;/images/2020/11/failure.gif&quot; title=&quot;Better off Ted&quot; srcset=&quot; /images/2020/11/failure.gif 434w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Better off Ted&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;And meanwhile, the mail open to the support, with all the details, is not read by the speakers. Why is this? It’s out of process! The emails are processed by the level 1 support, which doesn’t work on weekends, while the technicians on site only intervene on alarms. The link between the two in normal times? Level 2 support which can only be triggered by level 1. The famous level 1 unavailable. The process is therefore, once again, at fault.&lt;/p&gt;

&lt;p&gt;Here it is possible to distinguish several failures:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;managerial, where the founder ignores the state of his department (voluntarily or not) and gives you inadequate recommendations&lt;/li&gt;
  &lt;li&gt;supply chain, where a server is missing, with no possible information, and no possible billing for the supplier.&lt;/li&gt;
  &lt;li&gt;support, where segmentation of teams prevents information from circulating correctly, preventing a technical solution from being implemented&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;me-myself-and-the-apocalypse&quot;&gt;Me, myself, and the Apocalypse&lt;/h2&gt;

&lt;p&gt;Such failures often go unnoticed by the mass of customers of these providers. However, if you take the time to search, you will always find customers. This becomes all the more true when these customers reach critical size.&lt;/p&gt;

&lt;p&gt;So yes, one provider can be better than another (in fact, any truly professional provider is better than a low-cost provider). However, no one is infallible, and no one is too big in the face of fails.&lt;/p&gt;

&lt;p&gt;If the service to be delivered to you is critical, then the skill levels of that provider are critical. But it is also your responsibility to have a plan-B outside of your provider. Processes (and certifications) will only serve you in court to ascertain whether the obligations of means and results have been met. Period.&lt;/p&gt;

&lt;p&gt;How about you? Do you prefer “too big”?&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Let&apos;s walk in a minefield</title>
      <link href="https://francois.aichelbaum.com/2020/08/27/lets-walk-in-a-minefield" />
      <updated>2020-08-27T11:24:06+02:00</updated>
      <id>https://francois.aichelbaum.com/2020/08/27/lets-walk-in-a-minefield</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-book&quot;&gt;&lt;/i&gt; Let&apos;s walk in a minefield&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#avant-propos&quot; id=&quot;markdown-toc-avant-propos&quot;&gt;Avant-Propos&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#suit-up-&quot; id=&quot;markdown-toc-suit-up-&quot;&gt;Suit up !&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#i-want-to-blacklist&quot; id=&quot;markdown-toc-i-want-to-blacklist&quot;&gt;I want to blacklist&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#thats-all-folks&quot; id=&quot;markdown-toc-thats-all-folks&quot;&gt;That’s all folks&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;If you manage an infrastructure, you probably always know the same problem: how to properly manage the blacklisting of malicious IPs. If you are on hybrid infrastructures, without adequate equipment for firewalling, this question often arises all the more. And if you want to be proactive, by securing the whole platform, as soon as a machine detects abnormal behavior, it becomes critical.
Fortunately, an opensource tool, MineMeld, allows you to manage this situation, with a minimum of work.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Star Trek - Mind meld - Paramount Pictures&quot; src=&quot;/images/2020/08/mind_meld.jpg&quot; title=&quot;Star Trek - Mind meld - Paramount Pictures&quot; srcset=&quot;/assets/resized/480/mind_meld.jpg 480w,/assets/resized/800/mind_meld.jpg 800w,/assets/resized/1400/mind_meld.jpg 1400w, /images/2020/08/mind_meld.jpg 1436w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Star Trek - Mind meld - Paramount Pictures&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;avant-propos&quot;&gt;Avant-Propos&lt;/h2&gt;

&lt;p&gt;(Image inspired by the iTWire article on &lt;a href=&quot;https://www.itwire.com/security/mine-meld,-mind-meld-%E2%80%93-the-principles-are-the-same.html&quot;&gt;MineMeld&lt;/a&gt;)
Not all of us can have next-gen firewalls. On the other hand, we manage servers and can deploy more and more of them. We will therefore focus on this case.&lt;/p&gt;

&lt;p&gt;Quick presentation of MineMeld from the &lt;a href=&quot;https://github.com/PaloAltoNetworks/minemeld/wiki&quot;&gt;official Wiki&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;MineMeld is a community supported tool to manipulate list of indicators and transform/aggregate them for consumption by third party enforcement infrastructure. MineMeld has many use-cases and can easily be extended to fulfill many more. 
Check &lt;a href=&quot;https://github.com/PaloAltoNetworks/minemeld/wiki/List-of-Supported-Nodes&quot;&gt;this page&lt;/a&gt; for a brief list of currently supported nodes/feeds.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With non-hype words, it’s a mean to centralize all your blacklist and scorifications in order to manage your threat prevention: it imports multiple feeds, analyze/dedup them, in order to output clean feed you’d be able to use.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;MineMeld diagram&quot; src=&quot;/images/2020/08/minemeld_diagram.png&quot; title=&quot;MineMeld diagram&quot; srcset=&quot;/assets/resized/480/minemeld_diagram.png 480w,/assets/resized/800/minemeld_diagram.png 800w,/assets/resized/1400/minemeld_diagram.png 1400w, /images/2020/08/minemeld_diagram.png 3000w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;MineMeld diagram&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The project is opensource and can be installed on a bunch of &lt;strong&gt;old&lt;/strong&gt; Linux distros: the word “old” is quite important but we can deal with it. For the rest of it, I’ll provide some scripts via GitHub.&lt;/p&gt;

&lt;h2 id=&quot;suit-up-&quot;&gt;Suit up !&lt;/h2&gt;

&lt;p&gt;So we start with the installation of MineMeld. As said above, they officially support old distributions. Go figure! However, their doc explains a little bit the process for the installation on Ubuntu 18.04 for example. A little less old, I decide to start on it.&lt;/p&gt;

&lt;p&gt;I won’t detail their installation which is done via an Ansible playbook. Rather readable, if you want to do something else, it should not be complicated.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;The Hurt Locker - Kingsgate Films&quot; src=&quot;/images/2020/08/minemeld_demineurs.jpg&quot; title=&quot;The Hurt Locker - Kingsgate Films&quot; srcset=&quot; /images/2020/08/minemeld_demineurs.jpg 450w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;The Hurt Locker - Kingsgate Films&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Post installation, the service seems to start, but generates many errors in the logs, mainly concerning a ‘ujson’ python library. Nothing in the MineMeld documentation. However, my best friend, Google, quickly finds the answer: you have to replace the library provided by the package, by the library available in Ubuntu repositories.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;apt &lt;span class=&quot;nb&quot;&gt;install &lt;/span&gt;python-ujson
&lt;span class=&quot;nb&quot;&gt;sudo mv&lt;/span&gt; /opt/minemeld/engine/current/lib/python2.7/site-packages/ujson.so /opt/minemeld/engine/current/lib/python2.7/site-packages/ujson.so.bak
&lt;span class=&quot;nb&quot;&gt;sudo ln&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-s&lt;/span&gt; /usr/lib/python2.7/dist-packages/ujson.x86_64-linux-gnu.so /opt/minemeld/engine/current/lib/python2.7/site-packages/ujson.so&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;After a restart of the MineMeld service, everything is running smoothly and you can finally authenticate. If you are looking for the default credentials: admin / minemeld .&lt;/p&gt;

&lt;p&gt;Getting to know MineMeld can take a little time. I’ll give you the first few configuration items from our use case, then let you get familiar with it. Of course, I am always available if you need my assistance.&lt;/p&gt;

&lt;h2 id=&quot;i-want-to-blacklist&quot;&gt;I want to blacklist&lt;/h2&gt;

&lt;p&gt;Now that the service is in place, it’s time to configure it, before you can take advantage of it on your different servers, but also to keep it up to date with your own IPs to blacklist.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Queen - I want to break free&quot; src=&quot;/images/2020/08/minemeld_iwanttobreakfree.jpg&quot; title=&quot;Queen - I want to break free&quot; srcset=&quot;/assets/resized/480/minemeld_iwanttobreakfree.jpg 480w,/assets/resized/800/minemeld_iwanttobreakfree.jpg 800w,/assets/resized/1400/minemeld_iwanttobreakfree.jpg 1400w, /images/2020/08/minemeld_iwanttobreakfree.jpg 1920w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Queen - I want to break free&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;All scripts I provide here are available on my &lt;a href=&quot;&quot;&gt;GitHub account&lt;/a&gt;.&lt;/p&gt;

&lt;h3 id=&quot;prepare-minemeld&quot;&gt;Prepare MineMeld&lt;/h3&gt;

&lt;p&gt;When you are logged in to MineMeld, you will see different menus:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Dashboard: the home page with a reminder of your statistics&lt;/li&gt;
  &lt;li&gt;Nodes: to configure your different nodes (miners, feeds, aggregators, …)&lt;/li&gt;
  &lt;li&gt;Config: to load your various (proto)types of nodes you would like to use&lt;/li&gt;
  &lt;li&gt;Logs&lt;/li&gt;
  &lt;li&gt;Admin: to configure your users&lt;/li&gt;
  &lt;li&gt;System: to see how things are going from a system point of view&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img alt=&quot;Dashboard MineMeld&quot; src=&quot;/images/2020/08/minemeld_dashboard.png&quot; title=&quot;Dashboard MineMeld&quot; srcset=&quot;/assets/resized/480/minemeld_dashboard.png 480w,/assets/resized/800/minemeld_dashboard.png 800w, /images/2020/08/minemeld_dashboard.png 1196w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Dashboard MineMeld&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So the first step is to go to the Admin, and to manage your users for a minimum:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;change the admin password&lt;/li&gt;
  &lt;li&gt;add a user whose login and password you will use for the scripts detailed later in this article&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then, let’s go to the Config, to manage the prototypes we want to have. In my case, I usually use at least the following ones:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;blacklist_of&lt;/li&gt;
  &lt;li&gt;spamhaus DROP &amp;amp; EDROP&lt;/li&gt;
  &lt;li&gt;dshield&lt;/li&gt;
  &lt;li&gt;wlWhilteListIPv4 (the ‘wl’ prefix is important)&lt;/li&gt;
  &lt;li&gt;an inboundaggregator to which I assign all the miners&lt;/li&gt;
  &lt;li&gt;an inboundfeedhc (for High Confidence) of feedHCGreen type&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To which I add my own ‘localDB’ blacklist. You can simply view/add new nodes by clicking on the list button at the bottom of the table:&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Config list&quot; src=&quot;/images/2020/08/minemeld_config.png&quot; title=&quot;Config list&quot; srcset=&quot;/assets/resized/480/minemeld_config.png 480w,/assets/resized/800/minemeld_config.png 800w, /images/2020/08/minemeld_config.png 1192w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Config list&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The default configuration of the various nodes should be suitable for the use we detail here. However, you have to add the IPs that you don’t want to see blacklisted. To do this, simply edit the wlWhiteListIPv4 Node.&lt;/p&gt;

&lt;p&gt;Be careful, the name of this node is a fake friend: it does not generate a whitelist, but just makes sure that the IPs listed there do not appear in the aggregate that you will generate at the end.&lt;/p&gt;

&lt;p&gt;Finally, the last point to consult is the URL of the output stream. It is a matter of looking at the URL announced in the configuration of the inboundfeedhc Node. For practical reasons, it will be necessary to add the query ‘?tr=1’ to have a CIDR writing of the IPs. For ex:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;http://&lt;fqdn&gt;/feeds/inboundfeedhc?tr=1&lt;/fqdn&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&quot;benefit-from-minemeld-on-linux-servers&quot;&gt;Benefit from MineMeld on Linux servers&lt;/h3&gt;

&lt;p&gt;Now that the service is setup, let’s benefit from it. Easy way, is to rely on kernel’s ipset. So don’t forget to install &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ipset&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;I found a &lt;a href=&quot;https://github.com/dannysheehan/iptables-ipset-blacklists/blob/master/blacklists.sh&quot;&gt;bash script&lt;/a&gt; that can use blacklist feed and source them to ipset (and maintain the local list based on the feed age). As the script was doing part of MineMeld job, in a very long time, I had to amend it a bit. You’ll find my version &lt;a href=&quot;https://github.com/faichelbaum/minemeld-additions/blob/master/linux/blacklists.sh&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Don’t forget to edit it with two information:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;BL_URL&lt;/code&gt;: with the URL from your inboundfeedhc&lt;/li&gt;
  &lt;li&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MAIL_ADMIN&lt;/code&gt;: with your email address&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also provision a (real) whitelist by adding IPs to /var/lib/blacklists/whitelist.txt . If you have specific IPs you want to blacklist only on that hosts, you can edit the blacklist.txt file at the same location.&lt;/p&gt;

&lt;p&gt;On my end, I prefer to run this script at least once an hour, while keeping the possibility to run it on-demand.&lt;/p&gt;

&lt;p&gt;On all my servers, I use &lt;a href=&quot;https://en.wikipedia.org/wiki/Fail2ban&quot;&gt;fail2ban&lt;/a&gt; to parse my various logs and generate ban actions. Let’s update it with a new action: simply import the file &lt;a href=&quot;https://github.com/faichelbaum/minemeld-additions/blob/master/linux/fail2ban-minemeld.conf&quot;&gt;fail2ban-minemeld.conf&lt;/a&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/fail2ban/action.d/minemeld.conf&lt;/code&gt; and then update your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/fail2ban/jail.local&lt;/code&gt;with a new value for &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;banaction&lt;/code&gt;: ‘minemeld’. Also, import the new &lt;a href=&quot;https://github.com/faichelbaum/minemeld-additions/tree/master/linux&quot;&gt;ban/unban scripts&lt;/a&gt; and you’re done after a restart of fail2ban.&lt;/p&gt;

&lt;p&gt;The later scripts are to be updated with the proper fqdn and credentials to access your MineMeld API.&lt;/p&gt;

&lt;h2 id=&quot;thats-all-folks&quot;&gt;That’s all folks&lt;/h2&gt;

&lt;p&gt;Now, you’re set with MineMeld as a centralized blacklist management for your non-next-gen firewallis. This can also be used as a feed for the NG-FW plugin from pfSense, for instance. Yet, it can still be improved, based on your needs, as via created a real output feed for your whitelists, or with different management of the blacklists.&lt;/p&gt;

&lt;p&gt;Do you consider this useful ? How would you tackle such use case ? Feel free to ping me and share your thoughts.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Are you a Person of Interest ?</title>
      <link href="https://francois.aichelbaum.com/2020/05/26/are-you-a-person-of-interest" />
      <updated>2020-05-26T11:35:46+02:00</updated>
      <id>https://francois.aichelbaum.com/2020/05/26/are-you-a-person-of-interest</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-book&quot;&gt;&lt;/i&gt; Are you a Person of Interest?&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#in-the-last-episode-of&quot; id=&quot;markdown-toc-in-the-last-episode-of&quot;&gt;In the last episode of…&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#ok-that-ive-turned-paranoid&quot; id=&quot;markdown-toc-ok-that-ive-turned-paranoid&quot;&gt;Ok, that I’ve turned paranoid…&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#you-shall-not-pass&quot; id=&quot;markdown-toc-you-shall-not-pass&quot;&gt;You shall not pass&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#its-time-now&quot; id=&quot;markdown-toc-its-time-now&quot;&gt;It’s time now&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#am-i-safe&quot; id=&quot;markdown-toc-am-i-safe&quot;&gt;Am I safe?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;Of course, as an individual, you’re an interesting person. But are you a Person of Interest? By that I mean, are you a person that it is individually interesting to hack, or are you just a person who is immersed in the mass of data that the hacker has targeted? With the confinement and the video binge, the opportunity is too strong to make discover some TV series to neophytes, and to debate with them on all the questions they open. After having made discover series like &lt;a href=&quot;https://www.imdb.com/title/tt1839578/&quot;&gt;Person of Interest&lt;/a&gt; (for mass surveillance and hacking), but also &lt;a href=&quot;https://www.imdb.com/title/tt4158110/&quot;&gt;Mr. Robot&lt;/a&gt; (for hacking), we have a lot to do, and especially to question ourselves. So, are you a Person of Interest?&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Mass surveillance in China&quot; src=&quot;/images/2020/05/mass_surveillance.jpg&quot; title=&quot;Mass surveillance in China&quot; srcset=&quot;/assets/resized/480/mass_surveillance.jpg 480w, /images/2020/05/mass_surveillance.jpg 512w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Mass surveillance in China&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;in-the-last-episode-of&quot;&gt;In the last episode of…&lt;/h2&gt;

&lt;p&gt;A short summary of these series that launched the debate, and thus this article, may be useful (thanks to Wikipedia).&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://www.imdb.com/title/tt1839578/&quot;&gt;Person of Interest&lt;/a&gt; centers on a mysterious reclusive billionaire computer programmer named Harold Finch, who develops a computer program for the federal government known as “The Machine” that is capable of collating all sources of information to predict terrorist acts and identify people planning them. The Machine also identifies perpetrators and victims of other premeditated deadly crimes, but, because the government considers these “irrelevant”, he programs the Machine to delete this information each night. Anticipating abuse of his creation, Finch created a backdoor into the Machine. Tormented by the “irrelevant” deaths that might have been prevented, he eventually decides to use his backdoor to act covertly. To escape detection, he directs the Machine to provide only a tiny fragment of data: the social security number of a “person of interest”. The person may be a victim, a perpetrator, or an innocent bystander caught up in lethal events. The first episode shows how Finch recruited John Reese, a former Green Beret and CIA agent now presumed dead, to investigate the number provided by the Machine and act accordingly. As time passes, others join the team. From the beginning, the program raises an array of moral issues, from questions of privacy and “the greater good” to the idea of justifiable homicide to problems caused by working with limited information.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href=&quot;https://www.imdb.com/title/tt4158110/&quot;&gt;Mr. Robot&lt;/a&gt; follows Elliot Alderson, a young man living in New York City, who works at the cyber security company Allsafe as a cybersecurity engineer. Constantly struggling with social anxiety, dissociative identity disorder and clinical depression, Elliot’s thought process seems heavily influenced by paranoia and delusion. He connects to people by hacking them, which often leads him to act as a cyber-vigilante. He is recruited by a mysterious insurrectionary anarchist known as Mr. Robot and joins his team of hacktivists known as &lt;em&gt;fsociety&lt;/em&gt; (namely “F*ck Society”). One of their missions is to cancel all consumer debt by destroying the data of one of the largest corporations in the world, E Corp (which Elliot perceives as Evil Corp), which also happens to be Allsafe’s biggest client.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Let’s not forget &lt;a href=&quot;https://www.imdb.com/title/tt4063800/&quot;&gt;The Bureau&lt;/a&gt;, and in particular its latest season, which puts a little more emphasis on hacking.&lt;/p&gt;

&lt;h2 id=&quot;ok-that-ive-turned-paranoid&quot;&gt;Ok, that I’ve turned paranoid…&lt;/h2&gt;

&lt;p&gt;Personally, I’ve grown very fond of these shows. Not so much for the technical aspect (far too romanticized on Person if Interest, and a few too many mistakes on Mr. Robot), but for the questions they always raise. A good way to awaken the paranoid or conspiratorial in you.&lt;/p&gt;

&lt;p&gt;The first question to be generally stated is:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;But is there such a thing as mass surveillance?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;There, you just have to call back quickly, for example:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;China, and its &lt;a href=&quot;https://en.wikipedia.org/wiki/Mass_surveillance_in_China&quot;&gt;mass surveillance system&lt;/a&gt;, as well as its capitalist drift with a &lt;a href=&quot;https://en.wikipedia.org/wiki/Social_Credit_System&quot;&gt;point system&lt;/a&gt;…&lt;/li&gt;
  &lt;li&gt;the various revelations of &lt;a href=&quot;https://en.wikipedia.org/wiki/Edward_Snowden&quot;&gt;Edward Snowden&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Mass_surveillance_in_Russia&quot;&gt;mass surveillance in Russia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img alt=&quot;You&apos;re being watched&quot; src=&quot;/images/2020/05/youre_being_watched.jpg&quot; title=&quot;You&apos;re being watched&quot; srcset=&quot;/assets/resized/480/youre_being_watched.jpg 480w,/assets/resized/800/youre_being_watched.jpg 800w, /images/2020/05/youre_being_watched.jpg 1200w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;You’re being watched&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We are talking about everything that is state-owned, but we should not forget private interests:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;the massive &lt;a href=&quot;https://cliqz.com/en/magazine/cookies-fingerprinting-co-tracking-methods-clearly-explained&quot;&gt;use of cookies&lt;/a&gt; to track users through their internet browsing&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Social_login&quot;&gt;social authentications&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;coverage of major groups: Google (with Android, Nest, GCP, …), Amazon (with AWS, Amazon Prime Video, Amazon Prime Photo, Amazon Prime Music, Alexa, …), Apple (with iPhone, iMac, iCloud, Siri, …), Facebook (with WhatsApp, Oculus VR, Giphy, Atlas - an advertising agency -, …)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And scandals related to the (mis)use of your personal data by all these organisations regularly make the headlines.&lt;/p&gt;

&lt;h2 id=&quot;you-shall-not-pass&quot;&gt;You shall not pass&lt;/h2&gt;

&lt;p&gt;The second question is in general:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;But how easy is it to hack me, whether it’s my phone, my computer, or even my online banking account?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img alt=&quot;You shall not pass!&quot; src=&quot;/images/2020/05/you_shall_not_pass.jpg&quot; title=&quot;You shall not pass!&quot; srcset=&quot;/assets/resized/480/you_shall_not_pass.jpg 480w, /images/2020/05/you_shall_not_pass.jpg 537w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;You shall not pass!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I like to answer this question in such a way as to make sure you are totally paranoid: excessively easy. Well, I admit, that kind of answer often makes me lose a part of the audience that is already between throwing the phone and the computer into the fire. But, for those who remain open, we can dig up the why.&lt;/p&gt;

&lt;p&gt;If you have finished building your Faraday cage at the foot of the Green Bank Telescope, we can continue with my explanation.&lt;/p&gt;

&lt;p&gt;The first answer to be given concerns the means. For those that do (see the second answer), companies spend astronomical budgets to guarantee the security of information systems. However, the result is not “is the door locked properly”, but “how long will the lock hold”. As with your armoured door. The real goal is not to prevent access, but to slow down the attacker enough so that you are warned and can take action. And very often these companies fail: just read the various daily announcements about massive data theft. So if, with their means, these companies fail, how can you be perfectly impervious?&lt;/p&gt;

&lt;p&gt;The second answer concerns responsibility. So we know that your means are limited: you don’t necessarily have the knowledge or the support to do it. All too often, security measures are so restrictive for normal use that users end up competing with each other in ingenuity to circumvent them, and thus make them useless. Under these conditions, it is therefore incumbent on those who provide you with these services to guarantee their security, but also their confidentiality. This is the purpose of, for example, the &lt;a href=&quot;https://en.wikipedia.org/wiki/General_Data_Protection_Regulation&quot;&gt;GDPR&lt;/a&gt; in Europe, or the &lt;a href=&quot;https://en.wikipedia.org/wiki/California_Consumer_Privacy_Act&quot;&gt;CCPA&lt;/a&gt; in California. In the same way, they must provide you with simple (and motivating) ways to make use of any security that you may be entrusted with.&lt;/p&gt;

&lt;h2 id=&quot;its-time-now&quot;&gt;It’s time now&lt;/h2&gt;

&lt;p&gt;But are they all effective? What can you do? The answer varies greatly from one solution to the next, but when I hear some people take pride in having “secured” their iPhone with FaceID, I can only recall an old episode of Columbo, where the assassin’s accomplice was driving around in a car, carrying a picture of the assassin to fool the cameras. Of course, not everyone is Columbo, but what about that young boy who manages to unlock his mother’s phone with his own face?&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Columbo&apos;s mask&quot; src=&quot;/images/2020/05/columbo_mask.jpg&quot; title=&quot;Columbo&apos;s mask&quot; srcset=&quot;/assets/resized/480/columbo_mask.jpg 480w,/assets/resized/800/columbo_mask.jpg 800w, /images/2020/05/columbo_mask.jpg 1116w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Columbo’s mask&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The first rule is to review your PIN codes and passwords:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;finish your son’s date of birth&lt;/li&gt;
  &lt;li&gt;no more 4-digit code&lt;/li&gt;
  &lt;li&gt;no more using your children’s names as passwords&lt;/li&gt;
  &lt;li&gt;no more using the same code or password everywhere&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So yes, it can quickly become very complicated to have an ultra-complex password (a number, a special character, a lowercase, an uppercase, a hieroglyph, an emoticon, and especially in the right order in relation to what you ask the site or application.&lt;/p&gt;

&lt;p&gt;But it doesn’t matter: you still have your post-its and your notebook… … … Did you hear me yelling there?&lt;/p&gt;

&lt;p&gt;If you have an excellent memory and like mental gymnastics, you still can:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;remember a page from your favorite religious book, and use it as a password with all the punctuation that goes with it *&lt;/li&gt;
  &lt;li&gt;or define a “dynamic” password: a fixed password base, that you specifically and logically complete/modify for each site.&lt;/li&gt;
  &lt;li&gt;put all the important dates in your life in a row&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Except that you will always have sites or applications for which this will not fit, and you will have to find an exception… and how to memorize it.&lt;/p&gt;

&lt;p&gt;Some users are more perverse: they lie about anything at every use and as soon as the system asks them for a password again, they follow the lost password procedure. It’s almost effective, but it’s tiring.&lt;/p&gt;

&lt;p&gt;Others will rely on password portfolio solutions (&lt;a href=&quot;https://www.dashlane.com/&quot;&gt;Dashlane&lt;/a&gt;, &lt;a href=&quot;https://1password.com/&quot;&gt;1Password&lt;/a&gt;, …). Why not! But we come back to the above mentioned aspects on responsibilities and their obligations. On your side, this can clearly simplify your life: there is only one password to memorize, and you can make it as complex as you want! But there is one important point to remember: they can sometimes send you a temporary code to your main e-mail address to make sure that it is you who is trying to access the wallet, so remember the password as well. That’s only two, but still.&lt;/p&gt;

&lt;p&gt;But a password, it’s crackable. So it may take time, but since there is no such thing as zero risk, … It has to be reduced. That’s what the different techniques of [MFA] (https://en.wikipedia.org/wiki/Multi-factor_authentication) are all about:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;The use of multiple authentication factors to prove one’s identity is based on the premise that an unauthorized actor is unlikely to be able to supply the factors required for access. If, in an authentication attempt, at least one of the components is missing or supplied incorrectly, the user’s identity is not established with sufficient certainty and access to the asset (e.g., a building, or data) being protected by multi-factor authentication then remains blocked. The authentication factors of a multi-factor authentication scheme may include:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Something you have - some physical object in the possession of the user, such as a USB stick with a secret token, a bank card, a key, etc.&lt;/li&gt;
    &lt;li&gt;Something you know - certain knowledge only known to the user, such as a password, PIN, TAN, etc.&lt;/li&gt;
    &lt;li&gt;Something you are - some physical characteristic of the user (biometrics), such as a fingerprint, eye iris, voice, typing speed, pattern in key press intervals, etc.&lt;/li&gt;
    &lt;li&gt;Somewhere you are - some connection to a specific computing network or utilizing a GPS signal to identify the location.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;The applications listed above can help you with this, for example.&lt;/p&gt;

&lt;p&gt;Okay, great, so you can “secure” access to your tools within certain limits. But what about your devices (computers, phone, …)? They are just as vunerable. Coming back to our friends Harold and Elliot, you too often leave open access to your phones: Wifi, Bluetooth, NFC, … So start by disabling them whenever possible. In the case of Bluetooth, some software versions allow to have it active (so that it connects elsewhere) but without “publishing” it. Same for the Wifi in your home.&lt;/p&gt;

&lt;p&gt;Then, a good antivirus is always useful. A paying one is better. It’s stupid to say but, the advanced functions above are very useful but paying. You could always multiply the free applications that each brings a part of these functions … But this can become counterproductive in terms of security, but also in terms of performance. We then come back to the constraints that you would try to bypass.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Yes, but &lt;em&gt;me&lt;/em&gt; I’m under Mac OS, and there’s no virus or anything like that!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img alt=&quot;Objection!&quot; src=&quot;/images/2020/05/objection.png&quot; title=&quot;Objection!&quot; srcset=&quot;/assets/resized/480/objection.png 480w, /images/2020/05/objection.png 550w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Objection!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Just last week, I was able to demonstrate just by installing an antivirus on a friend’s Mac that it was a nice marketing illusion that had served its time.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Yes, but when I’m on the net, I surf via a VPN&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Well, beyond the question of trust in this VPN service, a VPN is still a tunnel. Have you ever seen a road tunnel preventing a pedestrian from entering it in the opposite direction of the cars? It’s bullshit without a no, but it’s possible. So your VPN, apart from getting you to the other side of the mountain, has little use in that. And when I see the TV commercials of some people promising you privacy on the internet, I can’t help but giggle…&lt;/p&gt;

&lt;h2 id=&quot;am-i-safe&quot;&gt;Am I safe?&lt;/h2&gt;

&lt;p&gt;It depends. We can finally get back to the original subject: are you a Person of Interest?&lt;/p&gt;

&lt;p&gt;You have now done a lot for your security: you have cut useless accesses, you don’t use Social Logins anymore, you have made your passwords more complex, you abuse MFAs, … It’s not bad. So you still have the sites and applications you use. Remember, you got out of your Faraday cage to come back on the internet to read the rest of this article. You are therefore connected to third parties.&lt;/p&gt;

&lt;p&gt;I remember last year, a friend of mine was worried because he had received an email “sent by himself” (remind me to tell you about Sender Forgery and Spoofing), threatening him to “divulge he knows exactly what was found on his hard drive” unless he paid a Bitcoin ransom. So for one, this famous friend is a bit paranoid and only uses LiveUSB. And two, he doesn’t store anything because he’s unable to find anything (which can be funny in private life). Anyway, the question was: why was he targeted?&lt;/p&gt;

&lt;p&gt;Well, he wasn’t actually targeted. His email was simply found in a database that was hacked, and the vile offenders decided to send emails to all known addresses found in it. After all, they would find at least one person “who knows very well what was lying around on his hard drive” and who would pay his ransom without flinching.&lt;/p&gt;

&lt;p&gt;However, there is no stolen confidential data here, nor any real ransom. This is just an attempt at a mass con.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;But the point is interesting. This reminds me of the episode &lt;a href=&quot;https://en.wikipedia.org/wiki/Shut_Up_and_Dance_%28Black_Mirror%29&quot;&gt;Shut Up and Dance&lt;/a&gt; of &lt;em&gt;Black Mirror&lt;/em&gt;. That pretty much sums it up. If we hack you specifically, knowing you for real, there’s an interest. But this is still extremely exceptional, and no, your personal savings do not interest us. Either you’re doing something illegal, and that interests the authorities or the avengers. Either you actually have money (we are talking in billions). Or finally, you have access to interesting information (business, strategy, … always for values in billions).&lt;/p&gt;

&lt;p&gt;But, again, this is an exception. The general rule is that you are just drowning in the mass of information hacked from vulnerable sites/tools. There are various ways to see if this is possible: the portfolios mentioned above, but also a well provisioned website: &lt;a href=&quot;https://haveibeenpwned.com/&quot;&gt;Have I been pwned?&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;My soul of great paranoid romantic prefers to stay on the idea that I am a Person of Interest, and that the Machine is watching me. And you, are you a person of interest?&lt;/p&gt;

&lt;p&gt;PS: remember: You’re being watched.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>My neighbor is noisy</title>
      <link href="https://francois.aichelbaum.com/2020/04/17/my-neighbor-is-noisy" />
      <updated>2020-04-17T10:11:46+02:00</updated>
      <id>https://francois.aichelbaum.com/2020/04/17/my-neighbor-is-noisy</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-book&quot;&gt;&lt;/i&gt; My neighbor is noisy&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#some-quick-reminder&quot; id=&quot;markdown-toc-some-quick-reminder&quot;&gt;Some quick reminder&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#my-noisy-neighbor-is-named&quot; id=&quot;markdown-toc-my-noisy-neighbor-is-named&quot;&gt;My noisy neighbor is named…&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#my-neighbor-moves-me&quot; id=&quot;markdown-toc-my-neighbor-moves-me&quot;&gt;My neighbor moves me&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#let-me-be&quot; id=&quot;markdown-toc-let-me-be&quot;&gt;Let me be!&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#do-you-agree&quot; id=&quot;markdown-toc-do-you-agree&quot;&gt;Do you agree?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;Don’t worry, I won’t discuss about my personal neighbors during the Covid-19 confinement. Lately, several of my customers had random and difficult-to-diagnose issues with their Cloud instances. As this is not related to a specific provider (some of them are using &lt;a href=&quot;https://aws.amazon.com/&quot;&gt;AWS&lt;/a&gt; while the others are using &lt;a href=&quot;https://www.ovhcloud.com/fr/public-cloud/compute/&quot;&gt;OVH Public Cloud&lt;/a&gt;), the root cause remains the same. Before going into more detail, I’ll give you a quick answer: their neighbors are noisy.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Protesters demonstrate against Donald Trump&apos;s presidency during the campaign trail in 2016 (by AP)&quot; src=&quot;/images/2020/04/donald-trump-protest-assault.jpg&quot; title=&quot;Protesters demonstrate against Donald Trump&apos;s presidency during the campaign trail in 2016 (by AP)&quot; srcset=&quot;/assets/resized/480/donald-trump-protest-assault.jpg 480w,/assets/resized/800/donald-trump-protest-assault.jpg 800w,/assets/resized/1400/donald-trump-protest-assault.jpg 1400w, /images/2020/04/donald-trump-protest-assault.jpg 1440w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Protesters demonstrate against Donald Trump’s presidency during the campaign trail in 2016 (by AP)&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;some-quick-reminder&quot;&gt;Some quick reminder&lt;/h2&gt;

&lt;p&gt;Of course, you all know what the Cloud is, don’t you? So no, it’s not just your online storage, it’s not just your photo sharing. According to &lt;a href=&quot;https://en.wikipedia.org/wiki/Cloud_computing&quot;&gt;Wikipedia&lt;/a&gt;, as we’re discussing especially about Cloud Computing:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;Cloud computing is the on-demand availability of computer system resources, especially data storage and computing power, without direct active management by the user. The term is generally used to describe data centers available to many users over the Internet. Large clouds, predominant today, often have functions distributed over multiple locations from central servers. If the connection to the user is relatively close, it may be designated an edge server.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Technically, those are virtual resources, easily manageable. By virtual resources, I mean a segmentation of the physical machine into different instances, dedicated to different customers. All of this at the scale of entire data centers.&lt;/p&gt;

&lt;p&gt;The virtualization provided is based on usual market solutions (VMware, kvm, …) with potentially management overlay, or home-made solutions. So we talk about hypervisor for the host machine, and instance for the virtual machine.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Virtual Architecture&quot; src=&quot;/images/2020/04/virtual-architecture.png&quot; title=&quot;Virtual Architecture&quot; srcset=&quot;/assets/resized/480/virtual-architecture.png 480w,/assets/resized/800/virtual-architecture.png 800w, /images/2020/04/virtual-architecture.png 941w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Virtual Architecture&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The subject that interests us here is in itself neither new nor unknown to Cloud providers: they are all gradually releasing offers with “guaranteed performance” or “dedicated resources”. But why this?&lt;/p&gt;

&lt;p&gt;Let’s go back to our virtual architecture: we see it as a segmentation of the host machine. Let’s replace our server by a cake and the instances by slices. So you can cut your cake into as many slices as you want, as long as there is cake. Therefore, to have more slices, you have to make them smaller. The same is theoretically true for virtualization.&lt;/p&gt;

&lt;p&gt;Theoretically is the important word here: indeed, your providers bet that not all their customers were using all the resources allocated to their instances at the same time. They then decided to keep larger sizes for the instances than the host machine can handle. This is called overbooking.&lt;/p&gt;

&lt;p&gt;Most of the time they are right. But the moments that make them wrong, are detrimental to you. This overbooking is predictable for you, customers, depending on the tariff of your provider: the cheaper it is, the higher the probability and the coefficient of overbooking. In addition to dedicated resources, some providers promise you an adequate infrastructure where storage would be the absolute key, through fully SSD-based storage. That’s good. But that’s not all.&lt;/p&gt;

&lt;div class=&quot;alert alert-success&quot; role=&quot;alert&quot;&gt;&lt;i class=&quot;fa fa-check-square-o&quot;&gt;&lt;/i&gt; &lt;b&gt;Tip:&lt;/b&gt; I can’t repeat it enough to my various contacts: no the ‘Cloud’ is not cheap and not very quickly you cost an arm and a leg.&lt;/div&gt;

&lt;h2 id=&quot;my-noisy-neighbor-is-named&quot;&gt;My noisy neighbor is named…&lt;/h2&gt;

&lt;p&gt;Because of this overbooking, whether it’s naturally related to the mass of instances, or specifically due to a single instance (our Noisy Neighbor), the effect is the same: you have at a given time, less resources available than expected.&lt;/p&gt;

&lt;p&gt;The first question I hear most often then is:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;But how do you detect it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is the most difficult part for you because, in the middle of a run, this can manifest itself in various ways, with obvious signals only in some rare cases. The other signals will simply be the direct consequences on your own service.&lt;/p&gt;

&lt;p&gt;On Linux, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;top&lt;/code&gt; can provide one of the obvious signal. Have you ever wonder what is the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;st&lt;/code&gt; value at the end of the second line ? To be conciese, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;st&lt;/code&gt;, for “steal time”, is only relevant in virtualized environments (your Cloud setup here). It represents time when the CPU, from the host, was not available to the current instance: it was &lt;em&gt;stolen&lt;/em&gt;. If you want more details about this steal time, you can refer to this &lt;a href=&quot;https://public.dhe.ibm.com/software/dw/linux390/perf/CPU_time_accounting.pdf&quot;&gt;tech paper&lt;/a&gt; from IBM.&lt;/p&gt;

&lt;p&gt;A recommendation to all my customers, when we work on their monitoring platforms, is to include behavior change and comparison tests. Do latency levels suddenly increase? Does the system have hangs without being loaded, and without I/O?&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Monitoring room in China&quot; src=&quot;/images/2020/04/monitoring.jpg&quot; title=&quot;Monitoring room in China&quot; srcset=&quot;/assets/resized/480/monitoring.jpg 480w,/assets/resized/800/monitoring.jpg 800w, /images/2020/04/monitoring.jpg 1200w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Monitoring room in China&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;On latency, for example, I remember one client where we worked on their content distribution services using nginx and doing some pretty advanced fine-tuning. From there, we launched tests and set up monitoring for each of the instances concerned. Very low latencies and high bandwidths, at all times, whatever the instance and the Cloud provider. Then one morning, this customer called me with a catastrophic call: all his European customers were complaining about abnormally long latencies when opening the hosted videos. The analysis tests went quite far:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;check the &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/API/Navigation_timing_API&quot;&gt;navigation timing&lt;/a&gt; values to determine what could generate these latencies: the &lt;a href=&quot;https://fr.wikipedia.org/wiki/Time_to_first_byte&quot;&gt;TTFB&lt;/a&gt; increases abnormally while everything else is stable.&lt;/li&gt;
  &lt;li&gt;only the platform hosted in France on one provider is impacted: no abnormal latency on other providers or regions&lt;/li&gt;
  &lt;li&gt;no machine load (nor steal time - see above)&lt;/li&gt;
  &lt;li&gt;no I/O&lt;/li&gt;
  &lt;li&gt;low throughput of the concerned instances: 10 Mbps on average against several hundred for those with no worries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While we’re testing in all directions, with no configuration changes other than juggling the nginx debugging options, the service returns to normal. The next day, around the same time, the same client contacts me again in a panic over the same subject. Same analysis, same result, same return to normal.&lt;/p&gt;

&lt;p&gt;After (too) long exchanges with the support of this provider, we finally got the information: another instance was behaving abnormally and was consuming a good part of the machine resources, in particular the network part (speed and number of connections). You said peer-to-peer for last summer’s family videos?&lt;/p&gt;

&lt;h2 id=&quot;my-neighbor-moves-me&quot;&gt;My neighbor moves me&lt;/h2&gt;

&lt;p&gt;On the subject of the “hang system”, it’s a little more vicious and specific. A client in the video industry, does massive transcoding using ffmpeg. Part of the work is done via CPUs (the smaller resolutions) while the higher resolutions (HD / 4K in mind) are done via GPUs. The setup works well except that regularly some live streams are disturbed in an incomprehensible way, exclusively from the CPU instances. After a long analysis, the only common point of all its interruptions, both in terms of chronology of events, behaviour and logs, is the “bridle” of ffmpeg to a single CPU thread actually used.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Delivery guy collecting a package&quot; src=&quot;/images/2020/04/livraison.jpg&quot; title=&quot;Delivery guy collecting a package&quot; srcset=&quot;/assets/resized/480/livraison.jpg 480w,/assets/resized/800/livraison.jpg 800w,/assets/resized/1400/livraison.jpg 1400w, /images/2020/04/livraison.jpg 1920w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Delivery guy collecting a package&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;We therefore focused our analytical work on understanding what could cause this behavioural change on the part of ffmpeg. After different stress-tests of the instances, only one allowed to reproduce the behavior: the I/O stress-tests at the kernel level, causing system hangs.&lt;/p&gt;

&lt;p&gt;At that time, my client remembered having vaguely seen some automated storage migration emails passing by the concerned provider, at the same time as the famous interruptions.&lt;/p&gt;

&lt;p&gt;So yes, another important reminder:&lt;/p&gt;

&lt;div class=&quot;alert alert-success&quot; role=&quot;alert&quot;&gt;&lt;i class=&quot;fa fa-check-square-o&quot;&gt;&lt;/i&gt; &lt;b&gt;Tip:&lt;/b&gt; Theoretically transparent host or storage moves are rarely transparent in practice.&lt;/div&gt;

&lt;h2 id=&quot;let-me-be&quot;&gt;Let me be!&lt;/h2&gt;

&lt;p&gt;The next question, they usually ask, is:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;But how do you prevent it?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It all depends on your budget!&lt;/p&gt;

&lt;p&gt;Large instance consumers allow themselves to test an instance when spawning it to make sure there are no noisy neighbors from the start. Tests are typically stress-tests specific to each instance template used, the results of which are compared to the average values of the instances considered “valid”.  Automation of your entire infrastructure is key here.&lt;/p&gt;

&lt;p&gt;This pre-use stage of the instance can quickly become expensive: some people have been surprised to see dozens of attempts before having a viable instance. Time being money in the Cloud world, …&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;A dog hunting&quot; src=&quot;/images/2020/04/pistage.jpg&quot; title=&quot;A dog hunting&quot; srcset=&quot;/assets/resized/480/pistage.jpg 480w,/assets/resized/800/pistage.jpg 800w,/assets/resized/1400/pistage.jpg 1400w, /images/2020/04/pistage.jpg 1920w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;A dog hunting&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Most people implement corrective solutions. The monitoring (see above) is then interfaced with the automation tools and will restart a new instance to replace the one detected as disturbed.&lt;/p&gt;

&lt;p&gt;This is the least expensive but can have two impacts depending on your service/infrastructure:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;a small delay before detection and/or relaunch&lt;/li&gt;
  &lt;li&gt;a service interruption if your instance is not redundant or if your load-balancer is slow to detect its unavailability&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Another solution would be to host your services on dedicated infrastructure when it makes sense, and consider Cloud services as overflow solutions.&lt;/p&gt;

&lt;h2 id=&quot;do-you-agree&quot;&gt;Do you agree?&lt;/h2&gt;

&lt;p&gt;I remember an article explaining that it was the fault of your application and not of cloud hosting. We could go back to the eternal war between Dev and Ops, but these articles usually completely overlook the monitoring aspects and therefore the observability of what is going on. Their point of view is therefore valid, but not gospel.&lt;/p&gt;

&lt;p&gt;On your side, have you ever been through these setbacks? How did you react?&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>My life with a geo-replicated GlusterFS setup</title>
      <link href="https://francois.aichelbaum.com/2020/03/26/my-life-with-glusterfs-georep" />
      <updated>2020-03-26T17:15:16+01:00</updated>
      <id>https://francois.aichelbaum.com/2020/03/26/my-life-with-glusterfs-georep</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-book&quot;&gt;&lt;/i&gt; Feedback on a geo-rep GlustserFS 7.3 setup&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#but-why-&quot; id=&quot;markdown-toc-but-why-&quot;&gt;But why ?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-setup&quot; id=&quot;markdown-toc-the-setup&quot;&gt;The setup&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#and-then-theres-the-drama&quot; id=&quot;markdown-toc-and-then-theres-the-drama&quot;&gt;And then there’s the drama&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#did-you-think-it-was-over&quot; id=&quot;markdown-toc-did-you-think-it-was-over&quot;&gt;Did you think it was over?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#one-more-thing&quot; id=&quot;markdown-toc-one-more-thing&quot;&gt;One more thing…&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;Recently, I had to build a geo-replicated GlusterFS setup and encountered a bunch of issues due to the not-so-up-to-date documentation and the &lt;em&gt;unlucky thing&lt;/em&gt;. So much time spent reviewing things and discussing with the dev team over IRC. Here’s my (recent) life with a geo-replicated GlusterFS setup.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;My life with a geo-replicated GlusterFS setup&quot; src=&quot;/images/ants.jpg&quot; title=&quot;My life with a geo-replicated GlusterFS setup&quot; srcset=&quot;/assets/resized/480/ants.jpg 480w,/assets/resized/800/ants.jpg 800w,/assets/resized/1400/ants.jpg 1400w, /images/ants.jpg 1920w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;My life with a geo-replicated GlusterFS setup&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;but-why-&quot;&gt;But why ?&lt;/h2&gt;

&lt;p&gt;Before we get started, it would be good if I gave you a little context. So, this is an assignment for a software company.&lt;/p&gt;

&lt;p&gt;They provide their customers with large amounts of data (about 11 TB). The publisher being French, and for reasons of ease and sysadmin skills - at the time of implementation - has created all its infrastructures in France.&lt;/p&gt;

&lt;p&gt;Due to the fact that they have little control over their network (provided by another service provider from which they cannot leave for the moment) and a worldwide audience (with a strong increase on the North American continent), they were forced to deploy &lt;a href=&quot;https://www.cloudflare.com/learning/cdn/glossary/edge-server/&quot;&gt;edge servers&lt;/a&gt; (HTTP services allowing the local distribution of its famous 11 TB).&lt;/p&gt;

&lt;p&gt;This then irremediably leads to high latencies and low throughput for these North American users. Not a very pleasant user experience, you’ll tell me about it. If we talk about numbers:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Latency: &lt;strong&gt;2 seconds&lt;/strong&gt; compared to &lt;strong&gt;0.3 seconds&lt;/strong&gt; from France.&lt;/li&gt;
  &lt;li&gt;Throughput: &lt;strong&gt;500 kB/s&lt;/strong&gt; compared to &lt;strong&gt;15 MB/s&lt;/strong&gt; from France (and even 150 MB/s locally at storage)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So they decided to call me to see how we could improve things with the following constraints:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;rely on the existing provider (which has infrastructure in Europe and North America)&lt;/li&gt;
  &lt;li&gt;with the smoothest possible future migration to make it a quick-win&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After an audit, we come to a decision for the following setup:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;local cluster in France, based on a distributed GlusterFS setup&lt;/li&gt;
  &lt;li&gt;Local cluster in North America, also based on a distributed GlusterFS setup, geo-replicated on the first one in real time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interesting thing here will also be to recycle technological bricks that the editor’s team already knows about, and to stay on something quite high level: GlusterFS is an overlay to the underlying filesystem (XFS was our choice here). The GlusterFS documentation (since &lt;a href=&quot;https://staged-gluster-docs.readthedocs.io/en/release3.7.0beta1/Administrator%20Guide/Distributed%20Geo%20Replication/&quot;&gt;version 3.5&lt;/a&gt;) also promises the correct operation of geo-replication over a distributed setup.&lt;/p&gt;

&lt;p&gt;Please, note also that I’ll resume the operations here, not describing the minutes of each action.&lt;/p&gt;

&lt;h2 id=&quot;the-setup&quot;&gt;The setup&lt;/h2&gt;

&lt;p&gt;I enjoy working with Ansible to deploy my small clusters, like many DevOps. So I’m starting on it, writing &lt;a href=&quot;https://github.com/faichelbaum/ansible-gluster&quot;&gt;my own playbooks&lt;/a&gt;. Be careful, the project presented on the previous link is the result of the work described here, after a little obvious cleaning, and potentially before a sequel …&lt;/p&gt;

&lt;p&gt;The idea of this setup is to have the following elements:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Each country has its own cluster GlusterFS (the master being in France)&lt;/li&gt;
  &lt;li&gt;Each cluster has two servers in &lt;a href=&quot;https://docs.gluster.org/en/latest/Administrator%20Guide/Setting%20Up%20Volumes/#creating-distributed-volumes&quot;&gt;distributed mode&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Each server has 10 disks of 4 TB available for this storage, built in software Raid type 10, formatted in &lt;a href=&quot;https://access.redhat.com/articles/3129891#the-xfs-file-system-3&quot;&gt;XFS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Each node mounts the cluster locally with these parameters: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;127.0.0.1:/storage-fr /opt/self glusterfs defaults,_netdev,noatime,log-level=ERROR,log-file=/var/log/gluster.log,direct-io-mode=no,fopen-keep-cache,negative-timeout=10,attribute-timeout=30,fetch-attempts=5,use-readdirp=no,backupvolfile-server=fs-fr-02 0 0&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img alt=&quot;GlusterFS Distributed Volume&quot; src=&quot;/images/glusterfs/distributed.png&quot; title=&quot;GlusterFS Distributed Volume&quot; srcset=&quot;/assets/resized/480/distributed.png 480w, /images/glusterfs/distributed.png 660w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;GlusterFS Distributed Volume&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That’s the setup at the very beginning. Now let’s live it.&lt;/p&gt;

&lt;h2 id=&quot;and-then-theres-the-drama&quot;&gt;And then there’s the drama&lt;/h2&gt;

&lt;p&gt;Thanks to the Ansible playbook, the entire deployment goes smoothly and without errors. So I import my 11 TB and then I admit… but not for long. It’s perfect, but a SysOps rule scares me:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;If everything goes well on the first try, you’ve forgotten something.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Fortunately&lt;/em&gt; for me, not everything is so beautiful: geo-replication doesn’t start. A glance at the geo-replication status does indeed bring me back to reality:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;gluster volume geo-replication storage-fr fs-ca-01::storage-ca status

MASTER NODE      MASTER VOL    MASTER BRICK        SLAVE USER    SLAVE                       SLAVE NODE       STATUS    CRAWL STATUS                   LAST_SYNCED
&lt;span class=&quot;nt&quot;&gt;------------------------------------------------------------------------------------------------------------------------------------------------------------------&lt;/span&gt;
fs-fr-01         storage-fr    /opt/brick           root         fs-ca-01::storage-ca        N/A              Faulty    N/A                            N/A
fs-fr-02         storage-fr    /opt/brick           root         fs-ca-02::storage-ca        N/A              Faulty    N/A                            N/A&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;In fact, the startup passes the replication to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Active&lt;/code&gt; and then immediately to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Faulty&lt;/code&gt;. For a successful setup, I would come back. So obviously, we always start by consulting the logs first:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;less &lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;gluster volume geo-replication storage-fr fs-ca-01::storage-ca config log-file&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;And here we see a beautiful log entry, extremely explicit:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-log&quot; data-lang=&quot;log&quot;&gt;E [syncdutils(worker
/gfs1-data/brick):338:log_raise_exception] &amp;lt;top&amp;gt;: FAIL:
Traceback (most recent call last):
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/gsyncd.py&quot;,
line 322, in main
    func(args)
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/subcmds.py&quot;,
line 82, in subcmd_worker
    local.service_loop(remote)
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/resource.py&quot;,
line 1277, in service_loop
    g3.crawlwrap(oneshot=True)
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py&quot;,
line 599, in crawlwrap
    self.crawl()
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py&quot;,
line 1555, in crawl
    self.changelogs_batch_process(changes)
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py&quot;,
line 1455, in changelogs_batch_process
    self.process(batch)
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py&quot;,
line 1290, in process
    self.process_change(change, done, retry)
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py&quot;,
line 1229, in process_change
    st = lstat(go[0])
  File
&quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/syncdutils.py&quot;, line
564, in lstat
    return errno_wrap(os.lstat, [e], [ENOENT], [ESTALE, EBUSY])
  File
&quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/syncdutils.py&quot;, line
546, in errno_wrap
    return call(*arg)
OSError: [Errno 22] Invalid argument:
&apos;.gfid/1ab24e67-1234-abcd-5f6g-1ab24e67&apos;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;First though is about a specific issue at some files. Checking the file matching the gfid, it occurs to seem valid. As an attempt to save the day, I get rid of it and restart the geo-replication. With no success at it fails the same way. Discussing with the Gluster dev team over IRC, they wonder if the amount of initial data might not be the issue. Fair enough, I get read of the data 1 TB per 1 TB, testing the geo-replication at each stage. Still no luck. As I end with a totally wiped folder, with no more data, I wondered if the changelog did not get corrupted or filled up during those test. I decide to wipe the complete cluster and attempt once again the deployment with Ansible, but without importing any data. To wipe the setup on the servers, I used the following commands:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ansible fs-fr-01 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; shell &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;gluster volume geo-replication storage-fr fs-ca-01::storage-ca stop force&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ansible fs-fr-01 &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; shell &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;gluster volume geo-replication storage-fr fs-ca-01::storage-ca delete reset-sync-time&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ansible fs_fr &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; shell &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;echo y | gluster volume stop storage-fr&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ansible fs_ca &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; shell &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;echo y | gluster volume stop storage-ca&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ansible fs &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; shell &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;dpkg -l | grep gluster | awk &apos;{ print &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\$&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;2 }&apos; | xargs sudo apt -y remove&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ansible fs &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; shell &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;service glusterd stop&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ansible fs &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; shell &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;umount /opt/self&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ansible fs &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; shell &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;setfattr -x trusted.glusterfs.volume-id /opt/brick&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ansible fs &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; shell &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;setfattr -x trusted.gfid /opt/brick&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ansible fs &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; shell &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;rm -fR /opt/brick/.glusterfs&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ansible fs &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; shell &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;find /usr -name &apos;*gluster*&apos; -exec rm -fR {} &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ansible fs &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; shell &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;find /var -name &apos;*gluster*&apos; -exec rm -fR {} &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;ansible fs &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; shell &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;find /etc -name &apos;*gluster*&apos; -exec rm -fR {} &lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\;&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;And as you might have expected: it failed over once again!&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-log&quot; data-lang=&quot;log&quot;&gt;E [syncdutils(worker
/gfs1-data/brick):338:log_raise_exception] &amp;lt;top&amp;gt;: FAIL:
Traceback (most recent call last):
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/gsyncd.py&quot;,
line 322, in main
    func(args)
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/subcmds.py&quot;,
line 82, in subcmd_worker
    local.service_loop(remote)
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/resource.py&quot;,
line 1277, in service_loop
    g3.crawlwrap(oneshot=True)
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py&quot;,
line 599, in crawlwrap
    self.crawl()
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py&quot;,
line 1555, in crawl
    self.changelogs_batch_process(changes)
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py&quot;,
line 1455, in changelogs_batch_process
    self.process(batch)
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py&quot;,
line 1290, in process
    self.process_change(change, done, retry)
  File &quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/master.py&quot;,
line 1229, in process_change
    st = lstat(go[0])
  File
&quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/syncdutils.py&quot;, line
564, in lstat
    return errno_wrap(os.lstat, [e], [ENOENT], [ESTALE, EBUSY])
  File
&quot;/usr/lib/x86_64-linux-gnu/glusterfs/python/syncdaemon/syncdutils.py&quot;, line
546, in errno_wrap
    return call(*arg)
OSError: [Errno 22] Invalid argument:
&apos;.gfid/00000000-0000-0000-0000-000000000001&apos;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;This time, the gfid matches the Gluster root: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/opt/self&lt;/code&gt;. How may it fails over the empty root? I review the complete setup with the dev guys and we could not find any issues with it: it correspond to the simpliest version of the documentation, without any potential permission issue as I built the setup as a root to begin with. One of them proposed to use a &lt;a href=&quot;https://github.com/aravindavk/gluster-georep-tools&quot;&gt;python script&lt;/a&gt; that can do it all “&lt;em&gt;by magic&lt;/em&gt;”. The tool installation and usage is pretty straight forward … but yet: no luck.&lt;/p&gt;

&lt;p&gt;After several days of digging, building and wiping things, using different hardware and VMs, I asked a simple question: is the distribued setup meant to be the source of the geo-replication? Colleagial positive answer as it’s available since version 3.5, as we are at version 7.3 and none of them touch this part of the code, it &lt;em&gt;should&lt;/em&gt; work. Right. &lt;em&gt;Should&lt;/em&gt; is the key to it all. None of them tested this setup since the branch 4.x of GlusterFS. Or fair enough, I can build a new setup quite quickly: let’s move to a replicated setup as a source to the geo-replication… And &lt;em&gt;voilà&lt;/em&gt;! Now it works perfectly fine. There was some regression at least since the branch 5.x and no once noticed.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/images/facepalm.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/facepalm.jpg 480w,/assets/resized/800/facepalm.jpg 800w, /images/facepalm.jpg 1100w&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Not the most perfect solution but I can still achieve the same results my customer expect. Let’s move to a new setup:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Each country has its own cluster GlusterFS (the master being in France)&lt;/li&gt;
  &lt;li&gt;Each cluster has two servers in &lt;a href=&quot;https://docs.gluster.org/en/latest/Administrator%20Guide/Setting%20Up%20Volumes/#creating-replicated-volumes&quot;&gt;replicated mode&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Each server has 10 disks of 4 TB available for this storage, built in software Raid type 0, formatted in &lt;a href=&quot;https://access.redhat.com/articles/3129891#the-xfs-file-system-3&quot;&gt;XFS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Each node mounts the cluster locally with these parameters: `127.0.0.1:/storage-fr /opt/self glusterfs defaults,_netdev,noatime,log-level=ERROR,log-file=/var/log/gluster.log,direct-io-mode=no,fopen-keep-cache,negative-timeout=10,attribute-timeout=30,fetch-attempts=5,use-readdirp=no,backupvolfile-server=fs-fr-02 0 0&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img alt=&quot;GlusterFS Replicated Volume&quot; src=&quot;/images/glusterfs/replicated.png&quot; title=&quot;GlusterFS Replicated Volume&quot; srcset=&quot;/assets/resized/480/replicated.png 480w, /images/glusterfs/replicated.png 660w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;GlusterFS Replicated Volume&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ok we have a working setup, we can import the 11 TB. It will take quite some time. I run a simple rsync command in a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;screen&lt;/code&gt; without supervising it, and I’ll repeat the command over and over until the migration to be as up-to-date as possible prior to the M-Day:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;rsync &lt;span class=&quot;nt&quot;&gt;-PWavu&lt;/span&gt; /mnt/old/ /mnt/new/ &lt;span class=&quot;nt&quot;&gt;--delete-during&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--ignore-errors&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;So far so good, the M-Day is here and we decide to proceed with the migration. We update the mount points and benefit from the same options as previously. The customer is happy as the promised performance are reach in term of latency and throughput. Meaning, I’m happy and relieved.&lt;/p&gt;

&lt;h2 id=&quot;did-you-think-it-was-over&quot;&gt;Did you think it was over?&lt;/h2&gt;

&lt;p&gt;A couple hours later, his biggest customer in the US reach him out as they can’t access any files. Checking the logs, I can see a bunch of HTTP codes &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/200&quot;&gt;200&lt;/a&gt; and &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304&quot;&gt;304&lt;/a&gt;, so I wonder if the issue is a &lt;a href=&quot;https://en.wiktionary.org/wiki/PEBCAK&quot;&gt;pebcak&lt;/a&gt; or an intermediate cache issue somewhere else: I request a couple of problematic URL to test.&lt;/p&gt;

&lt;p&gt;Checking the provided URL on both FR and CA platforms, I succeed to reproduce the issue. Checking first the edge servers, they show that the files do not exists. As the platform data was up-to-date, it is pretty unclear. Comparing the same folder on both platforms, the CA instance appear … empty. But &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;df&lt;/code&gt; reports the same volume usage. I decide to just add a simple &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;-a&lt;/code&gt; param to my ls … and there they all are: the files exist, with the proper size, in the proper folder but instead of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;player.json&lt;/code&gt; (for instance), it’s named &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;.player.json.AbvgGY&lt;/code&gt;. Weird ? Not so much as this is the format of the temp files from an rsync. But why do GlusterFS do not fix them on the CA platform as the data and naming are valid on the FR side ? Simply because it relies on a simple checksum of the content, ignoring the name of the files (it expects to track the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rename()&lt;/code&gt; operation on the fly).&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;What&apos;s your name? Fuck you, that&apos;s my name.&quot; src=&quot;/images/thats-my-name.jpg&quot; title=&quot;What&apos;s your name? Fuck you, that&apos;s my name.&quot; srcset=&quot; /images/thats-my-name.jpg 267w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;What’s your name? Fuck you, that’s my name.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;At this stage, my guess is that something happened during the data importation leading to the wrong file being copied. Checking each cluster logs, status and details (including the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;heal info&lt;/code&gt;), it appears that a split-brain occured on the FR platform. Pretty logicial with only two nodes in it. Digging a bit more on the timestamps, logs, states, … At the end, a pretty race condition of multiple things:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;a pebcak (from me): I ran the rsync command with no specific param, leading to the creation of temp files ; I should have added &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--inplace&lt;/code&gt; argument to ensure using the proper name at once&lt;/li&gt;
  &lt;li&gt;network issues at the provider stage: kinda expected but it occured multiple times, and part during the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rename()&lt;/code&gt; operations&lt;/li&gt;
  &lt;li&gt;GlusterFS georep being too simple: why the heck don’t they include the name in the validation of the content?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, as long as it’s simple to heal the FR cluster (both split-brain and invalid data on one node), fixing the names on the CA cluster is not obvious. There is no GlusterFS mechanism to do so, and I can’t afford waiting for a week for the data to sync again if I decide to wipe the data. From here, I come with a new idea that is just an abuse of what GlusterFS is and how to fix a split-brain situation.&lt;/p&gt;

&lt;p&gt;I know that I have no more customer connections to the CA cluster as I moved them all to the FR cluster while solving the issue. To summarize the idea:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;GlusterFS considers that writing to a local brick (outside of GlusterFS) is an issue as it will lead to a split-brain&lt;/li&gt;
  &lt;li&gt;A split-brain can be resolve by reading locally the file via GlusterFS (mountpoint over 127.0.0.1) if there is no concurrent access to it&lt;/li&gt;
  &lt;li&gt;a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;rename()&lt;/code&gt; operation does not change the &lt;em&gt;gfid&lt;/em&gt;, it just update the underlying link GlusterFS use&lt;/li&gt;
  &lt;li&gt;We know the data is valid, just the name is an issue&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks to this, I write a quick script and run it over my folders:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-shell&quot; data-lang=&quot;shell&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/bin/bash&lt;/span&gt;

find /opt/brick/ &lt;span class=&quot;nt&quot;&gt;-name&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;.*&quot;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-type&lt;/span&gt; f | &lt;span class=&quot;k&quot;&gt;while &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;read &lt;/span&gt;f&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do
        &lt;/span&gt;rename &lt;span class=&quot;nt&quot;&gt;-f&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-d&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-v&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;s/\.([^.]*)\.([^.]*)\..*/$1.$2/&apos;&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$f&lt;/span&gt;
        &lt;span class=&quot;nv&quot;&gt;brick&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;dirname&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$f&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;
        &lt;span class=&quot;nv&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$brick&lt;/span&gt; | &lt;span class=&quot;nb&quot;&gt;sed&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;s/brick/self/g&apos;&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;
        &lt;span class=&quot;nv&quot;&gt;filename&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;basename&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$f&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;
        &lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$self&lt;/span&gt; | xargs &lt;span class=&quot;nb&quot;&gt;ls&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-la&lt;/span&gt; &amp;amp;&amp;gt; /dev/null
        &lt;span class=&quot;nv&quot;&gt;dest&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;dirname&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$brick&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;
        &lt;span class=&quot;nb&quot;&gt;sudo &lt;/span&gt;rsync &lt;span class=&quot;nt&quot;&gt;-a&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--inplace&lt;/span&gt;  &lt;span class=&quot;nv&quot;&gt;$brick&lt;/span&gt; root@fs-ca-02:&lt;span class=&quot;nv&quot;&gt;$dest&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--delete-after&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; /dev/null
&lt;span class=&quot;k&quot;&gt;done

&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;exit &lt;/span&gt;0&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Not the proper thing but efficient at least. It rename the file and ensure to solve the split-brain, before removing any invalid remaining dot file on the other node of the cluster. Neat.&lt;/p&gt;

&lt;h2 id=&quot;one-more-thing&quot;&gt;One more thing…&lt;/h2&gt;

&lt;p&gt;We should be fine. “&lt;em&gt;Should&lt;/em&gt;”. But we are not. New issue occurs on the edge servers as a full heal is running on the FR platform. Some of them expose corrupted files that are being healed, then cache those invalid files. As they are ok on both nodes of the cluster, the issue is clearly on the edge servers. To solve it, we just need to umount/mount the Gluster endpoint. Quick, efficient. We should re-do it once the full heal is achieved.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Besides all those issues with GlusterFS 7.3, I used to run a bunch of setup based on it … until the branch 4.x included. It used to be a bit more stable/reliable. I love the solution as it’s just a new layer, allowing you to build lots of things under it or around it. When it works, it just works. But when you have issues, the logs are not your best friend. I thing this is the main issue for a larger adoption of GlusterFS at this stage: the log entries and the documentation.&lt;/p&gt;

&lt;p&gt;Do you use GlusterFS to build your reliable storage or geo-replication services ? Do you struggle with it ? Feel free to ping me to discuss more about it.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Is the Coronovirus your opportunity ?</title>
      <link href="https://francois.aichelbaum.com/2020/03/03/coronavirus-your-opportunity" />
      <updated>2020-03-03T17:14:06+01:00</updated>
      <id>https://francois.aichelbaum.com/2020/03/03/coronavirus-your-opportunity</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-book&quot;&gt;&lt;/i&gt; A virus ? An opportunity?&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#dependency-on-asia&quot; id=&quot;markdown-toc-dependency-on-asia&quot;&gt;Dependency on Asia…&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#dependency-on-non-education-of-the-lower-classes&quot; id=&quot;markdown-toc-dependency-on-non-education-of-the-lower-classes&quot;&gt;Dependency on non-education of the lower classes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#what-about&quot; id=&quot;markdown-toc-what-about&quot;&gt;What about…&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#and-so&quot; id=&quot;markdown-toc-and-so&quot;&gt;And so?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#your-opportunity-&quot; id=&quot;markdown-toc-your-opportunity-&quot;&gt;Your opportunity ?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;While the world is watching as much news about the spread of Coronavirus as it is taking its temperature, business discussions are revolving around the global economic slowdown, forcing the various Central Banks and other financial organizations to meet to agree on “solutions”. What if the situation is actually your opportunity?&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Inspired by some questions from my contacts as a Freelancer&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;dependency-on-asia&quot;&gt;Dependency on Asia…&lt;/h2&gt;

&lt;p&gt;I don’t think there is any need to linger on the news channels to know/understand how much we are now dependent on Asia (China, Taiwan, Japan, …). Indeed, between processors and micro-controllers foundry, manufacturers of electronic equipment, the various low-cost supplies (who is talking about the FFP2 mask components from China?)… we have such a dependency that our economy is directly affected.&lt;/p&gt;

&lt;p&gt;As recently as yesterday, one of my former colleagues, who was retrained in the supply of fibre-optic networks, seemed to be somewhat concerned about the situation and the risk to his business if he could no longer supply himself with network hardware. This point is collegially taken up by various service providers whose equipment comes from Asia. If the virus continues to spread as it does, many other industries will come to a standstill, also in Europe or the Americas.&lt;/p&gt;

&lt;p&gt;Many economists are therefore pointing the finger at the notorious globalisation that would have pushed us to produce ever cheaper, and therefore ever further. To this, they oppose as a solution to relocate, closer to the places of consumption: the also famous, near-shoring. However, hadn’t we avoided it precisely for reasons of cost, (un)skills, and also for reasons of calculating risks and other opportunities by saying to ourselves “if things go wrong, we’ll find another cheap solution”. To that, I would reply that they do not learn from their own mistakes.&lt;/p&gt;

&lt;h2 id=&quot;dependency-on-non-education-of-the-lower-classes&quot;&gt;Dependency on non-education of the lower classes&lt;/h2&gt;

&lt;p&gt;Today, if we look at our countries, the sectors most at risk because of potential containment are the industrial sectors, with a large workforce at very low cost. The same sector that we were looking to replace with offshoring in Asia, and that we now want to upgrade (conceptually) with near-shoring.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Cutting your costs in half!&quot; src=&quot;/images/2020/03/outsourcing-is-bad.jpg&quot; title=&quot;Cutting your costs in half!&quot; srcset=&quot; /images/2020/03/outsourcing-is-bad.jpg 460w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Cutting your costs in half!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;However, it is this same workforce, unskilled, often poorly educated, that is at the origin of the various populist movements that we have seen emerge in recent years. This is the same class that we continue to feed with fears and no real solutions, other than to tell them that we are protecting them and that the risk is low, or that we should not panic.&lt;/p&gt;

&lt;p&gt;My professional deformation makes me ask myself a question: how is this answer a solution? It is relatively simple: it is not. Indeed, as with our dependency on Asia, we do not look at the original concern that motivated this or that action: we focus exclusively on factors of consequence. For us technically, this is our famous RCA.&lt;/p&gt;

&lt;p&gt;Why is this situation with the lower classes a concern and is related to their non-education? The answer can be broken down, mainly, as follows:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Non-education (for reasons of means, gentrification, …) reduces their ability to rise outside the pre-established framework.&lt;/li&gt;
  &lt;li&gt;non-education will push them towards jobs with little added value and where they themselves have little added value: a robot would do just as well…&lt;/li&gt;
  &lt;li&gt;this work forbids them any possibility of remote work.&lt;/li&gt;
  &lt;li&gt;the low remuneration they earn prevents them from having access to better information (we will come back to this later), but also to quality solutions in the field of health care, e.g., the use of the Internet.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img alt=&quot;The sewing room of A.T. Stewart&apos;s in 1875&quot; src=&quot;/images/2020/03/lower-classes.jpg&quot; title=&quot;The sewing room of A.T. Stewart&apos;s in 1875&quot; srcset=&quot;/assets/resized/480/lower-classes.jpg 480w,/assets/resized/800/lower-classes.jpg 800w,/assets/resized/1400/lower-classes.jpg 1400w, /images/2020/03/lower-classes.jpg 3238w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;The sewing room of A.T. Stewart’s in 1875&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;what-about&quot;&gt;What about…&lt;/h2&gt;

&lt;p&gt;I’ll grant you, it’s not all bad. Many companies already offer their employees remote working as a preventive measure. However, far too few are taking the plunge, for a variety of reasons:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;it’s too complicated (we’ll come back to this later).&lt;/li&gt;
  &lt;li&gt;you lose the human side (really?)&lt;/li&gt;
  &lt;li&gt;it’s because of insurance (do you think?)&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;or it could simply be because of a lack of trust&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img alt=&quot;Are you really working from home?&quot; src=&quot;/images/2020/03/remote-working-pool.jpg&quot; title=&quot;Are you really working from home?&quot; srcset=&quot;/assets/resized/480/remote-working-pool.jpg 480w,/assets/resized/800/remote-working-pool.jpg 800w, /images/2020/03/remote-working-pool.jpg 931w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Are you really working from home?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Of course, conditions and means have to be put in place, but as long as the job is suitable, nothing is unfeasible. This becomes all the more ironic when the companies refusing this teleworking are hosting companies or network operators.&lt;/p&gt;

&lt;p&gt;For the record, this reminds me of a situation at a major French telecom operator a few years ago. I was &lt;em&gt;normally&lt;/em&gt; working from the Paris HQ, to work on datacenter equipment, located in the suburbs. When, for practical as well as human reasons, I preferred to work from the said datacenter, I almost received a reprimand for not coming to the office and performing unofficial remote working. The datacenter belonged to the company and we had complete control over the video surveillance, so it was easy to check whether I was working on site or not.&lt;/p&gt;

&lt;p&gt;Here, we went from one extreme, with the factory, to the other, with a specific case of DevOps. But what about all the small convenience stores, for example? Of course, it’s clearly not that obvious. Still, for administrative matters, the means exist. More and more are getting available over internet: lately I registered myself for the next elections within minutes and received my voter card in the next couple of days.&lt;/p&gt;

&lt;p&gt;And what about our software? See the &lt;a href=&quot;https://www.cnet.com/news/huawei-ban-full-timeline-us-government-china-trump-ban-security-threat-google-p40/&quot;&gt;Android case with Chinese Huawei&lt;/a&gt;? Opensource might be your solution in most of the situation. In France, you can rely on the &lt;a href=&quot;https://www.april.org/&quot;&gt;April&lt;/a&gt; association (I’m also a member there) to assist you on those matters.&lt;/p&gt;

&lt;h2 id=&quot;and-so&quot;&gt;And so?&lt;/h2&gt;

&lt;p&gt;Careful, now. Here I only give possible angles for reflection. These are not absolute truths and I would not claim to be a perfect economist. It is only part of my strategic vision to respond to many concerns. These concerns, I will address them afterwards in the form of small questions. To do so, I would try some parallels with subjects that I master better, because they are related to my daily professional life.&lt;/p&gt;

&lt;h3 id=&quot;how-can-you-not-be-dependent-on-asia&quot;&gt;How can you not be dependent on Asia?&lt;/h3&gt;

&lt;p&gt;The real question here would be rather: how to stop being dependent? So, I’m cutting down on any preconceived notion that you have to be self-sufficient:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;It’s a heresy of our nature: mankind has always done great things because of its communities…&lt;/li&gt;
  &lt;li&gt;the self-sufficient seeks to reduce the definition of our essential needs in order to remedy them; this leads irremediably to a problem: each of us cannot have access to the whole range of resources essential to our own sufficiency and ends up depending on a third party… &lt;a href=&quot;https://www.youtube.com/channel/UC4E1gPBh0_eJ5oftWVsewZA&quot;&gt;or not&lt;/a&gt;…&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So yes, the real question is how to avoid (harmful) dependency. The point is precisely in one of the reasons that invalidates self-sufficiency: everyone needs his neighbour because we still don’t have access to the same resources. The solution is therefore to multiply the sources of supply for each type of resource. In our daily work, this is the basis for redundancy:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;We had a single server with a single disk…&lt;/li&gt;
  &lt;li&gt;we have multiplied the disks and power supplies of the PC to guarantee its operation&lt;/li&gt;
  &lt;li&gt;we have multiplied the servers to ensure the loss of a&lt;/li&gt;
  &lt;li&gt;we have multiplied the connectivity with the internet to ensure the loss of a link&lt;/li&gt;
  &lt;li&gt;we have multiplied the points of presence (datacenter) to guarantee the loss of a physical site&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In other areas, this redundancy is omnipresent: be it organizational, procedural, procurement related, … So why is it that in our economy and our business strategy, we persist in having only one supplier? This is the primary reason why offshoring and near-shoring alone is not the answer.&lt;/p&gt;

&lt;p&gt;So yes, you could tell me that multiplying supply contracts reduces the mass agreement with a single supplier, and therefore costs a little more in the end. But how much is your addiction costing you? Today, because of containment and non-supply, you’re in danger of going out of business. Tomorrow, your dependency will give your supplier the power to change the situation and put the knife to your throat. Of course, you will still be able to leave, but at what price. What guarantee do you have that other &lt;del&gt;vultures&lt;/del&gt; won’t try to kill you?&lt;/p&gt;

&lt;h3 id=&quot;is-near-shoring-a-good-thing-&quot;&gt;Is near-shoring a good thing ?&lt;/h3&gt;

&lt;p&gt;When we talk about near-shoring, we are talking mainly about local industrial production, not about small local shops. So yes, clearly, it does not solve everything, but it does bring some benefits:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;it provides work locally&lt;/li&gt;
  &lt;li&gt;it reduces the product transportation chain, and the pollution associated with it&lt;/li&gt;
  &lt;li&gt;in the case of foodstuffs, this could avoid certain phenomena where “local” products for exporters have reached astronomical prices for local populations (i.e. &lt;a href=&quot;https://www.theguardian.com/lifeandstyle/2017/aug/06/mexico-considers-importing-avocados-as-global-demand-drives-up-prices&quot;&gt;avocados&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;However, since we are talking about industry, we are generally talking about cheap, unskilled/educated labour. Reversing or intensifying near-shoring, therefore means intensifying the use of this labour force and thus favouring its deep rooting in this “cheap and unskilled” situation, generating a nice vicious circle. Are we talking about recent popular movements all over the world, including in France?&lt;/p&gt;

&lt;p&gt;I wonder, then, about one of the main promises of the industrial revolution, which we are continuing today, no matter what anyone says: automate what can be automated. I’m not referring to automating to increase production capacity. I am referring to automating to reduce repetitive human actions.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Whether it’s about home automation, robotic chains, Internet of Things, … so many ways and approaches precisely to rely on automation. For all that, it is not the disappearance of the human on these roles, but rather an obligation of evolution: even if we consider that &lt;a href=&quot;https://www.microsoft.com/en-us/research/publication/deepcoder-learning-write-programs/&quot;&gt;an AI would be able to generate code&lt;/a&gt;, it remains essential that a human remains the master of the code, i.e. the definition of the action, the design of the robot, … That there be assistance, yes, but not replacement. If you want one entrepreneur who talks about it…&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;In the same way, for corrective maintenance, improvements, problem analysis, … All this must require a &lt;em&gt;human factor&lt;/em&gt; intervener for the analysis. The answer to the previous problem of the situation of the lower classes is therefore to promote their education and access to information.&lt;/p&gt;

&lt;h3 id=&quot;remote-working-versus-daily-obligations-&quot;&gt;Remote working versus daily obligations ?&lt;/h3&gt;

&lt;p&gt;When working remotely or, even worse, in forced confinement, the population is exposed to isolation and supply complications. Moreover, recent fears in certain regions of France have motivated local populations to obtain mass supplies of non-perishable foodstuffs, thus producing a small shortage effect that could be managed quite differently.&lt;/p&gt;

&lt;p&gt;Massive remote-working at the level of a community (i.e. far beyond a company) has the effect of amplifying any sense of isolation, but also the fear that the media can convey.&lt;/p&gt;

&lt;p&gt;Here again, access to clear and accurate information helps to compensate for the latter. On the other hand, with regard to isolation, it is necessary to distinguish between different cases.&lt;/p&gt;

&lt;p&gt;In the case of isolation from local shops, online shops can set an example. Of course, this may be easier for the big players (supermarket chains, major e-commerce sites such as Amazon, …) but the small business can have so many possibilities:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;take advantage of marketplaces: after all, a good part of Amazon’s revenue on its site comes from its intermediary model; other sites also exist, more or less specialized (i.e. &lt;a href=&quot;https://www.etsy.com/&quot;&gt;Etsy&lt;/a&gt; for handicrafts)&lt;/li&gt;
  &lt;li&gt;use turnkey SaaS solutions: &lt;a href=&quot;https://shopify.com/&quot;&gt;Shopify&lt;/a&gt;, &lt;a href=&quot;https://www.wix.com/&quot;&gt;Wix&lt;/a&gt;, …&lt;/li&gt;
  &lt;li&gt;rely on local delivery services with food as a good example: UberEats, JustEat, Frichti, …&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And here I’m only mentioning a few 2.0 solutions. What about all the old-fashioned solutions that continue to exist as:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;mobile libraries&lt;/li&gt;
  &lt;li&gt;delivery of bread&lt;/li&gt;
  &lt;li&gt;pizza trucks&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And for your supermarket habits, solutions already exist:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;online supermarket with drive-in&lt;/li&gt;
  &lt;li&gt;online supermarket with delivery&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then, what about the doctor and any medical care? Online consultations are already a reality in France, officially supported by &lt;a href=&quot;https://www.ameli.fr/assure/remboursements/rembourse/telemedecine/teleconsultation&quot;&gt;social security&lt;/a&gt;. Of course, this only allows an initial filtering for benign concerns, but it can make medical practices and emergencies so much lighter, while at the same time compensating for some medical deserts. Likewise with meds e-commerce websites.&lt;/p&gt;

&lt;p&gt;Yet another case would be about the upbringing of our dear little blonde heads in all this? The subject is indeed a little more peculiar. Where MOOCs and other online course solutions may be suitable for the vast majority, it’s not so easy for young children.&lt;/p&gt;

&lt;p&gt;Mainly because some learning techniques, such as Montessori, show that it is through the effect of community mixed with mimicry and the desire to learn, that our children learn best. The other important point of these teachings is that this group of children must be restricted, contrary to the unwanted trend of “normal” education which wants to have 35 children per class.&lt;/p&gt;

&lt;p&gt;The application of these methods, in small groups, thus makes it possible to return to a very local aspect, even in villages with low density. This point is also related to the previous topic on the middle classes. It is one of the possible ways of providing access to better education. Before going on to specializations that can be done, among others, through the MOOCs.&lt;/p&gt;

&lt;p&gt;Finally, what about the human side, then? I’d say you have free will to choose the best way to maintain your relationships. I would cite for example a solution to keep in touch with your elderly relatives: &lt;a href=&quot;https://www.sunday.love/&quot;&gt;Sunday&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;your-opportunity-&quot;&gt;Your opportunity ?&lt;/h2&gt;

&lt;p&gt;How is this an opportunity for you? Quite simply because it is up to everyone to step in and do what they can to make it happen. There is a range of solutions for every question you may have. This can potentially improve your living environment and even the famous work-life balance.&lt;/p&gt;

&lt;p&gt;Also, containment in China, for example, certainly has an impact on their economy, and by rebound, on ours, but also and above all on pollution and therefore ecology.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;Satellite imagery shows a drop in air pollution over central and eastern China following a government imposed coronavirus quarantine. (NASA Earth Observatory/Joshua Stevens)&quot; src=&quot;/images/2020/03/coronavirus-china-pollution.jpg&quot; title=&quot;Satellite imagery shows a drop in air pollution over central and eastern China following a government imposed coronavirus quarantine. (NASA Earth Observatory/Joshua Stevens)&quot; srcset=&quot;/assets/resized/480/coronavirus-china-pollution.jpg 480w,/assets/resized/800/coronavirus-china-pollution.jpg 800w,/assets/resized/1400/coronavirus-china-pollution.jpg 1400w, /images/2020/03/coronavirus-china-pollution.jpg 1600w&quot; /&gt;
&lt;br /&gt;&lt;em class=&quot;img-legend&quot;&gt;Satellite imagery shows a drop in air pollution over central and eastern China following a government imposed coronavirus quarantine. (NASA Earth Observatory/Joshua Stevens)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Fighting against containment through old and new means; promoting teleworking, while trusting in the professionalism of employees; improving education through new methods; … are all answers for a brighter future.&lt;/p&gt;

&lt;p&gt;What more do you think you could do today to turn this situation into an opportunity? Feel free to contact me to discuss it. I surely have some solutions to submit to you for your connected issues.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Agile and Infrastructure</title>
      <link href="https://francois.aichelbaum.com/2020/02/24/agile-and-infrastructure" />
      <updated>2020-02-24T09:11:25+01:00</updated>
      <id>https://francois.aichelbaum.com/2020/02/24/agile-and-infrastructure</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-book&quot;&gt;&lt;/i&gt; What?&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#agile-&quot; id=&quot;markdown-toc-agile-&quot;&gt;Agile ?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#infrastructure-&quot; id=&quot;markdown-toc-infrastructure-&quot;&gt;Infrastructure ?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#and-so-&quot; id=&quot;markdown-toc-and-so-&quot;&gt;And so ?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#making-the-infrastructure-agile&quot; id=&quot;markdown-toc-making-the-infrastructure-agile&quot;&gt;Making the infrastructure agile&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;Recently, I had a rather interesting discussion with some of my clients over Slack: Agile processes applied to Infrastructure. At the beginning, we did not reach a common ground, but we quickly realized that the problem was not our approaches, but our vocabulary. Agile? Infrastructure? Once we agreed on these terms, the discussion took on a completely different form. Here is a short summary.&lt;/p&gt;

&lt;h2 id=&quot;agile-&quot;&gt;Agile ?&lt;/h2&gt;

&lt;p&gt;Often, when we talk about Agile, we talk about agility. It is assumed that it is about being flexible in our actions and reactions. It is mainly a mix between a mindset, a culture, an approach and above all a paradigm.&lt;/p&gt;

&lt;p&gt;Defined in the &lt;a href=&quot;https://agilemanifesto.org/&quot;&gt;Agile Manifesto&lt;/a&gt;, this approach to project management is the opposite of traditional approaches such as the V Cycle or cascades. The short version is that these traditional methods lead irremediably to a tunnel effect, which can have disastrous effects on both the project and the client relationship. Conversely, the Agile approach proposes to reduce this tunnel effect as much as possible in order to allow better transparency, through an iterative and incremental process.&lt;/p&gt;

&lt;p&gt;So the key elements are there: &lt;strong&gt;transparency&lt;/strong&gt; and &lt;strong&gt;iteration&lt;/strong&gt;. From this, many other concepts will derive, related to the different methods but also to the contexts of applications. Many sites and books will describe them much better than a few lines on this blog.&lt;/p&gt;

&lt;h2 id=&quot;infrastructure-&quot;&gt;Infrastructure ?&lt;/h2&gt;

&lt;p&gt;An infrastructure is a set of interconnected elements that provide a framework to support the entire structure. As such, it is not just the network or system, but a collection of these elements and many more, to be considered in context. In the case of a team, we will have to talk about, for example, NetOps, DevOps, SRE, Architects, Infrastructure Engineers, … All working on the same subject, with different angles, and therefore different needs and means: their daily tasks, depending on their position and the context, will range from pure Run, to R&amp;amp;D applied to infrastructure.&lt;/p&gt;

&lt;h2 id=&quot;and-so-&quot;&gt;And so ?&lt;/h2&gt;

&lt;p&gt;Okay, so let’s go back to our original discussion. Why talk about Agile and Infrastructure?  We had different points of view together (I arrived during the discussion) and the central point was about the ability of “Infrastructure” teams to work in an Agile way.&lt;/p&gt;

&lt;p&gt;One of the participants, who manages an operational team, therefore pure Run, did not see how Agile could be applied to the Run. The other, an R&amp;amp;D manager, was suffering from blockages from an Infrastructure Engineer who had joined his team after years of working on Run. The last one was managing a team that did both R&amp;amp;D and Run, and especially managing a rather junior DevOps that he was happy to model as he went along.&lt;/p&gt;

&lt;p&gt;Depending on the interlocutor, it was more or less possible to apply the Agile approach to Infrastructure and that if someone couldn’t do it, it was simply their fault. Rather abrupt.&lt;/p&gt;

&lt;p&gt;In fact, we must remember that in the professional world, it is our experience that models us. So you have to look at the current tasks to be performed but also at the past tasks of the people who will be working there. A person who has never worked in project mode will potentially find it more difficult to integrate into a project mode than someone who has been in it since the beginning of his or her career. And in Infrastructure, there are a lot of opportunities to work in project mode, but also a lot not to.&lt;/p&gt;

&lt;h2 id=&quot;making-the-infrastructure-agile&quot;&gt;Making the infrastructure agile&lt;/h2&gt;

&lt;p&gt;So the real point is there: apply the Agile approach only when necessary, on the project, with people who have an approach to the subjects compatible with the two key elements.&lt;/p&gt;

&lt;p&gt;Indeed, we could try to apply Agile methods to the Run, but this will not concern the core business rather than more related topics (documentation, debug tests, …). In the same way, a person whose experience has taught him how to look directly for the right final solution, even though he will spend a long and unmeasured amount of time on it, will not easily be able to work in incremental iterations, more time-limited.&lt;/p&gt;

&lt;p&gt;This is the point that I sometimes have fun stygmatizing with my clients to trigger reflection. I then caricature by talking about the American approach of a startup, ready to do anything and question itself the next day with a complete turnaround; versus the French approach, much more posed, and which will only deliver once perfection is reached.&lt;/p&gt;

&lt;p&gt;So it comes down to the fact that we can work in project mode, according to the Agile approach, with teams that are used to working iteratively and incrementally. The basics. In reality, therefore, we can come up against other problems:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;a non-compatible mindset&lt;/li&gt;
  &lt;li&gt;a lack of method or disagreement on method&lt;/li&gt;
  &lt;li&gt;an inability to sequence work to make it iterative and incremental&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On the first two points, an Agile coach is the best way to find an answer. Indeed, the Agile coach will make sure that both the mindset of the team, but also the coaching structure allows this work in Agile. In the same way, he will often overflow on the means made available. He will then continue the work on the method, because in the Agile approach, each implementation comes with its own method and its own framework that will serve as a basis for its integration. The Agile coach will accompany you on the choice of the right approach and the right method, which will help to remove barriers.&lt;/p&gt;

&lt;p&gt;On the difficulty of sequencing the work on the part of one of your collaborators, the work will be more on your side as a mentor of your team to accompany him or her. Although this long work requires an enormous capacity for hindsight on the part of the collaborator, who must change his way of doing things, it is your responsibility to place yourself as a benevolent coach and to find the right words to get your collaborator to put himself in the best possible frame of mind. There is always a risk of complete blockage, because it is still human, but it is up to you to persist and remain … agile. Act, Fail/Success, Iterate.&lt;/p&gt;

&lt;p&gt;Why is it interesting to work with the Agile approach on Infrastructure?&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Deploy faster more often, which requires standardizing your work (this is one of the bases of the DevOps mentality)&lt;/li&gt;
  &lt;li&gt;Gain in flexibility: whereas in the past, the infrastructure was relatively fixed in the long term, here the actions are only valid for a short period (before being called into question).&lt;/li&gt;
  &lt;li&gt;Continuous feedback: the basis of the Agile approach, feedback from users/customers/employees comes in all the time, during the course of the project.&lt;/li&gt;
  &lt;li&gt;Continuous improvement: because of the above points, you have gained the opportunity to improve continuously, with each new iteration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the end, you will reduce the risk of having to call into question the entire infrastructure put in place, and by extension, the major and very costly revamps that we are familiar with.&lt;/p&gt;

&lt;p&gt;And you, do you think it is possible to work on Infrastructure topics using an Agile approach? Feel free to contact me to discuss it.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Only 3 types of CTO?</title>
      <link href="https://francois.aichelbaum.com/2020/01/15/only-3-types-of-cto" />
      <updated>2020-01-15T16:17:17+01:00</updated>
      <id>https://francois.aichelbaum.com/2020/01/15/only-3-types-of-cto</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-book&quot;&gt;&lt;/i&gt; What?&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#the-hacker&quot; id=&quot;markdown-toc-the-hacker&quot;&gt;The Hacker&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-stabilizer&quot; id=&quot;markdown-toc-the-stabilizer&quot;&gt;The Stabilizer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#the-industrializer&quot; id=&quot;markdown-toc-the-industrializer&quot;&gt;The Industrializer&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#so&quot; id=&quot;markdown-toc-so&quot;&gt;So?&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#vp-engineering&quot; id=&quot;markdown-toc-vp-engineering&quot;&gt;VP Engineering&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#cio&quot; id=&quot;markdown-toc-cio&quot;&gt;CIO&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#cto&quot; id=&quot;markdown-toc-cto&quot;&gt;CTO&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;
&lt;p&gt;For a few months now, there have been a lot of articles explaining that there are 3 types of CTO: the hacker, the stabilizer, and the industrializer. Although accurate in substance, these articles are incomplete when we go into practice. But why is that?&lt;/p&gt;

&lt;p&gt;Let’s start by going over these three types again.&lt;/p&gt;

&lt;h2 id=&quot;the-hacker&quot;&gt;The Hacker&lt;/h2&gt;

&lt;p&gt;You have just created your startup and you are looking to deliver your product as soon as possible with your famous MVP that will allow you to make yourself known and really launch your business. To do so, your company relies on a very limited number of people, whose role boundaries are relatively fluid. This allows you to gain flexibility and to do as much as possible with as little as possible. This schema also applies to your technical referent: once architect, one “hands-on”, he will go through phases to tackle technical related matters. Your referent finds himself having to touch everything, but never 100%, since you can’t know everything, or do everything alone. Doesn’t the saying go “to go fast, go alone; to go far, go together”?
This profile is therefore all-rounder, passionate more than experienced: it will allow you to go fast, even to take shortcuts, but it will work … for the MVP.
The risk for this type of profile is to persist too long in this type of role. Indeed, he will certainly gain experience, but his expertise will be to always want to do everything, alone, and quickly. It will then become difficult for him to delegate or even manage.
To the extreme, he will develop an aura of saviour/messiah within your company, and will monopolise speaking time (and reflection time) with your tacit and silent agreement.&lt;/p&gt;

&lt;h2 id=&quot;the-stabilizer&quot;&gt;The Stabilizer&lt;/h2&gt;

&lt;p&gt;Your MVP was launched a few months ago now, your business model is being refined, after a few turnarounds, and your situation is motivating the company and the product to grow. So it’s time to hire and to assess the situation. This step is often perceived as painful or risky, because it involves questioning everything that has been done so far. Why painful? Because no one is “wired” in the same way and, because of the personal commitment required to create an MVP, some will take these questions as a challenge to themselves. However, in order to stabilize the product, and to prepare its scalability, i.e. your ability to accelerate your business development and attack new markets, it is essential to know your strong points, on which you will rely, and your weak points, which you will correct. It is therefore necessary to treat everything in the same way and manage to motivate and structure your teams accordingly.
On technical subjects, this will naturally be the role of the CTO. Structuring the team, from a human and managerial point of view, implementing adapted processes and methodologies, he will gradually nose up to become the orchestrator of the technique. Where the hacker was managing alone, the stabilizer will have to orchestrate to make sure to find the right balance between new features, patches, and stabilizations, these last two subjects having strong impacts on the morale of the teams, and thus the quality of their rendering.
The risk of this type of profile is linked to the ambivalence between the technical aspect, since the team remains relatively small, and the time needed to structure the whole. In case of imbalance, he would then fall into one of the other two profiles, which would not be in adequacy with your company, and thus your need.&lt;/p&gt;

&lt;h2 id=&quot;the-industrializer&quot;&gt;The Industrializer&lt;/h2&gt;

&lt;p&gt;Now that your company has made a place for itself on the market and is well known, your work continues: it is time to become the absolute reference and to project yourself to several versions/iterations of your product in advance, the famous long term vision. This is the moment when your company sets up its ComEx, when the teams are counted in several dozen and you want/need to add a 0 to the number of employees to realize your plan. Your CTO must then let go, officially at least, of the technique to focus on the strategy and how to get there. You are entering an era where the long-term technical orientation will merge with the vision of future technological developments mixed with the evolution of your market. Everything has to be formalized; the roadmap is then done over several years, where it was defined over a few months; the teams become specialized, needing to improve exchanges between teams and individuals, through human management, processes, … any useful tool for these purposes. Your CTO is therefore at work on strategy, competitive analysis, an in-depth work of your company to find the levers necessary for your commercial success.
The risk of this profile is to be too disconnected from technology, to lose touch with technological advances and to be drowned in hypes. The direct consequence would be that the technical teams would no longer have faith in him, with all that this can have as an impact on their productivity but also on the pure realization of his strategy.&lt;/p&gt;

&lt;h2 id=&quot;so&quot;&gt;So?&lt;/h2&gt;

&lt;p&gt;Since these definitions are relatively fair, clear and, on paper, non-exclusive, where is the lack? These various articles have been written for “pure players”, i.e. editors of solutions that will be exclusively usable on the web, and where the role of CTO is relatively unique, and that it will be the same person who will manage your internal and external issues. This is a simple echo of a growing trend where some companies are no longer able to distinguish the roles and missions of each, with the direct consequence of having several CTOs in the same structure. I have had the opportunity to note this point several times recently with, for example, an agency that recruits a CTO for one of its clients, and who will have to work in pairs with the CTO in place, each sharing specific but related subjects. But then, what are these missions that require different titles?&lt;/p&gt;

&lt;p&gt;The list is long but we could mention the management of your IS, especially if your company starts to develop on several different locations, the management of your R&amp;amp;D, especially with the diversification of technologies, the operational with the support of the customer, the product and its roadmap definition, … Of course, the boundaries are not watertight between these topics, especially depending on the size of your company, but for all that, titles exist to clearly mark the distinction: CTO, CIO, VP Engineering, VP Operations, VP Products, … At some point, your CTO will assume all these roles (the Hacker in this case), but the more you move towards a stabilizer, even an ndustrializer profile, the more he will need support. Depending on his profile, he will refer you to one or the other of these roles as a complement. So who has to do what in this story? Let’s focus on the 3 most technical roles: CTO, CIO and VP Engineering. As much as the difference may seem obvious between the last two, their proximity to the first one adds a significant blur. So let’s dig into their missions&lt;/p&gt;

&lt;h2 id=&quot;vp-engineering&quot;&gt;VP Engineering&lt;/h2&gt;

&lt;p&gt;Simply put, he’s your R&amp;amp;D boss. As a former engineer who rose through the ranks, passing through lead developer and architect roles, he has also developed an ability to manage people. As an internal technical referent in your R&amp;amp;D, he is the person your company relies on to transform the defined strategy into a real product.&lt;/p&gt;

&lt;h2 id=&quot;cio&quot;&gt;CIO&lt;/h2&gt;

&lt;p&gt;Do you have an internal IT or infrastructure to manage? The IOC is your boss on these matters. He is the face that everyone in your company knows when it comes to IT and related topics: security, cloud, automation, … At the crossroads of all the other professions in your company, even the non-technical ones, he will make sure that your IT teams guarantee the quality of service necessary for the proper functioning of your product and your company itself. Because of its positioning, it will often have a strong impact on your processes and methodology.&lt;/p&gt;

&lt;h2 id=&quot;cto&quot;&gt;CTO&lt;/h2&gt;

&lt;p&gt;This is the technical face of your company. As a technical referent for the whole company, with priority given to business issues, it must stay up to date technically, so that it can respond to your customers and your board, while guiding product development.
How is he not your VP Engineering? Because he has to be able to keep his hacker and hacking side to test and therefore stay up to date, where your VP Engineering has to move forward in accordance with your roadmap and little opportunity to play.
How is he not your CIO? I will repeat the discussion I had with the CEO of a large transport group: what is your job and therefore on which technique will your CTO intervene?&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Are you struggling with Nginx rewrite rules and $ ?</title>
      <link href="https://francois.aichelbaum.com/2018/05/18/struggling-with" />
      <updated>2018-05-18T15:37:57+02:00</updated>
      <id>https://francois.aichelbaum.com/2018/05/18/struggling-with</id>
      <content type="html">
&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-nginx&quot; data-lang=&quot;nginx&quot;&gt;&lt;span class=&quot;k&quot;&gt;rewrite&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;^/that-s-my-original-uri/(with-my-folder)/(.*)&lt;/span&gt;$ &lt;span class=&quot;n&quot;&gt;/that-s-my-destination&lt;/span&gt;$&lt;span class=&quot;nv&quot;&gt;$1&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$2&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;last&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;See the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$$1&lt;/code&gt; ?&lt;/p&gt;

&lt;p&gt;Are you trying to use a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$&lt;/code&gt; in the destination of your rewrite rule ? Then you may have try escaping it, and found out you can only do it via some LUA scripting you might not want or a third party plugin that you can’t use for X or Y reason. The constant result of this situation ?&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;nginx: [emerg] invalid variable name in /etc/nginx/sites-enabled/XXXXXXXX:YYY&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Ok so what’s next ? The idea would be to host the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$&lt;/code&gt; inside a variable. Sadly, the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;set&lt;/code&gt; argument does not allow this and will reject you with the same error. The solution would be to use &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;geo&lt;/code&gt; in your nginx.conf and replace use the key:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-nginx&quot; data-lang=&quot;nginx&quot;&gt;&lt;span class=&quot;k&quot;&gt;geo&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$dollar&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
	&lt;span class=&quot;kn&quot;&gt;default&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt;$&lt;span class=&quot;s&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;and then&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-nginx&quot; data-lang=&quot;nginx&quot;&gt;&lt;span class=&quot;k&quot;&gt;rewrite&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;^/that-s-my-original-uri/(with-my-folder)/(.*)&lt;/span&gt;$ &lt;span class=&quot;n&quot;&gt;/that-s-my-destination&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$dollar$1&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;/&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$2&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;last&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;And, &lt;em&gt;voila&lt;/em&gt; !&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Chrome, Aw Snap and HTTP2</title>
      <link href="https://francois.aichelbaum.com/2016/06/15/chrome-snap-and-http2" />
      <updated>2016-06-15T09:47:57+02:00</updated>
      <id>https://francois.aichelbaum.com/2016/06/15/chrome-snap-and-http2</id>
      <content type="html">&lt;p&gt;On a global purpose of optimisation of my website, I lately added some features and enhanced the HTTP2 delivery of the website. The performance restults are instantaneous. But, as there is always a but, it generated some random issues … with Google Chrome (and it’s opensource pendant, Chromium).&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/screenshot-aw-snap-error-chrome.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/screenshot-aw-snap-error-chrome.jpg 480w, /assets/screenshot-aw-snap-error-chrome.jpg 729w&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The consequence of the bug was a almost random “Aw, Snap !” page : every time I clicked on an internal link or upon one load out of two. And only with Chrome and Chromium. First asumption as it only occurs with a specific browser, it was a code issue : either HTML or, more probably, JS. I started debugging the code with no luck about this one. I decided to create two very simple HTML page with just a basic HTML link towards each other. Again, no luck.&lt;/p&gt;

&lt;p&gt;Then, I guessed : when I get the “Aw, Snap” page, the DevTools in Chrome report just nothing besides the SSL details. No URI called. No JS console. Nothing else. So, I decided to debug the SSL part. A review thanks to &lt;a href=&quot;https://www.ssllabs.com/ssltest/analyze.html&quot;&gt;Qualys&lt;/a&gt; reported no issue and even granted an A score to the website (via the CDN and via the origin also). As the late changes were about HTTP2, I decided to test the HTTP2. First, I disabled it from the CDN side. But as the page was in cache, no change resulted from this. Then I debugged the HTTP2 using several tools as &lt;a href=&quot;https://github.com/bradfitz/http2/tree/master/h2i&quot;&gt;h2i&lt;/a&gt; or &lt;a href=&quot;https://github.com/fstab/h2c&quot;&gt;h2c&lt;/a&gt;. Again, every thing when fine.&lt;/p&gt;

&lt;p&gt;So, I decided to go through the web (GI&lt;em&gt;M&lt;/em&gt;F). I found pages about the NPN not being supported any more &lt;a href=&quot;https://ma.ttias.be/chrome-drops-npn-support-for-http2-alpn-only/&quot;&gt;by Google&lt;/a&gt;, so I decided to update my nginx, by recompiling it against openssl 1.0.2 instead of the basic openssl 1.0.0 branch as it is from the various defaut packages ; this enabled the ALPN but did not solve my case.
Then, I review my whole nginx config, to check about all the HTTP2 settings. Testing one by one. And … I found it :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;Link&lt;/span&gt;: &amp;lt;/&lt;span class=&quot;n&quot;&gt;images&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;banner&lt;/span&gt;-&lt;span class=&quot;m&quot;&gt;1024&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x240&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;jpg&lt;/span&gt;&amp;gt;; &lt;span class=&quot;n&quot;&gt;rel&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;preload&lt;/span&gt;; &lt;span class=&quot;n&quot;&gt;as&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;image&lt;/span&gt; &lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;And there we are : removing this HTTP header from the delivery of HTML pages solved it all. Now this header might not seems harmful. This is one of the new Headers from HTTP2 : it enables the Server Push, meaning, once the HTTP2 connection is opened, the server will push this connect, to preload the image at the same time it push the HTML code. Great for performance optimisations. But, it has a but …&lt;/p&gt;

&lt;p&gt;Even if HTTP2 is a new standard, it still relies on a bunch of draft for the different features and headers. The one for the preload of content thanks to Server Push, is still &lt;a href=&quot;https://www.w3.org/TR/preload/&quot;&gt;in an early stage&lt;/a&gt;. Also, in nginx, this requires to be &lt;a href=&quot;https://www.nginx.com/blog/http2-r7/&quot;&gt;set by the upstream&lt;/a&gt;, meaning your application server behing nginx. And this was my error: as I publish HTML only (thanks to &lt;a href=&quot;http://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt;), I don’t have any upstream to nginx. So when I was working on the HTTP2 optimisations, I set the Server Push header directly in the nginx configuration, thanks to add_header. For sure, the header was present and reported no error on the debug tools and most of the browsers. But this leveraged a race condition in Chrome.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>The Tower of Joy [scene] - Game of Thrones - Ennio Morricone cover</title>
      <link href="https://francois.aichelbaum.com/2016/05/20/tower-of-joy" />
      <updated>2016-05-20T08:47:57+02:00</updated>
      <id>https://francois.aichelbaum.com/2016/05/20/tower-of-joy</id>
      <content type="html">&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;(Just splendid …)&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>The lie we live</title>
      <link href="https://francois.aichelbaum.com/2016/05/06/the-lie-we-live" />
      <updated>2016-05-06T12:37:57+02:00</updated>
      <id>https://francois.aichelbaum.com/2016/05/06/the-lie-we-live</id>
      <content type="html">&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>Liquid error - was not properly terminated with regexp</title>
      <link href="https://francois.aichelbaum.com/2016/04/28/liquid-error-was-not-properly-terminated-with-regexp" />
      <updated>2016-04-28T22:37:57+02:00</updated>
      <id>https://francois.aichelbaum.com/2016/04/28/liquid-error-was-not-properly-terminated-with-regexp</id>
      <content type="html">&lt;p&gt;A few weeks ago, I decided to move from Wordpress to a more flat blog engine. After some test, I chose to use Jekyll. I may write a blogpost about this and the related motivation but this is not the actual topic.&lt;/p&gt;

&lt;p&gt;During the setup, I needed to implement a search engine. As Jekyll is a flat blog engine, I can’t really implement any dynamic solution. My solution was to implement a lunr.js on the website. For it to operate, it requires a big json file with all the text to search.&lt;/p&gt;

&lt;p&gt;The json file is generated during the build stage. Due to this, it will parse the other md files to generate the content. This means that the template file of the json will remplace the Liquid variables with some other Markdown but more especially Liquid variables and statements.&lt;/p&gt;

&lt;p&gt;This lead to a classic error :&lt;/p&gt;

&lt;p&gt;{% highlight console %}
was not properly terminated with regexp: /}}/ in search_data.json
{% endhighlight %}&lt;/p&gt;

&lt;p&gt;I skip the first part of the error as it’s not relevant. I longly googled on this. But, most of the page foscused on a variable containing Liquid statement that would have be published as this. This is not valid in my case as I want to parse the embedded content and use some other Liquid filters as I would do with :&lt;/p&gt;

&lt;p&gt;{% endhighlight %}
{{ content | replace: ‘{foo}’, ‘bar’ }}
{% endhighlight %}&lt;/p&gt;

&lt;p&gt;So, it returned the error. Logic as Liquid will parse this statement, replace ‘content’ with it’s value, another Liquid statement, also finishing with }}. I tried several solutions to escape this with no luck.&lt;/p&gt;

&lt;p&gt;I ended with a magical and even more obvious solution : ‘markdownify’&lt;/p&gt;

&lt;p&gt;{% endhighlight %}
{{ content | markdownify | replace: ‘{foo}’, ‘bar’ }}
{% endhighlight %}&lt;/p&gt;

&lt;p&gt;This solved the case at once !&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Lenovo T450 Wireless AC 7265 not working on Linux</title>
      <link href="https://francois.aichelbaum.com/2016/03/16/lenovo-t450-wireless-ac-7265-not-working-linux" />
      <updated>2016-03-16T10:37:57+01:00</updated>
      <id>https://francois.aichelbaum.com/2016/03/16/lenovo-t450-wireless-ac-7265-not-working-linux</id>
      <content type="html">&lt;p&gt;Lately I discovered an issue with my WiFi adapter on my professional laptop (a Lenovo T450) : it was not working. Pretty inconvenient. After some digging, I tested and had to adapt part of things I found on Google.
So, to begging with, the symptoms :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;no more wireless adapter in my NetworkManager or any other tools, including ifconfig&lt;/li&gt;
  &lt;li&gt;dmesg reports issues loading the iwlwifi firmware&amp;lt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The dmesg output looks like :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;[ 4.237444] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-12.ucode failed with error -2
[ 4.237466] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-11.ucode failed with error -2
[ 4.237479] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-10.ucode failed with error -2
[ 4.237482] iwlwifi 0000:03:00.0: request for firmware file &apos;iwlwifi-7265D-10.ucode&apos; failed.
[ 4.237493] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-9.ucode failed with error -2
[ 4.237495] iwlwifi 0000:03:00.0: request for firmware file &apos;iwlwifi-7265D-9.ucode&apos; failed.
[ 4.237497] iwlwifi 0000:03:00.0: no suitable firmware found!&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;I tried to download the official firmware from Intel, namely iwlwifi-7265-ucode-25.30.14.0, with no luck. Though, I decided to keep the ucode files from this archive in my /lib/firmware/.
Note that, depending on your distro, this previous step might be enough. To check :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;update-initramfs -u
reboot&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Then, further dig pointed some issues with the iwlwifi package not handling properly this version of the AC 7265. From lspci :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;m&quot;&gt;03&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;00&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Network&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;controller&lt;/span&gt; [&lt;span class=&quot;m&quot;&gt;0280&lt;/span&gt;]: &lt;span class=&quot;n&quot;&gt;Intel&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Corporation&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Wireless&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;7265&lt;/span&gt; [&lt;span class=&quot;m&quot;&gt;8086&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;095&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;b&lt;/span&gt;] (&lt;span class=&quot;n&quot;&gt;rev&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;59&lt;/span&gt;)
 &lt;span class=&quot;n&quot;&gt;Subsystem&lt;/span&gt;: &lt;span class=&quot;n&quot;&gt;Intel&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Corporation&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Dual&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Band&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Wireless&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;AC&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;7265&lt;/span&gt; [&lt;span class=&quot;m&quot;&gt;8086&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;5210&lt;/span&gt;]&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Here, the main points are the main ID 095b and the Subsystem ID 5210.
To solve this, let’s recompile the backport package of iwlwifi with a tiny difference (the &lt;em&gt;sed&lt;/em&gt; line is to adapt with your IDs) :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;gp&quot;&gt;sudo apt-get install build-essential linux-headers-$&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;uname&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;wget https://www.dropbox.com/s/gyuvdlhzx5ho277/backports-20150731.tar.gz
tar -zxvf backports-20150731.tar.gz
cd backports-20150731/
sed -i &apos;s/IWL_PCI_DEVICE(0x095B, 0x9200, iwl7265_2ac_cfg)/IWL_PCI_DEVICE(0x095B, 0x5212, iwl7265_2ac_cfg)/&apos; drivers/net/wireless/iwlwifi/pcie/drv.c 
make defconfig-iwlwifi
make
sudo make install
update-initramfs -u
reboot&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Now, if you check your dmesg, you’ll see :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;[ 3.950804] iwlwifi 0000:03:00.0: Direct firmware load for iwlwifi-7265D-15.ucode failed with error -2
[ 3.952513] audit: type=1400 audit(1458119598.627:5): apparmor=&quot;STATUS&quot; operation=&quot;profile_load&quot; profile=&quot;unconfined&quot; name=&quot;/sbin/dhclient&quot; pid=657 comm=&quot;apparmor_parser&quot;
[ 3.952521] audit: type=1400 audit(1458119598.627:6): apparmor=&quot;STATUS&quot; operation=&quot;profile_load&quot; profile=&quot;unconfined&quot; name=&quot;/usr/lib/NetworkManager/nm-dhcp-client.action&quot; pid=657 comm=&quot;apparmor_parser&quot;
[ 3.952525] audit: type=1400 audit(1458119598.627:7): apparmor=&quot;STATUS&quot; operation=&quot;profile_load&quot; profile=&quot;unconfined&quot; name=&quot;/usr/lib/connman/scripts/dhclient-script&quot; pid=657 comm=&quot;apparmor_parser&quot;
[ 3.953091] audit: type=1400 audit(1458119598.627:8): apparmor=&quot;STATUS&quot; operation=&quot;profile_replace&quot; profile=&quot;unconfined&quot; name=&quot;/usr/lib/NetworkManager/nm-dhcp-client.action&quot; pid=657 comm=&quot;apparmor_parser&quot;
[ 3.953100] audit: type=1400 audit(1458119598.627:9): apparmor=&quot;STATUS&quot; operation=&quot;profile_replace&quot; profile=&quot;unconfined&quot; name=&quot;/usr/lib/connman/scripts/dhclient-script&quot; pid=657 comm=&quot;apparmor_parser&quot;
[ 3.953362] audit: type=1400 audit(1458119598.627:10): apparmor=&quot;STATUS&quot; operation=&quot;profile_replace&quot; profile=&quot;unconfined&quot; name=&quot;/usr/lib/connman/scripts/dhclient-script&quot; pid=657 comm=&quot;apparmor_parser&quot;
[ 3.955605] iwlwifi 0000:03:00.0: loaded firmware version 25.30.14.0 op_mode iwlmvm
[ 3.975336] input: ThinkPad Extra Buttons as /devices/platform/thinkpad_acpi/input/input7
[ 4.001495] iwlwifi 0000:03:00.0: Detected Intel(R) Dual Band Wireless AC 7265, REV=0x210
[ 4.001843] iwlwifi 0000:03:00.0: L1 Enabled - LTR Enabled
[ 4.002290] iwlwifi 0000:03:00.0: L1 Enabled - LTR Enabled&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;And, &lt;em&gt;voilà&lt;/em&gt;, your wireless adapter is back online !
&lt;strong&gt;**NB**&lt;/strong&gt;: you’ll have to redo these steps after every kernel update, except if the iwlwifi module got fixed.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Share a multifunctional printer (with your Synology)</title>
      <link href="https://francois.aichelbaum.com/2016/03/10/share-multifunctional-printer-synology" />
      <updated>2016-03-10T10:00:50+01:00</updated>
      <id>https://francois.aichelbaum.com/2016/03/10/share-multifunctional-printer-synology</id>
      <content type="html">&lt;p&gt;So, lately, we decided to truly use several different computers at home. The fun part is that we want to share the same peripherals (as the multi-functional printer (here, as an HP PhotoSmart B109a), with different OS (for now, Linux and Windows). Let’s see how our Synology saved the day.&lt;/p&gt;

&lt;p&gt;The Synology NAS embed a Linux system so basically, we should be able to run most of the applications, as far as we can deploy/compile it. But, because the Synology guys wants to ease our life, they did a great thing : they offer &lt;a href=&quot;https://www.synology.com/en-global/knowledgebase/DSM/tutorial/Printer/How_to_set_up_and_use_a_multifunctional_printer_shared_by_Synology_NAS&quot;&gt;the possibility&lt;/a&gt; to add a multi-functional printer and manage it. As far as they did great, the system only embed some drivers (and software - i.e. only cups) and for me, even if the printer is fully discovered, only the print services will be shared over network.
So I had to complete the setup. First, I need to be able to extend the system with new package. As we have a pretty recent DS1515+, we don’t have any &lt;a href=&quot;https://fr.wikipedia.org/wiki/IPKG&quot;&gt;ipkg&lt;/a&gt; system out of the box. But now, this is pretty well documented over internet (in &lt;a href=&quot;https://forum.synology.com/wiki/index.php/Overview_on_modifying_the_Synology_Server,_bootstrap,_ipkg_etc#How_to_install_ipkg&quot;&gt;english&lt;/a&gt; or in &lt;a href=&quot;http://www.cachem.fr/synology-installer-ipkg/&quot;&gt;french&lt;/a&gt;, for instance).
Now that we can install third party software easily on the CLI, let’s setup &lt;a href=&quot;https://en.wikipedia.org/wiki/Scanner_Access_Now_Easy&quot;&gt;SANE&lt;/a&gt;. So, as a root on the Synology :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;ipkg install hplip libusb libieee1284 sane-backends xinetd
&lt;/span&gt;&lt;span class=&quot;gp&quot;&gt;echo &quot;hpaio&quot; &amp;gt;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; /opt/etc/sane.d/dll.conf
&lt;span class=&quot;gp&quot;&gt;echo &quot;hpaio&quot; &amp;gt;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;/opt/etc/sane.d/dll.d/hplip&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Let’s see if the Synology see the scanner :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;sane-find-scanner&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Which should reply something like :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;found USB scanner (vendor=0x03f0 [HP], product=0x7a11 [Photosmart B109a-m]) at libusb:002:003&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Since the NAS sees the scan, let’s test it with SANE via :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;scanimage -L
found USB scanner (vendor=0x03f0 [HP], product=0x7a11 [Photosmart B109a-m]) at libusb:002:003&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;It will reply something as :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;device `hpaio:/usb/Photosmart_B109a-m?serial=CN999750CB05C7&apos; is a Hewlett-Packard Photosmart_B109a-m all-in-one
found USB scanner (vendor=0x03f0 [HP], product=0x7a11 [Photosmart B109a-m]) at libusb:002:003&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Now, let’s ensure that the service is visible from the rest of the network. To do so, we need to edit /opt/etc/xinetd.conf where we check the line “only_from” : it should match the IP range of the local network. Then we edit /opt/etc/sane.d/saned.conf with the same purpose. We can now edit xinetd to start the sane service properly with the right port, editing /opt/etc/xinetd.d/sane-port :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;service&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;sane&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;port&lt;/span&gt;
{
    &lt;span class=&quot;n&quot;&gt;port&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;6566&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;socket_type&lt;/span&gt; = &lt;span class=&quot;n&quot;&gt;stream&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;wait&lt;/span&gt; = &lt;span class=&quot;n&quot;&gt;no&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;user&lt;/span&gt; = &lt;span class=&quot;n&quot;&gt;root&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;group&lt;/span&gt; = &lt;span class=&quot;n&quot;&gt;root&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;server&lt;/span&gt; = /&lt;span class=&quot;n&quot;&gt;opt&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;sbin&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;saned&lt;/span&gt;
}
&lt;span class=&quot;n&quot;&gt;found&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;USB&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;scanner&lt;/span&gt; (&lt;span class=&quot;n&quot;&gt;vendor&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x03f0&lt;/span&gt; [&lt;span class=&quot;n&quot;&gt;HP&lt;/span&gt;], &lt;span class=&quot;n&quot;&gt;product&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;x7a11&lt;/span&gt; [&lt;span class=&quot;n&quot;&gt;Photosmart&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;B109a&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;m&lt;/span&gt;]) &lt;span class=&quot;n&quot;&gt;at&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;libusb&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;002&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;003&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Let’s start it (it will be automatically started on the next reboot :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;/opt/etc/init.d/S10xinetd
found USB scanner (vendor=0x03f0 [HP], product=0x7a11 [Photosmart B109a-m]) at libusb:002:003&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;As we’re good on the server side, let’s focus on the client side. We’ll start with the Linux client as it’s the simpliest. I assume you already installed &lt;a href=&quot;http://www.xsane.org&quot;&gt;xsane&lt;/a&gt;.  Now, we just need to tell Xsane where it can find the scan. So, we edit /etc/sane.d/net.conf to replace “# localhost” with the IP of the Synology. The printer is just a few click away when you go through the regular GUI to add a network printer. We’re good to go.
On the Windows side (Windows 10 here), it’s a bit more tricky. First, we’ll focus on the printer service. For this, we’ll have to follow the &lt;a href=&quot;https://www.synology.com/en-global/knowledgebase/DSM/tutorial/Printer/How_to_set_up_and_use_a_multifunctional_printer_shared_by_Synology_NAS&quot;&gt;directives&lt;/a&gt; from Synology. This will enable a printer. Windows might complain about missing drivers for some mass storage USB device and an unknown device but you can just ignore as those are the scan and the multi card reader.
For the scan service, we’ll have to install some other tools. Indeed, Windows use a specific protocol which is not compatible with sane (it can be TWAIN, ISIS or WIA).  But , as we exposed the scan via sane, we need … sane … Absolute logical logic. Thanks to our opensource community friends, port exists. Not so much up2date or maintained, but it’s enough ok to be used. The solution here will be &lt;a href=&quot;https://sourceforge.net/projects/sanewinds/&quot;&gt;SaneWinDS&lt;/a&gt;. Just download the installer, follow the instruction of the GUI and here you go. Reboot your Windows (after all, it remains as a Windows), and now you have a Sane application on your Windows that you can use. The UI is pretty archaic but it should do the trick.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Home</title>
      <link href="https://francois.aichelbaum.com/2016/03/09/home" />
      <updated>2016-03-09T10:35:59+01:00</updated>
      <id>https://francois.aichelbaum.com/2016/03/09/home</id>
      <content type="html">&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>La Nature Parle: Sophie Marceau est Mère Nature</title>
      <link href="https://francois.aichelbaum.com/2016/03/08/la-nature-parle-sophie-marceau-est-mere-nature" />
      <updated>2016-03-08T10:31:38+01:00</updated>
      <id>https://francois.aichelbaum.com/2016/03/08/la-nature-parle-sophie-marceau-est-mere-nature</id>
      <content type="html">&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>She&amp;#039;s Alive... Beautiful... Finite... Hurting... Worth Dying for</title>
      <link href="https://francois.aichelbaum.com/2016/03/07/shes-alive-beautiful-finite-hurting-worth-dying" />
      <updated>2016-03-07T10:29:57+01:00</updated>
      <id>https://francois.aichelbaum.com/2016/03/07/shes-alive-beautiful-finite-hurting-worth-dying</id>
      <content type="html">&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>Super Bowl 2016 - Trailers &amp;amp; TV Spots</title>
      <link href="https://francois.aichelbaum.com/2016/03/05/super-bowl-2016-trailers-tv-spots" />
      <updated>2016-03-05T11:42:23+01:00</updated>
      <id>https://francois.aichelbaum.com/2016/03/05/super-bowl-2016-trailers-tv-spots</id>
      <content type="html">&lt;p&gt;It’s Saturday morning. Some might just have a hangover. Others running all around. And a few, just do nothing (as me …. nah just kidding). So the Super Bowl was a month ago so let’s enjoy a compilation of all the Trailers and TV Spots to boost this weekend. Cheers up !&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>My desktop replacement setup</title>
      <link href="https://francois.aichelbaum.com/2016/03/04/desktop-replacement-setup" />
      <updated>2016-03-04T19:00:45+01:00</updated>
      <id>https://francois.aichelbaum.com/2016/03/04/desktop-replacement-setup</id>
      <content type="html">&lt;p&gt;&lt;a href=&quot;https://francois.aichelbaum.com/wp-content/uploads/2016/03/bd1.jpg&quot; rel=&quot;attachment wp-att-9123&quot;&gt;&lt;img class=&quot;alignleft wp-image-9123 size-thumbnail&quot; src=&quot;/assets/bd1-150x150.jpg&quot; alt=&quot;You&apos;re next desktop ?&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Recently, I decided to move from a decent desktop setup to a desktop replacement setup. Here’s the why and the how of this move.&amp;lt;/p&amp;gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;For years, I had a barebone on my desktop with a huge screen :&lt;/p&gt;
&lt;ul style=&quot;text-align: justify;&quot;&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Xeon CPU with 4 core, but low voltage&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;8 GB Ram&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Nvidia Geforce .....&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;128 GB SSD&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Dell 30&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;As I stopped playing on my computer for at least the last 4 years, I noted several disadvantages of such setup :&lt;/p&gt;
&lt;ul style=&quot;text-align: justify;&quot;&gt;
&lt;li&gt;It consumes a lot of power (the power supply of the barebone and the screen consume a tremendous amount of power)&lt;/li&gt;
&lt;li&gt;It takes a lot of space just to surf&lt;/li&gt;
&lt;li&gt;If I want to go to another place with my &quot;desktop&quot; to continue my work it was not so easy (ok I could use some remote desktop thing on a tablet but yet, more devices to use ...)&lt;/li&gt;
&lt;li&gt;30&quot; display on a desktop, if you&apos;re not doing graphics is just so useless ...&lt;/li&gt;
&lt;li&gt;Having a powerful computer just to surf over the web, or admin my servers, is just as driving a McLaren during rush hours, in the streets of Paris&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;So, at the end of last year, I decided to review all my equipment and optimize my usage, my habits, but also my power consumption. From this, my desk was one of the key elements to work on.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Which desktop ?&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;At about the same time, I received, graciously, a dead &lt;a href=&quot;https://www.google.fr/url?sa=t&amp;amp;rct=j&amp;amp;q=&amp;amp;esrc=s&amp;amp;source=web&amp;amp;cd=1&amp;amp;ved=0ahUKEwis3qPk6KbLAhUMCpoKHQ5GAAMQFggcMAA&amp;amp;url=http%3A%2F%2Fsupport.lenovo.com%2Fus%2Fen%2Fdocuments%2Fpd015812&amp;amp;usg=AFQjCNEbod5fFkqxh9Xw6EUPBcFCKZA33A&amp;amp;bvm=bv.115339255,d.bGs&amp;amp;cad=rja&quot;&gt;Lenovo X220&lt;/a&gt;. It didn&apos;t boot any more (Fan error at starting time, forbidding any access to the Bios setup), case had severe knocks all over, the battery was out, ... I love challenges and seeing this dead laptop, I saw the answer to my desk revamp : I&apos;ll revive it ! Ok I may loose some MIPS and MFLOPS, but frankly, who cares when surfing and ssh-ing ?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ok, I&apos;ll skip the disassemble time where I got it partly back. Partly because it survived to 10 days during my Chinese trip. Then, the fatal Fan error message came back. Luckily, I was in China. I brought the &lt;em&gt;corpse&lt;/em&gt; to a local computer mall and go the welded fan totally replaced ... for 5€ (the guys spent almost his day on it ... !).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Back in France, I was able to go through the next steps :&lt;/p&gt;
&lt;ol style=&quot;text-align: justify;&quot;&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;upgrade the memory from the 6 GB (2+4) it had : Lenovo specs announces that we can go up to 8 GB on this little guy but as it&apos;s a Sandy Bridge powered laptop, I decided to give a try up to 16 GB (2x8 GB PC10600 CL9 from G.Skill)&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;upgrade the harddrive from the 300 GB classical drive to an SSD : first, I assumed I would recycle the SSD from my barebone ; but it was to thick so I decided to get a Scandisk SSD Plus 240 GB which is only 7mm, and therefore can fit perfectly&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;avoid to damage the bunch of connectors on the laptop : as I would use the laptop as desktop replacement but still as a laptop, having to plug all the USB cable, power, display, ... quite often, would damage them ; getting a dock was the solution and I found one (&lt;a href=&quot;http://www.thinkwiki.org/wiki/ThinkPad_UltraBase_Series_3&quot;&gt;UltraBase 3 station&lt;/a&gt;) on E-bay for just a few bucks ...&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Replace my huge 30&quot; Dell screen with something that fit more to my usage but will also consume a hell less : I moved to a &lt;a href=&quot;http://www.samsung.com/us/business/displays/monitors/LS24E65KPLH/GO&quot;&gt;Samsung SE650PL&lt;/a&gt;, as it has a DisplayPort (as the x220), incorporated speakers (even if not very powerful - but don&apos;t care, it&apos;s not my multimedia center), low blue light, and is not high energy.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Now, I have all my components, next step was to move forward to setup the box. I&apos;m getting old (I swear it, I have two grey hairs now !), and therefore, I&apos;m getting Lazy. In my old days, I would have install a very light Linux and compile everything from scratch, fine tuning every component. Now I just want to use my computer. Based on that, I decided to use &lt;a href=&quot;http://www.linuxmint.com&quot;&gt;Linux Mint&lt;/a&gt; as my distro. The following is not totally exhaustive as I&apos;ll skip the secure part that you should apply to any system.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Graphics&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;The default setup is almost perfect. Almost, because I still had to fix some little glitches. First, Configure the display properly. This starts with the login screen. The MDM, which handle the login screen, does not care about your Cinnamon config. It will still try to push the display toward the internal display and duplicate it, as it, on the DisplayPort. As my lid is closed, seeing the login screen just on a quarter if my screen is not fun ... I had to edit my /etc/mdm/Init/Default file to add the following lines by the end (just before the &quot;exit 0&quot;) :&lt;/p&gt;
&lt;pre id=&quot;crayon-56d96a1376b50583050831-3&quot; class=&quot;crayon-line&quot;&gt;&lt;span class=&quot;crayon-v&quot;&gt;mode&lt;/span&gt;&lt;span class=&quot;crayon-o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;crayon-s&quot;&gt;&quot;$(xrandr -q|grep -A1 &quot;DP2&lt;/span&gt; &lt;span class=&quot;crayon-i&quot;&gt;connected&lt;/span&gt;&lt;span class=&quot;crayon-s&quot;&gt;&quot;| tail -1 |awk &apos;{ print $1 }&apos;)&quot;
&lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;crayon-sy&quot;&gt;[&lt;/span&gt; &lt;span class=&quot;crayon-o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;n&lt;/span&gt; &lt;span class=&quot;crayon-s&quot;&gt;&quot;$mode&quot;&lt;/span&gt; &lt;span class=&quot;crayon-sy&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;crayon-sy&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;crayon-st&quot;&gt;then
&lt;/span&gt;&lt;span class=&quot;crayon-h&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;xrandr&lt;/span&gt; &lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;output &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;LVDS1&lt;/span&gt; &lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;off
&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;  &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;xrandr&lt;/span&gt; &lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-e&quot;&gt;output &lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;DP2&lt;/span&gt; &lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-v&quot;&gt;primary&lt;/span&gt; &lt;span class=&quot;crayon-o&quot;&gt;--&lt;/span&gt;&lt;span class=&quot;crayon-i&quot;&gt;mode&lt;/span&gt; &lt;span class=&quot;crayon-cn&quot;&gt;1920x1080
&lt;/span&gt;&lt;span class=&quot;crayon-st&quot;&gt;fi&lt;/span&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Then, I would focus on the video card and how it&apos;s used. It&apos;s an internal HD Graphic card from the Sandy Bridge. This would require the proper drive and proper configuration from the kernel.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot; class=&quot;&quot;&gt;sudo add-apt-repository ppa:oibaf/graphics-drivers
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install  libva-intel-vaapi-driver
sudo add-apt-repository ppa:tigerite/mint-xorg-update
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install xorg-update&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Next to this, we&apos;ll have to edit our boot parameters for the kernel. Edit /etc/default/grub and update  GRUB_CMDLINE_LINUX_DEFAULT, for instance :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot; class=&quot;&quot;&gt;GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash i915.i915_enable_rc6=1 i915.semaphores=1 i915.i915_enable_fbc=1 pcie_aspm=force&quot;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Then, reload the grub configuration :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot; class=&quot;&quot;&gt;sudo update-grub&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Now, thanks to this, the display will work as intended. Let&apos;s enhance the rest. For this, let&apos;s remove the Visual Effects. As usual, it&apos;s fancy but not very useful and also quite performance killer. This is quite simply as you can do it via the System Settings : &quot;Appearance&quot; &amp;gt; &quot;Visual Effects&quot; &amp;gt; &quot;None&quot;. Easy, isn&apos;t it ?&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;System&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Lots of small stuff in the system will enhance the usage. First, lets focus on the /etc/sysctl.conf file :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;line-height: 1.5;&quot;&gt;net.ipv4.conf.default.rp_filter=1
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_syncookies=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
vm.swappiness=1
vm.vfs_cache_pressure=50
vm.dirty_background_bytes = 536870912
vm.dirty_bytes = 1073741824
vm.dirty_expire_centisecs = 250
vm.dirty_writeback_centisecs = 500&lt;/span&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;line-height: 1.5;&quot;&gt;Why all these ? First to secure, second to enhance. Indeed, we&apos;re not a router nor we&apos;ll inspect everything on the network from this computer : I&apos;ll do it from the router if needed. The second part is how we&apos;ll use the swap (with 16 GB Ram, as few as possible) and the different network shares we&apos;ll connect to (at least in CIFS for now).&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;We can also improve part of the SSD usage by updating the options in /etc/fstab :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;line-height: 1.5;&quot;&gt;UUID=04f97099-2f75-4599-92fa-9e455ba38925 / ext4 errors=remount-ro,noatime,discard 0 1&lt;/span&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;line-height: 1.5;&quot;&gt;Then we&apos;ll change the relative scheduler by providing the info in the /etc/rc.local :&lt;/span&gt;&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot; class=&quot;&quot;&gt;echo noop &amp;gt; /sys/block/sda/queue/scheduler&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;We&apos;ll replicate this choice for the global kernel options, in /etc/default/grub, by updating GRUB_CMDLINE_LINUX_DEFAULT :&lt;/p&gt;
&lt;pre class=&quot;&quot; style=&quot;text-align: justify;&quot;&gt;GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash i915.i915_enable_rc6=1 i915.semaphores=1 i915.i915_enable_fbc=1 pcie_aspm=force elevator=noop profile&quot;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;You&apos;ll need to update grub, next to this. As you noticed, I added also the word &quot;profile&quot;. This will slow down the very next reboot but will progressively speed up all your boot time : it will tell the kernel to profile your system to adapt its own boot. Very useful.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;You should also mind about updating the BIOS : it might be a very stock version, and several updates went out through the years.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Next, you&apos;ll need to ensure about the CPU usage, temperature, ... Anything related to the fact you rely on a laptop. Tools can do this for you :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot; class=&quot;&quot;&gt;aptitude install thermald laptop-mode-tools&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;You may have this kind of errors during setup :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot; class=&quot;&quot;&gt;SETTING OF KERNEL PARAMETER FAILED: echo ondemand &lt;pre wp-pre-tag-9=&quot;&quot;&gt;&lt;/pre&gt;gt; /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;This is normal as the &quot;ondemand&quot; governor does not exists for your x220 : only &quot;performance&quot; and &quot;powersave&quot;. To fix this, just edit /etc/laptop-mode/conf.d/cpufreq.conf and replace all the &quot;ondemand&quot; by &quot;powersave&quot;. It should do the trick.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Thanks to all these, you&apos;re now ready to use your x220 as your desktop replacement. Feel free to amend this text based on your specific needs, especially regarding the budget and therefore, the components, or any software you&apos;d like to use.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>How to update an ATT / Samsung Galaxy S6 Active ?</title>
      <link href="https://francois.aichelbaum.com/2016/02/21/how-to-update-an-att-samsung-galaxy-s6-active" />
      <updated>2016-02-21T17:53:02+01:00</updated>
      <id>https://francois.aichelbaum.com/2016/02/21/how-to-update-an-att-samsung-galaxy-s6-active</id>
      <content type="html">&lt;p&gt;If, as me, you own a Galaxy S6 Active (SM-G890A) from AT&amp;amp;T, and you can’t update to Android 5.1.1, here is your solution.&lt;/p&gt;

&lt;p&gt;Over the last year, I busted two mobiles :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;I missed my pocked when trying to fit my phone in : the floor didn’t missed it, especally the screen&lt;/li&gt;
  &lt;li&gt;The other one tried to swim without protection, whereas I put it into an airtight bag, in an airtight box, to prevent any issue … long but funny story&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whatever … Next to these issues, I decided to get a rugged phone to ensure that I won’t bust another one or at least, not that fast. I googled for some time, avoiding the regular Chinese models you can find all over the place. Two models came out this digging : the one from CAT &lt;a href=&quot;http://www.catphones.com/fr-fr/phones/s30-smartphone&quot;&gt;S30&lt;/a&gt; (the &lt;a href=&quot;http://www.catphones.com/fr-fr/phones/s40-smartphone&quot;&gt;S40&lt;/a&gt; was not yet available) and one from Samsung (the S6 Active). I decided not to go with the CAT one, based on several reviews I got from both.
Unfortunately, the &lt;a href=&quot;http://www.samsung.com/us/mobile/cell-phones/SM-G890AZAAATT&quot;&gt;Samsung Galaxy S6 Active&lt;/a&gt; was only release in some countries (as in the US) and only through some carrier contracts (as &lt;a href=&quot;https://www.att.com/cellphones/samsung/galaxy-s6-active.html&quot;&gt;AT&amp;amp;T&lt;/a&gt; in the US). Luckily, I had to do a quick work trip in the US. Thanks to some colleagues, I was able to buy a brand new S6 Active.
I won’t got through a full review of the phone, as you can find a ton of them online. I bought the phone on early July 2015. On August, AT&amp;amp;T released a branded update based on Android 5.0.2. The update was available to all the owner, even not in the US nor on AT&amp;amp;T. The update was fine for lots of thing but there were some glitches as some slowness or some random micro-freezes. One solution, due to Android 5.0, was to move to Android 5.1 as it solved most of the issues. But, as there is no way to root the phone yet, and as it’s not a stock version of Android, there was no way to update it as-is. Waiting was my new friend. On the root side, there is even a bounty on the &lt;a href=&quot;http://forum.xda-developers.com/galaxy-s6/galaxy-s6-active/bounty-att-s6-active-root-t3301145&quot;&gt;XDA forum&lt;/a&gt;, if you want to take care of it.
On November, AT&amp;amp;T released an update based on the 5.1.1. But, and here is our common issue, this update is available only if you’re in the US and if you’re using AT&amp;amp;T : it’s an OTA update (Over The Air). I can’t go to the US as I go to my local bakery nor I can’t ask my employer to pay for a new trip in the US just to get my update. I was struggling for months with this.
But, some days ago, I found out about some Samsung tools that could be useful : &lt;a href=&quot;http://www.samsung.com/us/smart-switch/&quot;&gt;Samsung Smart-Switch&lt;/a&gt;. Here, I won’t focus on the mobile version of the tool as it’s not useful for us. But the computer version (available on Windows and Mac OS X) is our Grail. So, install it on your computer.
If, as me, you’re on Linux and can’t find someone with a Windows close to you, visualization is your savior.  Install Virtualbox, install a VM with Windows and then, Samsung Smart Switch. Note that you better have at least 2 cores and 2 GB Ram enabled on your VM. Another trick regards the USB :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;add your current user to vboxusers&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;usermod -a -G vboxusers francois&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;logout/login your session&lt;/li&gt;
  &lt;li&gt;edit  the VM settings to ad a permanent USB filter for your phone (it has to be plugged in prior to this)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that you can use Smart Switch, plug your phone, go to the upper right corner on “Plus”, then “Emergency recovery and re-initialization”. Wait for a couple of second, the phone will get detected and recognized. If it’s legit (not declared as stolen), the system will detect the version and propose an update from Android 5.0.2 to Android 5.1.1.
You can also for the update via the re-initialization process, thanks to your serial number (on your phone, Settings / About the phone / State), but this will wipe out all the data so do not forget to backup your phone first.
If you’re using a virtualized Windows, when the phone reboots the first time, Smart Switch will continue to ask you to connect the phone so it can detect it : just right click on the USB settings of the VM, and change the USB filter from Remote “No” to Remote “Any”. At the end, you may have to do it the other way but this is optional.
Now, you have a fully functional Galaxy S6 Active from AT&amp;amp;T, working on an up-to-date and official branded Android 5.1.1 without bothering with AT&amp;amp;T.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Petit scarabée : troisième !</title>
      <link href="https://francois.aichelbaum.com/2016/01/19/petit-scarabee-troisieme" />
      <updated>2016-01-19T13:40:53+01:00</updated>
      <id>https://francois.aichelbaum.com/2016/01/19/petit-scarabee-troisieme</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Une quinzaine de jours est passée depuis mon dernier billet. Pas tant parce qu&apos;il n&apos;y avait rien a raconté, mais plutôt qu&apos;il faut du temps et de l’énergie pour le faire. On continue donc la découverte du Kung-Fu traditionnel, mixé à la découverte de Chengdu.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Comme introduit dans le premier billet, le kung-fu n&apos;est pas juste un art martial mais est un art de vivre. Celui-ci s&apos;accompagne donc de règles.  Elles se scindent en deux familles : les règles de moralités et les règles de comportement. Pendant que nous les revoyons continuellement, tout est prétexte à l&apos;entrainement et aux démonstrations.&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9054,9053,9047&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Les premières règles sont donc définies ainsi :&lt;/p&gt;
&lt;ol style=&quot;text-align: justify;&quot;&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Restez humble&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Faites bénéficier les autres&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Restez stable dans votre cœur et vos actes&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Faites face aux difficultés avec grandes volonté et fierté&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Votre relation avec les autres est plus importante que l&apos;argent&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Soyez gentleman&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Apprenez à pardonner&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Finissez ce que vous avez commencé&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Concernant les règles de comportement, elles se résument ainsi :&lt;/p&gt;
&lt;ol style=&quot;text-align: justify;&quot;&gt;
&lt;li&gt;N&apos;abandonnez jamais&lt;/li&gt;
&lt;li&gt;Ne vous vantez pas&lt;/li&gt;
&lt;li&gt;Ne vous fermez pas face à la critique&lt;/li&gt;
&lt;li&gt;Ne jouez pas les prétentieux&lt;/li&gt;
&lt;li&gt;Ne faites pas étalage de votre kung-fu&lt;/li&gt;
&lt;li&gt;Ne colportez pas&lt;/li&gt;
&lt;li&gt;N&apos;enseignez pas si vous n&apos;avez pas la compétence&lt;/li&gt;
&lt;li&gt;N&apos;arnaquez personne&lt;/li&gt;
&lt;li&gt;Ne soyez pas fermer à autrui&lt;/li&gt;
&lt;li&gt;Ne désobéissez pas aux règles&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On se rend vite compte que tout ceci s&apos;applique à la vie de tous les jours. Ainsi, outre les 6h de sport quotidiennes, nous passons beaucoup de temps à parfaire notre connaissance de l&apos;ancienne culture chinoise, mais aussi observer ce qui se passe autour de nous.&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9052,9051,9050&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Forts de cette instruction, nous partons à la découverte du parc Wang Jiang, parc de bamboo en l&apos;honneur d&apos;une poète célèbre de Chengdu. Le parc se présente donc en deux parties. La plus grande, publique, recouvre deux tiers de la zone. Il s&apos;agit principalement d&apos;une réserve de diverses espèces de bamboo. La seconde, plus petite, est dédiée à la poète avec différents pavillons et une imposante statue en marbre.&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9072,9071,9070,9069,9068,9067,9066,9065,9063,9062,9061,9060,9059,9058,9057,9056&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Époustouflés par cet écrin de verdure, conservé au beau milieu de la modernité des buildings, nous avons bien profité de l&apos;ambiance terriblement apaisante du lieu. A ce moment, nous sommes choqués par la contradiction perpétuelle de la Chine. Tout est dans l&apos;opposition. L&apos;ancien au modernisme. La richesse à la pauvreté. Le complique au simple. Le respect de la connaissance à l&apos;ignorance totale du passé.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour autant, certaines choses perdurent ou reviennent. Les pandas sont donc partout. Les anciennes font du sport de rue : gym toniques pour mesdames à la tombée de la nuit ou encore danse de salon sur les places publiques en journée, ... A noter également que leur style en anglais fait fureur parfois.&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9080,9049,9073,9074,9066,9064&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ceci m’amène à mon 6e projet de tatouage.  Ce nouveau projet est une portion en fait un fragment d&apos;un plus gros tatouage que j&apos;ai décidé de segmenter afin de le réaliser au cours de mes divers voyages. La précédente pièce avait donc été faite a New York. Le tatoueur a été trouvé et j&apos;ai pu lui transmettre les matériaux de base pour son travail. Par contre, je garde secret le résultat jusqu&apos;au retour de Chine.&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9085,9084,9083,9082,9081&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Au cours des diverses explorations de Chengdu, nous sommes également tombes sur le quartier des bars. Celui-ci est caractéristique du style de restauration à la chinoise : l&apos;emballage fait le produit. On se retrouve donc avec des bus Victoriens, un bar de dinosaures, ...&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9079,9078,9077,9076,9075&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Nous finirons la semaine dernière avec le départ de l&apos;un de nos Kung-Fu brothers. Celui-ci repart donc dans sa province natale, au nord-est de la Chine. Soirée hotpot autant épicée qu&apos;arrosée, suivie d&apos;une séance de cinéma privée, dans la salle d&apos;entrainement avec la projection de &lt;a href=&quot;https://www.youtube.com/watch?v=VSfJZ6B4P6Y&quot;&gt;Crazy Kungfu&lt;/a&gt;, en chinois, bien entendu !&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9048&quot;]&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Petit scarabée : deuxième !</title>
      <link href="https://francois.aichelbaum.com/2016/01/05/petit-scarabee-deuxieme" />
      <updated>2016-01-05T14:34:14+01:00</updated>
      <id>https://francois.aichelbaum.com/2016/01/05/petit-scarabee-deuxieme</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Les jours s&apos;enchainent sans vraiment se ressembler. Nous continuons de consommer notre lot quotidien de sport, culture kungfu-iste, de piments, le tout enrobé de zénitude et de plaisirs.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Peu de jours se sont écoulés depuis mon billet du nouvel an. Pourtant, tellement de choses ont été vécues. Ainsi, la fin de semaine a continué de s&apos;écouler avec du sport avant de nous offrir une fin de samedi reposante. Mais avant toute chose, le vendredi sera marqué par un &quot;afterwork&quot; digne de ce nom, entre occidentaux. Nous finissons donc non loin de l&apos;école, dans un bar, aux allures de Central Perk. Je note au passage qu&apos;il a fallu que je vienne en Chine pour qu&apos;on me serve par défaut une bière du Laos. D&apos;ailleurs, la serveuse s&apos;excusera en ramenant une bouteille ... car elle est froide (les chinois boivent leurs bières tièdes).&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9005,9004,9003,9002&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Bien courbatures, nous partons samedi après-midi à l&apos;attaque de l&apos;équivalent des boulevards maréchaux de Chengdu, facilement et rapidement accessible en tuk-tuk depuis l&apos;école. Là, nous déambulons dans les magasins pour y découvrir les marques à la mode, les produits, ou même les petites variantes agréables dans les grandes surfaces.&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9006&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Fatigués, nous avançons vers un petite boutique de massage qui nous a été recommandée. Une heure de massage à 5 euros, ca ne se refuse pas. On n’était loin d&apos;imaginer le supplice que nous allions vivre. Pourtant habitué à l&apos;aiguille du tatoueur, mon endorphine n&apos;a bien voulu se libérer qu&apos;après que la vieille masseuse ait fini son boulot : il faut croire qu&apos;elle arrive sans problème à faire ses pompes sur les bouts des doigts. Bref, massage fini, plus aucune courbature, douleur ou autre ... le pied total !&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9007&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Revigorés, nos estomacs nous signale que l&apos;heure du diner approche à grands pas. On n&apos;avait repéré une grande place avec plein de restaurants plus bas et décidons d&apos;y aller. A part un bar dédié aux bières étrangères, tous les restos font dans le &quot;hot pot&quot; : une fondue, épicée ou non, dont le contenu change d&apos;un restaurant à l&apos;autre. Sur le conseil de notre Maître, nous allons dans le restaurant le moins rempli. Bizarrement, ce sera le plus propre de la place et celui offrant les tables les plus garnies. Nous sortons le guide, montrons la phrase magique du &quot;Faites nous plaisir&quot; et là, la farandole de mets à cuire débarque à table. Un régal pour les yeux. Un régal pour le nez. Un régal pour les papilles.&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9009,9010,9008&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Repus, nous rentrons enfin à l&apos;école. Alors que nous pensions pouvoir aller voir les pandas, tot le dimanche, on nous informe que nous partirons en montagne, chez un ami de notre Maître, qui vit parmi les moines. Appareil photo chargé, les vêtements chauds préparés, nous partons donc pour une excursion en voiture. Le trajet se fait long, on sent que le Maître sort peu et surtout, conduit peu. Pour autant, avec la meme dextérité que pour ses formes, il manœuvre la voiture dans les passages étroits à flan de montagne.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Nous arrivons alors, à 1300 m d&apos;altitude, sur le versant est du Qingcheng Mount. Ce nom signifie &quot;la cité verte&quot; du fait de l&apos;abondance de plantes et arbres. Cette montagne est extrêmement connue en Chine et à l&apos;extérieur pour sa luxuriance et la presence de nombreux sites religieux Bouddhistes et Taoïstes : temples, monastères, mausolées, ...&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Nous sommes donc sur un plateau à 1300 m d&apos;altitude avec un imposant bâtiment, surmonté par deux temples. Le Maître des lieux vient d&apos;y ouvrir une école de méditation dans le bâtiment qu&apos;il a restauré et reverse une partie des revenus aux moines. Ainsi, ces derniers peuvent vivre mais surtout régler les impôts importants qu&apos;exige l&apos;état chinois.&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9012,9013,9014,9019,9020,9018&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Nous apprenons que nous allons y rester deux jours/une nuit afin de participer légèrement à la vie du temple mais surtout apprendre différentes bases de la méditation. Nous visitons donc le site et partageons les repas avec les moines.&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9015&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Coté culture, nous échangeons avec le Maître des lieux pendant plusieurs heures, réparties sur les deux jours, autour d&apos;une très longue cérémonie du thé. L&apos;après-diner sera aussi l&apos;occasion de me demander, à moi, français, expert ès-vin, de goûter un vin chinois. Celui-ci avait tout d&apos;un Beaujolais nouveau (et comme je ne suis pas fan...). Ainsi, nous explorons les origines du site, les bases de la méditation, la présence de cette nouvelle école, et surtout, nous revenons sur le Bagua (le Yin-Yang). Ce dernier s&apos;avère plus complexe que nous ne le pensions. Celui étudié précédemment est dit &quot;naturel&quot;. Un autre Bagua important est celui &quot;du peuple&quot;. Celui-ci définit ses orientations par rapport a la géographie et l&apos;histoire de la Chine. Plus complexe, il permet cependant de mieux appréhender le naturel.&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9023,9016,9011&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Nous découvrons alors divers usages du Bagua. Par exemple, l&apos;art de la divination, grace à 3 pieces de monnaie. Nous découvrons également le Kung-fu Bagua, sorte de mélange de Taichi, Kung-fu mais également méditation. Ce sera d&apos;ailleurs l&apos;important cours du lendemain matin.&lt;/p&gt;
&lt;p&gt;https://www.youtube.com/watch?v=3NHEOU88TaY&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Nous avons encore bien des choses à apprendre et à parfaire. Ce sera la conclusion du jour mais surtout de ce mardi où nous revoyons toutes nos bases encore et encore. &quot;Aie&quot; crient nos muscles.&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;9021&quot;]&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Petit scarabée: première !</title>
      <link href="https://francois.aichelbaum.com/2016/01/01/petit-scarabee-premiere" />
      <updated>2016-01-01T10:18:23+01:00</updated>
      <id>https://francois.aichelbaum.com/2016/01/01/petit-scarabee-premiere</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Pour beaucoup, ce n&apos;est pas une surprise : je suis en Chine pour quelques semaines. La précision importante ici est qu&apos;il s&apos;agit d&apos;une immersion dans la campagne chinoise avec un entrainement intensif au Wu Shu.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Cela fait donc quelques jours que je suis arrivé. Etonnamment, un énorme brouillard recouvrait la ville de Chengdu, dans le Sichuan. Bon, je dis étonnamment car ce n&apos;est quasiment pas du à la pollution chinoise mais plus au climat local. Le Sichuan est une province entourée de montagne. Une cuvette quoi... Le résultat est qu&apos;il y pleut très peu mais l&apos;humidité ambiante est permanente, ce qui donne ce brouillard si épais et humide. Ce matin, surprise pour le nouvel an, le brouillard se lève enfin et le soleil parvient à illuminer la cour de l&apos;école. Ca ne réchauffe pas encore le corps, mais au moins ca sèche un peu les affaires.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Revenons-en à cette immersion. C&apos;est donc la Kung Fu Family de Maître Li Quan (Shifu pour les intimes) qui accueille les quatres apprentis que nous sommes, issus de différents pays. Shifu est un Maître (re)connu qui accueille régulièrement des gens de tous horizons et des différentes provinces chinoises, pour leur transmettre ses connaissances et son amour pour le Kung Fu traditionnel, le Wu Shu. Dans la hiérarchie des Maîtres, seul un rang lui demande respect, celui des (rares) Grands Maîtres qui viennent parfois entrainer ses apprentis.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Petits scarabées que nous sommes, les premiers pas sont importants :&lt;/p&gt;
&lt;ul style=&quot;list-style-type: circle; text-align: justify;&quot;&gt;
&lt;li&gt;savoir quelle est notre place dans la hiérarchie pour ne pas marquer de faux pas par manque de respect&lt;/li&gt;
&lt;li&gt;avoir une excellente moralité&lt;/li&gt;
&lt;li&gt;comprendre pourquoi nous sommes là&lt;/li&gt;
&lt;li&gt;apprendre que tout est lié et que tout vit en harmonie, c&apos;est-à-dire en mouvement et relation permanente avec son opposé&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ce qui caractérise le mieux ces règles de base est entre autres, le Yin-Yang que nous connaissons deja.&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;8989&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ce symbole, surtout une fois complété des éléments, est très important et sa connaissance assure une bonne base pour commencer notre entrainement. Il s&apos;agit donc d&apos;une philosophie qui englobe toute chose : chaque objet, chaque pensée, chaque action, ... Son chiffre clé est le 8 : huit symboles, 8 cercles, un 8 dessinée dedans, ... Le Yin représente la force, le masculin, l&apos;attaque. Le Yang représente la douceur, le féminin, la défense. Ils ne peuvent fonctionner l&apos;un sans l&apos;autre. Il y a d&apos;ailleurs du Yin dans le Yang et inversement. De meme, quand le Yin est au maximum, le Yang qui est au minimum va pourvoir se développer et prendre du terrain, lancant la dynamique. Ce sont des opposés qui se complètent.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Après avoir compris ce point, on avance sur les huit règles de base du Kung Fu, toutes se développant sur les thèmes de respect et de bonne moralité. Oublions les conflits, la compétition. Ici, on se focalise sur l&apos;entraide, sur le complément, sur l&apos;adaptation. On va donc apprendre, tranquillement un mélange d&apos;art de vivre issu de l&apos;ancien temps, très posé, à celui de la Chine moderne, très festif. Tout cela, en soutenant le respect envers les Ainés. On verra tour à tour divers membres anciens de la fraternité de la Kung Fu Family défiler à table pour partager des repas copieux et de la boisson forte.&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;8986&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Et là, cela peut devenir complètement folklorique pour nos petits yeux d&apos;occidentaux. Ces hommes, pourtant éduqués dans la science et la culture Shaolin, sont devenus totalement bling-bling, parfois aussi customisés que leurs voitures tres Jacky. On verra les gens trinquer, surtout, un par un, en gardant le verre à une hauteur précise pour signifier leur position dans la hiérarchie, puis porter le verre aux lèvres pour à peine les tremper dans le liquide : il ne faudrait pas perdre la face. Il faut que l&apos;autre soit saoul bien avant, pour montrer qu&apos;il est un bon ami. Le pire dans ce cirque de courbettes, à mon sens, est l&apos;alcool. Ici, la belle bouteille fait le bon alcool dans les esprtis. Il en résulte que la premiere soirée se fera sur une bouteille magnifique, mais au contenu écoeurant : un alcool fort (52%) avec un arrière gout de bonbon à la cerise proche de celui des cerises des forêts noires. Erk ... !&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Reste que certains Maîtres ont voyagés ou ont rencontrés d&apos;autres cultures. Ceux-là nous ferons profiter d&apos;un vin espagnol de très bon goût pour accompagner les plats pimentés du diner.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;La nourriture, c&apos;est bien bon, mais ce n&apos;est pas le but premier de ce séjour. Ici, on pratique et on vit le Kung Fu ! On vit à la dure (pas de chauffage, eau chaude limitée, ...) mais pas trop (petit déj vers 9/10h en gros). Par contre, 6h de cours tous les jours. Apres une première petite semaine, les courbatures sont là et on (re)découvre des muscles depuis longtemps oubliés. Pour autant, le plaisir est total car Shifu aime partage son art et sa culture et tout ce que vous ferez pour montrer que vous etes là pour apprendre sera récompensé.&lt;/p&gt;
&lt;p&gt;[gallery show_title=&quot;0&quot; ids=&quot;8987&quot;]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le sacre de ces premiers jours : être jugé par les autres membres de la Kung Fu Family, tous au rang de Maître, qui acquiescent fièrement un &quot;Fast learner&quot; sur votre démonstration de la première forme apprise en deux jours seulement.&lt;/p&gt;
&lt;/p&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>The Ultimate Christmas Movie - Supercut</title>
      <link href="https://francois.aichelbaum.com/2015/12/22/the-ultimate-christmas-movie-supercut" />
      <updated>2015-12-22T07:27:15+01:00</updated>
      <id>https://francois.aichelbaum.com/2015/12/22/the-ultimate-christmas-movie-supercut</id>
      <content type="html">&lt;p&gt;https://youtu.be/mKrlkMnAVJE&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Best of Web 8 - HD - Zapatou</title>
      <link href="https://francois.aichelbaum.com/2015/12/17/best-of-web-8-hd-zapatou" />
      <updated>2015-12-17T10:54:00+01:00</updated>
      <id>https://francois.aichelbaum.com/2015/12/17/best-of-web-8-hd-zapatou</id>
      <content type="html">&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/yHVrGUeTFbo&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>Parce que TGIF, et qu&amp;#039;ils commencent à être mérités ces vendredis !</title>
      <link href="https://francois.aichelbaum.com/2015/10/30/parce-que-tgif-et-quils-commencent-a-etre-merites-ces-vendredis" />
      <updated>2015-10-30T15:48:02+01:00</updated>
      <id>https://francois.aichelbaum.com/2015/10/30/parce-que-tgif-et-quils-commencent-a-etre-merites-ces-vendredis</id>
      <content type="html">&lt;p&gt;https://youtu.be/EmnSm_d2ll4&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Movie phone super call</title>
      <link href="https://francois.aichelbaum.com/2015/09/17/movie-phone-super-call" />
      <updated>2015-09-17T07:58:41+02:00</updated>
      <id>https://francois.aichelbaum.com/2015/09/17/movie-phone-super-call</id>
      <content type="html">&lt;p&gt;https://youtu.be/zXnC2DlEOdE&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Diagnostic</title>
      <link href="https://francois.aichelbaum.com/2015/09/16/diagnostic" />
      <updated>2015-09-16T18:36:36+02:00</updated>
      <id>https://francois.aichelbaum.com/2015/09/16/diagnostic</id>
      <content type="html">&lt;p&gt;https://youtu.be/AM4c9ckSy9M&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Hell&amp;#039;s Club</title>
      <link href="https://francois.aichelbaum.com/2015/09/08/hells-club" />
      <updated>2015-09-08T09:57:09+02:00</updated>
      <id>https://francois.aichelbaum.com/2015/09/08/hells-club</id>
      <content type="html">&lt;p&gt;https://youtu.be/QajyNRnyPMs&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Marrakech</title>
      <link href="https://francois.aichelbaum.com/2015/06/19/marrakech" />
      <updated>2015-06-19T16:55:02+02:00</updated>
      <id>https://francois.aichelbaum.com/2015/06/19/marrakech</id>
      <content type="html">&lt;p&gt;[gallery ids=&quot;9491,9490,9489,9487,9486,9485,9484,9483,9482,9481,9480,9479,9478,9477,9476,9475,9474,9473,9472,9471,9470,9469,9468,9467,9466,9465,9464,9463,9462,9461,9459,9460,9458,9457,9456,9455,9454,9453,9452,9451,9450,9449,9448,9447,9446,9445,9444,9443,9442,9441,9440,9439,9438,9437,9436,9435,9434,9433,9432,9421,9420,9419,9418,9417,9416,9415,9414,9413,9412,9411,9410,9409,9408,9407,9406,9405,9404,9403,9402,9401,9400,9399,9398,9397,9396,9395,9394,9393,9392,9391,9390,9389,9388,9387,9386,9385,9384,9383,9382,9381,9380,9379,9378,9377,9376,9375,9374,9373,9372,9371,9370,9369,9368,9367,9366,9365,9364,9363,9362,9361,9360,9359,9358,9357,9356,9355,9354,9353,9352,9351,9350,9349,9348,9347,9346,9345,9344,9343,9342,9341,9340,9339,9338,9337,9336,9335,9334,9333,9332,9331,9330,9329,9328,9327,9326,9325,9324,9323,9322,9321,9320,9319,9318,9317,9316,9315,9314,9313,9312,9311,9310,9309,9308,9307,9306,9305,9304,9303,9302,9301,9300,9299,9298,9297,9293,9291,9290,9289,9288,9287,9286,9285,9284,9283,9282,9281,9280,9279,9278,9277,9276,9275,9274,9273,9272,9271,9270,9269,9268,9267,9266,9265,9264,9263,9262,9261,9260,9259,9258,9257,9256,9255,9254,9253,9252,9251,9250,9249,9248,9247,9246,9245,9244,9243,9242,9241,9240,9239,9238,9237,9236,9235,9234,9233,9232,9231,9230,9229,9228,9227,9226,9225,9224,9223,9222,9221,9220,9219,9218,9217,9216,9215,9214,9213,9212,9211,9210,9209,9208,9207,9206,9205,9204,9203,9202,9201,9196,9195,9194,9193,9192,9191,9190,9189,9188,9187,9180,9176,9175,9174,9169,9168,9167,9166,9165,9164,9163,9162,9161,9160,9159,9156,9542,9541,9540,9539,9538,9537,9536,9535,9534,9533,9532,9531,9530,9529,9528,9527,9526,9525,9524,9523,9522,9521,9520,9519,9518,9517,9516,9515,9514,9513,9512,9511,9510,9488,9296,9292&quot;]&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>An XMAS Movie Mashup</title>
      <link href="https://francois.aichelbaum.com/2014/12/24/xmas-movie-mashup" />
      <updated>2014-12-24T08:35:34+01:00</updated>
      <id>https://francois.aichelbaum.com/2014/12/24/xmas-movie-mashup</id>
      <content type="html">&lt;p&gt;https://www.youtube.com/watch?v=fKjoJKW2C34&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Final Cut 2014 - Movie Mashup</title>
      <link href="https://francois.aichelbaum.com/2014/12/23/final-cut-2014-movie-mashup" />
      <updated>2014-12-23T12:59:30+01:00</updated>
      <id>https://francois.aichelbaum.com/2014/12/23/final-cut-2014-movie-mashup</id>
      <content type="html">&lt;p&gt;https://www.youtube.com/watch?v=MV9MCLS1Ji8&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Best of Web 7 - HD - Zapatou</title>
      <link href="https://francois.aichelbaum.com/2014/12/22/best-web-7-hd-zapatou" />
      <updated>2014-12-22T08:23:43+01:00</updated>
      <id>https://francois.aichelbaum.com/2014/12/22/best-web-7-hd-zapatou</id>
      <content type="html">&lt;p&gt;https://www.youtube.com/watch?v=axgDgH6f7Pw&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>The Dark Game of Hobbit Knight Thrones Musical Mashup</title>
      <link href="https://francois.aichelbaum.com/2014/05/26/dark-game-hobbit-knight-thrones-musical-mashup" />
      <updated>2014-05-26T19:11:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2014/05/26/dark-game-hobbit-knight-thrones-musical-mashup</id>
      <content type="html">&lt;p&gt;http://www.youtube.com/watch?v=wUKjN5hi7UM&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Job le plus dur du monde</title>
      <link href="https://francois.aichelbaum.com/2014/05/25/job-le-plus-dur-du-monde" />
      <updated>2014-05-25T10:40:10+02:00</updated>
      <id>https://francois.aichelbaum.com/2014/05/25/job-le-plus-dur-du-monde</id>
      <content type="html">&lt;p&gt;https://www.youtube.com/watch?v=beCYTVk-AYU&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Mashup La communauté de l&amp;#039;anneau / Kaamelott</title>
      <link href="https://francois.aichelbaum.com/2014/05/16/mashup-la-communaute-de-lanneau-kaamelott" />
      <updated>2014-05-16T12:14:44+02:00</updated>
      <id>https://francois.aichelbaum.com/2014/05/16/mashup-la-communaute-de-lanneau-kaamelott</id>
      <content type="html">&lt;p&gt;http://www.youtube.com/watch?v=krrZoYm7FvA&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Mashup Titanic / Les Bronzés</title>
      <link href="https://francois.aichelbaum.com/2014/04/18/mashup-titanic-les-bronzes" />
      <updated>2014-04-18T11:00:19+02:00</updated>
      <id>https://francois.aichelbaum.com/2014/04/18/mashup-titanic-les-bronzes</id>
      <content type="html">&lt;p&gt;https://www.youtube.com/watch?v=hLEEHWFn308&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Monitoring des services de streaming live audio/video</title>
      <link href="https://francois.aichelbaum.com/2014/03/06/monitoring-des-services-de-streaming-live-audiovideo" />
      <updated>2014-03-06T11:00:35+01:00</updated>
      <id>https://francois.aichelbaum.com/2014/03/06/monitoring-des-services-de-streaming-live-audiovideo</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Dans le cadre d&apos;une de mes vies précédentes, chez Yacast Media (depuis racheté par &lt;a title=&quot;SmartJog&quot; href=&quot;http://www.smartjog.com/&quot; target=&quot;_blank&quot;&gt;SmartJog&lt;/a&gt; et devenu &lt;a title=&quot;Arkena&quot; href=&quot;http://www.arkena.com/&quot; target=&quot;_blank&quot;&gt;Arkena&lt;/a&gt;) en l&apos;occurrence, se posait la problématique de comment s&apos;assurer de la qualité de service envoyée au client pour tout ce qui était flux live. A chaque problème, sa solution, et ici, elle se prénomme &lt;a title=&quot;Bobonne @github&quot; href=&quot;https://github.com/faichelbaum/bobonne&quot; target=&quot;_blank&quot;&gt;Bobone&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Certains d&apos;entre vous connaissent les CDN : les Content Delivery Networks, des diffuseurs de contenu. La majorité suppose qu&apos;ils ne font que de la mise en cache du contenu. C&apos;est en effet une bonne part de leur métier mais pas l&apos;unique. Parmi les autres, il y a aussi, dans ce qui nous intéresse ici, des fonctions de captation (récupérer un signal hertzien, satellite, câble, ou autre), de transcodage (transformer ce flux capté en flux informatique) et de diffusion (le coeur du métier du CDN donc). Ceci représente le streaming. Pour vous, en tant qu&apos;utilisateur, il s&apos;agit de ce que vous pouvez consulter sur votre boîter TV fourni par votre FAI, ou via votre tablette ou smartphone.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour se faire, les infrastructures sont toujours plus importantes, toujours plus complexes. Dans le cas de la mise en cache de contenu, il est relativement aisé de détecter automatiquement une défaillance ou un dysfonctionnement. Pour autant bien trop peu de CDN mettent ces routines en place ... Dans le cas de la diffusion de contenu en direct, le streaming, il n&apos;y avait pas à l&apos;époque d&apos;outil disponible pour faire ce contrôle automatique. Il incombait donc à des humains de tester les flux.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ceci représente un coût non négligeable pour la société et le temps qu&apos;un humain teste tous les flux sur tous les serveurs, l&apos;ensemble de la plateforme pouvait s&apos;écrouler ou diffuser le contenu avec une qualité déplorable. Parti de ce constat, c&apos;est posé la question de comment le résoudre. M&apos;est alors venue l&apos;idée d&apos;utiliser &lt;a title=&quot;VLC&quot; href=&quot;http://www.videolan.org/&quot; target=&quot;_blank&quot;&gt;VLC&lt;/a&gt; pour se faire.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;VLC est un outil permettant de regarder des vidéos mais aussi des flux audio/vidéo directement sur internet. Il fonctionne sur de nombreux systèmes dont Linux, ce qui m&apos;arrange pour pouvoir faire ma programmation. Au moins dans sa version Linux, il propose de fonctionner entièrement en ligne de commande, publiant un nombre mirobolant d&apos;informations à chaque instant, mais également l&apos;image transformée en ASCII, grâce à la &lt;a title=&quot;libcaca&quot; href=&quot;http://caca.zoy.org/wiki/libcaca&quot; target=&quot;_blank&quot;&gt;libcaca&lt;/a&gt; (ne rier pas trop, faut qu&apos;on continue à bosser).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Il me restait donc à définir du code permettant de recueillir la liste des points de diffusions de chaque plateforme, la liste des serveurs et tester l&apos;ensemble. C&apos;est le but du code alors rédigé en PHP qui fonctionnera en ligne de commande. Ce programme multi-process consultera plus d&apos;une centaine à chaque instant et analysera une centaine de points sur les flux pour en déterminer la qualité de service. Le résultat sont stockés pour l&apos;heure dans une base &lt;a title=&quot;SQLite&quot; href=&quot;http://www.sqlite.org/&quot; target=&quot;_blank&quot;&gt;SQLite&lt;/a&gt; embarquée. L&apos;application est donc mobile. A l&apos;époque, cette base était consultée par l&apos;intranet qui permettait de lister les problèmes et relancer les flux sur les différents équipements via un simple clic.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Les opérateurs y gagnaient en charge de travail, la société en €€ et le client en assurance sur la qualité du service fourni. Des évolutions étaient préves mais n&apos;ont pas vu le jour. Je le ressors aujourd&apos;hui car je vais en avoir besoin et donc vais le faire revivre. Je viens donc d&apos;importer la dernière version du code (qui date de début 2010) sur &lt;a title=&quot;Bobonne @github&quot; href=&quot;https://github.com/faichelbaum/bobonne&quot; target=&quot;_blank&quot;&gt;Github&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Tiens une question du fond, la personne qui se pouffe de rire toute seule : pourquoi Bobonne ? Tout simplement, le programme devait &quot;regarder des chaînes de TV et écouter la radio&quot; en continue. La parfaite ménagère de moins de 50 ans (copyright de nos chères chaînes de TV). En argo, Bobonne.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>SupInfoCom - A la francaise</title>
      <link href="https://francois.aichelbaum.com/2014/02/27/supinfocom-la-francaise" />
      <updated>2014-02-27T10:46:57+01:00</updated>
      <id>https://francois.aichelbaum.com/2014/02/27/supinfocom-la-francaise</id>
      <content type="html">&lt;p&gt;http://vimeo.com/86295452&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>2CELLOS - Thunderstruck</title>
      <link href="https://francois.aichelbaum.com/2014/02/25/2cellos-thunderstruck" />
      <updated>2014-02-25T07:31:35+01:00</updated>
      <id>https://francois.aichelbaum.com/2014/02/25/2cellos-thunderstruck</id>
      <content type="html">&lt;p&gt;http://www.youtube.com/watch?v=uT3SBzmDxGk&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>1984 Movies supercut - golem13</title>
      <link href="https://francois.aichelbaum.com/2014/02/17/1984-movies-supercut-golem13" />
      <updated>2014-02-17T11:01:15+01:00</updated>
      <id>https://francois.aichelbaum.com/2014/02/17/1984-movies-supercut-golem13</id>
      <content type="html">&lt;p&gt;http://vimeo.com/86617721&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Love Means Never Having to Say You&amp;#039;re Sorry</title>
      <link href="https://francois.aichelbaum.com/2014/02/14/love-means-never-say-youre-sorry" />
      <updated>2014-02-14T11:01:24+01:00</updated>
      <id>https://francois.aichelbaum.com/2014/02/14/love-means-never-say-youre-sorry</id>
      <content type="html">&lt;p&gt;http://vimeo.com/groups/montagecreators/videos/86725484&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Make love. Not War - Axe ads without Axe</title>
      <link href="https://francois.aichelbaum.com/2014/01/27/make-love-war-axe-ads-without-axe" />
      <updated>2014-01-27T07:50:06+01:00</updated>
      <id>https://francois.aichelbaum.com/2014/01/27/make-love-war-axe-ads-without-axe</id>
      <content type="html">&lt;p&gt;http://youtu.be/Gz07w2XaxBc&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Dis 33 ! (Pub Peugeot 806 pour les incultes)</title>
      <link href="https://francois.aichelbaum.com/2014/01/21/dis-33-pub-peugeot-806-pour-les-incultes" />
      <updated>2014-01-21T06:48:56+01:00</updated>
      <id>https://francois.aichelbaum.com/2014/01/21/dis-33-pub-peugeot-806-pour-les-incultes</id>
      <content type="html">&lt;p&gt;http://www.youtube.com/watch?v=16AHysRb3B0&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Sophie Maurin &amp;amp; Jamie Cullum - Far Away</title>
      <link href="https://francois.aichelbaum.com/2014/01/20/sophie-maurin-jamie-cullum-far-away" />
      <updated>2014-01-20T08:04:53+01:00</updated>
      <id>https://francois.aichelbaum.com/2014/01/20/sophie-maurin-jamie-cullum-far-away</id>
      <content type="html">&lt;p&gt;http://www.dailymotion.com/video/x1a0i3o_jamie-cullum-et-sophie-maurin-le-duo-de-charme_music&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Les Frenchies vus par le cinéma US - Hervé De Wilde</title>
      <link href="https://francois.aichelbaum.com/2014/01/08/les-frenchies-vus-par-le-cinema-us-herve-de-wilde" />
      <updated>2014-01-08T20:14:14+01:00</updated>
      <id>https://francois.aichelbaum.com/2014/01/08/les-frenchies-vus-par-le-cinema-us-herve-de-wilde</id>
      <content type="html">&lt;p&gt;&lt;iframe src=&quot;//player.vimeo.com/video/82750579&quot; width=&quot;500&quot; height=&quot;281&quot; webkitallowfullscreen=&quot;&quot; mozallowfullscreen=&quot;&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Oslo - Fireworks - Happy new year 2014 - ABBA medley</title>
      <link href="https://francois.aichelbaum.com/2014/01/02/oslo-happy-new-year-2014" />
      <updated>2014-01-02T15:55:15+01:00</updated>
      <id>https://francois.aichelbaum.com/2014/01/02/oslo-happy-new-year-2014</id>
      <content type="html">&lt;p&gt;&lt;a href=&quot;http://francois.aichelbaum.com/files/o/oslo_2013.mp4&quot;&gt;&lt;video width=&quot;320&quot; height=&quot;240&quot; src=&quot;http://francois.aichelbaum.com/files/o/oslo_2013.mp4&quot; preload=&quot;none&quot; controls=&quot;controls&quot;&gt;&lt;object width=&quot;320&quot; height=&quot;240&quot; classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; codebase=&quot;https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot;&gt;&lt;param name=&quot;src&quot; value=&quot;https://francois.aichelbaum.com/wp-includes/js/tinymce/plugins/media/moxieplayer.swf&quot; /&gt;&lt;param name=&quot;flashvars&quot; value=&quot;url=/files/o/oslo_2013.mp4&amp;amp;poster=/wp-admin/&quot; /&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;true&quot; /&gt;&lt;embed width=&quot;320&quot; height=&quot;240&quot; type=&quot;application/x-shockwave-flash&quot; src=&quot;https://francois.aichelbaum.com/wp-includes/js/tinymce/plugins/media/moxieplayer.swf&quot; flashvars=&quot;url=/files/o/oslo_2013.mp4&amp;amp;poster=/wp-admin/&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;true&quot; /&gt;&lt;/object&gt;&lt;/video&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>New Year&amp;#039;s Eve Countdown - Movie Mashup</title>
      <link href="https://francois.aichelbaum.com/2014/01/01/new-years-eve-countdown-movie-mashup" />
      <updated>2014-01-01T01:04:46+01:00</updated>
      <id>https://francois.aichelbaum.com/2014/01/01/new-years-eve-countdown-movie-mashup</id>
      <content type="html">&lt;p&gt;http://www.youtube.com/watch?v=et73p86--ls&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Darlene Love - All Alone on Christmas (A Very Merry Movie Mash-up)</title>
      <link href="https://francois.aichelbaum.com/2013/12/25/darlene-love-alone-christmas-merry-movie-mash" />
      <updated>2013-12-25T10:51:58+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/12/25/darlene-love-alone-christmas-merry-movie-mash</id>
      <content type="html">&lt;p&gt;http://www.youtube.com/watch?v=wemjvUbBgz0&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Best of web #6 - 2014</title>
      <link href="https://francois.aichelbaum.com/2013/12/24/best-web-6-2014" />
      <updated>2013-12-24T12:08:04+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/12/24/best-web-6-2014</id>
      <content type="html">&lt;p&gt;http://www.youtube.com/watch?v=1-8isxa5B_Y&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Best of web #5 - mid 2013</title>
      <link href="https://francois.aichelbaum.com/2013/12/24/best-web-5-mid-2013" />
      <updated>2013-12-24T12:06:58+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/12/24/best-web-5-mid-2013</id>
      <content type="html">&lt;p&gt;http://www.youtube.com/watch?v=iDkrSD8fOBo&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>James Bond est un alcoolique notoire</title>
      <link href="https://francois.aichelbaum.com/2013/12/13/james-bond-est-un-alcoolique-notoire" />
      <updated>2013-12-13T16:11:53+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/12/13/james-bond-est-un-alcoolique-notoire</id>
      <content type="html">&lt;p&gt;Ca se passe sur un des blogs du Monde :&lt;/p&gt;
&lt;p&gt;&lt;a title=&quot;James Bond aime encore plus la bouteille que les femmes&quot; href=&quot;http://bigbrowser.blog.lemonde.fr/2013/12/13/alcoolique-anonyme-james-bond-aime-encore-plus-la-bouteille-que-les-femmes/&quot;&gt;http://bigbrowser.blog.lemonde.fr/2013/12/13/alcoolique-anonyme-james-bond-aime-encore-plus-la-bouteille-que-les-femmes/&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Skip the use - Nameless world</title>
      <link href="https://francois.aichelbaum.com/2013/12/13/skip-use-nameless-world" />
      <updated>2013-12-13T15:24:23+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/12/13/skip-use-nameless-world</id>
      <content type="html">&lt;p&gt;&lt;iframe width=&quot;425&quot; height=&quot;350&quot; src=&quot;https://www.youtube.com/embed/m-h-tK1yspQ&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>2013 - Movie trailer mashup</title>
      <link href="https://francois.aichelbaum.com/2013/12/03/2013-movie-trailer-mashup" />
      <updated>2013-12-03T15:33:43+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/12/03/2013-movie-trailer-mashup</id>
      <content type="html">&lt;p&gt;&lt;iframe width=&quot;425&quot; height=&quot;350&quot; src=&quot;https://www.youtube.com/embed/YU8CvjIwAlY&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Côte : manger français à Londres</title>
      <link href="https://francois.aichelbaum.com/2013/11/14/cote-manger-francais-londres" />
      <updated>2013-11-14T01:10:13+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/11/14/cote-manger-francais-londres</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/cote-brasserie-1.png&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-8275&quot; alt=&quot;cote-brasserie (1)&quot; src=&quot;/assets/cote-brasserie-1-150x150.png&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;En déplacement professionnel chez nos voisins d&apos;outre-Manche, j&apos;ai passé ma journée à manger/boire français : viennoiseries, bières (Stella &amp;amp; Météor), ... et le dîner. Bah oui, pourquoi s&apos;embêter à trouver quelque chose d&apos;anglais chez les Rosbifs ? Mes souvenirs de voyages linguistiques ? De la semelle, de trucs sans goûts, ... Alors quand en cherchant une table pour le dîner, on a vu un restaurant se présenter comme &quot;Brasserie &lt;a href=&quot;http://www.cote-restaurants.co.uk/&quot;&gt;Côte&lt;/a&gt;, la brasserie de laquelle les parisiennes devrait prendre des leçons&quot;, on s&apos;est dit : challenge accepted ! C&apos;est &lt;a href=&quot;https://maps.google.fr/maps?ie=UTF8&amp;amp;fb=1&amp;amp;gl=fr&amp;amp;hq=c%C3%B4te+%2B+brasserie+%2B&amp;amp;hnear=Londres,+Royaume-Uni&amp;amp;ll=51.489507,-0.168915&amp;amp;spn=0.319375,0.727158&amp;amp;t=m&amp;amp;z=11&amp;amp;vpsrc=0&amp;amp;iwloc=A&amp;amp;cid=13765580569693963349&quot;&gt;ici&lt;/a&gt; que ca se passe.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour l&apos;ambiance Brasserie, je dirais qu&apos;il y a un petit loupé : on est à mi chemin entre un restaurant à l&apos;Américaine (type le Walt pour ceux qui connaissent), le pub et la brasserie. Pas très cliché mais bon, c&apos;est propre.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;La carte, assez pauvre en noms à consonance française est assez bien pourvue, tant sur les entrées que sur les plats. Mon dévolu se jette sur le tartare de boeuf en entrée (??), un demi poulet (breton - ils insistent), accompagné d&apos;une Météor.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/cote-banner-image3-300.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-8278&quot; alt=&quot;cote-banner-image3-300&quot; src=&quot;/assets/cote-banner-image3-300-300x96.jpg&quot; width=&quot;300&quot; height=&quot;96&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Que dire de l&apos;entrée. J&apos;étais assez dubitatif de proposer un tartare en entrée (préparé avec les câpres, le cognac, l&apos;oeuf, ...). Je rajoute mes sauces (Worcester &amp;amp; Tabasco), je porte la fourchette en bouche et là, c&apos;est le drame : c&apos;est l&apos;un de meilleur tartare que j&apos;ai jamais mangé ! Je n&apos;en connais qu&apos;un seul autre (à Paris d&apos;ailleurs) qui fut meilleur ! Je crois rêver ... Je me dit qu&apos;il y a erreur, que j&apos;ai du reprendre le train dans l&apos;autre sens ou que je me suis assoupi à une de mes conférences. Je m&apos;agite, j&apos;en gobe le reste du tartare et non, tout est bien réel.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Très bonne introduction pour me préparer au demi poulet, plat &quot;par défaut&quot; que je prend souvent dans les brasseries parisiennes. Le poulet est cuit sur le grill. Goûtu, il reste néanmoins un peu trop rosé à mon goût (je l&apos;aime bien blanc). mais la cuisson est homogène et propre, l&apos;assaisonnement fin. La sauce au champignons qui l&apos;agrémente est fine et n&apos;étouffe pas le palais. Les frites présente en accompagnement son juste bonne. Le plat est donc bon, mais à mon goût mériterait une cuisson plus longue. Mais rien de choquant et également bien habituelle, même dans les bonnes brasseries parisiennes.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/getlstd-property-photo.jpg&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-8281 alignnone&quot; alt=&quot;getlstd-property-photo&quot; src=&quot;/assets/getlstd-property-photo-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/caramel.jpg&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-8284 alignnone&quot; alt=&quot;caramel&quot; src=&quot;/assets/caramel-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Bien mis en bouche, ayant toujours le régal de l&apos;entrée en bouche, je me jette sur ce qu&apos;on m&apos;annonce la spécialité de la maison, pour mon dessert : la crème caramel. Et bien je dois dire qu&apos;ils peuvent s&apos;en vanter. Généreuse, onctueuse, légère, elle fond délicatement en bouche. La parfaite définition de la crème caramel.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Même si je suis chiant sur la cuisson de mon poulet, le dîner fut parfait du début à la fin avec un service plus qu&apos;agréable. Avec deux bières, le repas m&apos;aura coûté 35,10 livres (soit environ 42€) : honnête. Le pire, c&apos;est que c&apos;est une chaîne ...&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Quai d&amp;#039;Orsay : satyre de la politique française</title>
      <link href="https://francois.aichelbaum.com/2013/11/13/quai-dorsay-satyre-de-la-politique-francaise" />
      <updated>2013-11-13T10:57:55+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/11/13/quai-dorsay-satyre-de-la-politique-francaise</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/visuel-de-la-bande-dessinee-quai-d-orsay-10769693bkdgf_1713.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-8248&quot; alt=&quot;visuel-de-la-bande-dessinee-quai-d-orsay-10769693bkdgf_1713&quot; src=&quot;/assets/visuel-de-la-bande-dessinee-quai-d-orsay-10769693bkdgf_1713-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;A croire que c&apos;est la période des adaptations ciné de bandes dessinées françaises, aussi bien dans le Nouveau Monde que sur ce bon Vieux Continent. Cette fois-ci, on adapte une satyre des méandres de la politique française. Le cadre choisi est le ministère des Affaires Etrangères sous le Président Chirac. La méthode choisie pour découvrir ce monde est d&apos;accompagner les premiers pas d&apos;un jeune diplomate dans l&apos;ombre du ministre. Action.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;A croire que le cinéma n&apos;a plus d&apos;idée ... adaptations de bouquins, adaptations de BD, bientôt adaptations de prospectus publicitaires, ... Que dire à part qu&apos;on en mange à toutes les sauces. Pour autant, du franco-français, en comédie, c&apos;est alléchant, surtout avec &lt;em&gt;Popaye&lt;/em&gt; comme beau gosse (âgé) de service.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[video]http://www.youtube.com/watch?v=jmwE8aSojrs[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Arthur est un jeune bobo de gauche qui rêve d&apos;un poste prestigieux dans le monde politique française. Heureusement, il est recommandé par bon nombre de ses connaissances auprès du ministre des Affaires Etrangères, Alexandre. Premier hic ? le gouvernement est de droite. Passé ce premier frein, il faut faire ses preuves et trouver ses marques. C&apos;est ainsi que la hiérarchie fort simple (ahem...) de l&apos;administration française s&apos;ouvre à lui et lui permet de découvrir un nouveau monde où les coups bas sont des signes d&apos;amour et les félicitations, des coups en traitres.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/quai-d-orsay.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-8263&quot; alt=&quot;quai-d-orsay&quot; src=&quot;/assets/quai-d-orsay-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/b00889f2-5a50-11e2-922f-0c1a40f503f3-493x328.jpg&quot;&gt;&lt;img alt=&quot;b00889f2-5a50-11e2-922f-0c1a40f503f3-493x328&quot; src=&quot;/assets/b00889f2-5a50-11e2-922f-0c1a40f503f3-493x328-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/Quai-d-Orsay-4_reference.jpg&quot;&gt;&lt;img alt=&quot;Quai-d-Orsay-4_reference&quot; src=&quot;/assets/Quai-d-Orsay-4_reference-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/quai-d-orsay-13-11-2013-3-g.jpg&quot;&gt;&lt;img alt=&quot;quai-d-orsay-13-11-2013-3-g&quot; src=&quot;/assets/quai-d-orsay-13-11-2013-3-g-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/quai-d-orsay-13-11-2013-4-g.jpg&quot;&gt;&lt;img alt=&quot;quai-d-orsay-13-11-2013-4-g&quot; src=&quot;/assets/quai-d-orsay-13-11-2013-4-g-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Place à une succession de grandes phrases et citations qui n&apos;ont ni queue ni tête mais où tout à chacun trouvera un sens unique : des qui pro quo en chaîne, des interprétations comiques, ... Le film ne s&apos;arrête jamais et garde un rythme soutenu mais non étouffant. On suit et on se délecte de l&apos;ambiance bonne enfant du film. On trouve toujours une allusion à une expérience passée ou présente qui nous permet de nous identifier à Arthur.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Cependant, trois points font perdre au film sa perfection :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la compagne d&apos;Arthur est totalement effacée&lt;/li&gt;
&lt;li&gt;parler des expulsions de famille et écoliers est trop dans l&apos;actualité pour en rire dans un film et du coup, la petite anecdote portée à l&apos;écran est mal placée&lt;/li&gt;
&lt;li&gt;la fin est catapultée : on est dans le rythme, on s&apos;attend à ce que le film se poursuivre et au final, le générique apparaît à l&apos;écran&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour autant, le film est un régal qu&apos;on savourera à n&apos;importe quelle heure.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Snowpiercer ne fend pas un cheveux en quatre</title>
      <link href="https://francois.aichelbaum.com/2013/11/13/snowpiercer-ne-fend-pas-un-cheveux-en-quatre" />
      <updated>2013-11-13T09:35:34+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/11/13/snowpiercer-ne-fend-pas-un-cheveux-en-quatre</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/snowpiercer-le-transperceneige-10988678kixgd_1713.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-8215&quot; alt=&quot;snowpiercer-le-transperceneige-10988678kixgd_1713&quot; src=&quot;/assets/snowpiercer-le-transperceneige-10988678kixgd_1713-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Snowpiercer est basé sur une bande dessinée française du début des années 80. L&apos;idée original est de nous plonger avec les rares survivants de l&apos;espèce humaine dans un train en perpétuel mouvement. Le monde a gelé lors de l&apos;apocalypse déclenchée pour contrer le réchauffement climatique. Très hiérarchisé, ce train segmente son monde en wagons, chacun ayant leur niveau social (les riches en tête, les pauvres en queue) ou leur utilité (école, aquarium, serre, ...). Mais comment vivent ces classes ? Telle est la base de l&apos;oeuvre française et le but annoncé de la transposition ciné.&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Avant d&apos;aller voir ce film je me suis refusé à lire les critiques, me cantonnant à la bande annonce et les infos que j&apos;ai pu glaner sur la BD (à défaut de la lire pour le moment). Assez motivé ma peur d&apos;un nanard d&apos;action se mélengeait à l&apos;envie de découvrir une psychanalyse sur l&apos;enfermement humain.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[video]http://www.youtube.com/watch?v=DgLCvNbtcFE[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le film commence en nous décrivant la bétise humaine (une nouveauté tiens) : il y a le &lt;a href=&quot;http://francois.aichelbaum.com/le-jour-dapres-hier/&quot;&gt;réchauffement climatique&lt;/a&gt;, on ne fait que de la pseudo-science de bas étage et on se prend pour des cadors capables de changer le monde. Du coup, tout le monde meurt, sauf une poignée de chanceux, sauver de l&apos;apocalypse par le visionnaire Wilford qui a penser à se préparer une porte de sortie (construction d&apos;un immense réseau ferroviaire parcourant le monde sans fin et d&apos;un train pour s&apos;y promener à grande vitesse).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/snowpiercer-trailer-2.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-8230&quot; alt=&quot;snowpiercer-trailer-2&quot; src=&quot;/assets/snowpiercer-trailer-2-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/snowpiercer_pill.jpg&quot;&gt;&lt;img alt=&quot;snowpiercer_pill&quot; src=&quot;/assets/snowpiercer_pill-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/snowpiercer.jpg&quot;&gt;&lt;img alt=&quot;snowpiercer&quot; src=&quot;/assets/snowpiercer-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/snowpiercer.jpg&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/Ewen-Bremner-in-Snowpiercer-2013-Movie-Image.jpg&quot;&gt;&lt;img alt=&quot;Ewen-Bremner-in-Snowpiercer-2013-Movie-Image&quot; src=&quot;/assets/Ewen-Bremner-in-Snowpiercer-2013-Movie-Image-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/Critique-Snowpiercer-Le-Transperceneige-illu4.jpg&quot;&gt;&lt;img alt=&quot;Critique-Snowpiercer-Le-Transperceneige-illu4&quot; src=&quot;/assets/Critique-Snowpiercer-Le-Transperceneige-illu4-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Jusque là, tout va bien. Là où la bande dessinée se focalisait sur le vécu et le questionnement des gens de queue, le film lui se focalise sur leur volonté de rebellion. Cette différence notable va faire virer le film pourtant bien parti vers l&apos;action volontaire. Et là est le drame. De l&apos;action, on va en avoir. Bien trop. Le point d&apos;orgue de cette action est l&apos;ouverture du wagon des bouchers : longs impers, haches aiguisées, on sait à l&apos;avance que cela va être un bain de sain. Mais quelle est l&apos;utilité de nous montrer ce bain de sang, de le rallonger pendant de longues minutes au point de le faire devenir écoeurant ?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Tout dans ce film devient dès lors &quot;trop&quot;. Trop de violence. Trop de n&apos;importe quoi. Trop d&apos;action. Trop de discours dans le vent. Trop de jeux d&apos;acteur à la petite semelle (Chris Evans est aussi perdu que son personnage). Seule Tida arrive à sortir son épingle du jeu avec un rôle à sa mesure. Mais ce n&apos;est point suffisant pour remonter le niveau du film. Le train se prend pour Titanic et s&apos;enfonce dans les goufres sans fin du nanard d&apos;action que l&apos;on veut vite oublier.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/snowpiercer-affiche.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-8236&quot; alt=&quot;snowpiercer-affiche&quot; src=&quot;/assets/snowpiercer-affiche-221x300.jpg&quot; width=&quot;221&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Le China : le temps d&amp;#039;une soirée à Macao</title>
      <link href="https://francois.aichelbaum.com/2013/11/07/le-china-le-temps-dune-soiree-macao" />
      <updated>2013-11-07T09:37:28+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/11/07/le-china-le-temps-dune-soiree-macao</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/68348691le-china.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-8191&quot; alt=&quot;68348691le-china&quot; src=&quot;/assets/68348691le-china-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Mon petit plaisir est de découvrir des lieux plus ou moins insolites. A force de parler de partenaires et clients chinois au bureau, le nom du China est sortie. Qu&apos;est-ce ? Simplement un immense bar-lounge/restaurant, ambiance Macao, &lt;a href=&quot;https://maps.google.fr/maps?ie=UTF-8&amp;amp;gl=fr&amp;amp;daddr=50+Rue+de+Charenton,+75012+Paris&amp;amp;panel=1&amp;amp;f=d&amp;amp;fb=1&amp;amp;dirflg=d&amp;amp;geocode=0,48.849917,2.373834&amp;amp;cid=0,0,4114491717528617127&amp;amp;hq=le+china&amp;amp;hnear=0x47e66e1f06e2b70f:0x40b82c3688c9460,Paris&quot;&gt;caché&lt;/a&gt; entre Bastille et Ledru-Rollin. Petit retour sur un lieu à partager.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Quand on me parle de Macao et de ses bars, je me souviens de l&apos;ambiance des vieux films dans les restaurants occidentaux de Macao, esprit feutré, luxe, calme ; toujours un crooner ou une chanteuse pour mettre l&apos;ambiance et motiver la clientèle à consommer ; un nuage de fumée dégagé par les cigares de ces messieurs et les cigarettes de ces dames. Ici, loi française oblige, on oublie la fumée, mais on conserve tout le reste.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/20070120_le-china-club-paris-lili_015.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-8194&quot; alt=&quot;20070120_le-china-club-paris-lili_015&quot; src=&quot;/assets/20070120_le-china-club-paris-lili_015-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/dsc_0333.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-8197&quot; alt=&quot;dsc_0333&quot; src=&quot;/assets/dsc_0333-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/Restaurant-Le-China.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-8200&quot; alt=&quot;Restaurant-Le-China&quot; src=&quot;/assets/Restaurant-Le-China-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;De l&apos;extérieur, cela ne paie pas de mine et on s&apos;attend à un restaurant Chinois un peu luxe mais quelconque. Pénétrez et vous découvrirez trois salles immenses et magnifiques, celle du bas étant dédié aux concerts privés. De la pop, du jazz, des musiques diverses, le plaisir auditif sera là (juste pu entendre les répétitions question de temps).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Cela reste un bar et un restaurant. Le lieu est dédié aux cocktails, alcoolisés ou non. Vautré dans les canapés en cuir, on appréciera les mélanges généreux en tout servis par les charmantes hôtesses. La nourriture est bonne, sans être exceptionnelle et conviendra parfaitement à l&apos;accompagnement des boissons. Installés pour dîner, la carte des vins prendra la place de celles des cocktails pour le plaisir de vos papilles.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Une courte soirée m&apos;a permis de découvrir ce mieux totalement dépaysant. Un plaisir à tous les niveaux qui se renouvellera sûrement, mais avec modération, les tarifs étant un peu élevés.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Malavita : tu ne toucheras pas à la Famille</title>
      <link href="https://francois.aichelbaum.com/2013/10/23/malavita-tu-ne-toucheras-pas-la-famille" />
      <updated>2013-10-23T16:08:03+02:00</updated>
      <id>https://francois.aichelbaum.com/2013/10/23/malavita-tu-ne-toucheras-pas-la-famille</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/malavita_600C.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-8110&quot; alt=&quot;malavita_600C&quot; src=&quot;/assets/malavita_600C-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Qui ne se souvient pas d&apos;une des règles sacrés imposées par tout Parrain, &lt;a href=&quot;http://www.youtube.com/watch?v=FaUq4h818E8&quot;&gt;Don Corleone&lt;/a&gt; en tête : on ne doit pas toucher à la Famille. Bien qu&apos;ayant endossé le rôle du Parrain en devenir, joue aujourd&apos;hui avec le feu en violant cette règle. Malavita signifie &lt;em&gt;pègre&lt;/em&gt; en italien. C&apos;est aussi le nom du fichier des &lt;em&gt;Blakes&lt;/em&gt; dans ce film. C&apos;est surtout le nom donné à ceux qui pourchassent De Niro et sa famille.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Produit par Scorsese, réalisé par Besson, ce film ne fait pas dans la demi-mesure sans pour autant jouer d&apos;un spectale &quot;trop&quot; en tout.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[video]http://www.youtube.com/watch?v=jeXQjWnSWEk[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Il faut dire qu&apos;on fait dans l&apos;évidence des rôles :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Robert De Niro en mafieux&lt;/li&gt;
&lt;li&gt;Tommy Lee Jones en agent gouvernemental&lt;/li&gt;
&lt;li&gt;Michelle Pfeiffer en femme pas très net mais présentant très bien&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Alors que nous raconte Malavita ? Déjà que le chien Malavita est trop absent de l&apos;écran. Dommage. On nous présente une famille qui est parfaitement en harmonie au niveau des dérapages, pour autant, le chien ... ne nous apporte rien. Dommage, vu son nom. Par contre le film Malavita nous raconte beaucoup de chose sur le repenti De Niro et sa famille qui ont du mal à perdre leurs (mauvaises) habitudes. Après tout, il ne faut jamais manquer de rester à la Famille.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;En près de deux heures de séance, le film n&apos;a que peu de réels temps d&apos;arrêt. A la rigueur, il s&apos;agit plus de moment pour nous laisser reprendre notre souffle, tel le torturé que l&apos;on plonge dans la baignoire pour faire avouer ses crimes. Pour le coup, j&apos;ai envie d&apos;avouer mon crime du jour : avoir aimé ce film.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/undefined_66c786bee3c46f7aacde1b41f9961762.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-8113&quot; alt=&quot;undefined_66c786bee3c46f7aacde1b41f9961762&quot; src=&quot;/assets/undefined_66c786bee3c46f7aacde1b41f9961762-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/malavita-cinema-deniro-besson-mafia-2059335-jpg_1816226.jpg&quot;&gt;&lt;img alt=&quot;malavita-cinema-deniro-besson-mafia-2059335-jpg_1816226&quot; src=&quot;/assets/malavita-cinema-deniro-besson-mafia-2059335-jpg_1816226-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/malavita-photo-51aee86c0bba9.jpg&quot;&gt;&lt;img alt=&quot;malavita-photo-51aee86c0bba9&quot; src=&quot;/assets/malavita-photo-51aee86c0bba9-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/Malavita-Photo-Dianna-Agron-John-D-Leo-Michelle-Pfeiffer-01.jpg&quot;&gt;&lt;img alt=&quot;Malavita-Photo-Dianna-Agron-John-D-Leo-Michelle-Pfeiffer-01&quot; src=&quot;/assets/Malavita-Photo-Dianna-Agron-John-D-Leo-Michelle-Pfeiffer-01-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/malavita-luc-besson-critique-film-robert-de-niro-tommy-lee-jones-europacorp.jpg&quot;&gt;&lt;img alt=&quot;Film Title:  The Family&quot; src=&quot;/assets/malavita-luc-besson-critique-film-robert-de-niro-tommy-lee-jones-europacorp-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Loin du gros spectacle Hollywoodien, ce film, planté dans un décors de Normandie, respire la vie à la campagne, loin de la folie de la ville, mais surtout de la folie mafieuse. Puis l&apos;on se rappelle qu&apos;une famille, c&apos;est avant tout une réunion de membres, et que dire sur ceux de la famille Blakes !&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Certes, le film ne rentrera jamais au panthéon du 7e art comme son aïeul Le Parrain. Pour autant, il est rafraichissant, plus encore que le fût Mafia Blues que l&apos;on sentait poussif et forcé. Là tout semble si naturel pour cette famille. Allez voir cette famille et surtout, souvenez-vous : respectez la Famille !&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/Malavita-movie-Poster-malaysia-large.jpg&quot;&gt;&lt;img class=&quot;size-medium wp-image-8107 aligncenter&quot; alt=&quot;Malavita movie Poster malaysia large&quot; src=&quot;/assets/Malavita-movie-Poster-malaysia-large-207x300.jpg&quot; width=&quot;207&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Neuf mois ferme : allez tout droit en prison ... ou pas</title>
      <link href="https://francois.aichelbaum.com/2013/10/18/neuf-mois-ferme-allez-tout-droit-en-prison-ou-pas" />
      <updated>2013-10-18T16:48:37+02:00</updated>
      <id>https://francois.aichelbaum.com/2013/10/18/neuf-mois-ferme-allez-tout-droit-en-prison-ou-pas</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/neuf-mois-ferme.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-8137&quot; alt=&quot;neuf-mois-ferme&quot; src=&quot;/assets/neuf-mois-ferme-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Quand on pense à Dupontel, on pense à un personnage déjanté. Quand on pense à Dupontel en tant que réalisateur, on pense à la première grosse claque reçue : Bernie. Prenez Bernie, rendez-le presque intelligent, dans un univers plus propret et vous obtenez neuf mois ferme. En tout cas, c&apos;est ainsi que j&apos;ai pressenti ce film avant de pénétrer dans une salle obscure.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ariane, juge bobo, coincée, persuadée que les hommes ne servent à rien, ne vit que pour et par son boulot. Elle en fait trop. Ses collègues le savent et la retrouve logiquement à son bureau alors que tout le monde fête la St Sylvestre dans le Grand Hall. Traînée sur les lieux de la débauche, elle est contrainte de rentrer dans le moule et de boire plus que raison. Voilà son crime : avoir céder et voulu faire comme les autres.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[video]http://www.youtube.com/watch?v=YFJ1XAZh2OI[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Six mois plus tard, malade, elle se rend compte qu&apos;elle est enceinte. Et voici que notre juge décide de détourner les moyens légaux mis à sa disposition pour son propre bénéfice : mener une petite enquête pour trouver le père de sa progéniture. Malheureusement pour elle, le père est &lt;del&gt;Bernie&lt;/del&gt;, pardon, Bob Nolan. Ce tôlard multi-récidiviste, soucieux de prouver son innocence dans une autre histoire abracadabrantesque, propose un échange de bon procéder à notre juge.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/9+MOIS+FERME+PHOTO5.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-8143&quot; alt=&quot;9+MOIS+FERME+PHOTO5&quot; src=&quot;/assets/9+MOIS+FERME+PHOTO5-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/hqdefault.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-8146&quot; alt=&quot;hqdefault&quot; src=&quot;/assets/hqdefault-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/160x120-nIw.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-8149&quot; alt=&quot;160x120-nIw&quot; src=&quot;/assets/160x120-nIw-150x120.jpg&quot; width=&quot;150&quot; height=&quot;120&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Et c&apos;est alors parti pour 1h20 de délire à la Dupontel. Impossible de garder son sérieux plus de 30 secondes. Les rares fois où l&apos;on croit pouvoir, c&apos;est simplement pour rire de plus belle. Je ne saurais dire que ceci : &quot;Merci Albert pour la séance d&apos;abdos, ca fait du bien avec le popcorn&quot;. Un film rafraichissant où même la plus fervente supporter du &quot;pas besoin des hommes&quot; ne restera pas indifférente à notre cher Albert.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Par contre, petite question, Albert : vous en avez déjà parler à un psy de votre soucis avec votre mère ? Parce qu&apos;entre le vide-ordure et le four, les mères que vous dépeigner ont de gros soucis avec leur progéniture.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/9-mois-ferme-affiche.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-8152&quot; alt=&quot;9-mois-ferme-affiche&quot; src=&quot;/assets/9-mois-ferme-affiche-211x300.jpg&quot; width=&quot;211&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>River Café : un repas à la mer !</title>
      <link href="https://francois.aichelbaum.com/2013/10/18/river-cafe-un-repas-la-mer" />
      <updated>2013-10-18T11:15:11+02:00</updated>
      <id>https://francois.aichelbaum.com/2013/10/18/river-cafe-un-repas-la-mer</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/logorouge2012.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-8071&quot; alt=&quot;River CAfé&quot; src=&quot;/assets/logorouge2012-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Enfin pas à la mer, mais sur la Seine en tout cas. Pour ceux qui ne connaissent pas, le River Café est un restaurant installé sur une péniche sur les quais d&apos;Issy-les-Moulineaux. Cadre luxe, service élégant, une partie de la péniche beigne dans une musique jazzy live. Tout les ingrédients semblent réunis pour passer une excellente soirée. Retour sur un repas d&apos;affaire au &lt;a href=&quot;https://maps.google.fr/maps?f=q&amp;amp;source=s_q&amp;amp;hl=fr&amp;amp;geocode=&amp;amp;q=146,+quai+de+la+Bataille+Stalingrad+92130+Issy-les-Moulineaux&amp;amp;aq=&amp;amp;sll=49.369262,0.934342&amp;amp;sspn=3.01207,5.817261&amp;amp;vpsrc=0&amp;amp;ie=UTF8&amp;amp;hq=146,+quai+de+la+Bataille+Stalingrad+92130+Issy-les-Moulineaux&amp;amp;hnear=&amp;amp;radius=15000&amp;amp;t=m&amp;amp;z=13&amp;amp;iwloc=A&amp;amp;cid=13642224695209874177&quot;&gt;River Café&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On débute avec une mauvaise surprise à l&apos;arrivée alors que nous avions réservé via le site de La Fourchette pour un dîner le vendredi soir. On nous annonce que les réservations via La Fourchette donnent droit à une promotion (traduire : une salle sans concert) et qu&apos;il faut les appeler pour réserver une table avec concert. J&apos;ai beau lire et relire &lt;a href=&quot;http://www.lafourchette.com/restaurant/river-cafe/4376#restaurant_reservation&quot;&gt;la page sur le site de réservation&lt;/a&gt;, il est bien possible de réserver directement en ligne pour une table avec concert. Peu honnête et le &quot;on va vous prévenir dès qu&apos;une table se libèrera&quot; alors que la salle n&apos;est pas remplie passe moyennement  (et cet engagement ne sera jamais respecté). Bref, on démarre sur une note malhonnête de la part du maître d&apos;hôtel.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On est donc quatre pour un repas d&apos;affaire mais je vais me focaliser sur ma part du diner. En entrée, des ravioles au foie gras accompagné de cèpes poêlés. Pour avoir pu manger cette entrée dans bons nombres de restaurant, la critique et la comparaison est aisée. De même, il est clairement définit que les champignons ont un goût prononcé qui noie facilement celui du foie gras. Malheureusement, ici on nous rappellent très vite cette règle : les ravioles n&apos;ont que des miettes de foie gras (donc aucun goût à sentir) et le tout baigne dans une soupe aux champignons (je croyais que c&apos;était l&apos;accompagnement). On est loin de la qualité énoncé. Petite aparté, un collègue a pris une terrine des champignons ... et a eu une bonne indigestion pour tout le WE. De là à dire que certains produits sont peu frais et qu&apos;il faut s&apos;en débarrasser au plus vite en augmentant les quantités par rapport au reste, il n&apos;y a qu&apos;un pas.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/01843809_PVI_0001_HOME.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-8074&quot; alt=&quot;01843809_PVI_0001_HOME&quot; src=&quot;/assets/01843809_PVI_0001_HOME-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/image.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-8077&quot; alt=&quot;image&quot; src=&quot;/assets/image-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/photo-restaurant-River-Cafe-199-163-2.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-8080&quot; alt=&quot;photo-restaurant-River-Cafe-199-163-2&quot; src=&quot;/assets/photo-restaurant-River-Cafe-199-163-2-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le plat, est plus simple ne se rappelle à mon bon souvenir que par les frites maison qui l&apos;accompagnait. La tartare choisi était déjà préparé, peu épicé, sans oeuf. Certes la viande était fraiche (encore heureux sur un tartare) mais le goût était relativement absent.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;La fin du repas a été marquée par le choix quasi unanime d&apos;un Paris-Brest au Nutella. Ce dessert riche sait rester léger. On l&apos;apprécie d&apos;autant plus en tout fin de soirée avant de devoir reprendre la route. Un vrai régal qui relève le niveau global de cette péniche.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Quand je lis les commentaires sur les différentes sites pour ce restaurant, je me dis que beaucoup se laisse éblouir par les artifices mis en oeuvres à travers la décoration (luxe), le service (pro) et les plats (bien présentés). Sûrement que la musique Jazz réhausse également le cadre. Cependant, la qualité n&apos;est vraiment pas au rendez-vous, la vue est absente, et bien des brasserie parisienne font bien mieux à tous les niveaux et à un prix bien moindre. Ce n&apos;est pas une péniche que je recommanderais.&lt;/p&gt;
&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>T.S. Spivet : un oisillon prend son envol</title>
      <link href="https://francois.aichelbaum.com/2013/10/16/t-s-spivet-un-oisillon-prend-son-envol" />
      <updated>2013-10-16T11:39:33+02:00</updated>
      <id>https://francois.aichelbaum.com/2013/10/16/t-s-spivet-un-oisillon-prend-son-envol</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/t.s-pivet-jeunet-bonham-carter.gif&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-8095&quot; alt=&quot;t.s-pivet-jeunet-bonham-carter&quot; src=&quot;/assets/t.s-pivet-jeunet-bonham-carter-150x150.gif&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Avec son titre français à rallonge (bien que l&apos;original ne soit pas si court), &lt;em&gt;L&apos;extravagant voyage du jeune et prodigieux T.S. Spivet&lt;/em&gt; annonce un voyage initiatique intéressant. On hésite à avoir un voyage fantastique mais la bande annonce nous rappelle que le voyage est extravagant et que la force du film est dans son jeune acteur.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le jeune T.S. Spivet, petit garçon de 12 ans perdu dans sa famille, entre des parents trop pris par leurs activités à la ferme, et une soeur superficielle qui le dénigre en permanence, décide de fuguer à l&apos;occasion d&apos;un quiproquo qui le mènera à Washington, D.C. pour une remise de prix scientifique.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[video]http://www.youtube.com/watch?v=aZe7i1Ty5f4[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Quand je lis Jean-Pierre Jeunet, je pense à du très bon (&lt;a href=&quot;http://www.youtube.com/watch?v=H5GxLFdUC6g&quot;&gt;La cité des enfants perdus&lt;/a&gt;) et à du très mauvais (&lt;a href=&quot;http://www.youtube.com/watch?v=aip3836VtZ0&quot;&gt;Le fabuleux destin d&apos;Amélie Poulin&lt;/a&gt; - bah oui). Du coup, je ne sais trop à quoi m&apos;attendre. Mais bon, le synopsis m&apos;intrigue tout autant que la bande annonce alors j&apos;y vais.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Démarre alors le voyage initiatique et poétique du jeune T.S.. Et c&apos;est avec plaisir qu&apos;on l&apos;accompagne dans son périple à travers l&apos;Amérique, tel le vagabond caché dans son train de marchandise. T.S., c&apos;est ce genre de petit garçon qui ne se sent pas à sa place dans son Montana natal et qui passe son temps à analyser son monde, le comprendre, et l&apos;imaginer pour pouvoir fuir son quotidien.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Touchant dans le jeu du petit, l&apos;histoire l&apos;est tout autant et on vibre pour lui quand il nous raconte son quotidien et le passé de son frère jumeau, très différent de lui. On s&apos;imagine l&apos;accompagnant durant son périple, asseyant de l&apos;aider dans l&apos;adversité. Des personnages hauts en couleurs parsèment également la route du jeune T.S..&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Malheureusement, le film se veut léger et finit de manière trop catapultée. L&apos;envie de Jeunet d&apos;en finir pour ne pas avoir un film trop long se fait sentir. Les derniers évènements se précipitent à une vitesse où le film en devient presque indigeste alors que jusque là on se délectait du récit. La poésie jusque lors enivrante laisse sa place à un mélange entre plaisir et stupeur. Un travail bâclé sur une histoire et une mise en scène magnifique.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/carte-postale-spivet-1.jpg&quot;&gt;&lt;img class=&quot;size-large wp-image-8092 aligncenter&quot; alt=&quot;carte postale spivet-1&quot; src=&quot;/assets/carte-postale-spivet-1-1024x687.jpg&quot; width=&quot;584&quot; height=&quot;391&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Judgement Day - Ash of Sound</title>
      <link href="https://francois.aichelbaum.com/2013/09/30/judgement-day-ash-sound" />
      <updated>2013-09-30T17:10:25+02:00</updated>
      <id>https://francois.aichelbaum.com/2013/09/30/judgement-day-ash-sound</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/11/a27c573829ec10ac82497cfbb9c8c872.jpeg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-8161&quot; alt=&quot;a27c573829ec10ac82497cfbb9c8c872&quot; src=&quot;/assets/a27c573829ec10ac82497cfbb9c8c872-150x150.jpeg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Pour ceux qui connaissent ce blog depuis assez longtemps, vous savez que je suis quelques artistes autant que je le peux. Les &lt;a href=&quot;http://www.ashofsound.fr/&quot;&gt;Ash of Sound&lt;/a&gt; font parti de ces groupes que je prend plaisir à écouter régulièrement. Ils sont également à l&apos;origine de la &lt;a href=&quot;http://francois.aichelbaum.com/artistes-de-la-webradio-2/rock/ash-of-sound/&quot;&gt;webradio&lt;/a&gt; que j&apos;avais mis en place ici (désactivée pour le moment). A l&apos;occasion de l&apos;ouverture de leur site, ils avaient profité pour mettre en ligne leur nouveau single : Judgement Day.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Jour du jugement donc à travers ce billet de la nouvelle affiche que tiennent les Ash. Ok j&apos;ai un peu traîné (comme pour mes autres billets dont je rattrape le retard aujourd&apos;hui), mais toute bonne chose sait se faire attendre, comme ce clip sur fond d&apos;Hitman :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[video]http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=5Gi3NNZuSpc[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Quand j&apos;ai découvert le nouveau clip, j&apos;ai écouté... plus d&apos;une fois... et mes réactions furent assez claires et directes (dans l&apos;ordre) :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;tiens un peu d&apos;électro ?&lt;/li&gt;
&lt;li&gt;tiens le clip a des airs de Money for Nothing ?&lt;/li&gt;
&lt;li&gt;hmmm en fait non, c&apos;est plus dans le style (sonorité/voix) d&apos;un U2 de la fin des années 90&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Puis je me suis laissé porter par le son, sans les images ... puis par le son avec les images... J&apos;accroche vraiment au nouveau style que l&apos;électro leur apporte, grâce à l&apos;intégration de Lionel dans le groupe. Vraiment un plaisir d&apos;écouter ce groupe en boucle.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Bon, par contre les gars, le logo à la Avenger, ca le fait moyen. J&apos;ai beau être fan, là non. Mais bon, je suis un râleur-né !&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>L&amp;#039;Oga : voyage gustatif dans le 11e</title>
      <link href="https://francois.aichelbaum.com/2013/09/07/loga-voyage-gustatif-dans-le-11e" />
      <updated>2013-09-07T09:33:20+02:00</updated>
      <id>https://francois.aichelbaum.com/2013/09/07/loga-voyage-gustatif-dans-le-11e</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/09/restaurant-paris-l-oga-235_1.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-8026&quot; alt=&quot;restaurant-paris-l-oga-235_1&quot; src=&quot;/assets/restaurant-paris-l-oga-235_1-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Ce vendredi, plusieurs choses à fêter. Du coup, on cherche un restaurant totalement atypique pour le cadre et pour la nourriture. Nous jettons notre dévolu sur &lt;a href=&quot;https://maps.google.fr/maps?ie=UTF-8&amp;amp;gl=fr&amp;amp;daddr=82+Rue+Jean-Pierre+Timbaud,+75011+Paris&amp;amp;panel=1&amp;amp;f=d&amp;amp;fb=1&amp;amp;dirflg=d&amp;amp;geocode=0,48.867437,2.376660&amp;amp;cid=0,0,11808670744540967106&amp;amp;hq=L&apos;oga&quot;&gt;L&apos;Oga&lt;/a&gt;, un restaurant dans le 11&lt;sup&gt;e&lt;/sup&gt;. Le restaurant semble spécialisé dans les brunch (assez honéreux pour le quartier) mais propose également une carte pour le soir assez surprenante. En effet, on y parle de viande de crocodile, de zèbre, ...&lt;/p&gt;
&lt;p&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Réservation faite, il s&apos;avère, en arrivant bien plus tôt qu&apos;il y avait de la place. On demande pour pouvoir déjeuner plus tôt, grand sourire du serveur qui nous place directement. Et là, nous découvrons le cadre. Un mélange entre du Rainforest et du baroque. On ne sait pas trop où on est. L&apos;éclairage faible est propice aux diners aux chandelles ... déjà allumées sur les tables. Pile ce qu&apos;il nous fallait comme cadre.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On peut alors s&apos;attaquer à la carte. Là, un rouleau façon vieille carte au trésor nous est apporté. On le déroule pour découvrir une carte pas très longue sur le choix, mais qui en dit long sur le type de nourriture. Ici, on cherche réellement le dépaysement dans la nourriture. Cependant, il faut contenter toute le monde et les moins téméraires trouveront aussi de quoi manger. Les plats sont choisis :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Entrées
&lt;ul&gt;
&lt;li&gt;Poisson tropical : un carpaccio de poisson exotique (rupture pour l&apos;occasion donc remplacé par du thon) avec du lait de coco, des épices, ...&lt;/li&gt;
&lt;li&gt;Des gambas : le secret réside dans la préparation donc ... à découvrir&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Plats
&lt;ul&gt;
&lt;li&gt;Un mi-cru de thon&lt;/li&gt;
&lt;li&gt;De la viande de crocodile à la vanille accompangée de frittes de patates douces&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Les plats se dégustent sans fin et les portions sont vraiment généreuses. Mais, tout bon repas qui se respecte s&apos;accompagne d&apos;un bon vin. La carte des vins du monde est longue et on décide de choisir un rouge d&apos;Afrique du Sud : Le Fort Simon. La carte annonce beaucoup de choses le concernant ... toutes sont validées : vanillé, fumé, fort en bouche. Au final, il accomode parfaitement le repas jusqu&apos;à l&apos;arrivée des desserts.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Une nouvelle carte, assez simple, nous est présentée. Notre choix se porte sur un trio de glaces (miel/lavande, gingembre, ...) et un cheesecake au chocolat blanc. On se disait avant le dessert que la cuisine était bonne mais là ... Tout se termine parfaitement. Un petit café de mon côté. De l&apos;autre, une tisaine d&apos;herbes fraîches (il est possible de les mélanger).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Une véritable découverte. Un véritable dépaysement. Si vous cherchez de l&apos;atypique pour un dîner romantique c&apos;est l&apos;adresse idéale. Cependant, il ne fait que frôler la perfection. Alors que le repas et le cadre sont complétés par un service irréprochable, le réveil se révélera brutale avec l&apos;arrivée de la douloureuse. 126 € pour deux. Le souvenir reste cependant plus que positif.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/09/15787.jpg&quot;&gt;&lt;img alt=&quot;15787&quot; src=&quot;/assets/15787-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/09/images-loga6.jpg&quot;&gt;&lt;img alt=&quot;images-loga6&quot; src=&quot;/assets/images-loga6-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/09/41400061.jpg&quot;&gt;&lt;img alt=&quot;41400061&quot; src=&quot;/assets/41400061-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/09/15787.jpg&quot;&gt; &lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Pacific Rim : quand Godzilla rencontre Evangelion</title>
      <link href="https://francois.aichelbaum.com/2013/07/12/pacific-rim-quand-godzilla-rencontre-evangelion" />
      <updated>2013-07-12T10:45:29+02:00</updated>
      <id>https://francois.aichelbaum.com/2013/07/12/pacific-rim-quand-godzilla-rencontre-evangelion</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/07/Pacific-Rim-02.jpg&quot;&gt;&lt;img class=&quot;alignleft  wp-image-7972&quot; alt=&quot;Pacific Rim&quot; src=&quot;/assets/Pacific-Rim-02-300x300.jpg&quot; width=&quot;180&quot; height=&quot;180&quot; /&gt;&lt;/a&gt;Il y a de ces blockbusters que l&apos;on attend car la bande-annonce fait résonner plein de souvenirs dans notre petite tête et du coup, titille notre curiosité et notre impatience. C&apos;est le cas de Pacific Rim. Pour autant certains points de la promotion me choquent. Par exemple, pourquoi diable avoir deux pilotes ? Jeudi soir, Julien de &lt;a href=&quot;http://www.golem13.fr&quot; target=&quot;_blank&quot;&gt;Golem13&lt;/a&gt; m&apos;a refilé des invit&apos; pour l&apos;avant-première au Normandie. Retour sur plus de 2h de transpiration dans la salle obscure.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=dY9wTJYLLcs[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour commencer, merci Julien, j&apos;ai pris de l&apos;avance pour une fois sur mon programme ciné ! De plus, merci UGC de ne pas avoir allumé la climatisation de la salle vu la température extérieure : on aurait pu s&apos;enrhumer bêtement.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Quand j&apos;ai vu les premières images de promotion, je me suis dit : tiens, ils font une version &lt;em&gt;Live Action&lt;/em&gt; d&apos;&lt;a href=&quot;http://www.youtube.com/watch?v=0kFhPVAhV_o&quot;&gt;Evangelion&lt;/a&gt;. Puis j&apos;ai vu les monstres : tiens, ils font un nouveau &lt;a href=&quot;http://www.youtube.com/watch?v=j0ortFzKzyo&quot;&gt;Godzilla&lt;/a&gt;. Puis la date est annoncé : été 2013. Après &lt;a href=&quot;http://francois.aichelbaum.com/la-croisiere-samuse/&quot;&gt;Battleship&lt;/a&gt; en 2012 qui fut mémorable (ou pas), ce sera donc Pacific Rim le blockbuster pour griller les neurones cet été. Il faut aussi rajouter qu&apos;avec la promotion en parallèle du nanard de chez The Asylum, &lt;a href=&quot;http://www.youtube.com/watch?v=TVpQmZmKNmo&quot;&gt;Atlantic Rim&lt;/a&gt;, il faut bien voir l&apos;original pour pouvoir d&apos;autant plus rire sur l&apos;autre.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour avoir pu apprécier le travail de Guillermo del Toro sur les &lt;a href=&quot;http://www.youtube.com/watch?v=zphI_LLGWdM&quot;&gt;Hellboy&lt;/a&gt; ou encore le &lt;a href=&quot;http://www.youtube.com/watch?v=GqHW3CyI7co&quot;&gt;Labyrinthe de Pan&lt;/a&gt;, j&apos;espère encore un travail dans le détail et la qualité avant d&apos;y aller. Et pour cela, on est servi. Un véritable feu d&apos;artifice d&apos;animations et de couleurs. C&apos;est propre. C&apos;est fluide. C&apos;est beau. Les yeux pétillent. Par contre, la 3D est à bannir car elle &lt;em&gt;floute&lt;/em&gt; l&apos;action (en retirant les lunettes, plus de flou). D&apos;ailleurs, sur ce dernier point, il ne faut pas que Guillermo del Toro ne voulait pas de la 3D avant qu&apos;un gros chèque ne lui soit présenté.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/07/pacific-rim-jaegers.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7984&quot; alt=&quot;pacific-rim-jaegers&quot; src=&quot;/assets/pacific-rim-jaegers-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/07/pacificrim_movie_trailer2_cap8.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7990&quot; alt=&quot;pacificrim_movie_trailer2_cap8&quot; src=&quot;/assets/pacificrim_movie_trailer2_cap8-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/07/Pacific_Rim_Main_Trailer_32.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7987&quot; alt=&quot;Pacific_Rim_Main_Trailer_32&quot; src=&quot;/assets/Pacific_Rim_Main_Trailer_32-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/07/pacific-rim-infographic.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7981&quot; alt=&quot;pacific-rim-infographic&quot; src=&quot;/assets/pacific-rim-infographic-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/07/Pacific-Rim-final-trailer-bande-annonce-finale-image-Guillermo-Del-Toro-Warner.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7978&quot; alt=&quot;Pacific-Rim-final-trailer-bande-annonce-finale-image-Guillermo-Del-Toro-Warner&quot; src=&quot;/assets/Pacific-Rim-final-trailer-bande-annonce-finale-image-Guillermo-Del-Toro-Warner-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/07/1229446_pacific-rim.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7963&quot; alt=&quot;1229446_pacific-rim&quot; src=&quot;/assets/1229446_pacific-rim-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/07/Jaeger_sketches_pacific_rim.jpeg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7966&quot; alt=&quot;Jaeger_sketches_pacific_rim&quot; src=&quot;/assets/Jaeger_sketches_pacific_rim-150x150.jpeg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/07/pacific-rim-17-07-2013-10-g.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7969&quot; alt=&quot;pacific-rim-17-07-2013-10-g&quot; src=&quot;/assets/pacific-rim-17-07-2013-10-g-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le scénario est à la limite d&apos;un film de série Z mais Guillermo a su le rendre suffisamment sexy pour nous garder accroché. Pour autant, tout reste excessivement téléscopé. Un peu dommage. Le point le plus intrigant et qui reste le plus comique est le pilotage des Jaeger (les robots). Pourquoi diable avoir mis deux pilotes qui doivent se connecter (on dit &quot;dériver&quot;) mentalement pour pouvoir piloter ? La seule raison valable que je vois, c&apos;est le clin d&apos;oeil aux bons vieux &lt;a href=&quot;http://www.youtube.com/watch?v=JoMuo-Om0sQ&quot;&gt;Sentai&lt;/a&gt;. Quelques autres scènes risibles font que le film fleurte dangereusement avec les nanards. Attention, M. del Toro !&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Des moments d&apos;anthologie remonte un peu le niveau et font appel à l&apos;inconscient Geek du public. C&apos;est le cas de l&apos;arrivée d&apos;Hannibal Chow (joué par Ron Perlman) qui t&apos;explique que tout en lui est faux : du nom au costume. Pour autant, il ne faut pas se moquer de lui car il tient à son image ... et à ses chaussures !&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le film tient au final son engagement : nous en mettre plein la vue, narguer les nanards sans en être un, et nous griller les quelques neurones qui auraient survécus à la chaleur. Pour autant, toujours pas le film de SF de la décennie.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/07/pacific_rim_affiche_03.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-7996&quot; alt=&quot;Pacific Rim&quot; src=&quot;/assets/pacific_rim_affiche_03-202x300.jpg&quot; width=&quot;202&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Copenhague</title>
      <link href="https://francois.aichelbaum.com/2013/05/12/copenhague" />
      <updated>2013-05-12T10:00:36+02:00</updated>
      <id>https://francois.aichelbaum.com/2013/05/12/copenhague</id>
      <content type="html">&lt;p&gt;[gallery ids=&quot;10362,10361,10360,10359,10358,10357,10356,10355,10354,10353,10352,10351,10350,10349,10348,10347,10346,10345,10344,10343,10342,10341,10340,10339,10338,10337,10336,10335,10334&quot;]&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Fjords norvégiens</title>
      <link href="https://francois.aichelbaum.com/2013/05/04/fjords-norvegiens" />
      <updated>2013-05-04T10:54:30+02:00</updated>
      <id>https://francois.aichelbaum.com/2013/05/04/fjords-norvegiens</id>
      <content type="html">&lt;p&gt;[gallery ids=&quot;9545,9546,9547,9548,9549,9550,9551,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9581,9582,9583,9584,9585,9586,9587,9588,9589,9590,9591,9592,9593,9594,9595,9596,9597,9598,9599,9600,9601,9602,9603,9604,9605,9606,9607,9608,9609,9610,9611,9612,9613,9614,9615,9616,9617,9618,9619,9620,9621,9622,9623,9624,9625,9626,9627,9628,9629,9630,9631,9632,9633,9634,9635,9636,9637,9638,9639,9640,9641,9642,9643,9644,9645,9646,9647,9648,9649,9650,9651,9652,9653,9654,9655,9656,9657,9658,9659,9660,9661,9662,9663,9664,9665,9666,9667,9668,9669,9670,9671,9672,9673,9674,9675,9676,9677,9678,9679,9680,9681,9682,9683,9684,9685,9688,9691,9694,9696,9698,9702,9705,9708,9711,9715,9718,9721,9725,9729,9733,9736,9739,9742,9745,9749,9753,9755,9759,9762,9765,9769,9773,9776,9779,9781,9784,9788,9791,9793,9796,9798,9800,9802,9804,9806,9808,9810,9811,9813,9815,9817,9819,9820,9822,9824,9827,9829,9831,9833,9835,9837,9840,9842,9845,9847,9849,9851,9853,9855,9857,9859,9861,9864,9866,9868,9870,9872,9874,9876,9877,9879,9881,9883,9885,9887,9889,9891,9893,9895,9896,9898,9900,9901,9903,9904,9906,9907,9909,9910,9912,9913,9915,9917,9918,9919,9921,9922,9924,9926,9927,9929,9930,9932,9933,9935,9937,9938,9940,9942,9944,9946,9948,9950,9951,9954,9955,9957,9958,9960,9961,9963,9964,9966,9968,9969,9971,9972,9974,9976,9978,9981,9982,9984,9985,9987,9989,9990,9993,9995,9997,9999,10001,10003,10005,10007,10009,10011,10013,10015,10017,10019,10020,10022,10024,10026,10028,10030,10033,10035,10037,10039,10042,10044,10047,10049,10052,10054,10056,10058,10061,10063,10065,10067,10069,10071,10073,10075,10077,10080,10082,10085,10087,10089,10091,10093,10095,10097,10099,10101,10103,10105,10107,10109,10111,10114,10115,10118,10120,10122,10125,10127,10129,10131,10134,10137,10140,10142,10145,10147,10149,10151,10153,10156,10159,10162,10164,10167,10169,10171,10173,10176,10179,10182,10183,10186,10189,10191,10193,10195,10196,10198,10201,10203,10205,10207,10209,10210,10212,10215,10217,10219,10221,10223,10226,10228,10231,10233,10235&quot;]&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Warm bodies : Roméo et Juliette dans Zombieland</title>
      <link href="https://francois.aichelbaum.com/2013/03/28/warm-bodies-romeo-et-juliette-dans-zombieland" />
      <updated>2013-03-28T10:00:27+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/03/28/warm-bodies-romeo-et-juliette-dans-zombieland</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/Warm-Bodies_portrait_w858.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-7894&quot; alt=&quot;Warm Bodies&quot; src=&quot;/assets/Warm-Bodies_portrait_w858-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Alors que la mode hollywoodienne est au mauvais remake, certains films donnent dans la création ou l&apos;adaptation de livres. C&apos;est le cas de Warm Bodies qui reprend la nouvelle d&apos;Isaac Marion. On reprend donc l&apos;éternel fin du monde qui déclenche le réveil des morts et on le vit autrement. Entamée du point de vue des zombies, l&apos;histoire se transforme vite en Roméo et Juliette version horreur comique. Dressez-vous. Soyez raides. Jouer-la ... zombie !&lt;!--more--&gt;&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Un zombie peut en cacher un autre&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Quand on parle zombie, on pense d&apos;abord aux oeuvres du Maître (&lt;a href=&quot;http://www.allocine.fr/personne/fichepersonne_gen_cpersonne=5409.html&quot;&gt;Georges A. Romero&lt;/a&gt;) puis aux petites perles (&lt;a href=&quot;http://www.youtube.com/watch?v=NPbsp_nFj7M&quot;&gt;Zombieland&lt;/a&gt; ou &lt;a href=&quot;http://www.youtube.com/watch?v=5I6M_C9XUE0&quot;&gt;Shawn of the Dead&lt;/a&gt;). Bien que ces derniers soient volontairement comiques, pour se démarquer de la forte vague de films zombifiés, le point de vue est toujours le même. Le zombie est mort. Le zombie est con. Le zombie est inutile. Le zombie a faim. Mais si ce n&apos;était pas le cas ?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=CUDdGX78_6E[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Alors pour toute justification sur la présence des zombies, vous n&apos;aurez le droit qu&apos;à un simple zapping express avec des séquences non sans rappeler d&apos;autres film. R(omeo) est donc un zombie. Il est conscient mais n&apos;a plus de souvenir. Il cherche à survivre dans ce que la vie lui a imposé : être un mangeur de chair. Il nous présente alors ses habitudes, ses balades entre potes zombifiés, ... leur quête à la nourriture. On notera rapidement le titre Québécois du film : &lt;em&gt;Zombie malgré lui&lt;/em&gt;. Mais que se passerait-il si le destin mettait sur sa route une jeune petite blonde charmante ?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Julie(tte) est une humaine tout ce qu&apos;il y a de plus vivante. Elle vit dans la dernière colonie humaine, protégée par une immense enceinte entourant un centre ville américain. Elle fait partie d&apos;une équipe expéditionnaire, chargée de trouver des ravitaillements (nourriture, médicaments, ...). Perdue dans sa relation avec son petit ami, que se passerait-il si le destin la mettait sur la route d&apos;un jeune zombie en mal de vie ?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/130203-warm-bodies-600-1359923802.jpg&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-7903 alignnone&quot; alt=&quot;Warm Bodies&quot; src=&quot;/assets/130203-warm-bodies-600-1359923802-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/20476531.jpg-r_640_600-b_1_D6D6D6-f_jpg-q_x-xxyxx.jpg&quot;&gt;&lt;img class=&quot;alignnone&quot; alt=&quot;Warm Bodies&quot; src=&quot;/assets/20476531.jpg-r_640_600-b_1_D6D6D6-f_jpg-q_x-xxyxx-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/nicholas-hoult-warm-bodies.jpg&quot;&gt;&lt;img class=&quot;alignnone&quot; alt=&quot;Warm Bodies&quot; src=&quot;/assets/nicholas-hoult-warm-bodies-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/WarmBodies201312_zpsfdf9206e.jpg&quot;&gt;&lt;img class=&quot;alignnone&quot; alt=&quot;Warm Bodies&quot; src=&quot;/assets/WarmBodies201312_zpsfdf9206e-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/Warm-Bodies-121213-02.jpg&quot;&gt;&lt;img class=&quot;alignnone&quot; alt=&quot;Warm Bodies&quot; src=&quot;/assets/Warm-Bodies-121213-02-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/Warm-Bodies-image-3.jpg&quot;&gt;&lt;img class=&quot;alignnone&quot; alt=&quot;Warm Bodies&quot; src=&quot;/assets/Warm-Bodies-image-3-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt; &lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/warm-bodies-poster.jpg&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-7921 alignnone&quot; alt=&quot;Warm Bodies&quot; src=&quot;/assets/warm-bodies-poster-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le destin fait son travail. Les chemins se croisent. Les regards se croisent. R mange le petit copain de Julie et apprécie particulièrement son cerveau. C&apos;est un met tellement délicat qui en plus, permet de s&apos;approprier les souvenirs de la victime. Tout est fait pour que les deux puissent tomber amoureux. Là, le cadavre peut alors se réchauffer. Malheureusement, la famille de Julie est vivante et celle de R n&apos;est que zombie. Nos Roméo &amp;amp; Juliette vont donc apprendre à se connaître, à s&apos;aimer ... et à se sauver.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le film est très léger et alterne petites erreurs du scénario et travail fin sur les détails. Par exemple, on appréciera le travail des nuances de couleur de peau de R qui évoluent tout au long du film. Ce n&apos;est pas sans rappeler le travail de nuance des tenues de Rose Da Silva dans le &lt;a href=&quot;http://www.youtube.com/watch?v=8xw434qnAyg&quot;&gt;Silent Hill&lt;/a&gt; de Christophe Gans.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Véritable hymne à la vie et à l&apos;amour, on ressort de ce film &lt;em&gt;exhumé&lt;/em&gt;. On cherche alors à communiquer, à échanger, à exprimer nos sentiments (référence à la bande annonce). J&apos;hésite à le classer à côté de &lt;a href=&quot;http://www.youtube.com/watch?v=GrMHK-bo9qM&quot;&gt;Romeo+Juliette &lt;/a&gt;ou avec les chefs d&apos;oeuvre zombifiés. En tout cas, à ranger loin des nanards.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/zombie_parade_Warm-Bodies.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-7933&quot; alt=&quot;Warm Bodies&quot; src=&quot;/assets/zombie_parade_Warm-Bodies-300x224.jpg&quot; width=&quot;300&quot; height=&quot;224&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Création d&amp;#039;un cluster MySQL haute disponibilité</title>
      <link href="https://francois.aichelbaum.com/2013/03/13/creation-dun-cluster-mysql-haute-disponibilite" />
      <updated>2013-03-13T19:54:26+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/03/13/creation-dun-cluster-mysql-haute-disponibilite</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/mysql1.png&quot;&gt;&lt;img class=&quot;alignleft&quot; alt=&quot;MySQL&quot; src=&quot;/assets/mysql1-150x150.png&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;L&apos;un des problèmes récurrents des architectures mutualisés (ou non) utilisant du MySQL est la disponibilité mais aussi la performance de ce dernier. Quelques habitudes existent, chacun avec leurs lots d&apos;avantages et inconvénients. Je vais tenter de vous proposer une mise en oeuvre qui me semble être un bon compromis entre les différents points à prendre en compte : haute disponibilité, performance, type de table MySQL géré, compétences en interne, coût, facilité de déploiement.&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/mysql1.png&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;MySQL en haute disponibilité&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;MySQL, beaucoup le critique à tord ou à raison. Le premier à le faire ? Michael Widenius, fondateur de MySQL qui s&apos;affirme avec &lt;a href=&quot;http://fr.wikipedia.org/wiki/MariaDB&quot;&gt;MariaDB&lt;/a&gt;. De manière générale, on notera certaines fonctionnalités (voire performances) en retrait par rapport à d&apos;autres moteurs, que cela soit PostgreSQL, Oracle ou MSSQL. Reste que ces derniers sont cher à mettre en oeuvre et que PostgreSQL nécessite une compétence qui est bien trop rare dans nos contrées. De fait, MySQL reste quelque part une valeur sûre si l&apos;on prend le temps de travailler correctement avec : définir une bonne architecture, le superviser et l&apos;optimiser au fil du temps.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Quand on parle de haute disponibilité, je balaie d&apos;office le fonctionnement basique maître-esclave disponible nativement. En effet, il n&apos;apporte aucune haute disponibilité et le bricolage nécessaire pour inverser les rôles n&apos;est tout bonnement pas industrialisable et encore moins réaliste. Que reste-t-il alors comme solution ?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;line-height: 15px;&quot;&gt;MySQL Cluster&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;line-height: 15px;&quot;&gt;solution opensource mais un support de la part d&apos;Oracle est conseillé&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;avantage(s) : supporté par l&apos;éditeur (Oracle) ; performance&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;inconvénient(s) : un seul type de moteur de table (&lt;a href=&quot;http://dev.mysql.com/doc/mysql-cluster-excerpt/5.5/en/mysql-cluster-ndb-innodb-engines.html&quot;&gt;NDB&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Percona XtraDB
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;solution opensource qui dispose d&apos;un support mais où l&apos;on peut se débrouiller ; il s&apos;agit d&apos;une version lourdement mise à jour de MySQL (utilise la librairie Galera)&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;avantage(s) : support de l&apos;éditeur (Percona) ; extension du moteur InnoDB (renommé XtraDB) ; synchro temps réel&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;inconvénients : principalement au niveau des LOCK (mais il y a une solution embarquée pour cela) ; que InnoDB pour le moment ; les statements DDL sont encore problématiques (mais en cours de correction)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Multi Master Replication
&lt;ul&gt;
&lt;li&gt;solution opensource qui repose sur un abus d&apos;utilisation d&apos;une fonction de mysql (une instance peut être à la fois maître et esclave)&lt;/li&gt;
&lt;li&gt;avantage(s) : natif à MySQL ; tous les formats de table de MySQL (MyISAM, InnoDB, ...)&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;inconvénients : peu stable sur le long terme - lié au fonctionnement en boucle, nécessite du bricolage et l&apos;implémentation d&apos;outils tiers (par ex, &lt;a href=&quot;http://mysql-mmm.org&quot;&gt;MMM&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;InnoDB étant plutôt conseillé et apprécié par rapport à MyISAM, j&apos;ai choisi la solution de Perconna. En effet, elle me semble sur le papier très industrialisable avec des inconvénients que l&apos;on peut facilement contourner ou qui vont venir à disparaître.&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Percona XtraDB Cluster en pratique&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;L&apos;environnement utilisé est un environnement de type Prod + PRA. Le principe s&apos;applique facilement dans les autres environnements (Prod + PCA, Prod seule, ...). Il faut juste noter un impératif de PXC : il faut minimum trois noeuds.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/Cluster-MySQL.png&quot;&gt;&lt;img class=&quot;size-medium wp-image-7852 aligncenter&quot; alt=&quot;Cluster MySQL&quot; src=&quot;/assets/Cluster-MySQL-300x206.png&quot; width=&quot;300&quot; height=&quot;206&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;L&apos;intérêt dans l&apos;architecture est multiple :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;line-height: 15px;&quot;&gt;tous les noeuds communiquent ensemble&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;on voudra séparer les flux &quot;lecture/écriture&quot; des flux &quot;lecture seule&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dans ce mode, on va dispatcher des VIP par site :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PRDVIPRO - lecture seule PRD : 192.168.2.5&lt;/li&gt;
&lt;li&gt;PRDVIPRW - lecture/écriture PRD : 192.168.2.6&lt;/li&gt;
&lt;li&gt;PRAVIPRO - lecture seule PRA : 192.168.12.5&lt;/li&gt;
&lt;li&gt;PRAVIPRW - lecture/écriture PRA : 192.168.12.6&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ainsi, on va isoler les utilisateurs sur les différentes VIP. On pourra définir des super-alias qui pointent sur un site ou l&apos;autre en fonction des besoins et disponibilités. Pour répondre à ces VIP, on supposera les machines suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PRDMYSQL01 : 192.168.1.1/24 (management) + 192.168.2.1/24 (métier)&lt;/li&gt;
&lt;li&gt;PRDMYSQL02 : 192.168.1.2/24 (management) + 192.168.2.1/24 (métier)&lt;/li&gt;
&lt;li&gt;PRAMYSQL01 : 192.168.11.1/24 (management) + 192.168.12.1/24 (métier)&lt;/li&gt;
&lt;li&gt;PRAMYSQL02 : 192.168.11.2/24 (management) + 192.168.12.2/24 (métier)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;La séparation des droits (RO/RW) ne se fera pas au niveau des rôles des noeuds (côté MySQL) mais au niveau de l&apos;assignation des VIP et définitions des comptes utilisateurs. Il faut donc être attentif de ce côté.&lt;/p&gt;
&lt;h1&gt;Installation de Percona XtraDB Cluster&lt;/h1&gt;
&lt;p&gt;On commence par déployer tous les packages nécessaires&lt;/p&gt;
&lt;pre&gt;gpg --keyserver  hkp://keys.gnupg.net --recv-keys 1C4CBDCDCD2EFD2A
gpg -a --export CD2EFD2A | sudo apt-key add -
echo &amp;lt;&amp;lt; EOF &amp;gt;&amp;gt; /etc/apt/sources.list
deb http://repo.percona.com/apt squeeze main
deb-src http://repo.percona.com/apt squeeze main
EOF
apt-get update
apt-get install libnet-daemon-perl libplrpc-perl libdbi-perl libaio1 libmysqlclient18 percona-xtradb-cluster-server-5.5 percona-xtradb-cluster-client-5.5 percona-xtradb-cluster-common-5.5 percona-xtrabackup xtrabackup netcat-openbsd rsync&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On continue par la configuration du mysql. La configuration est une base pour un serveur avec 8 Go Ram et 4 coeurs. A faire évoluer donc.&lt;/p&gt;
&lt;pre&gt;echo &amp;lt;&amp;lt; EOF &amp;gt; /etc/mysql/my.cnf
[client]
port = 3306
socket = /var/run/mysqld/mysqld.sock
[mysqld_safe]
socket = /var/run/mysqld/mysqld.sock
nice = 0
[mysqld]
&lt;strong&gt;server_id=1&lt;/strong&gt;
&lt;strong&gt;wsrep_node_name=prdmysql01&lt;/strong&gt;
auto_increment_offset = 4
auto_increment_increment = 4
wsrep_provider=/usr/lib64/libgalera_smm.so
&lt;strong&gt;wsrep_cluster_address=gcomm://192.168.2.2,192.168.12.1,192.168.12.2&lt;/strong&gt;
#wsrep_cluster_address=gcomm://
wsrep_slave_threads=16
wsrep_sst_method=xtrabackup
wsrep_cluster_name=pxc
&lt;strong&gt;wsrep_sst_auth=root:secret&lt;/strong&gt;
&lt;strong&gt;wsrep_sst_receive_address=192.168.2.1:4444&lt;/strong&gt;
&lt;strong&gt;wsrep_provider_options =&quot;gmcast.listen_addr=tcp://192.168.2.1:4567; ist.recv_addr=192.168.2.1:4568;&quot;&lt;/strong&gt;
binlog_format=ROW
log_bin=mysql-bin
log_slave_updates
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
innodb_locks_unsafe_for_binlog=1
innodb_buffer_pool_size=400M
innodb_log_file_size=64M
innodb_data_file_path = ibdata1:10M:autoextend:max:128M
performance_schema
key_buffer = 1M
max_allowed_packet = 4M
table_cache = 64K
query_cache_limit = 64M
sort_buffer_size = 2M
net_buffer_length = 64K
read_buffer_size = 4M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
low_priority_updates = 1
old_passwords = 0
max_connections = 200
max_user_connections = 100
join_buffer_size = 256K
long_query_time = 2
slow-query_log_file = /var/log/mysql/mysql.slow.log
thread_cache_size = 5
query_cache_size = 0
query_cache_type = 1
tmp_table_size = 128M
max_heap_table_size = 128M
concurrent_insert = 2
delay_key_write = all
wait_timeout = 30
interactive_timeout = 30
key_buffer_size = 2G 
user = mysql
pid-file = /var/run/mysqld/mysqld.pid
socket = /var/run/mysqld/mysqld.sock
port = 3306
basedir = /usr
datadir = /var/lib/mysql
tmpdir = /tmp
skip-external-locking
bind-address = 0.0.0.0
myisam-recover = BACKUP
expire_logs_days = 10
max_binlog_size = 100M
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
[mysql]
[isamchk]
key_buffer = 16M
!includedir /etc/mysql/conf.d/
EOF
chmod 600 /etc/mysql/my.cnf&lt;/pre&gt;
&lt;p&gt;Les lignes en gras sont à adapter pour chaque serveur :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un server-id unique à chaque fois&lt;/li&gt;
&lt;li&gt;l&apos;IP métier du serveur abstente du cluster-adress&lt;/li&gt;
&lt;li&gt;le mot de passe root mysql&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;strong&gt;ATTENTION&lt;/strong&gt;&lt;/span&gt; : ne pas utiliser le même mot de passe root en mysql et sur le système&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Une fois le premier serveur mis en place, on arrête le mysql (via service ou init) sur TOUS les serveurs. Ensuite, on duplique le fichier /etc/mysql/debian.cnf et tout le contenu de /var/lib/mysql du premier vers les trois autres.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Une petite subtilité existe sur la version Debian/Ubuntu du package Percona. Au démarrage du premier node d&apos;un cluster (au sens que tout le cluster est arrêté), il faut éditer le fichier my.cnf pour commenter la ligne&lt;/p&gt;
&lt;pre&gt;wsrep_cluster_address=gcomm://IP,IP,IP&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;et décommenter la ligne&lt;/p&gt;
&lt;pre&gt;wsrep_cluster_address=gcomm://&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ensuite, on peut démarrer simplement le service sur la machine puis remodifier le fichier my.cnf. C&apos;est rébarbatif, mais il faut le savoir. Après, on n&apos;aura à le refaire qu&apos;en cas de relance complète depuis zéro du cluster.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ensuite, on va déployer quelques modifications sur les droits MySQL :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;mysql&amp;gt; GRANT ALL PRIVILEGES ON *.* TO &apos;root&apos;@&apos;192.168.2.%&apos; IDENTIFIED BY &apos;secret&apos;;
mysql&amp;gt; CREATE USER &apos;perconha&apos;@&apos;localhost&apos; IDENTIFIED BY &apos;secret&apos;;
mysql&amp;gt; FLUSH PRIVILEGES;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ceci permettra aux différents nodes de communiquer pour la synchro et de disposer d&apos;un user perconha qui n&apos;a accès qu&apos;en consultation aux variables applicatives de MySQL.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Nous n&apos;avons plus qu&apos;à démarrer les différents noeuds MySQL. Sur les versions Debian/Ubuntu, le premier démarrage pourra se faire en erreur. En effet, le script d&apos;init considère que le serveur ne démarre pas car le binaire lui renvoie une erreur. En fait d&apos;erreur, il s&apos;agit juste d&apos;un retour qui signale que le serveur est désynchro. On lui laisse le temps de bien démarrer (on peut consulter syslog pour cela) puis, à volonté, redémarrer le service une dernière fois.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le cluster est maintenant installé.&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;VIP &amp;amp; Monitoring&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour répondre au besoin de la gestion d&apos;une VIP sans outil tiers ou de load balancer, ainsi qu&apos;au monitoring complémentaire de PXC, j&apos;ai mis à disposition des scripts sur mon &lt;a href=&quot;https://github.com/faichelbaum/percona-xtradb-cluster&quot;&gt;github&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le script pour Nagios est relativement simple à utiliser :&lt;/p&gt;
&lt;pre&gt;usage: ./check_percona -H $HOSTADDRESS$ -p $PORT$ -w $ARG1$ -c $ARG2$ -t $ARG3$ \(-U $ARG4$ \(-P $ARG5$\)\)
-H hostname or IP
-p service port
-w warning in seconds for replication delay
-c critical in seconds for replication delay
-t timeout for command input
-U user if needed
-P password if needed&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Il ne nécessite que la création d&apos;un compte (comme le compte perconha) pour permettre à Nagios de s&apos;y connecter. Attention, il vient en complément du check_mysql disponible de base.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Concernant la VIP, le script va vérifier l&apos;état d&apos;un noeud dans le cluster (mysql disponible, intégré au cluster, synchro avec le cluster) pour assigner les VIP à la machine. Les VIP sont séparés niveau logique entre une pour l&apos;écriture et l&apos;autre pour la lecture. Pour définir le &quot;rôle&quot; d&apos;un noeud, il suffit de créer des fichiers vide &quot;RO&quot; (lecture seule) ou &quot;RW&quot; (lecture/écriture) dans le dossier /etc/perconHa/. une fois placé en cron, le script fera le reste.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Il vérifie bien évidemment qu&apos;une IP n&apos;est pas déjà utilisée avant de l&apos;assigner. Notez qu&apos;il faut éditer le fichier pour y définir les informations relatives à la connexion à MySQL, les VIP ainsi que l&apos;interface métier.&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Conclusion&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On a donc pu créer rapidement un cluster MySQL autonome, avec une haute disponibilité, une performance certaine mais liée au &lt;em&gt;fine tuning&lt;/em&gt; du MySQL (qui se fait tout au long de la vie du cluster) et souple. La base présentée est simple, viable mais reste une base. La partie VIP par exemple serait mieux gérer via un load balancer qui serait plus réactif que la cron. Mais on peut réutiliser le script pour se faire. De la même manière, on pourrait superviser de manière plus fine la consommation en ressource du cluster.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>11.6 : j&amp;#039;aurais dit 2 de tension</title>
      <link href="https://francois.aichelbaum.com/2013/03/12/11-6-jaurais-dit-2-de-tension" />
      <updated>2013-03-12T15:38:58+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/03/12/11-6-jaurais-dit-2-de-tension</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/article_000_Par2879110.jpg&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-7807 alignleft&quot; alt=&quot;Toni Musulin&quot; src=&quot;/assets/article_000_Par2879110-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Il y a de ces faits divers qui nous interpellent quand on les lit. C&apos;est le cas du vol de Toni Musulin. Pour rappel, il a délesté son employer (un convoyeur de fonds) de près de 11,6 millions d&apos;euros le 5 novembre 2009. Après une chasse à l&apos;homme, il s&apos;est naturellement rendu à la police et a été inculpé ... pour tentative d&apos;escroquerie à l&apos;assurance dans une autre affaire. Récit cinématographique du plus grand hold-up de l&apos;histoire, n&apos;ayant nécessité ni arme, ni blessé, ni otage. D&apos;office, ne vous attendez pas à une tension insupportablement forte, ce n&apos;est pas le nouvel Olivier Marchal.&lt;!--more--&gt;&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Toni a trop de tensions&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;A l&apos;occasion d&apos;un Label du spectateur UGC, j&apos;ai pu découvrir avec un peu d&apos;avance le film &lt;em&gt;11.6&lt;/em&gt; adaptant sur grand écran les aventures de Toni.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=8Pwqv7jHv8E[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le fait divers était intéressant. Bien préparé, c&apos;est comme à l&apos;habitude le côté humain qui a failli. Toni avait préparé le fait de ne pas pouvoir récupérer tout l&apos;argent stocké dans le garage et en a planqué une partie (2,5 millions) ailleurs. Pour le moment, ce reste d&apos;argent reste introuvé. L&apos;affaire avait eu pas mal d&apos;écho du fait de la méthode mais aussi des conséquences, principalement pour son ex-employeur. Un vrai pieds de nez à une direction qui se croyait protégée. Cependant, à tord, beaucoup lui ont donné une pseudo renommée de &lt;a href=&quot;http://www.youtube.com/watch?v=344nPl_RlIc&quot;&gt;Robin des Bois&lt;/a&gt;. Vraiment mal venu.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/20484319.jpg-r_640_600-b_1_D6D6D6-f_jpg-q_x-xxyxx.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7822&quot; alt=&quot;20484319.jpg-r_640_600-b_1_D6D6D6-f_jpg-q_x-xxyxx&quot; src=&quot;/assets/20484319.jpg-r_640_600-b_1_D6D6D6-f_jpg-q_x-xxyxx-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/11-6-frana-ois-cluzet-2611.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7819&quot; alt=&quot;11-6-frana-ois-cluzet-2611&quot; src=&quot;/assets/11-6-frana-ois-cluzet-2611-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/11-6.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7816&quot; alt=&quot;11-6&quot; src=&quot;/assets/11-6-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Du coup, quand la com&apos; a commencé pour ce film, je me suis dit qu&apos;ils allaient s&apos;appuyer sur ce point humain, limite comique, pour présenter l&apos;affaire sous un angle différent. Après tout, pas de feu d&apos;artifice, pas de sang, pas de sexe ... Il faut bien trouver un moyen pour faire le spectacle.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Et là est le drame : on nous présente le film comme n&apos;importe quel film policier français, nettoyé de tout spectacle. Le film en devient d&apos;une platitude qui n&apos;a d&apos;égale que la mer baltique un matin d&apos;été un peu frais. On enchaîne l&apos;histoire telle que nous la raconterait Toni. Simple. Ennuyante. Plate. Dur de se lier à lui et de générer un lien affectif. Dur d&apos;accepter la justification pour ses actes. Au final, le calme des montages dont il rêve ... On finit par nous l&apos;imposer avec le peu de tension que le film apporte. Le seul point qui permet de sauver le film du naufrage ? Le jeu d&apos;acteur, François Cluzet en tête, toujours aussi parfait.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ce film aurait eu plus sa place un soir de semaine, en seconde partie de soirée, sur ARTE qu&apos;au cinéma. Inutile de financer Toni Musulin via le billet de cinéma.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/116.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-7813&quot; alt=&quot;11,6&quot; src=&quot;/assets/116-220x300.jpg&quot; width=&quot;220&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Restaurant Zagros : du méditerrannéen au Père Lachaise</title>
      <link href="https://francois.aichelbaum.com/2013/03/04/restaurant-zagros-du-mediterranneen-au-pere-lachaise" />
      <updated>2013-03-04T23:46:02+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/03/04/restaurant-zagros-du-mediterranneen-au-pere-lachaise</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Après une petite marche au Père Lachaise, le ventre de l&apos;orgre réclame son dû. Je descend Ménilmontant en misant sur une salade. Le restaurant visé est fermé. Un autre attire le regard : un gréco-kurde. Sûrement par méconnaissance, lorsqu&apos;on me parle de cuisines grec et kurde, je suis très basique. Le &lt;em&gt;vrai&lt;/em&gt; grec, des salades, de la fraîcheur. Le kurde, des grillades. &lt;a href=&quot;https://plus.google.com/102191029956768509417/about?gl=fr&amp;amp;hl=fr&quot;&gt;Zagros&lt;/a&gt;, ton heure est venue ! Et comme on est deux pour le coup, on va d&apos;autant pouvoir &lt;em&gt;t&apos;essayer.&lt;/em&gt;&lt;br /&gt;
&lt;!--more--&gt;&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Pas Zagros sur la patate&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;La terrasse est alléchante avec le soleil de ce dimanche. Mais la fraîcheur de l&apos;hiver se rappelle rapidement à notre bon souvenir et nous pousse à l&apos;intérieur. Là, un première salle de restaurant s&apos;offre à nouveau. C&apos;est clair. C&apos;est propre. Des tapis a priori ancien tapissent les murs. Les tables chaleureuses. L&apos;accueil tout autant. On s&apos;installe, on prend la carte en main. On veut rester sage, donc une seule entrée qu&apos;on se partagera suivi d&apos;un plat par tête. Bon pas si sage, on commande un vin grec rosé pour accompagner.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/zagros.jpg&quot;&gt;&lt;img class=&quot;aligncenter&quot; alt=&quot;Restaurant Zagros&quot; src=&quot;/assets/zagros-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Et là, un ballet de saveurs s&apos;engage. Entre un vin jeune mais non pétillant, à la couleur cuivrée et au goût vert et fruité, l&apos;assortiment de salades diverses et fraîches (et la féta, ...), ou encore les plats ... Le régal n&apos;a d&apos;égal que le coup de fourchette qui se fait presque délicat pour profiter de la dégustation de chaque bouchée. Les viandes grillées sont fondantes. Pas un assaisonnement de trop. Les légumes en papillottes enchantent les papilles. Mon seul bémol ? Je me forcerais à dire que la pomme de terre au four aurait pu être un poil plus cuite/grillée. Mais cette remarque est vraiment là pour chipotter. Les quantités sont parfaites, équilibrés. Ce n&apos;est pas trop. Ce n&apos;est pas trop peu. C&apos;est juste ce qu&apos;il fallait, même pour un orgre comme moi.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Repus et heureux du repas proposé, on ne peut refuser l&apos;appel gourmand d&apos;un dessert. Là, on se dit qu&apos;on a vraiment été gourmand en voyant la générosité du dessert. Ca change des restaurants où l&apos;on se mort les doigts au dessert. L&apos;addition arrive alors, c&apos;est dans la moyenne parisienne. Mais vu le repars, cela le vaut amplement. Rien que d&apos;écrire ces quelques lignes et me souvenir de ce repas, je salive comme un chien devant un os tout frais. Et la qualité du service renforce l&apos;envie de se rassoir à l&apos;un de leurs tables.&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/zagros.jpg&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le 20e, que cela soit côté Belleville ou Père Lachaise, dispose vraiment de nombreuses perles culinaires à des tarifs abordables et c&apos;est toujours un plaisir de pousser la porte de nouvelles tables à découvrir.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Die Hard 5 : yippie kay yay pauv&amp;#039; con</title>
      <link href="https://francois.aichelbaum.com/2013/03/04/die-hard-5-yippie-kay-yay-pauv-con" />
      <updated>2013-03-04T21:00:45+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/03/04/die-hard-5-yippie-kay-yay-pauv-con</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/die-hard-5.jpg&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-7753 alignleft&quot; alt=&quot;Die Hard 5&quot; src=&quot;/assets/die-hard-5-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Il y a de ces sagas, qui ont fait l&apos;Histoire du cinéma. C&apos;est le cas des aventures de John MacClane dans les différents Die Hard. Enfin ... Les trois premiers opus ont en tout cas marqués monumentalement le cinéma d&apos;action avant de nous accablé d&apos;un pittoyable quatrième Opus qui a blessé bien des amateurs mais surtout des geeks. Qui d&apos;un cinquième opus ? Episode de trop ? Renouveau de la Saga ? John nous dit tout ...&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Die Hard 5 : déception ou illusion&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Avant d&apos;aller voir ce film la semaine dernière, j&apos;avais lu pas mal de critique, tellement la bande annonce me faisait peur. A chaque fois, même retour : très gros/bon spectacle la première moitié du film, dans le pure style Die Hard puis une seconde partie baclée. Je me dis alors que ca sera toujours mieux qu&apos;aucune minute dans le pure style Die Hard.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[video]http://www.youtube.com/watch?v=gZR-DqSSGG0[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Je pars, je m&apos;arme du nécessaire pour ce genre film (dont des provisions), je m&apos;installe, le film commence et là, c&apos;est le drame. Mais où vous avez vu le pure style Die Hard ? Oui on prend les quatre précédents films (et malheureusement, le quatrième est trop présent), on mixe le tout au shaker, pas à la cuillère, et on obtient un film tout entier aberrant et qui ne respecte en rien la saga Die Hard.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Juste pour rappel, notre ami John est le genre de flic qui se retrouve au mauvais endroit au mauvais moment. Plus il fuit les emmerdes, plus il les trouve. Souvenez-vous les conduits de ventilations du Nakatomi Plaza ! Puis une fois dans la merde jusqu&apos;au coup, il ne pouvait plus faire marche arrière. Même le quatrième film respectait au moins cette règle. Mais là, non ! Dès le début, John se montre volontaire : d&apos;un pas bien assuré, il fonce tête bessée dans les emmerdes, quite à en générer sans réfléchir. Un vrai cowboy. On dit que la vieillesse rend sage ... Pour John, c&apos;est le contraire.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/23057-die-hard-5.jpg&quot;&gt;&lt;img alt=&quot;23057-die-hard-5&quot; src=&quot;/assets/23057-die-hard-5-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;img alt=&quot;1058064-bande-annonce-officielle-de-die-hard-5-620x0-1&quot; src=&quot;/assets/1058064-bande-annonce-officielle-de-die-hard-5-620x0-1-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/dh5-trailer.jpg&quot;&gt;&lt;img alt=&quot;dh5-trailer&quot; src=&quot;/assets/dh5-trailer-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/die-hard-5-extrait-2-600x280.jpg&quot;&gt;&lt;img alt=&quot;die-hard-5-extrait-2-600x280&quot; src=&quot;/assets/die-hard-5-extrait-2-600x280-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/Die-Hard-5.jpg&quot;&gt;&lt;img alt=&quot;Die Hard 5&quot; src=&quot;/assets/Die-Hard-5-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/Julia-Snigir-Die-Hard-5.jpg&quot;&gt;&lt;img alt=&quot;Julia-Snigir-Die-Hard-5&quot; src=&quot;/assets/Julia-Snigir-Die-Hard-5-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/Julia-Snigir-Die-Hard-5.jpg&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Alors où, on bouffe pendant de la première moitié de film de l&apos;action dont le scénario tient sur le fil du rasoir. Par contre, la réalisation, les faux raccords ... on est en pleine série Z. Rien que la course poursuite en voiture qui occupe une bonne partie de cette partie est hallucinante. On roule à contre sens sur les quais de la Moskva. On dégomme des voitures. Puis la seconde d&apos;après, on est dans une artère qui déboule sur le même quai, en sens opposé du précédent passage, mais pour autant toujours à contre sens avec les mêmes voitures accidentées sur le bas côté. On remarque la même chose pour un semi qu&apos;on croise une première fois au début, puis deux fois entre temps, pour finir la course encrée dedans. On a peu tourné selon la vidéo, mais le trafic automobile lui s&apos;est téléporté d&apos;un sens de la route à l&apos;autre comme par magie. Voire à changer d&apos;orientation sur la même voie. Bref ... Et le reste de la première moitié est du même accabit.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Puis, passé le coup de théatre à mi parcours, même le scénario devient baclé. Vu qu&apos;on a déjà ruiné la moitié de Moscou (le palais de justice, les quais, les artères principales, un hôtel de luxe, et j&apos;en passe, sans compter le tank, un superbe MI-24 et tout le feu d&apos;artifice qui va avec ... Bah il fallait bien trouvé mieux à faire. Quoi de mieux de faire un second grand n&apos;importe quoi directement à Tchernobyl ! En fait, je viens de tilter, mais le scénariste a du y aller pendant ses dernières vacances. Cela explique l&apos;état de ses neurones.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;J&apos;ai honte pour John. Et même le passage de flambeau à Junior se fait dans notre douleur. Un supplice. Une honte à payer. Deux heures de ma vie irrémédiablement gâcher. Je crois que, mis à part &lt;a href=&quot;http://www.youtube.com/watch?v=nLEUrhWBYoY&quot;&gt;Immortel&lt;/a&gt; où je m&apos;étais endormi, je n&apos;avais jamais ressenti ce tel sentiment de gâchi et de tristesse en sortant du cinéma. John (Moore) m&apos;a &lt;em&gt;tuer&lt;/em&gt;. John a &lt;em&gt;pulvériser&lt;/em&gt; tous mes neurones. J&apos;irais me réconforter seul devant les trois premiers. &lt;a href=&quot;http://www.youtube.com/watch?v=BplBW1qNM4w&quot;&gt;Yippie Kay Yay, pauv&apos; con&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/03/affiche-die-hard-5-908x1210.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-large wp-image-7756&quot; alt=&quot;Die Hard 5&quot; src=&quot;/assets/affiche-die-hard-5-908x1210-768x1024.jpg&quot; width=&quot;584&quot; height=&quot;778&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Les Misérables se font épiques</title>
      <link href="https://francois.aichelbaum.com/2013/02/08/les-miserables-se-font-epiques" />
      <updated>2013-02-08T12:05:37+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/02/08/les-miserables-se-font-epiques</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/02/les-miserables.jpeg&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-7705 alignleft&quot; alt=&quot;Les Misérables&quot; src=&quot;/assets/les-miserables-150x150.jpeg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Une petite avant-première intimiste chez Universal pour voir la nouvelle version des Misérables une semaine avant. C&apos;est sympa. La prochaine fois, prévoyez le pot ou le popcorn, ca sera parfait. Trève de plaisanterie, nous voici avec une énième adaptation de l&apos;oeuvre de Victor Hugo au cinéma. Nombre de versions sont trop lourdes car l&apos;équipe voulait coller au livre. Quid de cette version remaniée en film musical ?&lt;!--more--&gt;&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Les Misérables savent chanter&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Alors oui, on parle de film musical et non de comédie musicale car, jusqu&apos;à preuve du contraire, on ne rira pas puisque le sujet ne s&apos;y prête pas. Tom Hooper reprend ici la version comédie musicale éponyme de 1980 et non pas directement le roman français.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=IuEFm84s4oI[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;L&apos;introduction, très théatrale, très épique, nous le rappelle d&apos;ailleurs très bien. Dans cet opéra moderne, pas une personne ne s&apos;exprimera sans chanter. D&apos;ailleurs, point intéressant et à contre-pied de la quasi intégralité des films musicaux, les enregistrements des chants se sont fait durant le jeu d&apos;acteur sur le plateau et non en décallé et en studio. Et là, on se rend vite compte que la les acteurs présents, même si peu son rompu au chant (&lt;a href=&quot;http://www.youtube.com/watch?v=37DWM2z1x5g&quot;&gt;Hugh Jackman&lt;/a&gt;, &lt;a href=&quot;http://www.youtube.com/watch?v=Mj06SgTgWWs&quot;&gt;Amanda Seyfried&lt;/a&gt; par ex), ont un sacré talent à exprimer.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/02/Les-Mis-Jackman.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7735&quot; alt=&quot;Les-Mis-Jackman&quot; src=&quot;/assets/Les-Mis-Jackman-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/02/Les-Miserables-2012-Movie-Poster2.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7732&quot; alt=&quot;Les-Miserables-2012-Movie-Poster2&quot; src=&quot;/assets/Les-Miserables-2012-Movie-Poster2-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/02/Les-Miserables-2012-Movie-Poster1-600x888.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7729&quot; alt=&quot;Les-Miserables-2012-Movie-Poster1-600x888&quot; src=&quot;/assets/Les-Miserables-2012-Movie-Poster1-600x888-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/02/LesMiserables20121_zpsba0f7dfd.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7726&quot; alt=&quot;LesMiserables20121_zpsba0f7dfd&quot; src=&quot;/assets/LesMiserables20121_zpsba0f7dfd-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/02/les_miserables_2012-6.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7723&quot; alt=&quot;les_miserables_2012-6&quot; src=&quot;/assets/les_miserables_2012-6-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/02/Cast-of-Les-Miserables-in-Vogue-magazine-2012-les-miserables-2012-movie-32738447-1765-1200.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7720&quot; alt=&quot;Cast-of-Les-Miserables-in-Vogue-magazine-2012-les-miserables-2012-movie-32738447-1765-1200&quot; src=&quot;/assets/Cast-of-Les-Miserables-in-Vogue-magazine-2012-les-miserables-2012-movie-32738447-1765-1200-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/02/Cast-of-Les-Miserables-in-Vogue-magazine-2012-les-miserables-2012-movie-32738435-1765-1200.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7717&quot; alt=&quot;Cast-of-Les-Miserables-in-Vogue-magazine-2012-les-miserables-2012-movie-32738435-1765-1200&quot; src=&quot;/assets/Cast-of-Les-Miserables-in-Vogue-magazine-2012-les-miserables-2012-movie-32738435-1765-1200-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/02/anne-hathaway-new-les-miserables-posters-02.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7714&quot; alt=&quot;anne-hathaway-new-les-miserables-posters-02&quot; src=&quot;/assets/anne-hathaway-new-les-miserables-posters-02-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/02/Anne-Hathaway-in-Les-Miserables-2012-Movie-Image1-600x401.jpg&quot;&gt;&lt;img alt=&quot;Anne-Hathaway-in-Les-Miserables-2012-Movie-Image1-600x401&quot; src=&quot;/assets/Anne-Hathaway-in-Les-Miserables-2012-Movie-Image1-600x401-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/02/Anne-Hathaway-in-Les-Miserables-2012-Movie-Image1-600x401.jpg&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Chaque protagoniste, ou couple dans le cas des Thénardier, aura au moins un moment à lui pour exprimer ce talent. Entre chaque, les joutes chantées, les osmoses amoureuses virvoltantes et autres chorales révolutionnaires vont s&apos;alterner au rythme de ce film de près de 3h.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Et là, on se rend d&apos;autant plus compte du travail de toute l&apos;équipe autour des acteurs : maquilleurs, musiciens, décors, ... tout vous fait oublier la durée et la lourdeur habituelle des adaptations du roman de Victor Hugo. Impossible de ne pas se refaire toutes les chansons à longueur d&apos;heures, une fois sorti de la salle obscur. On en redemanderait presque. Presque car bon, pleurer, c&apos;est pour les faibles. D&apos;ailleurs, Kleenex est-il partenaire du film ? Si ce n&apos;est pas le cas, ils ont loupé une belle opération de promotion.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Que dire, pas de louper notable. Juste des libertés prises liés au format (film musical, durée restreinte). Mais rien de choquant. Au final, cette adaptation se place avec la version de Lelouch de 95 avec Belmondo dans mes adaptations de coeur et que je revois avec plaisir.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Intégration d&amp;#039;un parc de machines Linux à un domaine Active Directory</title>
      <link href="https://francois.aichelbaum.com/2013/01/15/integration-dun-parc-de-machines-linux-a-un-domaine-active-directory" />
      <updated>2013-01-15T18:21:05+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/01/15/integration-dun-parc-de-machines-linux-a-un-domaine-active-directory</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/01/tux.gif&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-7672 alignleft&quot; alt=&quot;Linux sur Windows&quot; src=&quot;/assets/tux-150x150.gif&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Dans un monde professionnel où les environnements informatiques sont de plus en plus hétérogènes, il est nécessaire de pouvoir centraliser les informations la gestion des comptes ainsi que les droits associés. Alors que la documentation d&apos;intégration des Linux (ou Mac) à un annuaire LDAP est très documentée sur internet, les guides pour l&apos;intégration à un Active Directory est quasi absente. Elle est pourtant de plus en plus requise ... et facile ! Des comptes unifiés pour tous les OS. Une gestion des comptes fines et centralisés est alors en place. Un sudo centralisé sur l&apos;Active Directory implique un fichier &lt;em&gt;/etc/sudoers&lt;/em&gt; obsolète.&lt;!--more--&gt;&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Avant propos&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour la suite différents points sont supposés acquis ou en place. Vous disposez d&apos;un domaine Active Directory Windows 2008 R2 en place. Ici, nous l&apos;appellerons &lt;em&gt;integration.infra&lt;/em&gt;. Notez que les manipulations peuvent se faire à partir des versions Windows 2003 sans problème.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Les Linux sont des debian. Encore une fois, les packages sont disponibles pour toutes les grosses distributions, donc je vous laisse adapter.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Côté résolution DNS, les machines Linux doivent pouvoir déjà résoudre le domaine integration.infra :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;dig +short integration.infra
192.168.101.1&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Si ce n&apos;est pas le cas, une petite modification du /etc/resolv.conf est à faire en rajoutant l&apos;Active Directory :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;echo nameserver 192.168.101.1 &amp;gt;&amp;gt; /etc/resolv.conf&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;L&apos;intégration à l&apos;Active Directory est simplfiée depuis l&apos;arrivée de Likewise Open (maintenant appelé PowerBroker Identity Services). On supposera nos Linux comme étant en 64 bits.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Dernier point, on suppose avoir un compte ADMIN côté Windows avec les droits de rajout de machines.&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Côté Active Directory&lt;/h1&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Pré-requis&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Avant Windows 2008, il est nécessaire de rajouter les attributs Unix à l&apos;Active Directory. Pour cela, il suffit d&apos;installer le package Identity Management for UNIX.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ensuite, nous devons rajouter un compte ldapquery : en effet, nous voulons centralisé la gestion des droits sudo et ceci ne peut se fait que via le protocole LDAP nativement embarqué dans l&apos;AD. Pour cela, on ouvre &lt;em&gt;Active Directory Users and Computers&lt;/em&gt; puis on clique droit sur &lt;em&gt;Users&lt;/em&gt; puis &lt;em&gt;New&lt;/em&gt; et &lt;em&gt;User&lt;/em&gt;. On note le mot de passe.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;NB : Il peut être intéressant de travailler en LDAPS plutôt qu&apos;en LDAP. Je vous renvoie aux nombreuses documentations disponibles sur internet (ou à votre administrateur Windows) pour son activation.&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Modification de l&apos;Active Directory&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Arrive alors la partie &lt;em&gt;tricky&lt;/em&gt; : étendre le schéma Active Directory pour y intégrer le sudo. Le fichier de schéma est disponible sur vos Linux dans &lt;em&gt;/usr/share/doc/sudo-ldap/schema.ActiveDirectory.gz&lt;/em&gt; mais également &lt;a title=&quot;Schema Active Directory pour sudo&quot; href=&quot;http://cdn.aichelbaum.com/files/s/schema.ActiveDirectory.txt&quot; target=&quot;_blank&quot;&gt;ici&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pensez à l&apos;éditer pour remplacer le &lt;em&gt;dc=X&lt;/em&gt; par votre domaine (ici, &lt;em&gt;dc=integration,dc.infra&lt;/em&gt;).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;En ligne de commande, il ne reste alors qu&apos;à taper :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;ldifde -i -e schema.ActiveDirectory.txt -c &quot;CN=Schema,CN=Configuration,DC=integration,DC=infra&quot; #schemaNamingContext&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ceci va vous rajouter tous les attributs &lt;em&gt;sudo&lt;/em&gt; (&lt;em&gt;sudoHost&lt;/em&gt;, &lt;em&gt;sudoUser&lt;/em&gt;, ...) ainsi que la classe &lt;em&gt;sudoRole&lt;/em&gt;.&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Création des groupes&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Concernant sudo, une dernière manipulation est à faire : créer une OU &lt;em&gt;sudoers&lt;/em&gt;&quot;(via l&apos;&lt;em&gt;ADSI&lt;/em&gt;) puis la &quot;peupler&quot; avec des sudoRole comme vous le feriez avec le fichiers &lt;em&gt;/etc/sudoers &lt;/em&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;une ligne revient à un rôle&lt;/li&gt;
&lt;li&gt;un rôle contient un ou plusieurs &lt;em&gt;sudoHost&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;un rôle contient un ou plusieurs &lt;em&gt;sudoUser &lt;/em&gt;en corrélation avec les groupes utilisateurs que nous souhaiterions&lt;/li&gt;
&lt;li&gt;un rôle contient un ou plusieurs &lt;em&gt;sudoOptions&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;un rôle contient un ou plusieurs &lt;em&gt;sudoCommand&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;un rôle contient un ou plusieurs &lt;em&gt;sudoRunAs&lt;/em&gt; (ALL à mettre par défault)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On peut alors créer les utilisateurs et groupes dont on aura besoin pour l&apos;usage normal.&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Côté Linux&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;L&apos;ensemble des commandes s&apos;enchaîne rapidement :&lt;/p&gt;
&lt;pre class=&quot;crayon-selected&quot;&gt;wget http://download.beyondtrust.com/PBISO/7.0.4/918/pbis-open-7.0.4.918.linux.x86_64.deb.sh
chmod +x pbis-open-7.0.4.918.linux.x86_64.deb.sh
./pbis-open-7.0.4.918.linux.x86_64.deb.sh
cd /opt/pbis/bin
./domainjoin-cli join integration.infra ADMIN
./domainjoin-cli configure --enable nsswitch
./domainjoin-cli configure --enable pam
./domainjoin-cli configure --enable ssh
./config HomeDirTemplate %H/%D/%U
./config AssumeDefaultDomain true
./config LoginShellTemplate /bin/bash
aptitude install nslcd sudo-ldap
grep bind /etc/nslcd.conf &amp;gt;&amp;gt; /etc/ldap/ldap.conf
echo &quot;sudoers_base ou=sudoers,dc=integration,dc=infra&quot; &amp;gt;&amp;gt; /etc/ldap/ldap.conf
ln -s /etc/ldap/ldap.conf /etc/sudo-ldap.conf&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour l&apos;installation de nslcd, préciser la bonne URI mais surtout le compte ldapquery.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour ceux qui voudrait automatiser l&apos;installation (via &lt;em&gt;Fabric&lt;/em&gt; par exemple), le déroulement du script de PBIS requiert l&apos;utilisation d&apos;expect :&lt;/p&gt;
&lt;pre&gt;aptitude install expect tcl8.5
echo &amp;lt; EOF &amp;gt; /opt/install_pbis.sh
#!/bin/bash
VAR=$(expect -c &quot;
spawn sh pbis-open-7.0.4.918.linux.x86_64.deb.sh --confirm
expect {
Y/n { send \&quot;y\r\&quot;; exp_continue }
Y/n { send \&quot;y\r\&quot;; exp_continue }
yes/no { send \&quot;yes\r\&quot;; exp_continue }
yes/no { send \&quot;yes\r\&quot;; exp_continue }
}
exit
&quot;)
EOF
chmod +x /opt/install_pbis.sh&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;L&apos;installation et le déploiement s&apos;en trouvera grandement faciliter. Petite subtilité à prévoir : l&apos;obligation de reboot les Linux pour une intégration propre de l&apos;authentification Active Directory en local à la machine.&lt;/p&gt;
&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>2013 - New Year&amp;#039;s Party Mix</title>
      <link href="https://francois.aichelbaum.com/2013/01/10/2013-new-years-party-mix" />
      <updated>2013-01-10T15:35:15+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/01/10/2013-new-years-party-mix</id>
      <content type="html">&lt;p&gt;&lt;iframe width=&quot;425&quot; height=&quot;350&quot; src=&quot;https://www.youtube.com/embed/XiBSPEVjLOk&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>The American Dream, mon cauchemar culinaire</title>
      <link href="https://francois.aichelbaum.com/2013/01/09/the-american-dream-mon-cauchemar-culinaire" />
      <updated>2013-01-09T10:18:45+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/01/09/the-american-dream-mon-cauchemar-culinaire</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Hier soir, c&apos;était repas de début d&apos;année avec deux anciens collègues. Pour faire léger, on a choisi un restaurant que je n&apos;avais jamais osé testé vu ce qui j&apos;ai vu voir et surtout ce que l&apos;extérieur me laissait penser. Bienvenu dans mon cauchemard culinaire à l&apos;&lt;a href=&quot;http://www.american-dream.fr/&quot;&gt;American Dream&lt;/a&gt; (&lt;a href=&quot;21 Rue Daunou  75002 Paris&quot;&gt;21 rue Daunou, Paris 2e&lt;/a&gt;).&lt;!--more--&gt;&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;American look&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Je dirais plutôt American Museum. De l&apos;extérieur, les murs ont l&apos;apparence d&apos;une vierge auberge repeinte avec une tripotée de statue d&apos;acteur en situation, façon Planet Hollywood. L&apos;intérieur, est un mix entre un pub anglais, une brasserie parisienne et un restaurant &quot;à l&apos;américaine&quot;. La carte, pardon, le livre du menu devrais-je dire, vu son nombre de page, alterne pages de menu et photo-montages pour nous faire croire que le restaurant est sponsorisé par les stars d&apos;Hollywood. Mais bon, autant le patron de Planet Hollywood a pu sortir le carnet de chèques pour les faire venir, autant là, ce n&apos;est pas le cas. Bref, l&apos;ambiance appelle clairement au piège à touriste.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/01/Restaurant-Paris-06.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7645&quot; alt=&quot;Restaurant-Paris-06&quot; src=&quot;/assets/Restaurant-Paris-06-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/01/img-0059679.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7642&quot; alt=&quot;img-0059679&quot; src=&quot;/assets/img-0059679-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/01/image.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7639&quot; alt=&quot;image&quot; src=&quot;/assets/image-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/01/american-dream-paris-1328651766.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7636&quot; alt=&quot;american-dream-paris-1328651766&quot; src=&quot;/assets/american-dream-paris-1328651766-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/01/1107140163.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7633&quot; alt=&quot;1107140163&quot; src=&quot;/assets/1107140163-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;American beurk&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Passons l&apos;accueil qui nous fait penser qu&apos;on pourrait être bien servi, le service en lui-même laisse à désirer. On nous bazarde la carte sur la table à peine dressée. Aucune carafe d&apos;eau disponible, on pourrait rouiller. Surtout vu le prix de la conso (4,5€ le petit verre de Coca, 12€ minimum la pinte de bière - et quelle bière ... - ),  on se souvient que le manque d&apos;hydratation a le même résultat que l&apos;alcool sur le cerveau.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On prend alors le temps de lire le roman qui sert de menu. Des burgers. Des bagels. Des omelettes. Des pizzas. Des sushis. De tout pour tous. Mais comme on dit &quot;trop de choix, tue le choix&quot;. Notre côté macho se rappelle à nous lorsque nous voyons le plat &quot;Cheeseburger Tower&quot; avec 6 steaks, accompagné de frites et oignons rings. Laissons nous tenter. Pour faire court, on n&apos;aurait pas dû !&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Première désillusion au service, sur les six steaks, quatres sont réellement présents, les deux autres remplacés par du pain. La garniture, moyenne. Les sauces absentes (normale : la sauce supplémentaire est facturée 5,50 € ! ). La seconde vient au fur et à mesure de l&apos;ingurgitation. Plus on descend dans les couches plus le burger se transforme. De haut en bas, la viande devient toujours moins cuite alors que le pain devient plus grillé. Un cauchemar gustatif.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;L&apos;accompagnement n&apos;est pas tellement mieux. Les frites allumettes sont des éponges à huiles. Même le McDo n&apos;arrive pas à les imbiber autant. Les oignons rings ont perdu une bonne parti de la chapelure (à moins que ca aussi ca soit un supplément sur taxé ? ). Et grand mal vous prendrait de vouloir changer un des accompagnement : 4€ par changement ! Nul question de rajout par contre ...&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ecoeurés, nous ne tentons pas les desserts qui laissent présager le pire. D&apos;ailleurs, à 8 ou 9 € le café gourmand ... D&apos;ailleurs il n&apos;a de gourmand que le tarif, le café n&apos;étant accompagné que d&apos;un pauvre petit muffin ou donut ...&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;J&apos;en suis sorti en louant mes regretés tickets restos lâchés sur la table pour payer cette addition honteuse. A la limite du racket. Ce matin, mon estomac vient à me rappeler que mes tickets auraient été plus que mieux utilisés ailleurs. Il n&apos;y a pas de mot. Adresse à fuir. Information à faire connaître. Guide touristique à prévenir. L&apos;American Dream de Paris est LE lieu où l&apos;on mange le plus mal à Paris avec un tarif exhorbitant. Mais que fait le Président ? L&apos;a-t-on prévenu ?&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Création d&amp;#039;une plateforme anti-ddos modulaire</title>
      <link href="https://francois.aichelbaum.com/2013/01/04/creation-dune-plateforme-anti-ddos-modulaire" />
      <updated>2013-01-04T14:00:25+01:00</updated>
      <id>https://francois.aichelbaum.com/2013/01/04/creation-dune-plateforme-anti-ddos-modulaire</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Q&apos;est-ce qu&apos;un DDoS ? Que faire en cas de DDoS ? Comment se protéger ? Ce sont là des questions récurrentes ces temps-ci sur internet. Je vais exposer dans le présent article une solution pour se prémunir un minimum avec une architecture modulaire. L&apos;exemple se focalisera sur les services HTTP.&lt;!--more--&gt;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Avant-propos&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Un DDoS, pour faire simple, se rapporte à une attaque de type déni de service distribué. En gros, l&apos;attaquant cherche à rendre votre service (site web, serveur mail, platefome complète...) indisponible grâce à plusieurs outils déployés sur PC zombies lancés à vos dépends en parallèle. Plus il y a d&apos;&lt;em&gt;armes&lt;/em&gt; (PC zombies), plus l&apos;attaque prend de l&apos;ampleur. De base, pour déjouer ces attaques, c&apos;est un peu le jeu de &lt;em&gt;qui a la plus grosse&lt;/em&gt;. Reste qu&apos;on peut se prémunir de pas mal de chose, sans passer pour autant par des solutions (trop) honéreuses de type &lt;a href=&quot;http://www.arbornetworks.com/fr/&quot;&gt;Arbor Networks&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/01/webbie_lg_cleanpipes_FR.gif&quot;&gt;&lt;img class=&quot;aligncenter  wp-image-7567&quot; alt=&quot;Plateforme Arbor Networks Clean Pipes 2.0&quot; src=&quot;/assets/webbie_lg_cleanpipes_FR-300x171.gif&quot; width=&quot;300&quot; height=&quot;171&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On n&apos;est pas tous milliardaires (ou du moins, pas encore). On ne peut pas tous investir dans ces solutions ni payer le tuyaux nécessaire pour jouer à &lt;em&gt;qui a la plus grosse&lt;/em&gt;. Mais on doit se protéger. L&apos;idée principale de cet article, réside donc dans la différence entre les notions de DoS et de DDoS, à savoir, le &lt;em&gt;distributed&lt;/em&gt;. On cherche donc à se rapprocher autant que possible d&apos;un DoS en segmentant l&apos;attaque puis on travaille sur ces réductions en fonction du protocole.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Dans la suite, nous discutons de flux HTTP. Donc on filtre au niveau réseau avec du firewall puis on analyse la partie HTTP avec un WAF et on réduit les connexions au serveur client (le &lt;em&gt;backend&lt;/em&gt;) avec une plateforme de Caching. Chaque fonction est isolée sur une brique indépendante des autres qu&apos;on peut remplacer ou supprimer en fonction de l&apos;usage qu&apos;on veut avoir.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Je resterais assez succint sur la mise en place de certaines fonctionnalités avancées, sur l&apos;évolutivité ou encore sur la centralisation des informations, ayant livré un produit un peu plus complet il y a peu.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/01/antiddos.png&quot;&gt;&lt;img class=&quot;aligncenter  wp-image-7573&quot; alt=&quot;Plateforme anti-DDoS modulaire&quot; src=&quot;/assets/antiddos-300x129.png&quot; width=&quot;300&quot; height=&quot;129&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;L&apos;architecture est dans le Cloud : pourquoi ? parce que la virtualisation offre la souplesse nécessaire à ce type d&apos;architecture et qu&apos;on pourra voir dans de potentielles évolutions, à définir des règles au niveau DNS pour isoler des régions géographiques sur tel ou tel fournisseur sans impacter les autres datacenter virtuel.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Spécificités de la plateforme&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;La plateforme est découpée en &quot;colonne&quot;. Toutes les colonnes sont équivalentes à la base. On essaie d&apos;isoler une colonne par opérateur. A l&apos;intérieur de chaque colonne, on aura une &quot;ligne&quot; de fonction composée d&apos;autant de serveur de chaque type appelé &quot;brique&quot;. Dans le cas de l&apos;article, une colonne HTTP contient trois lignes d&apos;un seul serveur à chaque fois :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;firewall&lt;/li&gt;
&lt;li&gt;WAF (Web Application Firewall)&lt;/li&gt;
&lt;li&gt;Caching&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;J&apos;ai rédigé cet article et les scripts liés de manière spécifique au serveur OVH. Des adaptations sont à prévoir pour d&apos;autres mais dans l&apos;absolu, tout devrait être fonctionnel tel quel. Chaque brique est en soit une machine virtuelle (dans le cas présent, une Debian Squeeze) avec des ressources affectées en fonction de vos besoins et moyens. Ici, 2 core et 8 Go de Ram à chaque fois. On y copie importe l&apos;arborescence de deploiement qui va bien, on lance le script, et rouler jeunesse.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Au niveau réseau, on sépare la partie management de la partie service.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le serveur VMware ESXi 5.0 n&apos;a de base qu&apos;une IP de management. On restreint ces services de management aux seules IP qui s&apos;y connecteront : votre bureau.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ensuite, vient le cas des différentes VIP qu&apos;on demande à OVH :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;3 pour les services publiques (dont la première servira aussi pour le VPN&lt;/li&gt;
&lt;li&gt;1 pour le &lt;em&gt;honeypot&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;1 pour la communication du caching avec le backend&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Entre eux, chaque niveau communique sur un VLAN spécifique.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Enfin, chaque serveur a une patte de management sur un réseau privé, utilisable exclusivement via le serveur de VPN.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le comportement est simple : lorsqu&apos;un &lt;em&gt;client&lt;/em&gt; se veut se connecter à la plateforme protégée, il le fait via une requête HTTP sur un &lt;em&gt;fqdn&lt;/em&gt; précis. Ce &lt;em&gt;fqdn&lt;/em&gt; est un alias vers un catch-all DNS de notre service de protection. Ce catch-all correspond à un gros Round Robin DNS vers les différentes VIP. C&apos;est le point qui génère la segmentation. Plus de VIP seront disponible, plus la segmentation sera importante. L&apos;attaquant visera soir le &lt;em&gt;fqdn&lt;/em&gt; et donc toutes les VIP, se qui va répartir ses PC zombies, soit les différentes VIP, mais lui même devra avoir assez de PC zombies sous la main.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le firewall entame alors son petit travail : analyser les paquets. Ici on reste basique avec un lot de règles iptables. On pourrait y greffer à la limite un IPS pour compléter la brique. Les règles sont de deux types :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;basique : pré enregistrées au démarrage du service&lt;/li&gt;
&lt;li&gt;dynamique : générée par les outils de bannissement&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Les règles basiques correspondent à des règles de &quot;bonne usage&quot; contre les DoS classiques. Les règles dynamiques sont produites soit à la main, soit par l&apos;ensemble du service : détection des scans de port, fail2ban, ... Peu importe quelle brique détecte une IP à bannir, celle-ci le sera au niveau du firewall. De plus, le bannissement se fait via un &lt;a href=&quot;http://en.wikipedia.org/wiki/Tarpit_(networking)&quot;&gt;TARPIT &lt;/a&gt;pour la partie TCP et un DROP pour le reste.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Les scripts qui suivront sont issues de la première version du PoC. Certains points sont à faire évoluer mais la base est présente.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Le firewall&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Au début je pensais utiliser une BSD avec du &lt;em&gt;pf&lt;/em&gt;. Mais je me suis ravisé : pf ne permet pas la partie TARPIT qui est tout de même bien sympathique. Qu&apos;est-ce que TARPIT ? C&apos;est un redimensionnement de la fenêtre TCP à 0. Ou de manière plus imagée, c&apos;est le pendant d&apos;un SYN Flood côté défense. On ne renvoie pas l&apos;ACK à un client mais on tue sa requête. Le résultat est d&apos;engorger progressivement sa pile TCP. Le tout proportionnellement à l&apos;ampleur de l&apos;attaque.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le firewall portent donc trois VIP de service. Chaque voit son port 80 poussé vers le WAF. La première voit en plus un port poussé vers le VPN. Ici, le 3006/tcp.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;A côté de cela, pour garder une certaine dynamique dans les règles &lt;em&gt;iptables&lt;/em&gt;, on ne bloque pas tout. Juste quelques attaques de type DoS standard. Le reste, on fera du préventif ou cas par cas.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Du coup, &lt;em&gt;portsentry&lt;/em&gt; est utilisé pour détecter les scans de ports et déclencher le bamnissement.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On y installe aussi un honeypot qui simule un serveur Windows bien ouvert sur la 4e VIP. Toute tentative de connexion dessus sera détectée dans les logs par un fail2ban qui déclenchera le bannissement.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Enfin, quelques paramétrages fins sont à faire spécifiquement sur le firewall :&lt;/p&gt;
&lt;pre&gt;# Tuning automatique de la fenêtre TCP
net.ipv4.tcp_moderate_rcvbuf=1
# Communication entre les différents noeuds pour notifier d&apos;un engorgement (&lt;a href=&quot;http://tools.ietf.org/html/rfc3168&quot;&gt;RFC 3168&lt;/a&gt;)
net.ipv4.tcp_ecn=0
# Désactive le discover automatique du MTU
net.ipv4.ip_no_pmtu_disc=0
# On désactive le démarrage lent d&apos;une nouvelle connexion qui a déjà ouvert une session HTTP
net.ipv4.tcp_slow_start_after_idle=0
# On bloque les requêtes de type ICMP echo en broadcast
net.ipv4.icmp_echo_ignore_broadcasts=1
# On préfère traiter toutes les requêtes TCP afin de peupler les règles iptables
net.ipv4.tcp_abort_on_overflow = 1
# C&apos;est l&apos;arme contre les SYN FLOOD : une connexion n&apos;est gardée en mémoire que si le serveur a reçu l&apos;ACK
net.ipv4.tcp_syncookies = 1
# On ne laisse pas retenter un paquet TCP
net.ipv4.tcp_orphan_retries = 0
# Simple réduction de taille du paquet TCP en y mettant pas le champ time - moins de charge CPU
net.ipv4.tcp_timestamps = 0
# Active les acknoledge selectif : on ne répond pas à tous - pour de la perf, pour pourrait le mettre à 0
net.ipv4.tcp_sack = 1
# Tuning de la fenêtre TCP - on est restrictif
net.ipv4.tcp_window_scaling = 1&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;D&apos;autres paramètres plus globaux sont initialisés également.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Le WAF&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le WAF est donc le firewall applicatif. En gros, c&apos;est une brique HTTP permettant d&apos;analyser les requêtes et générer un comportement sécuritaire spécifique. On peut utiliser du &lt;a href=&quot;http://www.modsecurity.org/&quot;&gt;mod_security&lt;/a&gt; (qui existe aussi pour nginx maintenant) ou du &lt;a href=&quot;http://code.google.com/p/naxsi/&quot;&gt;naxsi&lt;/a&gt;. La grosse différence, le premier fonctionne à coup de blacklist statiques, le second fonctionne à coup de whitelist et de blacklist générée lors d&apos;un mode d&apos;apprentissage.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Lorsqu&apos;un client HTTP est connecté et a un comportement suspicieux, on aura la joie d&apos;avoir une ligne dans les logs correspondants. En interfaçant avec fail2ban et le script qui va bien, on pourra déclarer l&apos;IP de ce client au firewall qui la bannira.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;N&apos;oubliez pas de déclarer les VIP sur la loopback.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Le caching&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;J&apos;ai déjà eu l&apos;occasion de rédiger différents articles sur le caching (&lt;a href=&quot;http://francois.aichelbaum.com/wp-admin/post.php?post=6881&amp;amp;action=edit&quot;&gt;création&lt;/a&gt; et &lt;a href=&quot;http://francois.aichelbaum.com/comparatif-caching-nginxvarnishsquidapache/&quot;&gt;comparaison&lt;/a&gt;). Ici le but est juste de mettre une brique rapidement en place pour démontrer le fonctionnement.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On reprend donc un nginx configuré pour le caching. La spécificité de cette brique est qu&apos;elle sort directement sur internet via son IP publique (donc sans repasser par le firewall, contrairement aux autres briques).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Au niveau sécurité de la patte publique, on bloque tout à coup de TARPIT/DROP par défaut sur celle-ci.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;L&apos;ensemble des scripts est disponible sur mon &lt;a href=&quot;https://github.com/faichelbaum/anti-ddos&quot;&gt;github&lt;/a&gt;. La commande magique &lt;em&gt;deploy&lt;/em&gt; se charge d&apos;installer et configurer les différents points pour un rôle donné.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;La commande de management &lt;em&gt;ddos&lt;/em&gt; permet déjà quelques outils. Elle est à lancer avec un compte nommé &lt;em&gt;sysadmin&lt;/em&gt; à qui on réduira les possibilité via &lt;em&gt;sudo&lt;/em&gt;. Le compte &lt;em&gt;root&lt;/em&gt; est bloqué pour le SSH.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;N&apos;oubliez pas que ceci est un PoC et doit donc servir de base. Il est utilisable quasiment tel quel mais il serait mieux d&apos;avoir un niveau suffisant pour l&apos;adapter et l&apos;améliorer.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Imaginez une centralisation des informations, un back office, une mutualisation des firewall pour différents protocoles, des tunnels GRE entre vous et les plateformes cibles, un TARPIT directement intégré au SMTP (cf BSD), ...&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Dans tous les cas, voici une idée du résultat au niveau filtrage :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2013/01/rrd.png&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-7618&quot; alt=&quot;Graphique statistique sur le filtrage anti DDoS&quot; src=&quot;/assets/rrd-300x100.png&quot; width=&quot;300&quot; height=&quot;100&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Complément Redis en haute disponibilité</title>
      <link href="https://francois.aichelbaum.com/2012/12/28/complement-redis-en-haute-disponibilite" />
      <updated>2012-12-28T13:58:43+01:00</updated>
      <id>https://francois.aichelbaum.com/2012/12/28/complement-redis-en-haute-disponibilite</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Pour ceux qui seraient intéressés, j&apos;ai mis en place un repository &lt;a href=&quot;https://github.com/faichelbaum/redis-addons&quot; target=&quot;_blank&quot;&gt;GitHub&lt;/a&gt; concernant le déploiement de &lt;a href=&quot;http://francois.aichelbaum.com/complement-redis-en-haute-disponibilite/&quot;&gt;Redis 2.6 en haute disponibilité&lt;/a&gt;. Vous y trouverez :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;configuration Redis Server&lt;/li&gt;
&lt;li&gt;configuration Redis Sentinel&lt;/li&gt;
&lt;li&gt;script d&apos;init (Debian/Ubuntu) Redis Server&lt;/li&gt;
&lt;li&gt;script d&apos;init (Debian/Ubuntu) Redis Sentinel&lt;/li&gt;
&lt;li&gt;plugin Nagios (check_redis) qui gère l&apos;usage d&apos;un mot de passe&lt;/li&gt;
&lt;/ul&gt;
</content>
    </entry>
  
    <entry>
      <title>Infrastructure Redis en haute disponibilité</title>
      <link href="https://francois.aichelbaum.com/2012/12/14/infrastructure-redis-en-haute-disponibilite" />
      <updated>2012-12-14T16:33:29+01:00</updated>
      <id>https://francois.aichelbaum.com/2012/12/14/infrastructure-redis-en-haute-disponibilite</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;A l&apos;heure où tout devient &quot;connecté&quot;, &quot;disponible en ligne&quot;, les échanges par l&apos;internet se multiplient. Pour accompagner la démocratisation des liens rapides mais également pour améliorer l&apos;expérience cliente, il est nécessaire que les fournisseurs de service en ligne optimisent leurs applications et la manière dont ils les livrent. Bien sûr, on peut toujours augmenter les ressources matériels, mais le coût n&apos;est pas négligeable. Parfois, les développeurs peuvent travailler main dans la main avec les administrateurs. C&apos;est le cas de l&apos;utilisation des caches applicatifs (Memcached,Couchbase, Redis...).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Avant-propos&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Redis, dans la version stable actuelle (2.6) n&apos;offre aucune fonctionnalité de mise en cluster comme Couchbase. Je ne parle pas non plus de l&apos;absence totale d&apos;organes de sécurité. Le but est clairement énoncé : la PER-FOR-MANCE.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Du coup, peu de solution pour la haute disponibilité si ce n&apos;est mettre en place une architecture type maître/esclave avec une promotion automatique de l&apos;esclave en tant que maître en cas de défaillance du premier. Nous allons voir cette mise en place puis tant qu&apos;à faire, sa supervision.&lt;/p&gt;
&lt;h1&gt;Installation de l&apos;infrastructure Redis&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On suppose pré-installés deux serveurs Debian Squeeze 64 bit. Notez que la version disponible de Redis dans les repositories officiels est une vieille 1.2.6 et que seule la branche 2.4 est disponible dans les backports. Traduction : nous allons être obligés de tout compiler à la main.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour cela, quelques pré-requis à installer :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;aptitude install build-essential tcl8.5 pwgen&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le package tcl8.5 est là pour vous permettre d&apos;effectuer quelques tests au besoin lors de la séance de compilation. Nous pouvons alors nous attaquer à Redis :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;cd /usr/src
wget http://redis.googlecode.com/files/redis-2.6.7.tar.gz
tar -xzf redis-2.6.7.tar.gz
rm redis-2.6.7.tar.gz
cd redis-2.6.7
make
make install
useradd redis
mkdir /opt/redis
chown redis:redis /opt/redis
chmod 770 /opt/redis&lt;/pre&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Configuration Redis&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Je vous met à disposition un fichier un peu préparer, &lt;a href=&quot;http://cdn.aichelbaum.com/files/r/redis.conf&quot;&gt;ici&lt;/a&gt;. Cependant, quelques modifications sont à prévoir.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;wget http://cdn.aichelbaum.com/files/r/redis.conf -O /etc/redis.conf&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Dans le cas que je présente ici, je bind l&apos;application sur toutes les interfaces car les serveurs Redis sont sur un VLAN précis et isolé. Au besoin, on peut simplement l&apos;isoler sur une IP en rajoutant dans la configuration un :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;bind X.X.X.X&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Il s&apos;agit également de traitement en temps réel mais donc j&apos;ai besoin d&apos;avoir un maximum de garanties sur la pérennité des informations stockées, je sauvegarde toutes les 60 secondes s&apos;il y a eu au moins une modification en base.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Redis a (trop) peu de sécurité. Cependant, autant mettre au moins un mot de passe pour la réplication. Pour se faire, on va en générer un propre avec pwgen :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;pwgen -s -y 16&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Il est à renseigner à la ligne commençant par &lt;strong&gt;masterauth&lt;/strong&gt;. On réutilise le même mot dfe passe pour le champ &lt;strong&gt;requirepass&lt;/strong&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Autre point important à modifier dans la configuration : la taille de la mémoire allouée à Redis. Dans mon exemple :&lt;/p&gt;
&lt;pre&gt;maxmemory 512mb&lt;/pre&gt;
&lt;p&gt;On peut aussi la passer à 8 Go par exemple :&lt;/p&gt;
&lt;pre&gt;maxmemory 8gb&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Penser également à rajouter la ligne suivante dans votre /etc/security/limits.conf :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;redis - nofile 20000&lt;/pre&gt;
&lt;p&gt;Redis nécessite un rajout à sysctl :&lt;/p&gt;
&lt;pre class=&quot;crayon-selected&quot;&gt;cat &amp;lt; EOF &amp;gt;&amp;gt; /etc/sysctl.conf 
vm.overcommit_memory=1
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth1.arp_ignore = 1
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.eth1.arp_announce = 2
EOF
sysctl -p&lt;/pre&gt;
&lt;h1&gt;Mise en place de la réplication&lt;/h1&gt;
&lt;p&gt;On a donc installé deux serveurs. On suppose leurs noms et IP :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;redis01 - 192.168.1.1&lt;/li&gt;
&lt;li&gt;redis02 - 192.168.1.2&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;On veut que &lt;strong&gt;redis02&lt;/strong&gt; soit esclave de &lt;strong&gt;redis01&lt;/strong&gt; :&lt;/p&gt;
&lt;pre&gt;sed -i &quot;s/# slaveof &amp;lt;masterip&amp;gt; &amp;lt;masterport&amp;gt;/# slaveof &amp;lt;masterip&amp;gt; &amp;lt;masterport&amp;gt;\n#slaveof 192.168.1.1 6379/&quot; /etc/redis.conf&lt;/pre&gt;
&lt;p&gt;Mais aussi l&apos;inverse pour que redis01 devienne automatiquement esclave de redis01 en cas de failover :&lt;/p&gt;
&lt;pre&gt;sed -i &quot;s/# slaveof &amp;lt;masterip&amp;gt; &amp;lt;masterport&amp;gt;/# slaveof &amp;lt;masterip&amp;gt; &amp;lt;masterport&amp;gt;\n#slaveof 192.168.1.2 6379/&quot; /etc/redis.conf&lt;/pre&gt;
&lt;h1&gt;Mise en place du failover Redis&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On va entre s&apos;appuyer sur&lt;strong&gt; redis-sentinel&lt;/strong&gt; qui est une solution permettant de gérer &lt;em&gt;facilement&lt;/em&gt; le failover entre les serveurs.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;cp /usr/src/redis-2.6.7/src/redis-sentinel /usr/local/bin/redis-sentinel&lt;/pre&gt;
&lt;p&gt;Plus qu&apos;à importer la &lt;a href=&quot;http://cdn.aichelbaum.com/files/s/sentinel.conf&quot;&gt;configuration&lt;/a&gt; (et l&apos;adapter avec vos IP et mots de passe) :&lt;/p&gt;
&lt;pre&gt;wget http://cdn.aichelbaum.com/files/s/sentinel.conf -O /etc/sentinel.conf&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Petite précision : &lt;strong&gt;sentinel&lt;/strong&gt; gère le failover, pas le fallback automatique. Il faut donc que l&apos;ancien maître (&lt;strong&gt;redis01&lt;/strong&gt;) devienne un esclave du nouvellement promu (&lt;strong&gt;redis02&lt;/strong&gt;).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pensez à installer un 3e sentinel sur le serveur de supervision avec les mêmes informations. Il vous permettra d&apos;avoir un quorum de 2 sur les 3 sentinels possibles, très utile en cas de &lt;em&gt;split-brain&lt;/em&gt; (chaque serveur est &lt;em&gt;UP &amp;amp; Running&lt;/em&gt; mais ne voit plus son voisin).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On n&apos;avait pas encore les fichiers d&apos;init donc on va les mettre en place avec l&apos;intelligence. J&apos;ai préparé deux scripts d&apos;init pour le coup&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;wget http://cdn.aichelbaum.com/files/r/redis-server.init -O /etc/init.d/redis-server
wget http://cdn.aichelbaum.com/files/r/redis-sentinel.init -O /etc/init.d/redis-sentinel
chmod +x /etc/init.d/redis-se*
update-rc.d redis-sentinel defaults
update-rc.d redis-server defaults
insserv redis-sentinel
insserv redis-server&lt;/pre&gt;
&lt;h1&gt;Load balancing&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On va gérer l&apos;IP flottante permettant de n&apos;accéder qu&apos;au maître (pour fonctionner en actif/passif) avec un bête script. Pourquoi bête ? parce que le mode de fonctionnement ne requière pas l&apos;installation d&apos;une usine à gaz et qu&apos;on a un simple cron qui peut faire le boulot. Pensez juste à éditer l&apos;IP mise pour la VIP.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;wget http://cdn.aichelbaum.com/files/r/redis-vip.sh -O /usr/local/bin/redis-vip.sh
chmod +x /usr/local/bin/redis-vip.sh
echo &quot;* * * * * /usr/local/bin/redis-vip.sh &amp;amp;&amp;gt; /dev/null&quot; &amp;gt; /etc/cron.d/redis-vip&lt;/pre&gt;
&lt;h1&gt;Supervision Nagios pour Redis&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On va s&apos;appuyer sur un plugin existant : &lt;a href=&quot;https://github.com/faichelbaum/redis-addons/blob/master/check/check_redis&quot;&gt;check_redis&lt;/a&gt;. Il permet aussi bien de superviser l&apos;instance Redis en elle-même, que la réplication. Pour cela, il demande au serveur son rôle dans la réplication et dans le cas d&apos;un esclave (&lt;em&gt;slave&lt;/em&gt;) son status.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Rien de particulier pour l&apos;installation en soit. Le plugin est vraiment standard :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;Usage: check_redis -H HOSTNAME -p PORT -c CRITICAL -w WARNING -t TIMEOUT (-P PASSWORD)&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Par contre, il faut également superviser les sentinels. Au choix : un check_tcp sur le port 26379 ou vérifier en NRPE ou SNMP le status du service&lt;strong&gt; redis-sentinel&lt;/strong&gt;.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Partager des mots de passe en sécurité</title>
      <link href="https://francois.aichelbaum.com/2012/12/12/partager-des-mots-de-passe-en-securite" />
      <updated>2012-12-12T15:27:42+01:00</updated>
      <id>https://francois.aichelbaum.com/2012/12/12/partager-des-mots-de-passe-en-securite</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Voici un problème récurrent avec les allers et venues dans les sociétés. Comment partager les mots de passe d&apos;une plateforme, la maintenir de tout changement, et éviter les fuites d&apos;informations ?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Certains choisissent d&apos;avoir un mot de passe unique ... C&apos;est mal.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;D&apos;autres préconisent d&apos;avoir un mot de passe avec une partie mémotechnique variable (liée par exemple, au nom du serveur). C&apos;est prédictible donc c&apos;est mal.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Certains reposent sur une centralisation des identifiants (avec un LDAP ou un Active Directory) et se partagent les informations via des fichiers type KeePassX. On se rapproche de quelque chose. Cependant, subsiste le problème d&apos;accès à la base et de son maintient.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On va avancer sur cette solution et voir à la fiabiliser.&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Avant propos&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Juste quelques rappels avant d&apos;exposer quelques bonnes méthodes à appliquer à cette solution.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;A chaque mouvement de personnel, il faut révoquer les accès de l&apos;utilisateur, et modifier les accès administrateurs sur les différents serveurs/services. La centralisation des comptes et le maintient d&apos;une base d&apos;information prend tout son sens.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Chaque modification sur la base nécessite d&apos;être conservé (trace de la modification et conservation d&apos;un historique des mots de passe à la rigueur).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Je ne traiterais pas de la centralisation des comptes. Guillaume Vaillant vous propose &lt;a href=&quot;http://guillaume.vaillant.me/?p=187&quot;&gt;un billet sur le sujet orienté LDAP&lt;/a&gt; et je verrais peut-être à en rédiger un orienté Active Directory sous peu.&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Sécuriser la donnée&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On va se baser sur l&apos;outil &lt;a href=&quot;http://keepass.info/download.html&quot;&gt;KeePass 2&lt;/a&gt; (avec le plugin &lt;a href=&quot;http://keepass.info/plugins.html#ioprotocolext&quot;&gt;IOProtocolExt&lt;/a&gt;). Ce logiciel permet de sauvegarder les différents mots de passe dans une base encrypté (en AES256 de base). Le plugin quant à lui permet de centraliser la base sur un serveur SFTP.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Installer une distribution Linux ne doit pas être top un problème, donc on passe. Installer un serveur SSH, aussi.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On modifie les utilisateurs concernés par l&apos;accès à la base en les affectant à un groupe dédié :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;groupadd keepass
gpasswd -a francois keepass&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ensuite, on crée un dossier, et on le prépare au niveau des droits et ACL (on pense à installer le package &lt;strong&gt;acl&lt;/strong&gt;) :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;mkdir /home/keepass
chgrp keepass /home/keepass
chmod 070 /home/keepass
chmod g+s /home/keepass
setfacl -Rmd g:keepass:rwx /home/keepass&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On rajoute le logging des actions en SFTP en éditant le fichier &lt;em&gt;/etc/ssh/sshd_config&lt;/em&gt; puis en relançant le service &lt;strong&gt;ssh&lt;/strong&gt; :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;sed -i &apos;^Subsystem sftp /usr/lib/openssh/sftp-server^Subsystem sftp /usr/lib/openssh/sftp-server -l INFO^&apos; /etc/ssh/sshd_config
/etc/init.d/ssh reload&lt;/pre&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Installer KeePass 2&lt;/h1&gt;
&lt;h3&gt;Sur Windows&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour une fois, au grand dam des &lt;em&gt;trolleurs&lt;/em&gt; du vendredi, ce sont aux amis de Windows qui s&apos;en sortent le plus facilement. Une simple installation en &lt;em&gt;clic-next&lt;/em&gt; fait son affaire. Concernant le plugin, on copie les fichiers dans le dossier d&apos;installation de KeePass et on relance l&apos;application.&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Sur Linux&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Bien que des packages soient disponibles pour les distributions majeurs, le plugin pour le SFTP utilisent des classes .NET non disponibles sur Mono. Obligé de passer par Wine. On part d&apos;un préfixe wine vierge :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;cd ~
winetricks dotnet40
wine Downloads//KeePass-2.20.1-Setup.exe&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On copiera là encore les fichiers de plugin dans le dossier qui va bien.&lt;/p&gt;
&lt;h3&gt;SUR MAC OS X&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Même problème que sur Linux. Même solution : wine. Il faut donc installer &lt;a href=&quot;http://www.macports.org/&quot;&gt;MacPorts&lt;/a&gt; puis wine :&lt;/p&gt;
&lt;pre&gt;sudo port install wine
cd ~
winetricks dotnet40
wine KeePass-2.20.1-Setup.exe&lt;/pre&gt;
&lt;p&gt;On copiera là encore les fichiers de plugin dans le dossier qui va bien.&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Générer la donnée&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Il faut bien initialiser la base. On a donc installé KeePass 2. On crée une nouvelle base. On la sauvegarde. On la transfert en scp sur le serveur dans le bon dossier (avec WinSCP, FileZilla, ssh, ...). Pour sécuriser la base, on va utiliser un master key sous la forme d&apos;un fichier générer par l&apos;entropie de la souris. On garde le fichier dans un coin.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On supposera que la base s&apos;appelle &lt;strong&gt;base.kdbx&lt;/strong&gt; et la clé &lt;strong&gt;base.key&lt;/strong&gt;.&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Accéder à la donnée&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;La partie simplissime : &lt;em&gt;File &amp;gt; Open &amp;gt; Open URL&lt;/em&gt;. On renseigne les informations :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;URL : sftp://ip/home/keepass/base.kbdx&lt;/li&gt;
&lt;li&gt;user name : votre identifiant&lt;/li&gt;
&lt;li&gt;password : votre mot de passe (il n&apos;y a pas de gestion par clé pour le moment)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Le fichier sera chargé automatiquement.&lt;/p&gt;
&lt;h1&gt;Mise à jour de la donnée&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;La modification des informations se fait simplement en sauvegardant (&lt;em&gt;File &amp;gt; Save&lt;/em&gt; – et non &lt;em&gt;File &amp;gt; Save As&lt;/em&gt;).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Il est intéressant de sauvegarder une copie locale pour des raisons de mobilité par exemple ou d&apos;indispo du serveur. Pour se faire : &lt;em&gt;File &amp;gt; Save As &amp;gt; Save copy to file&lt;/em&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;La gestion des mises à jour par plusieurs utilisateurs et des risques de conflit se fait de la manière suivante :&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Les mises à jours se font seulement sur les entrées modifiées ; KeePass 2 se base principalement sur la date de modification&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Quand l’utilisateur A sauvegarde ses modifications sur le serveur, il récupère au même moment les mises à jour des autres utilisateurs&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;S’il y a un conflit (A et B mettent à jours la même entrée en base), l’entrée la plus récente sera conservée (date de modification prise en compte)&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;Le serveur prévient et demande une confirmation de l’action à mener au moment de la sauvegarde&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;Derniers points&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pensez à transmettre le master key aux bons utilisateurs.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pensez à mettre à jour régulièrement la master key surtout lors des départs d&apos;utilisateurs.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ne déposez pas la base sur des partages publiques, même si elle est encryptée (GDrive, DropBox, ...).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ne transmettez pas la master key par email (surtout jointe avec les informations &quot;vitales&quot;).&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Optimiser les images de son site</title>
      <link href="https://francois.aichelbaum.com/2012/11/27/optimiser-les-images-de-son-site" />
      <updated>2012-11-27T12:36:42+01:00</updated>
      <id>https://francois.aichelbaum.com/2012/11/27/optimiser-les-images-de-son-site</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Pourquoi optimiser les images de son site ? Tout simplement, parce que cela a son importance pour le référencement mais aussi et surtout pour l&apos;expérience utilisateur. Après tout, un site web est fait pour être consulté donc autant que l&apos;expérience utilisateur soit la meilleure possible.&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;La bonne taille de l&apos;image&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Première erreur fréquemment rencontrée, la taille de l&apos;image inadaptée. Régulièrement, on peut tomber soit sur une image agrandie (et donc pixélisée), soit sur une image réduite.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Dans le premier cas, l&apos;image est moche, l&apos;expérience utilisateur dégradée car l&apos;internaute reste critique dans l&apos;âme et ne reviendra pas si le site n&apos;est pas un minimum agréable. Seule solution : trouver la même image dans le bon format ou &lt;em&gt;a fortiori &lt;/em&gt;dans un format bien supérieur (cf ci-dessous).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Dans le second cas, on garde ce format &quot;géant&quot; sur notre PC et on prépare des versions adaptée grâce à notre logiciel d&apos;image favori (&lt;a title=&quot;The Gimp&quot; href=&quot;www.gimp.org&quot; target=&quot;_blank&quot;&gt;The Gimp&lt;/a&gt; par exemple). Ainsi, transférer le fichier image au bon format et à la bonne résolution aura plusieurs impacts :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;réduire la quantité de données à envoyer au navigateur de votre visiteur (donc le site s&apos;affiche plus vite)&lt;/li&gt;
&lt;li&gt;moins de travail pour le navigateur de votre visiteur (le site s&apos;affiche plus vite et consomme moins de ressources)&lt;/li&gt;
&lt;li&gt;l&apos;image sera agréable à regarder&lt;/li&gt;
&lt;li&gt;la variété des formats pour une image sur le site augmente indirectement le contenu à référencer sur le site et donc améliore le référencement du site&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Dans tous les cas, l&apos;expérience utilisateur s&apos;améliore nettement.&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Combiner les images via des CSS Sprites&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Parfois, vous aller avoir tout un semble de petits logos/icônes sur une même page et qui reviennent régulièrement sur votre site. Il est alors intéressant de combiner toutes ces images dans un seul fichier, qui sera importé et &quot;découpé&quot; par CSS.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour combiner les images, si vous ne travailler par directement sur le format unifié, vous pouvez le faire via ImageMagick.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;aptitude -y install imagemagick&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ensuite, pour combiner des images au format JPEG par ex :&lt;/p&gt;
&lt;pre&gt;convert image1.jpg image2.jpg image3.jpg +append -quality 75 combine.jpg&quot;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Il est possible de le faire pour d&apos;autres formats image. ImageMagick est vraiment une belle boite à outil pour le traitement image.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On peut alors intégré dans le CSS ainsi (extrait du CSS de mon blog) :&lt;/p&gt;
&lt;pre&gt;#wp-social-login-connect-options a.Tumblr {
 display:block;
 float:left;
 height:32px;
 width:32px;
 margin:0px;
 text-indent:-9999px;
 background-image:url(&apos;https://cdn.aichelbaum.com/images/S/sprites.png&apos;);
 background-position:-256px 0px;
}&lt;/pre&gt;
&lt;pre&gt;#wp-social-login-connect-options a.Mixi {
 display:block;
 float:left;
 height:32px;
 width:32px;
 margin:0px;
 text-indent:-9999px;
 background-image:url(&apos;https://cdn.aichelbaum.com/images/S/sprites.png&apos;);
 background-position:-288px 0px;
}&lt;/pre&gt;
&lt;pre&gt;#wp-social-login-connect-options a.Steam {
 display:block;
 float:left;
 height:32px;
 width:32px;
 margin:0px;
 text-indent:-9999px;
 background-image:url(&apos;https://cdn.aichelbaum.com/images/S/sprites.png&apos;);
 background-position:-320px 0px;
}&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On ne transfert donc plus qu&apos;une seule image, plutôt petite, et on repositionne et redimensionne l&apos;affichage de la cellule au style demandé. Encore une fois, on réduit la quantité de données à envoyer au navigateur de votre visiteur. Son expérience s&apos;améliore encore.&lt;/p&gt;
&lt;h1 style=&quot;text-align: justify;&quot;&gt;Optimiser les images&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Aujourd&apos;hui, les images, que cela soit en JPEG ou en PNG, embarque énormément d&apos;infomations. Limite de la pollution dans certains cas. Des outils existent et permettent de nettoyer tout cela automatiquement : optipng et jpegoptim :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;aptitude -y install optipng jpegoptim&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour les utiliser d&apos;un coup et simplement (voire les mettre dans une cron), un petit script :&lt;/p&gt;
&lt;pre&gt;cat &amp;gt; /usr/local/bin/optimage.sh &amp;lt;&amp;lt; EOF
#!/bin/bash
find $1 -name &quot;*.jpg&quot; -exec jpegoptim --strip-all {} \; | grep -v skipped
find $1 -name &quot;*.png&quot; -exec optipng -o 7 {} \; 2&amp;gt; /dev/null
exit 0
EOF&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Du coup à l&apos;usage, il suffit d&apos;appeler le script avec en paramètre le dossier parent à traiter récursivement puis le tour est joué.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Les fichiers gagnent encore en taille etc etc.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le site est toujours plus performant. L&apos;utilisateur apprécit et revient. Le référencement s&apos;amliore&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Skyfall : le paradoxe du grand père façon James Bond</title>
      <link href="https://francois.aichelbaum.com/2012/10/29/skyfall-le-paradoxe-du-grand-pere-facon-james-bond" />
      <updated>2012-10-29T12:24:23+01:00</updated>
      <id>https://francois.aichelbaum.com/2012/10/29/skyfall-le-paradoxe-du-grand-pere-facon-james-bond</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/10/Skyfall_wallpaper1.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-7385&quot; title=&quot;Skyfall&quot; src=&quot;/assets/Skyfall_wallpaper1-150x150.jpg&quot; alt=&quot;Skyfall&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;James Bond est l&apos;une des sagas qui m&apos;a le plus bercé depuis mes débuts de spectateurs. Ces longues soirées d&apos;hiver à regarde le flegme britannique donner une leçon à ces vils espions russes ou ces escrocs en col blanc. Malheureusement, ce flegme britannique a pris un gros coup à deux reprises. Une touche trop américaine avec le style de Timothy Dalton. Une touche trop russe avec le style de Daniel Craig. Dès que je le vois, je repense à l&apos;espion soviétique de &lt;a href=&quot;http://www.youtube.com/watch?v=gwfgIOmHpLA&quot;&gt;Bon baiser de Russie&lt;/a&gt;. Bref, Skyfall est sorti vendredi donc obligation de le voir ... puis de le critiquer&lt;/p&gt;
&lt;p&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Le paradoxe de James Bond&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Les épisodes 21 et 22 marquait un retour dans en arrière compliqué pour l&apos;espion anglais. Il fallait revenir aux origines du personnes, tout en avançant dans le temps pour coller à la modernité de l&apos;actualité. Compliqué mais pas impossible, jusqu&apos;au moment où le lien devait être fait avec le reste de la saga. C&apos;est le but de Skyfall.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=6kw1UVovByw[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Comment revenir sur l&apos;origine de l&apos;espion, de son univers, et continuer d&apos;avancer ? Tout simplement en programmant une destruction globale de l&apos;existant (MI6, M, ...) pour repartir sur de nouvelles bases. Le film se charge donc de détruire le magnifique QG (réel) du MI6 pour le remplacer par les sous terrains de Churchill. &quot;M&quot; est mise sur le pilori pour annoncer son futur remplacement dès le début du film. Et Moneypenny fait enfin son apparition, justifiant au passage le petit jeu de séduction entre elle et Bond. Peu de gadget dans cet opus si ce n&apos;est une petite balise radio old-school mais miniature de la part du nouveau Q.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/10/Skyfall-le-nouveau-James-Bond-est-le-plus-cool-de-la-saga-un-futur-classique_portrait_w532.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7391&quot; title=&quot;Skyfall&quot; src=&quot;/assets/Skyfall-le-nouveau-James-Bond-est-le-plus-cool-de-la-saga-un-futur-classique_portrait_w532-150x150.jpg&quot; alt=&quot;Skyfall&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/10/o-SKYFALL-570.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7394&quot; title=&quot;Skyfall&quot; src=&quot;/assets/o-SKYFALL-570-150x150.jpg&quot; alt=&quot;Skyfall&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/10/953216-nouveau-spot-tv-pour-le-film-skyfall-620x0-2.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7397&quot; title=&quot;Skyfall&quot; src=&quot;/assets/953216-nouveau-spot-tv-pour-le-film-skyfall-620x0-2-150x150.jpg&quot; alt=&quot;Skyfall&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/10/472047_daniel-craig-g-et-l-actrice-francaise-berenice-marlohe-d-pour-l-avant-premiere-mondiale-du-nouveau-james-bond-skyfall-le-23-octobre-2012-a-londres.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7400&quot; title=&quot;Skyfall&quot; src=&quot;/assets/472047_daniel-craig-g-et-l-actrice-francaise-berenice-marlohe-d-pour-l-avant-premiere-mondiale-du-nouveau-james-bond-skyfall-le-23-octobre-2012-a-londres-150x150.jpg&quot; alt=&quot;Skyfall&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/10/20-berenice-marlohe-skyfall-james-bond.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7403&quot; title=&quot;Skyfall&quot; src=&quot;/assets/20-berenice-marlohe-skyfall-james-bond-150x150.jpg&quot; alt=&quot;Skyfall&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Là où ce James Bond échoue lamentablement ? L&apos;ennemi. Ce n&apos;est plus la mode aux magnats de la finance (bah oui, c&apos;est l&apos;heure de la crise donc on ne va pas taper sur la production). Et alors qu&apos;un retour aux luttes contre l&apos;armée rouge aurait été bienvenu, on ne nous annonce un ennemi bien pire : un renegat anglais ... qui n&apos;a rien d&apos;anglais. Après tout, on n&apos;a bien un espion soviet pour camper le rôle du plus anglais des espions. Alors on n&apos;est plus à ca près. Et encore, je ne vous dit pas les crises de fous rires qui s&apos;annoncent en regardant le jeu d&apos;acteur de Javier Bardem.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Par contre, comme bien souvent, la bande originale est magnifique. Signée Adèle, s&apos;il vous plaît (et il vous plaira).&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=7HKoqNJtMTQ[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Cette douceur ne suffira malheureusement pas à masquer la violence et le côté américain du film. On frappe. On tue. Et s&apos;il y a des survivants on se pose des questions. Les James Bond girls sont là, mais au final, bien trop transparentes. Où sont donc passées les bases des bons vieux James Bond ? Réponse, espérons-le, au prochain opus. Pour le coup, j&apos;ai bien failli m&apos;endormir.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/10/james-bond-007-skyfall.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-7406&quot; title=&quot;Skyfall&quot; src=&quot;/assets/james-bond-007-skyfall-300x225.jpg&quot; alt=&quot;Skyfall&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Astérix et Obélix : Au service de Sa Majesté</title>
      <link href="https://francois.aichelbaum.com/2012/10/29/asterix-et-obelix-au-service-de-sa-majeste" />
      <updated>2012-10-29T11:48:49+01:00</updated>
      <id>https://francois.aichelbaum.com/2012/10/29/asterix-et-obelix-au-service-de-sa-majeste</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/10/background-new-affiche.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-7355&quot; title=&quot;Astérix et Obélix : Au service de Sa Majesté&quot; src=&quot;/assets/background-new-affiche-150x150.jpg&quot; alt=&quot;Astérix et Obélix : Au service de Sa Majesté&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Ah, les aventures d&apos;Astérix et Obélix. Toujours un grand moment de lecture que l&apos;on soit jeune ou moins jeune. Par contre, pour ce qui est des adaptions cinémas &quot;live&quot;, c&apos;est une autre histoire. Sur trois films, un seul tire son épingle du jeu (&lt;a href=&quot;http://www.youtube.com/watch?v=kCFrvuPpAoQ&quot;&gt;Mission Cléopatre&lt;/a&gt;) et mérite d&apos;être vu : il faut dire que la bande à Chabat est une arme de rire massive. Quid de la nouvelle adaptation au cinéma ?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Astérix en voyage&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Cette fois-ci, notre blond ami décolle pour voir les bretons cousins. Les normands cousins seront également de la partie. Un voyage haut en couleur en perspective annonce-t-il un niveau de qualité élevé ?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=eLr8aU-sTb8[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Quatrième film, et encore un nouvel Astérix : Edouard Baer. Je dois dire que j&apos;aime la symbiose du duo Depardieu-Clavier depuis de nombreux films. Cornillac est un bon acteur mais le rôle ne lui allait pas du tout. Edouard Baer est tout simplement PAR-FAIT !&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;De même, un nouveau César entre en scène : Fabrice Luchini. C&apos;est sûr, il n&apos;a pas le nombrilisme que dégage Alain Delon et qui était fort sympatique pour le rôle. Pour autant, sa prose et sa verbale font de lui un grand et agréable César.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Par contre, premier point qui m&apos;attriste ? Les bretons sont tous joués par des Français. C&apos;est sûr que l&apos;ouverture à l&apos;international est impossible pour un produit tel qu&apos;Astérix : il ne s&apos;est vendu qu&apos;à 325 millions de part le monde et traduit exclusivement dans 107 langues. Du coup, ces français bretons nous sur-jouent du début à la fin l&apos;anglais accent. Ce qui est comique les premières minutes du film devient vite ennuyeux voire fatigant.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/10/dany_boon.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7361&quot; title=&quot;Astérix et Obélix : Au service de Sa Majesté &quot; src=&quot;/assets/dany_boon-150x150.jpg&quot; alt=&quot;Astérix et Obélix : Au service de Sa Majesté &quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/10/asterix-et-obelix_reference.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7364&quot; title=&quot;Astérix et Obélix : Au service de Sa Majesté &quot; src=&quot;/assets/asterix-et-obelix_reference-150x150.jpg&quot; alt=&quot;Astérix et Obélix : Au service de Sa Majesté &quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/10/Astérix-et-Obélix-Au-service-de-sa-Majesté-Télérama-04.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7367&quot; title=&quot;Astérix et Obélix : Au service de Sa Majesté &quot; src=&quot;/assets/Ast&amp;#233;rix-et-Ob&amp;#233;lix-Au-service-de-sa-Majest&amp;#233;-T&amp;#233;l&amp;#233;rama-04-150x150.jpg&quot; alt=&quot;Astérix et Obélix : Au service de Sa Majesté &quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/10/Astérix-et-Obélix-Au-service-de-sa-Majesté-Télérama-03-500x341.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7370&quot; title=&quot;Astérix et Obélix : Au service de Sa Majesté &quot; src=&quot;/assets/Ast&amp;#233;rix-et-Ob&amp;#233;lix-Au-service-de-sa-Majest&amp;#233;-T&amp;#233;l&amp;#233;rama-03-500x341-150x150.jpg&quot; alt=&quot;Astérix et Obélix : Au service de Sa Majesté &quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/10/1775478_7_9734_valerie-lemercier-et-charlotte-le-bon-dans-le_4bd1cdafd8ed2bdade64e7f0dde44a4a.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7373&quot; title=&quot;Astérix et Obélix : Au service de Sa Majesté &quot; src=&quot;/assets/1775478_7_9734_valerie-lemercier-et-charlotte-le-bon-dans-le_4bd1cdafd8ed2bdade64e7f0dde44a4a-150x150.jpg&quot; alt=&quot;Astérix et Obélix : Au service de Sa Majesté &quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;De plus, alors que l&apos;anachronisme de la BD est connu mais léger, celui de ce film est lourd : des huttes celtes renferment des habitations aux décorations victorienne. Usant. Ces deux points sont bien fatigant et gâche le potentiel du film.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Par contre, les normands, avec un Dany Boon en principal représentant, s&apos;en sortent très bien. J&apos;ai beau ne pas aimé l&apos;acteur en général, ici, il se laisse regarder et assume très bien son rôle de géant du nord.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Au final, le film se révèle en demi teinte : les acteurs sont à leur place (ou presque ...) mais une ouverture à l&apos;internationale et une liberté moins grande sur les anachronismes aurait rendu le film parfait. N°2 en qualité dans la saga.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/10/asterix_et_obelix_au_service_de_sa_majeste.jpg&quot;&gt;&lt;img class=&quot;aligncenter size-medium wp-image-7352&quot; title=&quot;Astérix et Obélix : Au service de Sa Majesté&quot; src=&quot;/assets/asterix_et_obelix_au_service_de_sa_majeste-224x300.jpg&quot; alt=&quot;Astérix et Obélix : Au service de Sa Majesté&quot; width=&quot;224&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;
&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Code Club - Talking code</title>
      <link href="https://francois.aichelbaum.com/2012/10/07/code-club-talking-code" />
      <updated>2012-10-07T15:39:42+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/10/07/code-club-talking-code</id>
      <content type="html">&lt;p&gt;&lt;iframe width=&quot;425&quot; height=&quot;350&quot; src=&quot;https://www.youtube.com/embed/Ci3hY83rUwU&quot; frameborder=&quot;0&quot;&gt;&lt;/iframe&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Création d&amp;#039;une plateforme (S) FTP (S) sécurisée avec authentification centralisée et utilisant divers stockages</title>
      <link href="https://francois.aichelbaum.com/2012/09/26/creation-dune-plateforme-sftps-securisee-avec-authentification-centralisee-et-utilisant-divers-stockages" />
      <updated>2012-09-26T17:02:49+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/09/26/creation-dune-plateforme-sftps-securisee-avec-authentification-centralisee-et-utilisant-divers-stockages</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/FTP-logo.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-7250&quot; title=&quot;FTP&quot; src=&quot;/assets/FTP-logo-150x150.jpg&quot; alt=&quot;FTP&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Il y a quelques années, pour l&apos;un de mes employeurs (un gros CDN français pour ne pas le citer), une problématique s&apos;est posée suite à une utilisation abusive des plateformes FTP. En l&apos;occurrence, il y avait plusieurs serveurs FTP :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sous Windows :IIS, Filezilla Server et CoreFTP (SFTP)&lt;/li&gt;
&lt;li&gt;sous Linux, plusieurs proftpd différents&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Suite à l&apos;utilisation abusive de la plateforme (historique) et l&apos;impossibilité de remonter les traces, il a été demandé de sécuriser l&apos;ensemble. J&apos;en ai profité pour faire pas mal de modifications :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;avoir un seul point d&apos;entrée (un même pool de &lt;em&gt;VIP&lt;/em&gt;) peu importe le service&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;avoir une authentification centralisée que ca soit en FTP, FTP avec SSL ou SFTP (à l&apos;époque avec un Active Directory)&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;avoir une seule et même arborescence pour tous les NAS utilisés, peu importe l&apos;origine et réduire le nombre de comptes clients&lt;/li&gt;
&lt;li&gt;enregistrer toute l&apos;activité des serveurs (accès, commandes exécutées)&lt;/li&gt;
&lt;li&gt;bannir les comportements anormaux&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;J&apos;avais nommé ce genre de plate-forme &lt;em&gt;FTPx&lt;/em&gt;. Je cherchais un nouveau sujet de billet. Je me suis dis que j&apos;allais dépoussiérer cette plateforme (la refaire pour le billet donc) en lui rajoutant une petite couche complémentaire (portsentry, honeypot, ...).&lt;/p&gt;
&lt;p&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h2&gt;Avant propos sur la plateforme FTP&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;L&apos;architecture va se baser exclusivement sur du gratuit. Du coup, je remplace l&apos;Active Directory par un plus basique MySQL. La plateforme montée rapidement se base sur les machines suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;color: #3366ff;&quot;&gt;fw&lt;/span&gt; : firewalling et loadbalancing&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #3366ff;&quot;&gt;ftpx01&lt;/span&gt; &amp;amp; &lt;span style=&quot;color: #3366ff;&quot;&gt;ftpx02&lt;/span&gt; : serveurs SFTP + FTP(S)&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #3366ff;&quot;&gt;mysql&lt;/span&gt; : serveur MySQL&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Bien sûr, on pourrait redondé la partie fw ou mysql mais ce n&apos;est pas le sujet de ce billet (je pourrais toujours rédiger un billet dédié s&apos;il y a de la demande pour). Au niveau accès, de l&apos;extérieur, un utilisateur qui fait du SFTP ne pourra pas faire de SSH. De plus, il sera restreint à son arborescence et ne pourra remonté ailleurs.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/ftpx.png&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-7256 aligncenter&quot; title=&quot;Schéma architecture FTPX&quot; src=&quot;/assets/ftpx-300x188.png&quot; alt=&quot;Schéma architecture FTPX&quot; width=&quot;300&quot; height=&quot;188&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Au niveau NAS, je ne ferais que la partie cliente, de manière rapide pour montrer la logique. Donc un serveur NFS et un serveur CIFS sont supposés exister.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On suppose à chaque fois partir d&apos;une Debian légère et plutôt vierge. On ignore l&apos;installation du serveur MySQL qui n&apos;a rien de bien particulier.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Au niveau réseau, on notera les réseaux ainsi :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;x.x.x.y : IP publique se finissant en y (on suppose une /24 de manière abusive)&lt;/li&gt;
&lt;li&gt;z.z.a.y : IP pour le routage vers &lt;span style=&quot;color: #3366ff;&quot;&gt;fw&lt;/span&gt; (on travaille sur une /24 encore)&lt;/li&gt;
&lt;li&gt;z.z.b.y : IP de service entre les serveurs FTP et MySQL&lt;/li&gt;
&lt;li&gt;z.z.c.y : IP de service entre les serveurs FTP et les NAS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Du coup, on se retrouve avec le plan d&apos;adressage suivant :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;color: #3366ff;&quot;&gt;fw&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;public : x.x.x.1/24&lt;/li&gt;
&lt;li&gt;honeypot : x.x.x.2/24&lt;/li&gt;
&lt;li&gt;vip : x.x.x.3/24&lt;/li&gt;
&lt;li&gt;vers &lt;span style=&quot;color: #3366ff;&quot;&gt;ftpx01&lt;/span&gt; &amp;amp; &lt;span style=&quot;color: #3366ff;&quot;&gt;ftpx02&lt;/span&gt; : z.z.a.1/24&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #3366ff;&quot;&gt;ftpx01&lt;/span&gt; &amp;amp; &lt;span style=&quot;color: #3366ff;&quot;&gt;ftpx02&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;vers &lt;span style=&quot;color: #3366ff;&quot;&gt;fw&lt;/span&gt; : z.z.a.11/24 et z.z.a.12/24&lt;/li&gt;
&lt;li&gt;vers &lt;span style=&quot;color: #3366ff;&quot;&gt;mysql&lt;/span&gt; : z.z.b.11/24 et z.z.b.12/24&lt;/li&gt;
&lt;li&gt;vers les &lt;span style=&quot;color: #3366ff;&quot;&gt;nas&lt;/span&gt; : z.z.c.11/24 et z.z.c.12/24&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #3366ff;&quot;&gt;mysql&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;vers &lt;span style=&quot;color: #3366ff;&quot;&gt;ftpx01&lt;/span&gt; &amp;amp; &lt;span style=&quot;color: #3366ff;&quot;&gt;ftpx02&lt;/span&gt; : z.z.b.21/24&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #3366ff;&quot;&gt;nfs&lt;/span&gt; &amp;amp; &lt;span style=&quot;color: #3366ff;&quot;&gt;cifs&lt;/span&gt;
&lt;ul&gt;
&lt;li&gt;vers &lt;span style=&quot;color: #3366ff;&quot;&gt;ftpx01&lt;/span&gt; &amp;amp; &lt;span style=&quot;color: #3366ff;&quot;&gt;ftpx02&lt;/span&gt; : z.z.c.31/24 &amp;amp; z.z.c.32/24&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Création de fw&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On commence par installer les premiers packages.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;apt-get -y install bind9 libnetfilter-conntrack3 ldirectord apticron ntp iptables module-assistant xtables-addons-common honeyd fail2ban portsentry&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On implémente le module complémentaire d&apos;iptables.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;module-assistant --verbose --text-mode auto-install xtables-addons&lt;/pre&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Serveur DNS récursif&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On s&apos;installe un serveur DNS récursif en local pour diverses raisons (dont des histoires de performance).&lt;/p&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/bind/named.conf.options
options {
 directory &quot;/var/cache/bind&quot;;
 query-source address * port *;
 forwarders { 208.67.222.222; 208.67.220.220; };
 auth-nxdomain no; # conform to RFC1035
 listen-on-v6 { none; };
 listen-on { 127.0.0.1; };
 allow-transfer { none; };
 allow-query { any; };
 allow-recursion { any; };
 version none;
};
EOF
/etc/init.d/bind9 restart
echo &quot;nameserver 127.0.0.1&quot; &amp;gt; /etc/resolv.conf&lt;/pre&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Optimisations système&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On s&apos;applique à faire quelques optimisations qui seront bien pratique pour la suite.&lt;/p&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/security/limits.conf
* - nofile 65536
EOF
cat &amp;lt;&amp;lt; EOF &amp;gt;&amp;gt; /etc/profile
ulimit -n 65536
EOF
cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.arp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.arp_filter = 1
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 4194304
net.core.wmem_max = 4194304
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 65536 4194304
net.ipv4.tcp_mem = 4096 65536 4194304
net.ipv4.tcp_low_latency = 0
net.core.netdev_max_backlog = 30000
fs.file-max = 65536
kernel.shmmax = 8000000000
kernel.shmall = 8000000000
net.ipv4.tcp_abort_on_overflow = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65535
vm.min_free_kbytes = 65536
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth1.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.eth1.arp_announce = 2
net.ipv4.tcp_orphan_retries = 0
net.ipv4.tcp_timestamps = 0 
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_keepalive_intvl = 1
net.ipv4.tcp_keepalive_probes = 1 
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 1
net.ipv4.conf.all.proxy_arp = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 1
kernel.core_uses_pid=1
kernel.core_pattern=1
vm.dirty_background_ratio = 20
vm.dirty_ratio = 40
vm.swappiness = 1
vm.dirty_writeback_centisecs = 1500
net.ipv4.tcp_max_syn_backlog = 65536
net.core.optmem_max = 40960
net.ipv4.tcp_max_tw_buckets = 360000
net.ipv4.tcp_reordering = 5
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_rfc1337 = 0
net.core.somaxconn=65536
net.ipv4.tcp_moderate_rcvbuf=1
net.ipv4.tcp_ecn=0
net.ipv4.ip_no_pmtu_disc=0
net.ipv4.tcp_slow_start_after_idle=0
net.netfilter.nf_conntrack_acct=1
net.ipv4.icmp_echo_ignore_broadcasts=1
EOF
sysctl -p&lt;/pre&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Fail2ban &amp;amp; honeypot&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;L&apos;idée est d&apos;utiliser le honeypot pour bannir les mauvaises personnes. Pour se faire, vu qu&apos;on doit appliquer les règles au niveau de &lt;span style=&quot;color: #3366ff;&quot;&gt;fw&lt;/span&gt;, aussi bien pour du INPUT que du FORWARD et sur plusieurs IP, on va le faire via fail2ban.&lt;/p&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/rc.local
farpd x.x.x.2 -i eth0
/usr/local/bin/rules.sh start 
exit 0
EOF&lt;/pre&gt;
&lt;pre&gt;farpd x.x.x.2 -i eth0
wget http://www.alunos.di.uminho.pt/~a43175/code/perl/customPie.pm -O /etc/honeypot/customPie.pm
wget http://www.alunos.di.uminho.pt/~a43175/code/perl/buildPie.pl -O /etc/honeypot/buildPie.pl
cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/default/honeyd
RUN=&quot;yes&quot;
INTERFACE=&quot;eth0&quot;
NETWORK=x.x.x.2
OPTIONS=&quot;--disable-webserver&quot;
EOF&lt;/pre&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/honeypot/honeyd.conf
create win2k
set win2k personality &quot;Microsoft Windows 2000 SP2&quot;
set win2k default tcp action block
set win2k default udp action block
set win2k default icmp action block
set win2k uptime 3567
set win2k droprate in 13
add win2k tcp port 23 &quot;sh /usr/share/honeyd/scripts/unix/linux/suse8.0/telnetd.sh $ipsrc $sport $ipdst $dport&quot;
add win2k tcp port 21 &quot;sh /usr/share/honeyd/scripts/win32/win2k/msftp.sh $ipsrc $sport $ipdst $dport&quot;
add win2k tcp port 25 &quot;sh /usr/share/honeyd/scripts/win32/win2k/exchange-smtp.sh $ipsrc $sport $ipdst $dport&quot;
#add win2k tcp port 80 &quot;sh /usr/share/honeyd/scripts/win32/win2k/iis.sh $ipsrc $sport $ipdst $dport&quot;
add win2k tcp port 110 &quot;sh /usr/share/honeyd/scripts/win32/win2k/exchange-pop3.sh $ipsrc $sport $ipdst $dport&quot;
add win2k tcp port 143 &quot;sh /usr/share/honeyd/scripts/win32/win2k/exchange-imap.sh $ipsrc $sport $ipdst $dport&quot;
add win2k tcp port 389 &quot;sh /usr/share/honeyd/scripts/win32/win2k/ldap.sh $ipsrc $sport $ipdst $dport&quot;
add win2k tcp port 5901 &quot;sh /usr/share/honeyd/scripts/win32/win2k/vnc.sh $ipsrc $sport $ipdst $dport&quot;
add win2k udp port 161 &quot;perl /usr/share/honeyd/scripts/unix/general/snmp/fake-snmp.pl public private --config=/usr/share/honeyd/scripts/unix/general/snmp&quot;
# This will redirect incomming windows-filesharing back to the source
add win2k udp port 137 proxy $ipsrc:137
add win2k udp port 138 proxy $ipsrc:138
add win2k udp port 445 proxy $ipsrc:445
add win2k tcp port 137 proxy $ipsrc:137
add win2k tcp port 138 proxy $ipsrc:138
add win2k tcp port 139 proxy $ipsrc:139
add win2k tcp port 445 proxy $ipsrc:445
bind x.x.x.2 win2k
EOF&lt;/pre&gt;
&lt;pre&gt;/etc/init.d/honeyd restart&lt;/pre&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/fail2ban/filter.d/honeyd.conf
[Definition]
failregex = .* S &amp;lt;HOST&amp;gt; .*$
ignoreregex = 
EOF&lt;/pre&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/fail2ban/action.d/banhost.conf
[Definition]
actionstart = 
actionstop = 
actioncheck = 
actionban = /usr/local/bin/banip.sh &amp;lt;ip&amp;gt;
actionunban = /usr/local/bin/unbanip.sh &amp;lt;ip&amp;gt;
EOF&lt;/pre&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/fail2ban/jail.conf
[DEFAULT]
ignoreip = 127.0.0.1 x.x.x.1
bantime = 86400
maxretry = 3
backend = polling
destemail = root@localhost
banaction = iptables-multiport
mta = sendmail
protocol = tcp
action_ = %(banaction)s[name=%(__name__)s, port=&quot;%(port)s&quot;, protocol=&quot;%(protocol)s]
action_mw = %(banaction)s[name=%(__name__)s, port=&quot;%(port)s&quot;, protocol=&quot;%(protocol)s]
 %(mta)s-whois[name=%(__name__)s, dest=&quot;%(destemail)s&quot;, protocol=&quot;%(protocol)s]
action_mwl = %(banaction)s[name=%(__name__)s, port=&quot;%(port)s&quot;, protocol=&quot;%(protocol)s]
 %(mta)s-whois-lines[name=%(__name__)s, dest=&quot;%(destemail)s&quot;, logpath=%(logpath)s]

action = %(action_)s
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
[honeyd]
enabled = trueinitctl list
filter = honeyd
port = all
logpath = /var/log/honeypot/honeyd.log
maxretry = 1
banaction = banhost
EOF&lt;/pre&gt;
&lt;pre&gt;/etc/init.d/fail2ban restart&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Toute personne tentant d&apos;ouvrir un port sur l&apos;honeypot sera automatiquement banni de la plateforme à coup de TARPIT pour la partie TCP et de DROP pour tout le reste.&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Portsentry&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Comment lutter contre un scan de port ? Grâce à portsentry bien sûr !&lt;/p&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/default/portsentry
TCP_MODE=&quot;atcp&quot;
UDP_MODE=&quot;audp&quot;
EOF&lt;/pre&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/portsentry/portsentry.conf
TCP_PORTS=&quot;1,7,9,11,15,20,21,2370,79,109,110,111,119,138,139,143,512,513,514,515,540,635,1080,1524,2000,2001,4000,4001,5742,6000,6001,6667,12345,12346,20034,27665,30303,32771,32772,32773,32774,31337,40421,40425,49724,54320&quot;
UDP_PORTS=&quot;1,7,9,66,67,68,69,111,137,138,161,162,474,513,517,518,635,640,641,666,700,2049,31335,27444,34555,32770,32771,32772,32773,32774,31337,54321&quot;
ADVANCED_PORTS_TCP=&quot;65536&quot;
ADVANCED_PORTS_UDP=&quot;65536&quot;
ADVANCED_EXCLUDE_TCP=&quot;80&quot;
ADVANCED_EXCLUDE_UDP=&quot;&quot;
IGNORE_FILE=&quot;/etc/portsentry/portsentry.ignore&quot;
HISTORY_FILE=&quot;/var/lib/portsentry/portsentry.history&quot;
BLOCKED_FILE=&quot;/var/lib/portsentry/portsentry.blocked&quot;
RESOLVE_HOST = &quot;0&quot;
BLOCK_UDP=&quot;2&quot;
BLOCK_TCP=&quot;2&quot;
KILL_ROUTE=&quot;/sbin/route add -host $TARGET$ reject&quot;
KILL_HOSTS_DENY=&quot;ALL: $TARGET$ : DENY&quot;
KILL_RUN_CMD_FIRST = &quot;0&quot;
KILL_RUN_CMD=&quot;/usr/local/bin/banip.sh $TARGET$&quot;
SCAN_TRIGGER=&quot;0&quot;
EOF&lt;/pre&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/portsentry/portsentry.ignore.static
208.67.222.222
208.67.220.220
x.x.x.254
EOF&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Encore une fois, on va utiliser un script qui va nous bannir correctement l&apos;IP sur l&apos;ensemble de la plateforme.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Toute personne tentant un scan de port sera automatiquement banni de la plateforme à coup de TARPIT pour la partie TCP et de DROP pour tout le reste.&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Scripting&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On va utiliser quelques scripts selon la tâche à exécuter :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;rules.sh va définir les règles par défaut&lt;/li&gt;
&lt;li&gt;banip.sh va bannir une IP donnée&lt;/li&gt;
&lt;li&gt;unbanip.sh va débannir une IP donnée&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /usr/local/bin/rules.sh
#!/bin/bash&lt;/pre&gt;
&lt;pre&gt;start() {
 echo &quot;Routing&quot;
 iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
 iptables -t nat -A PREROUTING -d x.x.x.3 -m tcp -p tcp --dport 21 -j DNAT --to-destination z.z.a.11
 iptables -t nat -A PREROUTING -d x.x.x.3 -m tcp -p tcp --dport 22 -j DNAT --to-destination z.z.a.11
 iptables -t mangle -A PREROUTING -i eth0 -p tcp -s 0.0.0.0/0 -d x.x.x.3/32 --dport ftp -j MARK --set-mark 1
 iptables -t mangle -A PREROUTING -i eth0 -p tcp -s 0.0.0.0/0 -d x.x.x.3/32 --dport 55000: -j MARK --set-mark 1
 for chain in INPUT FORWARD; do
  echo &quot;Block DOS - $chain - Ping of Death&quot;
  iptables -A $chain -p ICMP --icmp-type echo-request -m length --length 60:65535 -j ACCEPT;
  echo &quot;Block DOS - $chain - Teardrop&quot;
  iptables -A $chain -p UDP -f -j DROP;
  echo &quot;Block DDOS - $chain - SYN-flood&quot;
  iptables -A $chain -p TCP ! --syn -m state --state NEW -j TARPIT;
  iptables -A $chain -p TCP ! --syn -m state --state NEW -j DROP;
  echo &quot;Block DDOS - $chain - Smurf&quot;
  iptables -A $chain -m pkttype --pkt-type broadcast -j DROP;
  iptables -A $chain -p ICMP --icmp-type echo-request -m pkttype --pkt-type broadcast -j DROP;
  iptables -A $chain -p ICMP --icmp-type echo-request -m limit --limit 3/s -j ACCEPT;
  echo &quot;Block DDOS - $chain - UDP-flood (Pepsi)&quot;
  iptables -A $chain -p UDP --dport 7 -j DROP;
  iptables -A $chain -p UDP --dport 19 -j DROP;
  echo &quot;Block DDOS - $chain - SMBnuke&quot;
  iptables -A $chain -p UDP --dport 135:139 -j DROP;
  iptables -A $chain -p TCP --dport 135:139 -j TARPIT;
  iptables -A $chain -p TCP --dport 135:139 -j DROP;
  echo &quot;Block DDOS - $chain - Connection-flood&quot;
  iptables -A $chain -p TCP --syn -m connlimit --connlimit-above 3 -j TARPIT;
  iptables -A $chain -p TCP --syn -m connlimit --connlimit-above 3 -j DROP;
  echo &quot;Block DDOS - $chain - Fraggle&quot;
  iptables -A $chain -p UDP -m pkttype --pkt-type broadcast -j DROP;
  iptables -A $chain -p UDP -m limit --limit 3/s -j ACCEPT;
  echo &quot;Block DDOS - $chain - Jolt&quot;
  iptables -A $chain -p ICMP -f -j DROP; 
 done
 /etc/init.d/portsentry start
}
stop() {
 /etc/init.d/portsentry stop
 iptables -F
 iptables -X 
 iptables -F -t nat
 iptables -X -t nat
 iptables -F -t mangle
 iptables -X -t mangle
}
case &quot;$1&quot; in
 start)
  start
  ;;
 stop)
  stop
  ;;
 restart|reload)
  stop
  start
  ;;
 *)
  echo &quot;$0 &amp;lt;start|stop|restart|reload&amp;gt;&quot;
  exit 1
  ;;
esac
exit 0
EOF&lt;/pre&gt;
&lt;pre&gt;chmod +x /usr/local/bin/rules.sh&lt;/pre&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /usr/local/bin/banip.sh
#!/bin/bash
if [ $# -ne 1 ]; then
 echo &quot;usage: $0 IP&quot;;
 exit 1;
fi&lt;/pre&gt;
&lt;pre&gt;/sbin/iptables -I INPUT -s $1 -m tcp -p tcp -j TARPIT 
/sbin/iptables -I INPUT -s $1 -j DROP 
/sbin/iptables -I FORWARD -s $1 -m tcp -p tcp -j TARPIT 
/sbin/iptables -I FORWARD -s $1 -j DROP 
/sbin/iptables -I INPUT -s $1 -m limit --limit 1/minute --limit-burst 3 -j LOG --log-level debug --log-prefix &apos;Portsentry: tarpiting: &apos;
exit 0
EOF&lt;/pre&gt;
&lt;pre&gt;chmod +x /usr/local/bin/banip.sh&lt;/pre&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /usr/local/bin/unbanip.sh
#!/bin/bash
if [ $# -ne 1 ]; then
 echo &quot;usage: $0 IP&quot;;
 exit 1;
fi
for chain in INPUT FORWARD; do
 for id in `iptables -L $chain -n --line-numbers | grep $1 | awk &apos;{ print $1 }&apos;`; do
  iptables -D $chain $id;
 done
done
exit 0
EOF&lt;/pre&gt;
&lt;pre&gt;chmod +x /usr/local/bin/unbanip.sh&lt;/pre&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Load balancing&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On enchaine avec le load balancing. On déclare l&apos;IP de la VIP en alias.&lt;/p&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt;&amp;gt; /etc/network/interfaces
auto eth0:0
iface eth0:0 inet static
 address x.x.x.3
 netmask 255.255.255.255
EOF&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Puis on configure le load balancing en lui-même. Attention, le serveur FTP va fonctionner en mode passif, donc on prévoir l&apos;ouverture des ports dynamiques et non prévisibles au niveau du load balancing.&lt;/p&gt;
&lt;pre&gt;echo CONFIG_FILE=/etc/ldirectord.cf &amp;gt;&amp;gt; /etc/default/ldirectord&lt;/pre&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/ldirectord.cf
 checktimeout=1
 negotiatetimeout=1
 checkinterval=5
 autoreload=yes
 logfile=&quot;l0&quot;
 quiescent=yes
 virtual=1
 real=z.z.a.11 gate
 real=z.z.a.12:21 gate
 service=ftp
 scheduler=lc
 protocol=fwm
 persistent=5
 checktype=negotiate
 virtual=x.x.x.3:22
 real=z.z.a.11:22 gate
 real=z.z.a.12:22 gate
 service=ftp
 scheduler=lc
 protocol=tcp
 persistent=5
 checktype=negotiate
 EOF&lt;/pre&gt;
&lt;pre&gt;/etc/init.d/ldirectord restart&lt;/pre&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Création d&apos;un serveur ftpx&lt;/h2&gt;
&lt;p&gt;On commence par installer les premiers packages.&lt;/p&gt;
&lt;pre&gt;apt-get -y install bind9 iptables fail2ban libpam-mysql mysql-client libnss-mysql-bg nscd pure-ftpd&lt;/pre&gt;
&lt;h3&gt;SERVEUR DNS RÉCURSIF&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On s&apos;installe un serveur DNS récursif en local pour diverses raisons (dont des histoires de performance).&lt;/p&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/bind/named.conf.options
options {
 directory &quot;/var/cache/bind&quot;;
 query-source address * port *;
 forwarders { 208.67.222.222; 208.67.220.220; };
 auth-nxdomain no; # conform to RFC1035
 listen-on-v6 { none; };
 listen-on { 127.0.0.1; };
 allow-transfer { none; };
 allow-query { any; };
 allow-recursion { any; };
 version none;
};
EOF
/etc/init.d/bind9 restart
echo &quot;nameserver 127.0.0.1&quot; &amp;gt; /etc/resolv.conf&lt;/pre&gt;
&lt;h3&gt;OPTIMISATIONS SYSTÈME&lt;/h3&gt;
&lt;p&gt;On s&apos;applique à faire quelques optimisations qui seront bien pratique pour la suite.&lt;/p&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/security/limits.conf
* - nofile 65536
EOF
cat &amp;lt;&amp;lt; EOF &amp;gt;&amp;gt; /etc/profile
ulimit -n 65536
EOF
cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/sysctl.conf
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.arp_filter = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.arp_filter = 1
net.core.rmem_default = 4194304
net.core.rmem_max = 4194304
net.core.wmem_default = 4194304
net.core.wmem_max = 4194304
net.ipv4.tcp_rmem = 4096 87380 4194304
net.ipv4.tcp_wmem = 4096 65536 4194304
net.ipv4.tcp_mem = 4096 65536 4194304
net.ipv4.tcp_low_latency = 0
net.core.netdev_max_backlog = 30000
fs.file-max = 65536
kernel.shmmax = 8000000000
kernel.shmall = 8000000000
net.ipv4.tcp_abort_on_overflow = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_fin_timeout = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 1024 65535
vm.min_free_kbytes = 65536
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.eth0.arp_ignore = 1
net.ipv4.conf.eth1.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.eth0.arp_announce = 2
net.ipv4.conf.eth1.arp_announce = 2
net.ipv4.tcp_orphan_retries = 0
net.ipv4.tcp_timestamps = 0 
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_keepalive_intvl = 1
net.ipv4.tcp_keepalive_probes = 1 
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 1
net.ipv4.conf.all.proxy_arp = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 1
kernel.core_uses_pid=1
kernel.core_pattern=1
vm.dirty_background_ratio = 20
vm.dirty_ratio = 40
vm.swappiness = 1
vm.dirty_writeback_centisecs = 1500
net.ipv4.tcp_max_syn_backlog = 65536
net.core.optmem_max = 40960
net.ipv4.tcp_max_tw_buckets = 360000
net.ipv4.tcp_reordering = 5
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.tcp_no_metrics_save = 1
net.ipv4.tcp_max_orphans = 262144
net.ipv4.tcp_rfc1337 = 0
net.core.somaxconn=65536
net.ipv4.tcp_moderate_rcvbuf=1
net.ipv4.tcp_ecn=0
net.ipv4.ip_no_pmtu_disc=0
net.ipv4.tcp_slow_start_after_idle=0
net.netfilter.nf_conntrack_acct=1
net.ipv4.icmp_echo_ignore_broadcasts=1
EOF
sysctl -p&lt;/pre&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Rajout d&apos;un point d&apos;entrée pour syslog-ng&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pensez simplement à rajouter la ligne suivante dans less sources de syslog-ng (/etc/syslog-ng/syslog-ng.conf) pour logguer tout ce que font vos utilisateurs).&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;unix-stream(&quot;/chroot/log&quot; max-connections(2048));&lt;/pre&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Configuration de PAM &amp;amp; NSS pour utiliser MySQL&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On suppose le serveur MySQL pré-installé. On y configure un compte pour PAM et la table d&apos;utilisateurs qui va bien.&lt;/p&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF | mysql -u root -h z.z.b.21 -p
CREATE DATABASE pam;
GRANT SELECT ON pam.* TO &apos;pam&apos;@&apos;%&apos; IDENTIFIED BY &apos;pampass&apos;;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pam.* TO &apos;pamadm&apos;@&apos;%&apos; IDENTIFIED BY &apos;pamadmpass&apos;;
FLUSH PRIVILEGES;
USE pam;
CREATE TABLE `accounts` (
`id` INT NOT NULL auto_increment primary key,
`username` VARCHAR( 30 ) NOT NULL ,
`login` VARCHAR( 30 ) NOT NULL ,
`pass` VARCHAR( 50 ) NOT NULL ,
UNIQUE (`username`)
) ENGINE = MYISAM ;
quit;
EOF&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On poursuit avec la modification de nsswitch.conf. Pour cela on remplace les lignes passwd et shadow (mais pas group) :&lt;/p&gt;
&lt;pre&gt;passwd:  compat files  mysql 
shadow:  compat files  mysql&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Puis on prépare l&apos;accès MySQL de nsswitch.&lt;/p&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/libnss-mysql.cfg
getpwnam SELECT login,&apos;x&apos;,id+&apos;2000&apos;,&apos;2000&apos;,username,CONCAT(&apos;/opt/ftpx/&apos;,login,login),&apos;/bin/false&apos; \ 
 FROM accounts \ 
 WHERE login=&apos;%1$s&apos; \ 
 LIMIT 1 
getpwuid SELECT login,&apos;x&apos;,id+&apos;2000&apos;,&apos;2000&apos;,username,CONCAT(&apos;/opt/ftpx/&apos;,login,login),&apos;/bin/false&apos; \ 
 FROM accounts \ 
 WHERE id=&apos;%1$u&apos;-2000 \ 
 LIMIT 1 
getspnam SELECT login,pass,&apos;&apos;,&apos;&apos;,&apos;&apos;,&apos;&apos;,&apos;&apos;,&apos;&apos;,&apos;&apos; \ 
 FROM accounts \ 
 WHERE login=&apos;%1$s&apos; \ 
 LIMIT 1 
getpwent SELECT login,&apos;x&apos;,id+&apos;2000&apos;,&apos;2000&apos;,username,CONCAT(&apos;/opt/ftpx/&apos;,login,login),&apos;/bin/false&apos; \ 
 FROM accounts 
getspent SELECT login,pass,&apos;&apos;,&apos;&apos;,&apos;&apos;,&apos;&apos;,&apos;&apos;,&apos;&apos;,&apos;&apos; \ 
 FROM accounts 
getgrnam SELECT name,password,gid \ 
 FROM groups \ 
 WHERE name=&apos;%1$s&apos; \ 
 LIMIT 1 
getgrgid SELECT name,password,gid \ 
 FROM groups \
 WHERE gid=&apos;%1$u&apos; \ 
 LIMIT 1 
getgrent SELECT name,password,gid \ 
 FROM groups 
memsbygid SELECT username \ 
 FROM grouplist \ 
 WHERE gid=&apos;%1$u&apos; 
gidsbymem SELECT gid \ 
 FROM grouplist \ 
 WHERE username=&apos;%1$s&apos; 
host z.z.b.21
database pam 
username pam 
password pampass
port 3306
EOF&lt;/pre&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/libnss-mysql-root.cfg
host        z.z.b.21 
database    accounts 
username    pamadm
password    pamadmpass
port        3306
EOF&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On ne définit en soit que les utilisateurs à qui on n&apos;impose un groupe bien précis &apos;sftponly&apos;.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;groupadd -g 2000 sftponly&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Reste à finir la configuration de PAM.&lt;/p&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/pam_mysql.conf
users.host=z.z.b.21
users.db_user=pamadm
users.db_passwd=pamadmpass
users.database=pam
users.table=accounts 
users.user_column=login 
users.password_column=pass 
users.password_crypt=2
verbose=1
EOF&lt;/pre&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;echo auth   required     pam_mysql.so    config_file=/etc/pam_mysql.conf &amp;gt;&amp;gt; /etc/pam.d/common-auth
echo account required pam_mysql.so config_file=/etc/pam_mysql.conf &amp;gt;&amp;gt; /etc/pam.d/common-account
echo session required pam_mysql.so config_file=/etc/pam_mysql.conf &amp;gt;&amp;gt; /etc/pam.d/common-session 
echo password required pam_mysql.so config_file=/etc/pam_mysql.conf &amp;gt;&amp;gt; /etc/pam.d/common-password&lt;/pre&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Restrictions pour SSH&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Maintenant que l&apos;on peut s&apos;authentifier avec des données en base, il faut restreindre la partie SSH. Le chroot de base ne me convient pas. En effet, il nécessite que le groupe d&apos;utilisateurs ait accès en lecture au dossier parent. Or, je souhaite leur restreindre un maximum la visibilité sur leurs petits voisins. Pour cela, il faut patcher openssh en conséquence.&lt;/p&gt;
&lt;pre&gt;apt-get source openssh-server
apt-get build-dep openssh-server
cd openssh-5.9p1
cat &amp;lt;&amp;lt; EOF &amp;gt; patch.diff
--- session.c.orig 2012-09-26 15:34:02.119243513 +0200
+++ session.c 2012-09-26 15:34:24.951244387 +0200
@@ -1457,7 +1457,7 @@
 if (stat(component, &amp;amp;st) != 0)
 fatal(&quot;%s: stat(\&quot;%s\&quot;): %s&quot;, __func__,
 component, strerror(errno));
- if (st.st_uid != 0 || (st.st_mode &amp;amp; 022) != 0)
+ if (st.st_uid != 0 || (st.st_mode &amp;amp; 077) != 0)
 fatal(&quot;bad ownership or modes for chroot &quot;
 &quot;directory %s\&quot;%s\&quot;&quot;, 
 cp == NULL ? &quot;&quot; : &quot;component &quot;, component);
EOF 
patch &amp;lt; patch.diff 
dpkg-buildpackage -rfakeroot -sa -b
cd ..
dpkg -i openssh-server*deb
rm -fR openssh*&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On peut maintenant finaliser la configuration d&apos;openssh.&lt;/p&gt;
&lt;pre&gt;sed &quot;s^Subsystem sftp /usr/lib/openssh/sftp-server^^&quot; /etc/ssh/sshd_config
mkdir /opt/sftpd
chmod 700 /opt/sftpd
cat &amp;lt;&amp;lt; EOF &amp;gt;&amp;gt; /etc/ssh/sshd_config
Subsystem sftp internal-sftp -f AUTH -l VERBOSE
Match Group sftponly
        ChrootDirectory /opt/sftp/%u/%u
        ForceCommand internal-sftp
        AllowTcpForwarding no
        GatewayPorts no
        X11Forwarding no
EOF
/etc/init.d/ssh restart&lt;/pre&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Mise en place de la partie FTP&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On va utiliser pure-ftpd. Pourquoi ? Pour une raison parfaitement objective indépendante de toute pollution extérieure : juste &quot;j&apos;aime bien&quot;. Au delà de ce point, il reste un très bon produit.&lt;/p&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/default/pure-ftpd-common
STANDALONE_OR_INETD=standalone
VIRTUALCHROOT=true
UPLOADUID=
UPLOADGID=
EOF&lt;/pre&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;echo yes &amp;gt; /etc/pure-ftpd/auth/65unix
echo yes &amp;gt; /etc/pure-ftpd/auth/70pam&lt;/pre&gt;
&lt;pre&gt;echo 1 &amp;gt; AllowUserFXP
echo stats:/var/log/pure-ftpd/transfer.log &amp;gt; AltLog
echo 21 &amp;gt; Bind
echo yes &amp;gt; ChrootEveryone
echo 1 &amp;gt; CustomerProof
echo 1 &amp;gt; DisplayDotFiles
echo 1 &amp;gt; DontResolve
echo UTF-8 &amp;gt; FSCharset
echo 100 &amp;gt; MaxClientsNumber
echo 10 &amp;gt; MaxClientsPerIP
echo 99 &amp;gt; MaxDiskUsage
echo 5 &amp;gt; MaxIdleTime
echo 2000 &amp;gt; MinUID
echo yes &amp;gt; NoAnonymous
echo 1 &amp;gt; NoTruncate
echo yes &amp;gt; PAMAuthentication
echo 55000 56000 &amp;gt; PassivePortRange
echo /etc/pure-ftpd/pureftpd.pdb &amp;gt; PureDB
echo ftp &amp;gt; SyslogFacility
echo 1 &amp;gt; TLS
echo 117 007 &amp;gt; Umask
echo yes &amp;gt; UnixAuthentication
echo 1 &amp;gt; VerboseLog&lt;/pre&gt;
&lt;pre&gt;mkdir -p /etc/ssl/private
openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
chmod 600 /etc/ssl/private/pure-ftpd.pem&lt;/pre&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;/etc/init.d/pure-ftpd restart&lt;/pre&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Montage des arborescences réelles et virtuelles&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Comme à l&apos;habitude, vous monter vos différents points d&apos;accès NFS et CIFS. On suppose qu&apos;il s&apos;agit de sous dossier de /mnt.&lt;/p&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /etc/init.d/masquerade
#!/bin/sh
case &quot;$1&quot; in
start)
 echo &quot;Start &apos;masquarade&apos;...&quot;
 echo &quot; mount remote fs&quot;
 mount -t cifs -a
 mount -t nfs -a
 echo &quot; enslave remote fs&quot;
 mount --make-slave /mnt/cifs01
 mount --make-slave /mnt/cifs02
 mount --make-slave /mnt/cifs03
 mount --make-slave /mnt/nfs01
 mount --make-slave /mnt/nfs02
 mount --make-slave /mnt/nfs03
 echo &quot; bind user mounts/chroot&quot;
 /usr/local/bin/masquarade.sh add &amp;gt; /var/log/masquarade.log 2&amp;gt; /var/log/masquarade.err
 [ $? -ne 0 ] &amp;amp;&amp;amp; echo &quot; failed to bind all users mounts/chroots.&quot;
 ;;
stop)
 echo &quot;Stop &apos;masquarade&apos;...&quot;
 echo &quot; unbind users mounts/chroot&quot; 
 /usr/local/bin/masquarade.sh del &amp;gt; /var/log/masquarade.log 2&amp;gt; /var/log/masquarade.err
 [ $? -ne 0 ] &amp;amp;&amp;amp; echo &quot; failed to unbind all users mounts/chroots.&quot;
 echo &quot; free remote fs&quot;
 umount /mnt/cifs01
 umount /mnt/cifs02
 umount /mnt/cifs03
 umount /mnt/nfs01
 umount /mnt/nfs02
 umount /mnt/nfs03
 ;;
restart)
 $0 stop
 sleep 5
 $0 start
 ;;
reload)
 $0 restart
 ;;
force-reload)
 $0 restart
 ;;
*)
 echo &quot;Usage: $0 {start|stop|restart|force-reload}&quot; &amp;gt;&amp;amp;2
 exit 3
 ;;
esac
exit 0
EOF
chmod +x /etc/init.d/masquerade
update-rc.d masquerade defaults&lt;/pre&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt; /usr/local/bin/masquarade.sh
#!/bin/bash
CONF=&quot;/usr/local/etc/mounts&quot;
DATE=`date +%s`
# USAGE
function usage()
{
 echo &quot;Usage: $0 &amp;lt;help&amp;gt; &amp;lt;add|del&amp;gt; [[&amp;lt;mount&amp;gt;] ...]&quot;;
 echo &quot; add - to add one or several mount&quot;;
 echo &quot; del - to remove one or several mount&quot;;
 echo &quot; mount - mount name from config file&quot;;
 echo &quot; help - this usage&quot;;
 echo &quot;&quot;;
 echo &quot;If no mount point is provided, all mount points from config file will be treated&quot;;
 echo &quot;Configuration: $CONF&quot;;
 echo &quot;&quot;;
}
# ADD A PMOUNT POINT
function addMount()
{
 touch /tmp/masquarade.$DATE
 if [ $# -ne 0 ]
 then
 echo &quot;[ Traitement de points particuliers ]&quot;
 echo &quot; Preparation du listing: &quot;
 for point in $*
 do
 if [ `grep -ve &apos;^#&apos; $CONF | grep -ve &apos;^\s*$&apos; | grep -F $point | wc -l` -eq 0 ]
 then
 echo &quot; Aucun point $PBIND existant dans la configuration&quot;
 continue
 fi
 grep -ve &apos;^#&apos; $CONF | grep -ve &apos;^\s*$&apos; | grep -F $point &amp;gt;&amp;gt; /tmp/masquarade.$DATE
 done
 else
 echo &quot;[ Utilisation du fichier complet ]&quot;
 echo &quot; Preparation du listing: &quot;
 grep -ve &apos;^#&apos; $CONF | grep -ve &apos;^\s*$&apos; &amp;gt;&amp;gt; /tmp/masquarade.$DATE
 fi
 cat /tmp/masquarade.$DATE | while read line
 do
 # extract data for mount point
 PTYPE=`echo $line | awk -F&apos;;&apos; &apos;{ print $1 }&apos;` # NOT USED
 PMOUNT=`echo $line | awk -F&apos;;&apos; &apos;{ print $3 }&apos;`
 PBIND=`echo $line | awk -F&apos;;&apos; &apos;{ print $2 }&apos;`
 PRIGHTS=`echo $line | awk -F&apos;;&apos; &apos;{ print $4 }&apos;`
 echo -n &quot;( + ) $PBIND: &quot;
 # check the source
 if [ ! -d $PMOUNT ]
 then
 echo &quot;$PMOUNT n&apos;existe pas&quot;;
 continue
 fi
 # create the binding
 mkdir -p $PBIND
 #echo &quot;mount -vvv -o bind $PMOUNT $PBIND&quot; &amp;amp;&amp;gt; /tmp/pouet.log; 
 #mount -vvv -o bind $PMOUNT $PBIND &amp;amp;&amp;gt;&amp;gt; /tmp/pouet.log; 
 mount -o bind $PMOUNT $PBIND 2&amp;gt; /dev/null;
 if [ $? -ne 0 ]
 then
 echo &quot; impossible de monter $PBIND&quot;
 continue
 fi
 if [ $PRIGHTS == &quot;ro&quot; ]
 then
 mount -o remount,ro $PBIND 2&amp;gt; /dev/null
 if [ $? -ne 0 ]
 then
 echo &quot; impossible de passer $PBIND en lecture seule&quot;
 continue
 fi
 fi
 echo -n &quot;$PBIND mounted ($PRIGHTS) &quot;
 echo &quot;ok&quot;
 done
 if [ $# -ne 0 ]
 then
 for point in $*
 do
 account=${point#/opt/sftp/}
 account=${account%/*}
 echo -n &quot;* $account: &quot;
 if [ `mount | grep -F /opt/sftp/$account/dev | wc -l` -gt 0 ]
 then
 echo &quot;already exists&quot;
 else
 mkdir -p /opt/sftp/$account/$account/dev/ 2&amp;gt; /dev/null
 mount -o bind /chroot/ /opt/sftp/$account/$account/dev/ 2&amp;gt; /dev/null
 chmod 700 /opt/sftp/$account 2&amp;gt; /dev/null
 chown root:root /opt/sftp/$account 2&amp;gt; /dev/null
 chmod 500 /opt/sftp/$account/$account/dev 2&amp;gt; /dev/null
 fi
 echo &quot;ok&quot;
 done
 else
 for account in `ls /opt/sftp`; do
 echo -n &quot;* $account: &quot;
 if [ `mount | grep -F /opt/sftp/$account/$account/dev | wc -l` -gt 0 ]
 then
 echo &quot;already exists&quot;
 else
 mkdir -p /opt/sftp/$account/$account/dev/ 2&amp;gt; /dev/null
 mount -o bind /chroot/ /opt/sftp/$account/$account/dev/ 2&amp;gt; /dev/null
 chmod 700 /opt/sftp/$account 2&amp;gt; /dev/null
 chown root:root /opt/sftp/$account 2&amp;gt; /dev/null
 chmod 500 /opt/sftp/$account/$account/dev 2&amp;gt; /dev/null
 fi
 echo &quot;ok&quot;
 done
 fi
 rm -f /tmp/masquarade.$DATE
 return
}
# DELETE A PMOUNT POINT
function delMount()
{
 if [ $# -ne 0 ]
 then
 echo &quot;[ Traitement de points particuliers ]&quot;
 echo &quot; Preparation du listing: &quot;
 for point in $*
 do
 if [ `grep -ve &apos;^#&apos; $CONF | grep -ve &apos;^\s*$&apos; | grep -F $point | wc -l` -eq 0 ]
 then
 echo &quot; Aucun point $PBIND existant dans la configuration&quot;
 continue
 fi
 grep -ve &apos;^#&apos; $CONF | grep -ve &apos;^\s*$&apos; | grep -F $point &amp;gt;&amp;gt; /tmp/masquarade.$DATE
 done
 else
 echo &quot;[ Utilisation du fichier complet ]&quot;
 echo &quot; Preparation du listing: &quot; 
 grep -ve &apos;^#&apos; $CONF | grep -ve &apos;^\s*$&apos; &amp;gt;&amp;gt; /tmp/masquarade.$DATE
 echo &quot; Retrait des logs&quot;
 for account in `ls /opt/sftp`
 do
 umount -f /opt/sftp/$account/$account/dev/ 2&amp;gt; /dev/null
 #rmdir /opt/sftp/$account/$account/dev/ 2&amp;gt; /dev/null
 done
 fi
 tac /tmp/masquarade.$DATE | while read line
 do
 PBIND=`echo $line | awk -F&apos;;&apos; &apos;{ print $2 }&apos;`
 PRIGHTS=`echo $line | awk -F&apos;;&apos; &apos;{ print $4 }&apos;`
 echo -n &quot;( - ) $PBIND: &quot;
 if [ `grep $PBIND /proc/mounts | grep -v grep | wc -l` -eq 0 ]
 then
 echo &quot;$PBIND n&apos;est pas/plus monte&quot;
 else
 umount -f $PBIND 2&amp;gt; /dev/null
 if [ $? -ne 0 ]
 then
 echo &quot;Impossible de demonter $PBIND&quot;
 continue
 fi
 fi
 echo &quot;ok&quot;
 done
 rm /tmp/masquarade.$DATE
}
if [ $# -eq 0 ]
then
 usage
 exit 0
fi
if [ ! -f $CONF ]
then
 echo &quot;Fichier $CONF manquant !&quot;
 echo &quot;Syntaxe du fichier: PTYPE;PMOUNT;PBIND;PRIGHTS&quot;
 exit 1
fi
action=0;
pos=0;
points=&quot;&quot;;
for arg in `echo $*`; do
 ((pos++))
 case &quot;$arg&quot; in
 help)
 usage;
 exit 0;
 ;;
 add)
 action=1;
 if [ $# -eq 1 ]; then
 addMount;
 fi
 ;;
 del)
 action=-1;
 if [ $# -eq 1 ]; then
 delMount;
 fi
 ;;
 *)
 points=&quot;${points} $arg&quot;;
 if [ $pos -eq $# ]; then
 if [ $action -eq 0 ]; then
 usage;
 exit 0;
 else if [ $action -gt 0 ]; then
 addMount $points;
 else 
 delMount $points;
 fi
 fi
 exit 0;
 fi
 ;;
 esac
done
exit 0
EOF 
chmod +x /usr/local/bin/masquarade.sh&lt;/pre&gt;
&lt;pre&gt;/etc/init.d/masquerade start&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;L&apos;idée est que chaque utilisateur est isolé et chrooté dans son coin. Il ne remonte pas l&apos;arborescence et n&apos;a même pas les droits en lecture chez ses voisins. De plus, chaque action peut être loguée puisque transmise à syslog-ng.&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;VIP&lt;/h3&gt;
&lt;p&gt;Pour que le load balancing fonctionne avec la bonne IP dans le paquet réseau, on pense à définir un alias.&lt;/p&gt;
&lt;pre&gt;cat &amp;lt;&amp;lt; EOF &amp;gt;&amp;gt; /etc/network/interfaces
auto lo:0
iface lo:0 inet static
 address x.x.x.3
 netmask 255.255.255.255
EOF&lt;/pre&gt;
&lt;div&gt;&lt;/div&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Création d&apos;un utilisateur&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Avec votre client MySQL préféré (CLI, phpMyAdmin, autre...), il vous suffit alors de rajouter une entrée en respectant les points suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;username correspond au nom de l&apos;utilisateur (par ex, &quot;Nom Prénom&quot;)&lt;/li&gt;
&lt;li&gt;login correspond à son identifiant&lt;/li&gt;
&lt;li&gt;pass est le mot de passe encrypté via la fonction PASSWORD() de MySQL&lt;/li&gt;
&lt;li&gt;id est laissé vide pour être automatiquement incrémenté.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Avec cette base de plateforme, vous avez de quoi avoir un dépôt de fichiers multi utilisateur en FTP (avec ou sans SSL) et en SFTP avec un seule et unique point d&apos;authentification, et pas mal de sécurisation au niveau des accès et remontées d&apos;arborescence. Si vous avez des questions ou remarque, comme à l&apos;habitude, n&apos;hésitez pas.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Merci à Guillaume Vaillant qui m&apos;a ressorti mes archives.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Jason Bourne : l&amp;#039;héritage ... en maison de retraite</title>
      <link href="https://francois.aichelbaum.com/2012/09/20/jason-bourne-lheritage-en-maison-de-retraite" />
      <updated>2012-09-20T10:57:27+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/09/20/jason-bourne-lheritage-en-maison-de-retraite</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/2012_the_bourne_legacy_movie-wide.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-7208&quot; title=&quot;The Bourne Legacy&quot; src=&quot;/assets/2012_the_bourne_legacy_movie-wide-150x150.jpg&quot; alt=&quot;The Bourne Legacy&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Au niveau des films d&apos;action, la trilogie des Jason Bourne était mon petit plaisir de la dernière décennie. Quand un quatrième film, sorte de spin-off/suite avec un autre agent, a été annoncé, j&apos;ai oscillé entre peur (de l&apos;épisode de trop) et plaisir. Héritage lourd d&apos;une trilogie puissante. Héritage pesant d&apos;un agent campé par un Matt Damon ultra performant. Quid de ce nouvel opus ? Aaron Cross sera-t-il plus fort que Jason Bourne ?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;L&apos;héritage peut avoir du bon mais aussi du mauvais&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le premier Jason Bourne avait créé une petite surprise en soit, avec un rythme effreiné et quelques pauses pour permettre au spectateur de reprendre son souffle. Les deux opus suivants, en respectant le schéma, permettait de découvrir un peu plus de l&apos;univers Bourne. Ce quatrième opus nous propulse donc à la poursuite de Cross, agent à éliminer suite aux révélations de Bourne.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=jMzs8Hew770[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Alors que la première trilogique se basait sur les livres de &lt;a href=&quot;http://fr.wikipedia.org/wiki/Robert_Ludlum&quot;&gt;Robert Ludlum&lt;/a&gt;, ce nouvel opus s&apos;inspire de l&apos;oeuvre d&apos;&lt;a href=&quot;http://fr.wikipedia.org/wiki/Eric_Van_Lustbader&quot;&gt;Eric Van Lustbader&lt;/a&gt; qui prend la suite de Ludlum (décédé en 2001). Du coup, on essaie de prendre la même base, dans une aventure en parallèle avec les déboires de Bourne. A défaut d&apos;un vrai rythme effreiné, une caméra trop nerveuse et régulièrement floutée. Du close combat moins bien orchestré et visuel que précédemment. Un agent 10 ans &lt;del&gt;trop&lt;/del&gt; plus vieux par rapport à Bourne. Une intrigue qui se cherche et passe son temps à se raccrocher via des flashs d&apos;infos aux aventures de Bourne. L&apos;héritage se sent. L&apos;incapacité à s&apos;en défaire aussi. A croire que justement, cet héritage est trop lourd à porter. Problème de l&apos;auteur ? Problème du réal ? Problème de la prod ? Tout en même temps, &lt;em&gt;mon Colonel&lt;/em&gt;. Tous se sont fourvoyé. Bien dommage.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/the-bourne-legacy-03-470-75.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7211&quot; title=&quot;The Bourne Legacy&quot; src=&quot;/assets/the-bourne-legacy-03-470-75-150x150.jpg&quot; alt=&quot;The Bourne Legacy&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/the_bourne_legacy_630.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7214&quot; title=&quot;The Bourne Legacy&quot; src=&quot;/assets/the_bourne_legacy_630-150x150.jpg&quot; alt=&quot;The Bourne Legacy&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/rachel-weisz-jeremy-renner-the-bourne-legacy.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7217&quot; title=&quot;The Bourne Legacy&quot; src=&quot;/assets/rachel-weisz-jeremy-renner-the-bourne-legacy-150x150.jpg&quot; alt=&quot;The Bourne Legacy&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/bourne-legacy-rachel-weisz.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7220&quot; title=&quot;The Bourne Legacy&quot; src=&quot;/assets/bourne-legacy-rachel-weisz-150x150.jpg&quot; alt=&quot;The Bourne Legacy&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/bourne-legacy-pic2.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7223&quot; title=&quot;The Bourne Legacy&quot; src=&quot;/assets/bourne-legacy-pic2-150x150.jpg&quot; alt=&quot;The Bourne Legacy&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Je me suis ennuyé mortellement pendant ces 135 minutes de films. Les acteurs ne sont pas mauvais. Mais le scénario n&apos;est pas là, et l&apos;impression d&apos;ECG quasi plat qui émane du film avec quelques sursaut éparses reflète clairement mon ECG pendant le film.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Donc non, Aaron Cross n&apos;est pas meilleur que Jason Bourne. Cross est déjà un retraité que l&apos;on a repeint façon camion volé pour prétendre à une nouveauté et ainsi voler un jackpot commercial non mérité.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/the-bourne-legacy-0v.jpg&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-7229 aligncenter&quot; title=&quot;The Bourne Legacy&quot; src=&quot;/assets/the-bourne-legacy-0v-300x225.jpg&quot; alt=&quot;The Bourne Legacy&quot; width=&quot;300&quot; height=&quot;225&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Comparatif des serveurs pour PHP</title>
      <link href="https://francois.aichelbaum.com/2012/09/11/comparatif-des-serveurs-pour-php" />
      <updated>2012-09-11T11:49:09+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/09/11/comparatif-des-serveurs-pour-php</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Après le comparatif des outils de caching et la création d&apos;un CDN (&lt;em&gt;scalable&lt;/em&gt;), voici un comparatif pour le déploiement de PHP. On s&apos;intéresse donc à PHP 5.4 dans les environnements suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;apache22-php-mod&lt;/em&gt; : apache 2.2 + module PHP 5.4&lt;/li&gt;
&lt;li&gt;&lt;em&gt;apache22-php-fpm&lt;/em&gt; : apache 2.2 + PHP 5.4-FPM&lt;/li&gt;
&lt;li&gt;&lt;em&gt;apache24-php-mod&lt;/em&gt; : apache 2.4 + module PHP 5.4&lt;/li&gt;
&lt;li&gt;&lt;em&gt;apache24-php-cgi&lt;/em&gt; : apache 2.4 + PHP 5.4-FPM&lt;/li&gt;
&lt;li&gt;&lt;em&gt;nginx-php&lt;/em&gt; : nginx + PHP 5.4-FPM&lt;/li&gt;
&lt;li&gt;&lt;em&gt;lighttpd-php&lt;/em&gt; : lighttpd + PHP 5.4-FPM&lt;/li&gt;
&lt;li&gt;&lt;em&gt;cherokee-php&lt;/em&gt; : cherokee + PHP 5.4 FCGI&lt;/li&gt;
&lt;li&gt;&lt;em&gt;standalone-php&lt;/em&gt; : PHP 5.4 webserver&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&lt;!--more--&gt;&lt;/div&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On va faire le test en 2 temps :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;utilisation de phpbench pour le théorique&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;utilisation d&apos;un wordpress non optimisé (reprise de ce Wordpress privé des divers plugins d&apos;optimisations)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On utilise wget pour le test pour simplement afficher le résultat : on ne compare pas la capacité des serveurs web à monter en charge. L&apos;idée étant de voir la performance de rendu dans un milieu équivalent, on reprend des machines virtuelles identiques (2 CPU, 8 Go Ram).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour rester dans une logique assez proche, tous les applicatifs testés seront installés par compilation.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Installation de apache22-php-mod&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On commence par les packages requis pour l&apos;installation :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On suit par apache 2.2 :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://mirror.cc.columbia.edu/pub/software/apache//httpd/httpd-2.2.22.tar.gz&lt;br /&gt;
tar -xzf httpd-2.2.22.tar.gz&lt;br /&gt;
cd httpd-2.2.22&lt;br /&gt;
./configure --enable-mime-magic --enable-http --disable-status --enable-so --enable-rewrite --with-mpm=prefork&lt;br /&gt;
make &amp;amp;&amp;amp; make install[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On termine par php :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz&lt;br /&gt;
tar -xzf php-5.4.6.tar.gz&lt;br /&gt;
cd php-5.4.6&lt;br /&gt;
./configure --with-apxs2=/usr/local/apache2/bin/apxs --disable-cgi --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath&lt;br /&gt;
make &amp;amp;&amp;amp; make install[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On rajout le module sur apache en rajoutant à la fin de  &lt;em&gt;/usr/local/apache2/conf/httpd.conf&lt;/em&gt; :&lt;/p&gt;
&lt;p&gt;[crayon language=apache]LoadModule php5_module /usr/local/apache2/modules/libphp5.so&lt;br /&gt;
&amp;lt;IfModule mod_php5.c&amp;gt;&lt;br /&gt;
&amp;lt;FilesMatch &quot;\.ph(p3?|tml)$&quot;&amp;gt;&lt;br /&gt;
SetHandler application/x-httpd-php&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&amp;lt;FilesMatch &quot;\.phps$&quot;&amp;gt;&lt;br /&gt;
SetHandler application/x-httpd-php-source&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;[/crayon]&lt;/p&gt;
&lt;p&gt;On relance enfin apache :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]/usr/local/apache2/bin/apachectl restart[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Reste à mettre en place le blog que j&apos;importe - non traîté ici -) et le fichier de benchmark :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon language=shell]cd /usr/local/apache2/htdocs/&lt;br /&gt;
wget http://www.php-benchmark-script.com/bench.zip &amp;amp;&amp;amp; unzip bench.zip[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Reste plus qu&apos;à benchmarker tout à l&apos;heure.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Installation de apache22-php-fpm&lt;/h2&gt;
&lt;p&gt;On commence par les packages requis pour l&apos;installation :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev[/crayon]&lt;/p&gt;
&lt;p&gt;On suit par apache 2.2 :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://mirror.cc.columbia.edu/pub/software/apache//httpd/httpd-2.2.22.tar.gz&lt;br /&gt;
tar -xzf httpd-2.2.22.tar.gz&lt;br /&gt;
cd httpd-2.2.22&lt;br /&gt;
./configure --enable-mime-magic --enable-http --disable-status --enable-so --enable-rewrite --with-mpm=worker&lt;br /&gt;
make &amp;amp;&amp;amp; make install&lt;br /&gt;
cd /usr/src&lt;br /&gt;
wget http://www.fastcgi.com/dist/mod_fastcgi-current.tar.gz&lt;br /&gt;
tar -xzf mod_fastcgi-current.tar.gz&lt;br /&gt;
cd mod_fastcgi-2.4.6&lt;br /&gt;
cp Makefile.AP Makefile&lt;br /&gt;
make &amp;amp;&amp;amp; make install[/crayon]&lt;/p&gt;
&lt;p&gt;On rajout le module sur apache en rajoutant à la fin de  &lt;em&gt;/usr/local/apache2/conf/httpd.conf&lt;/em&gt; :&lt;/p&gt;
&lt;p&gt;[crayon language=apache]LoadModule fastcgi_module modules/mod_fastcgi.so&lt;br /&gt;
&amp;lt;IfModule mod_fastcgi.c&amp;gt;&lt;br /&gt;
ScriptAlias /fcgi-bin/ &quot;/usr/local/bin/&quot;&lt;br /&gt;
FastCGIExternalServer /usr/local/bin/php-cgi -host 127.0.0.1:9000 -pass-header Authorization&lt;br /&gt;
AddHandler php-fastcgi .php&lt;br /&gt;
Action php-fastcgi /fcgi-bin/php-cgi&lt;br /&gt;
&amp;lt;Directory /usr/local/bin&amp;gt;&lt;br /&gt;
Order Deny,Allow&lt;br /&gt;
Deny from All&lt;br /&gt;
Allow from env=REDIRECT_STATUS&lt;br /&gt;
&amp;lt;/Directory&amp;gt;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;[/crayon]&lt;/p&gt;
&lt;p&gt;On relance enfin apache :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]/usr/local/apache2/bin/apachectl restart[/crayon]&lt;/p&gt;
&lt;p&gt;Reste à mettre en place le blog que j&apos;importe - non traîté ici -) et le fichier de benchmark :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /usr/local/apache2/htdocs/&lt;br /&gt;
wget http://www.php-benchmark-script.com/bench.zip &amp;amp;&amp;amp; unzip bench.zip[/crayon]&lt;/p&gt;
&lt;p&gt;On termine par php :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz&lt;br /&gt;
tar -xzf php-5.4.6.tar.gz&lt;br /&gt;
cd php-5.4.6&lt;br /&gt;
./configure --enable-fpm --with-fpm-group=www-data --with-fpm-user=www-data --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath&lt;br /&gt;
make &amp;amp;&amp;amp; make install[/crayon]&lt;/p&gt;
&lt;p&gt;On préparer FPM en éditant le fichier &lt;em&gt;/usr/local/etc/php-fpm.conf&lt;/em&gt; :&lt;/p&gt;
&lt;p&gt;[crayon][global]&lt;br /&gt;
[www]&lt;br /&gt;
user = www-data&lt;br /&gt;
group = www-data&lt;br /&gt;
listen = 127.0.0.1:9000&lt;br /&gt;
pm = dynamic&lt;br /&gt;
pm.max_children = 5&lt;br /&gt;
pm.start_servers = 2&lt;br /&gt;
pm.min_spare_servers = 1&lt;br /&gt;
pm.max_spare_servers = 3&lt;br /&gt;
php_admin_value[open_basedir]=/usr/local/apache2/htdocs/[/crayon]&lt;/p&gt;
&lt;p&gt;Bien sûr, on lance PHP-FPM :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]/usr/local/bin/php-fpm[/crayon]&lt;/p&gt;
&lt;p&gt;Reste plus qu&apos;à benchmarker tout à l&apos;heure.&lt;/p&gt;
&lt;h2&gt;Installation de apache24-php-mod&lt;/h2&gt;
&lt;p&gt;On commence par les packages requis pour l&apos;installation :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev libpcre3-dev[/crayon]&lt;/p&gt;
&lt;p&gt;On suit par apache 2.4 :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://wwwftp.ciril.fr/pub/apache//httpd/httpd-2.4.3.tar.gz&lt;br /&gt;
tar -xzf httpd-2.4.3.tar.gz&lt;br /&gt;
wget http://mirrors.ircam.fr/pub/apache//apr/apr-1.4.6.tar.gz&lt;br /&gt;
tar -xzf apr-1.4.6.tar.gz -C httpd-2.4.3/srclib/&lt;br /&gt;
wget http://mirrors.ircam.fr/pub/apache//apr/apr-util-1.4.1.tar.gz&lt;br /&gt;
tar -xzf apr-util-1.4.1.tar.gz -C httpd-2.4.3/srclib/&lt;br /&gt;
cd httpd-2.4.3&lt;br /&gt;
mv srclib/apr-1.4.6 srclib/apr&lt;br /&gt;
mv srclib/apr-util-1.4.1 srclib/apr-util&lt;br /&gt;
./configure --enable-mime-magic --enable-http --disable-status --enable-so --enable-rewrite --with-mpm=prefork&lt;br /&gt;
make &amp;amp;&amp;amp; make install[/crayon]&lt;/p&gt;
&lt;p&gt;On termine par php :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz&lt;br /&gt;
tar -xzf php-5.4.6.tar.gz&lt;br /&gt;
cd php-5.4.6&lt;br /&gt;
./configure --with-apxs2=/usr/local/apache2/bin/apxs --disable-cgi --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath&lt;br /&gt;
make &amp;amp;&amp;amp; make install[/crayon]&lt;/p&gt;
&lt;p&gt;On rajout le module sur apache en rajoutant à la fin de  &lt;em&gt;/usr/local/apache2/conf/httpd.conf&lt;/em&gt; :&lt;/p&gt;
&lt;p&gt;[crayon language=apache]LoadModule php5_module /usr/local/apache2/modules/libphp5.so&lt;br /&gt;
&amp;lt;IfModule mod_php5.c&amp;gt;&lt;br /&gt;
&amp;lt;FilesMatch &quot;\.ph(p3?|tml)$&quot;&amp;gt;&lt;br /&gt;
SetHandler application/x-httpd-php&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&amp;lt;FilesMatch &quot;\.phps$&quot;&amp;gt;&lt;br /&gt;
SetHandler application/x-httpd-php-source&lt;br /&gt;
&amp;lt;/FilesMatch&amp;gt;&lt;br /&gt;
&amp;lt;/IfModule&amp;gt;[/crayon]&lt;/p&gt;
&lt;p&gt;On relance enfin apache :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]/usr/local/apache2/bin/apachectl restart[/crayon]&lt;/p&gt;
&lt;p&gt;Reste à mettre en place le blog que j&apos;importe - non traîté ici -) et le fichier de benchmark :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /usr/local/apache2/htdocs/&lt;br /&gt;
wget http://www.php-benchmark-script.com/bench.zip &amp;amp;&amp;amp; unzip bench.zip[/crayon]&lt;/p&gt;
&lt;p&gt;Reste plus qu&apos;à benchmarker tout à l&apos;heure.&lt;/p&gt;
&lt;h2&gt;Installation de apache24-php-fpm&lt;/h2&gt;
&lt;p&gt;On commence par les packages requis pour l&apos;installation :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev libpcre3-dev[/crayon]&lt;/p&gt;
&lt;p&gt;On suit par apache 2.4 :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://wwwftp.ciril.fr/pub/apache//httpd/httpd-2.4.3.tar.gz&lt;br /&gt;
tar -xzf httpd-2.4.3.tar.gz&lt;br /&gt;
wget http://mirrors.ircam.fr/pub/apache//apr/apr-1.4.6.tar.gz&lt;br /&gt;
tar -xzf apr-1.4.6.tar.gz -C httpd-2.4.3/srclib/&lt;br /&gt;
wget http://mirrors.ircam.fr/pub/apache//apr/apr-util-1.4.1.tar.gz&lt;br /&gt;
tar -xzf apr-util-1.4.1.tar.gz -C httpd-2.4.3/srclib/&lt;br /&gt;
cd httpd-2.4.3&lt;br /&gt;
mv srclib/apr-1.4.6 srclib/apr&lt;br /&gt;
mv srclib/apr-util-1.4.1 srclib/apr-util&lt;br /&gt;
./configure --enable-mime-magic --enable-http --disable-status --enable-so --enable-rewrite --with-mpm=worker --enable-slotmem-shm&lt;br /&gt;
make &amp;amp;&amp;amp; make install[/crayon]&lt;/p&gt;
&lt;p&gt;On rajout le module sur apache en rajoutant à la fin de  &lt;em&gt;/usr/local/apache2/conf/httpd.conf&lt;/em&gt; :&lt;/p&gt;
&lt;p&gt;[crayon language=apache]ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/usr/local/apache2/htdocs/$1[/crayon]&lt;/p&gt;
&lt;p&gt;On relance enfin apache :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]/usr/local/apache2/bin/apachectl restart[/crayon]&lt;/p&gt;
&lt;p&gt;Reste à mettre en place le blog que j&apos;importe - non traîté ici -) et le fichier de benchmark :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /usr/local/apache2/htdocs/&lt;br /&gt;
wget http://www.php-benchmark-script.com/bench.zip &amp;amp;&amp;amp; unzip bench.zip[/crayon]&lt;/p&gt;
&lt;p&gt;On termine par php :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz&lt;br /&gt;
tar -xzf php-5.4.6.tar.gz&lt;br /&gt;
cd php-5.4.6&lt;br /&gt;
./configure --enable-fpm --with-fpm-group=www-data --with-fpm-user=www-data --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath&lt;br /&gt;
make &amp;amp;&amp;amp; make install[/crayon]&lt;/p&gt;
&lt;p&gt;On préparer FPM en éditant le fichier &lt;em&gt;/usr/local/etc/php-fpm.conf&lt;/em&gt; :&lt;/p&gt;
&lt;p&gt;[crayon][global]&lt;br /&gt;
[www]&lt;br /&gt;
user = www-data&lt;br /&gt;
group = www-data&lt;br /&gt;
listen = 127.0.0.1:9000&lt;br /&gt;
pm = dynamic&lt;br /&gt;
pm.max_children = 5&lt;br /&gt;
pm.start_servers = 2&lt;br /&gt;
pm.min_spare_servers = 1&lt;br /&gt;
pm.max_spare_servers = 3&lt;br /&gt;
php_admin_value[open_basedir]=/usr/local/apache2/htdocs/[/crayon]&lt;/p&gt;
&lt;p&gt;Bien sûr, on lance PHP-FPM :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]/usr/local/bin/php-fpm[/crayon]&lt;/p&gt;
&lt;p&gt;Reste plus qu&apos;à benchmarker tout à l&apos;heure.&lt;/p&gt;
&lt;h2&gt;Installation de nginx-php&lt;/h2&gt;
&lt;p&gt;On commence par les packages requis pour l&apos;installation :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev libpcre3-dev[/crayon]&lt;/p&gt;
&lt;p&gt;On suit par nginx 1.2.3 :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://nginx.org/download/nginx-1.2.3.tar.gz&lt;br /&gt;
tar -xzf nginx-1.2.3.tar.gz&lt;br /&gt;
cd nginx-1.2.3&lt;br /&gt;
./configure --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module&lt;br /&gt;
make &amp;amp;&amp;amp; make install[/crayon]&lt;/p&gt;
&lt;p&gt;On configure ensuite nginx /usr/local/nginx/conf/nginx.conf :&lt;/p&gt;
&lt;p&gt;[crayon]worker_processes 4;&lt;br /&gt;
events {&lt;br /&gt;
worker_connections 1024;&lt;br /&gt;
}&lt;br /&gt;
http {&lt;br /&gt;
include mime.types;&lt;br /&gt;
default_type application/octet-stream;&lt;br /&gt;
sendfile on;&lt;br /&gt;
keepalive_timeout 65;&lt;br /&gt;
gzip on;&lt;br /&gt;
server {&lt;br /&gt;
listen 80;&lt;br /&gt;
server_name test;&lt;br /&gt;
location ~ \.php$ {&lt;br /&gt;
fastcgi_pass 127.0.0.1:9000;&lt;br /&gt;
fastcgi_index index.php;&lt;br /&gt;
fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name;&lt;br /&gt;
include fastcgi_params;&lt;br /&gt;
}&lt;br /&gt;
location / {&lt;br /&gt;
root /var/www;&lt;br /&gt;
}&lt;br /&gt;
}&lt;br /&gt;
}[/crayon]&lt;/p&gt;
&lt;p&gt;On relance enfin nginx :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]/usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf[/crayon]&lt;/p&gt;
&lt;p&gt;Reste à mettre en place le blog que j&apos;importe - non traîté ici -) et le fichier de benchmark :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /var/www/&lt;br /&gt;
wget http://www.php-benchmark-script.com/bench.zip &amp;amp;&amp;amp; unzip bench.zip[/crayon]&lt;/p&gt;
&lt;p&gt;On termine par php :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz&lt;br /&gt;
tar -xzf php-5.4.6.tar.gz&lt;br /&gt;
cd php-5.4.6&lt;br /&gt;
./configure --enable-fpm --with-fpm-group=www-data --with-fpm-user=www-data --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath&lt;br /&gt;
make &amp;amp;&amp;amp; make install[/crayon]&lt;/p&gt;
&lt;p&gt;On préparer FPM en éditant le fichier &lt;em&gt;/usr/local/etc/php-fpm.conf&lt;/em&gt; :&lt;/p&gt;
&lt;p&gt;[crayon][global]&lt;br /&gt;
[www]&lt;br /&gt;
user = www-data&lt;br /&gt;
group = www-data&lt;br /&gt;
listen = 127.0.0.1:9000&lt;br /&gt;
pm = dynamic&lt;br /&gt;
pm.max_children = 5&lt;br /&gt;
pm.start_servers = 2&lt;br /&gt;
pm.min_spare_servers = 1&lt;br /&gt;
pm.max_spare_servers = 3&lt;br /&gt;
php_admin_value[open_basedir]=/usr/local/apache2/htdocs/[/crayon]&lt;/p&gt;
&lt;p&gt;Bien sûr, on lance PHP-FPM :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]/usr/local/bin/php-fpm[/crayon]&lt;/p&gt;
&lt;p&gt;Reste plus qu&apos;à benchmarker tout à l&apos;heure.&lt;/p&gt;
&lt;h2&gt;Installation de lighttpd-php&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On commence par les packages requis pour l&apos;installation :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon language=shell]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev libpcre3-dev[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On suit par lighttpd 1.4.31 :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-1.4.31.tar.gz&lt;br /&gt;
tar -xzf lighttpd-1.4.31.tar.gz&lt;br /&gt;
cd lighttpd-1.4.31&lt;br /&gt;
./configure --without-bzip2&lt;br /&gt;
make &amp;amp;&amp;amp; make install&lt;br /&gt;
cp -a doc/config /etc/lighttpd&lt;br /&gt;
mkdir /var/www/htdocs&lt;br /&gt;
mkdir /var/log/lighttpd&lt;br /&gt;
chown -R www-data:www-data /var/log/lighttpd /var/www[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On configure ensuite lighttpd&lt;em&gt; /etc/lighttpd/conf.d/fastcgi.conf&lt;/em&gt; :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon]server.modules += ( &quot;mod_fastcgi&quot; )&lt;br /&gt;
fastcgi.server += ( &quot;.php&quot; =&amp;gt;&lt;br /&gt;
((&lt;br /&gt;
&quot;host&quot; =&amp;gt; &quot;127.0.0.1&quot;,&lt;br /&gt;
&quot;port&quot; =&amp;gt; &quot;9000&quot;,&lt;br /&gt;
&quot;broken-scriptfilename&quot; =&amp;gt; &quot;enable&quot;&lt;br /&gt;
))&lt;br /&gt;
)[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On met aussi à jour le &lt;em&gt;/etc/lighttpd/lighttpd.conf&lt;/em&gt; :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon]server.username = &quot;www-data&quot;&lt;br /&gt;
server.groupname = &quot;www-data&quot;[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On relance enfin lighttpd :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon language=shell]lighttpd -f /etc/lighttpd/lighttpd.conf[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Reste à mettre en place le blog que j&apos;importe - non traîté ici -) et le fichier de benchmark :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon language=shell]cd /var/www/htdocs/&lt;br /&gt;
wget http://www.php-benchmark-script.com/bench.zip &amp;amp;&amp;amp; unzip bench.zip[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On termine par php :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz&lt;br /&gt;
tar -xzf php-5.4.6.tar.gz&lt;br /&gt;
cd php-5.4.6&lt;br /&gt;
./configure --enable-fpm --with-fpm-group=www-data --with-fpm-user=www-data --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath&lt;br /&gt;
make &amp;amp;&amp;amp; make install[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On préparer FPM en éditant le fichier &lt;em&gt;/usr/local/etc/php-fpm.conf&lt;/em&gt; :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon][global]&lt;br /&gt;
[www]&lt;br /&gt;
user = www-data&lt;br /&gt;
group = www-data&lt;br /&gt;
listen = 127.0.0.1:9000&lt;br /&gt;
pm = dynamic&lt;br /&gt;
pm.max_children = 5&lt;br /&gt;
pm.start_servers = 2&lt;br /&gt;
pm.min_spare_servers = 1&lt;br /&gt;
pm.max_spare_servers = 3&lt;br /&gt;
php_admin_value[open_basedir]=/var/www/htdocs/[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Bien sûr, on lance PHP-FPM :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon language=shell]/usr/local/bin/php-fpm[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Reste plus qu&apos;à benchmarker tout à l&apos;heure.&lt;/p&gt;
&lt;h2&gt;Installation de cherokee-php&lt;/h2&gt;
&lt;p&gt;On commence par les packages requis pour l&apos;installation :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon language=shell]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev libpcre3-dev[/crayon]&lt;/p&gt;
&lt;p&gt;On suit par cheroke 1.2.101 :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://cherokee-project.com/install &amp;amp;&amp;amp; python install[/crayon]&lt;/p&gt;
&lt;p&gt;On relance enfin cherokee :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]/etc/init.d/cherokee-opt start[/crayon]&lt;/p&gt;
&lt;p&gt;Reste à mettre en place le blog que j&apos;importe - non traîté ici -) et le fichier de benchmark :&lt;/p&gt;
&lt;p&gt;[crayon]cd /opt/cherokee/var/www&lt;br /&gt;
wget http://www.php-benchmark-script.com/bench.zip &amp;amp;&amp;amp; unzip bench.zip[/crayon]&lt;/p&gt;
&lt;p&gt;On termine par php :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz&lt;br /&gt;
tar -xzf php-5.4.6.tar.gz&lt;br /&gt;
cd php-5.4.6&lt;br /&gt;
./configure --enable-fpm --with-fpm-group=www-data --with-fpm-user=www-data --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath&lt;br /&gt;
make &amp;amp;&amp;amp; make install[/crayon]&lt;/p&gt;
&lt;p&gt;On préparer FPM en éditant le fichier &lt;em&gt;/usr/local/etc/php-fpm.conf&lt;/em&gt; :&lt;/p&gt;
&lt;p&gt;[crayon][global]&lt;br /&gt;
[www]&lt;br /&gt;
user = www-data&lt;br /&gt;
group = www-data&lt;br /&gt;
listen = 127.0.0.1:9000&lt;br /&gt;
pm = dynamic&lt;br /&gt;
pm.max_children = 5&lt;br /&gt;
pm.start_servers = 2&lt;br /&gt;
pm.min_spare_servers = 1&lt;br /&gt;
pm.max_spare_servers = 3&lt;br /&gt;
php_admin_value[open_basedir]=/opt/cherokee/var/www/[/crayon]&lt;/p&gt;
&lt;p&gt;Bien sûr, on lance PHP-FPM :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]/usr/local/bin/php-fpm[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On finit par l&apos;implémentation de PHP dans cherokee :&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;[crayon language=shell]/opt/cherokee/sbin/cherokee-admin[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On se connecte à http://127.0.0.1:9090/ :&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/cherokee-accueil.png&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7088&quot; title=&quot;cherokee-accueil&quot; src=&quot;/assets/cherokee-accueil-150x150.png&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/cherokee-vservers.png&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7091&quot; title=&quot;cherokee-vservers&quot; src=&quot;/assets/cherokee-vservers-150x150.png&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/cherokee-rules.png&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7094&quot; title=&quot;cherokee-rules&quot; src=&quot;/assets/cherokee-rules-150x150.png&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/cherokee-addphp.png&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7097&quot; title=&quot;cherokee-addphp&quot; src=&quot;/assets/cherokee-addphp-150x150.png&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/cherokee-addphp2.png&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-7100&quot; title=&quot;cherokee-addphp2&quot; src=&quot;/assets/cherokee-addphp2-150x150.png&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pensez ensuite à sauvegarder et faire un &quot;Graceful Restart&quot;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Reste plus qu&apos;à benchmarker tout à l&apos;heure.&lt;/p&gt;
&lt;h2&gt;Installation de php en standalone&lt;/h2&gt;
&lt;p&gt;On commence par les packages requis pour l&apos;installation :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]aptitude install build-essential libxml2-dev libz-dev libzip-dev libcurl4-gnutls-dev mysql-server mysql-client libmysqlclient-dev libpcre3-dev[/crayon]&lt;/p&gt;
&lt;p&gt;On suit par php :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /usr/src&lt;br /&gt;
wget http://fr2.php.net/get/php-5.4.6.tar.gz/from/fr.php.net/mirror -O php-5.4.6.tar.gz&lt;br /&gt;
tar -xzf php-5.4.6.tar.gz&lt;br /&gt;
cd php-5.4.6&lt;br /&gt;
./configure --with-zlib --with-pcre-regex --with-zlib --with-curl --with-mysql --with-mysqli --with-pdo-mysql --with-xmlrpc --enable-zip --with-pear --enable-bcmath --enable-cli&lt;br /&gt;
make &amp;amp;&amp;amp; make install[/crayon]&lt;/p&gt;
&lt;p&gt;Plus qu&apos;à lancer le serveur intégré :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]nohup /usr/local/bin/php -S 0.0.0.0:80 -t /var/www/ &amp;amp;&amp;gt; /dev/null &amp;amp;[/crayon]&lt;/p&gt;
&lt;p&gt;Bien sûr, il nous faut aussi le script de benchmark (et le blog à importer)&lt;/p&gt;
&lt;p&gt;[crayon language=shell]cd /var/www&lt;br /&gt;
wget http://www.php-benchmark-script.com/bench.zip &amp;amp;&amp;amp; unzip bench.zip[/crayon]&lt;/p&gt;
&lt;p&gt;Plus qu&apos;à tester.&lt;/p&gt;
&lt;h2&gt;Comparatif&lt;/h2&gt;
&lt;p&gt;On collecte donc l&apos;ensemble des résultats :&lt;/p&gt;
&lt;p&gt;[crayon language=shell]for server in x.x.x.1 x.x.x.2 x.x.x.3 x.x.x.4 x.x.x.5 x.x.x.6 x.x.x.7 x.x.x.8; do wget http://$server/bench.php -O - ; done[/crayon]&lt;/p&gt;
&lt;h3&gt;Résultats pour apache22-php-mod&lt;/h3&gt;
&lt;p&gt;[crayon]--------------------------------------&lt;br /&gt;
| PHP BENCHMARK SCRIPT |&lt;br /&gt;
--------------------------------------&lt;br /&gt;
Start : 2012-09-11 09:25:25&lt;br /&gt;
Server : x.x.x.1@x.x.x.1&lt;br /&gt;
PHP version : 5.4.6&lt;br /&gt;
Platform : Linux&lt;br /&gt;
--------------------------------------&lt;br /&gt;
test_math : 2.374 sec.&lt;br /&gt;
test_stringmanipulation : 2.433 sec.&lt;br /&gt;
test_loops : 1.864 sec.&lt;br /&gt;
test_ifelse : 1.336 sec.&lt;br /&gt;
--------------------------------------[/crayon]&lt;/p&gt;
&lt;h3&gt;Résultats pour apache22-php-fpm&lt;/h3&gt;
&lt;p&gt;[crayon]--------------------------------------&lt;br /&gt;
| PHP BENCHMARK SCRIPT |&lt;br /&gt;
--------------------------------------&lt;br /&gt;
Start : 2012-09-11 09:25:57&lt;br /&gt;
Server : x.x.x.2@x.x.x.2&lt;br /&gt;
PHP version : 5.4.6&lt;br /&gt;
Platform : Linux&lt;br /&gt;
--------------------------------------&lt;br /&gt;
test_math : 2.265 sec.&lt;br /&gt;
test_stringmanipulation : 2.362 sec.&lt;br /&gt;
test_loops : 2.168 sec.&lt;br /&gt;
test_ifelse : 1.224 sec.&lt;br /&gt;
--------------------------------------[/crayon]&lt;/p&gt;
&lt;div&gt;
&lt;h3&gt;Résultats pour apache24-php-mod&lt;/h3&gt;
&lt;p&gt;[crayon]--------------------------------------&lt;br /&gt;
| PHP BENCHMARK SCRIPT |&lt;br /&gt;
--------------------------------------&lt;br /&gt;
Start : 2012-09-11 09:26:03&lt;br /&gt;
Server : x.x.x.3@x.x.x.3&lt;br /&gt;
PHP version : 5.4.6&lt;br /&gt;
Platform : Linux&lt;br /&gt;
--------------------------------------&lt;br /&gt;
test_math : 3.236 sec.&lt;br /&gt;
test_stringmanipulation : 3.274 sec.&lt;br /&gt;
test_loops : 2.113 sec.&lt;br /&gt;
test_ifelse : 1.453 sec.&lt;br /&gt;
--------------------------------------[/crayon]&lt;/p&gt;
&lt;div&gt;
&lt;h3&gt;Résultats pour apache24-php-fpm&lt;/h3&gt;
&lt;p&gt;[crayon]--------------------------------------&lt;br /&gt;
| PHP BENCHMARK SCRIPT |&lt;br /&gt;
--------------------------------------&lt;br /&gt;
Start : 2012-09-11 09:26:12&lt;br /&gt;
Server : x.x.x.4@x.x.x.4&lt;br /&gt;
PHP version : 5.4.6&lt;br /&gt;
Platform : Linux&lt;br /&gt;
--------------------------------------&lt;br /&gt;
test_math : 2.225 sec.&lt;br /&gt;
test_stringmanipulation : 2.361 sec.&lt;br /&gt;
test_loops : 2.094 sec.&lt;br /&gt;
test_ifelse : 1.223 sec.&lt;br /&gt;
--------------------------------------[/crayon]&lt;/p&gt;
&lt;div&gt;
&lt;h3&gt;Résultats pour nginx-php&lt;/h3&gt;
&lt;p&gt;[crayon]--------------------------------------&lt;br /&gt;
| PHP BENCHMARK SCRIPT |&lt;br /&gt;
--------------------------------------&lt;br /&gt;
Start : 2012-09-11 09:26:23&lt;br /&gt;
Server : x.x.x.5@x.x.x.5&lt;br /&gt;
PHP version : 5.4.6&lt;br /&gt;
Platform : Linux&lt;br /&gt;
--------------------------------------&lt;br /&gt;
test_math : 2.310 sec.&lt;br /&gt;
test_stringmanipulation : 2.379 sec.&lt;br /&gt;
test_loops : 2.175 sec.&lt;br /&gt;
test_ifelse : 1.231 sec.&lt;br /&gt;
--------------------------------------[/crayon]&lt;/p&gt;
&lt;div&gt;
&lt;h3&gt;Résultats pour lighttpd-php&lt;/h3&gt;
&lt;p&gt;[crayon]--------------------------------------&lt;br /&gt;
| PHP BENCHMARK SCRIPT |&lt;br /&gt;
--------------------------------------&lt;br /&gt;
Start : 2012-09-11 09:26:38&lt;br /&gt;
Server : x.x.x.6@x.x.x.6&lt;br /&gt;
PHP version : 5.4.6&lt;br /&gt;
Platform : Linux&lt;br /&gt;
--------------------------------------&lt;br /&gt;
test_math : 2.194 sec.&lt;br /&gt;
test_stringmanipulation : 2.314 sec.&lt;br /&gt;
test_loops : 2.194 sec.&lt;br /&gt;
test_ifelse : 1.255 sec.&lt;br /&gt;
--------------------------------------[/crayon]&lt;/p&gt;
&lt;div&gt;
&lt;h3&gt;Résultats pour cherokee-php&lt;/h3&gt;
&lt;p&gt;[crayon]--------------------------------------&lt;br /&gt;
| PHP BENCHMARK SCRIPT |&lt;br /&gt;
--------------------------------------&lt;br /&gt;
Start : 2012-09-11 09:26:53&lt;br /&gt;
Server : x.x.x.7@x.x.x.7&lt;br /&gt;
PHP version : 5.4.6&lt;br /&gt;
Platform : Linux&lt;br /&gt;
--------------------------------------&lt;br /&gt;
test_math : 2.268 sec.&lt;br /&gt;
test_stringmanipulation : 2.381 sec.&lt;br /&gt;
test_loops : 2.076 sec.&lt;br /&gt;
test_ifelse : 1.236 sec.&lt;br /&gt;
--------------------------------------[/crayon]&lt;/p&gt;
&lt;div&gt;
&lt;h3&gt;Résultats pour standalone-php&lt;/h3&gt;
&lt;p&gt;[crayon]--------------------------------------&lt;br /&gt;
| PHP BENCHMARK SCRIPT |&lt;br /&gt;
--------------------------------------&lt;br /&gt;
Start : 2012-09-11 09:26:26:59&lt;br /&gt;
Server : 0.0.0.0@&lt;br /&gt;
PHP version : 5.4.6&lt;br /&gt;
Platform : Linux&lt;br /&gt;
--------------------------------------&lt;br /&gt;
test_math : 2.351 sec.&lt;br /&gt;
test_stringmanipulation : 2.455 sec.&lt;br /&gt;
test_loops : 2.112 sec.&lt;br /&gt;
test_ifelse : 1.250 sec.&lt;br /&gt;
--------------------------------------[/crayon]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Reproduire les tests ne fait varier les résultats que de quelques milli secondes, donc rien de significatif. Il en ressort donc, qu&apos;hors optimisation de php (via ses modules entre autres) ou du serveur web, l&apos;implémentation semble plus performante varie selon le calcul effectué. Cependant, sur le traitement global, les résultats avantagent &lt;em&gt;apache24-php-fpm&lt;/em&gt; suivi de près par &lt;em&gt;lighttpd-php&lt;/em&gt; et &lt;em&gt;cherokee-php&lt;/em&gt;. A noter les bons résultats des implémentations en Apache 2.2 (module et FPM) mais les très mauvaises performances en module sur Apache 2.4.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Les benchmarks sur le blog renvoient les mêmes résultats.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>Comparatif caching : nginx/varnish/squid/apache</title>
      <link href="https://francois.aichelbaum.com/2012/09/07/comparatif-caching-nginxvarnishsquidapache" />
      <updated>2012-09-07T18:48:24+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/09/07/comparatif-caching-nginxvarnishsquidapache</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Suite à la publication de mon précédent billet (&lt;a href=&quot;http://francois.aichelbaum.com/creer-un-caching-http-facon-cdn/&quot;&gt;Créer un caching HTTP façon CDN&lt;/a&gt;), j&apos;ai eu une petite discussion sur twitter avec &lt;a href=&quot;https://twitter.com/nicolargo&quot;&gt;Nicolas Hennion&lt;/a&gt; sur un comparatif des outils de mise en cache HTTP. Je me suis donc proposé de (re)faire un billet sur le sujet. Je m&apos;attaque donc aux outils suivants : nginx, varnish, squid et apache (avec mod_cache/mod_proxy).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Avant propos&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le but n&apos;étant pas de refaire une optimisation système et matérielle, je vais faire au plus simple pour le comparatif. Certains pourront considérer ma démarche simpliste mais bon, c&apos;est la vie.&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Architecture pour le comparatif&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ne voulant pas avoir trop de différences j&apos;ai utilisé des machines virtuelles lancées sur des machines &lt;em&gt;couillues&lt;/em&gt;. Une machine de créée en debian stable 64 bits, 2 vCPU pour 8 Go Ram et 1 Gbps en réseau, pour me faire un template et ensuite je l&apos;ai clonée ainsi :&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;em&gt;cache-apache&lt;/em&gt; : machine de cache en apache&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;em&gt;cache-nginx&lt;/em&gt; : machine de cache en nginx&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;em&gt;cache-squid&lt;/em&gt; : machine de cache en squid&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;em&gt;cache-varnish&lt;/em&gt; : machine de cache en varnish&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;em&gt;source-apache&lt;/em&gt; : machine qui distribue les fichiers de tests en http pour le serveur apache&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;em&gt;source-nginx&lt;/em&gt; : machine qui distribue les fichiers de tests en http pour le serveur nginx&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;em&gt;source-squid&lt;/em&gt; : machine qui distribue les fichiers de tests en http pour le serveur squid&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;em&gt;source-varnish&lt;/em&gt; : machine qui distribue les fichiers de tests en http pour le serveur varnish&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;em&gt;siege&lt;/em&gt; : la machine qui servira à générer les tests&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;em&gt;temoin&lt;/em&gt; : machine qui distribue les fichiers de tests en http sans caching&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Je mets un serveur &quot;origin&quot; (marque &lt;em&gt;source-xxxxx&lt;/em&gt;) par serveur de cache afin qu&apos;un test ne perturbe pas l&apos;autre et ainsi pouvoir faire mes tests en parallèle.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Tous les serveurs seront sur le même réseau (pas de routage) afin de ne pas risquer d&apos;avoir des ACL ou des problèmes de performance de routage entre elles.&lt;/p&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;Critères et méthodologie de comparaison&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Les critères pris en compte sont les suivants&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ergonomie pour un déploiement de masse&lt;/li&gt;
&lt;li&gt;possibilité de configuration fine des vhosts/directory/...&lt;/li&gt;
&lt;li&gt;optimisation de la consommation des ressources fournies&lt;/li&gt;
&lt;li&gt;temps de réponses&lt;/li&gt;
&lt;li&gt;débits&lt;/li&gt;
&lt;li&gt;montée en charge&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Afin de tester l&apos;ensemble de ces critères, et parce que je n&apos;ai pas envie de m&apos;installer d&apos;outils complémentaires (et potentiellement lourds) pour le report de la métrologie, je ferais un simple visuel sur le résultat de top sur chaque serveur (&lt;em&gt;cache-xxxx&lt;/em&gt; et &lt;em&gt;source-xxxx&lt;/em&gt;) pendant le test.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Les tests se feront à coup d&apos;&lt;em&gt;ab&lt;/em&gt; et de&lt;em&gt; siege&lt;/em&gt; sur des fichiers de 1 ko, 10 ko, 100 ko, 1 Mo, 10 Mo, 100 Mo et 1 Go. De plus, tous se feront sans keepalive d&apos;activé.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Machine de siege&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On lui installe le nécessaire :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;# aptitude install siege apache2-utils&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Afin de me simplifier la vie, les noms des machines sont écrites dans le fichier &lt;em&gt;/etc/hosts&lt;/em&gt;.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Machine source et témoin&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On installe le nécessaire. N&apos;y cherchant pas la performance, on installe un basique &lt;em&gt;apache&lt;/em&gt;.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;# aptitude install apache2&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ni on le configure, ni on l&apos;optimise.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On lui prépare ensuite les fichiers de tests dans /var/www :&lt;/p&gt;
&lt;pre&gt;# cd /var/www
# dd if=/dev/urandom of=1k bs=1k count=1
# dd if=/dev/urandom of=10k bs=1k count=10
# dd if=/dev/urandom of=100k bs=1k count=100
# dd if=/dev/urandom of=1m bs=1024k count=1
# dd if=/dev/urandom of=10m bs=1024k count=10
# dd if=/dev/urandom of=100m bs=1024k count=100
# dd if=/dev/urandom of=1g bs=1024k count=1000&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On a donc bien nos fichiers de test :&lt;/p&gt;
&lt;pre&gt;# ls -lh
total 1.1G
-rw-r--r-- 1 root root 100K Sep 7 10:43 100k
-rw-r--r-- 1 root root 100M Sep 7 10:44 100m
-rw-r--r-- 1 root root 10K Sep 7 10:43 10k
-rw-r--r-- 1 root root 10M Sep 7 10:44 10m
-rw-r--r-- 1 root root 1000M Sep 7 10:48 1g
-rw-r--r-- 1 root root 1.0K Sep 7 10:43 1k
-rw-r--r-- 1 root root 1.0M Sep 7 10:44 1m
-rw-r--r-- 1 root root 177 Sep 7 10:41 index.html&lt;/pre&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Caching façon apache&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On lui installe apache:&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;# aptitude install apache2&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On jongle avec les modules utiles et non-utiles :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;# a2dismod auth_basic authn_file authz_default authz_groupfile hostz_user autoindex cgid dir env reqtimeout status
# a2enmod  disk_cache proxy_http&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On modifie les paramètres prefork dans /etc/apache2/apache2.conf :&lt;/p&gt;
&lt;pre&gt;&amp;lt;IfModule mpm_prefork_module&amp;gt;
 StartServers 16
 MinSpareServers 16
 MaxSpareServers 10
 MaxClients 250
 MaxRequestsPerChild 0
&amp;lt;/IfModule&amp;gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On paramètre ensuite le proxy et le caching. Pour cela on se crée un vhost dédié /etc/apache2/sites-available/crash :&lt;/p&gt;
&lt;pre&gt;&amp;lt;VirtualHost *:80&amp;gt;
 NameServer crash
 CacheRoot /opt
 CacheMaxFileSize 1500000
 ProxyPass / http://crash/
 ProxyPassReverse / http://source-apache/
&amp;lt;/VirtualHost&amp;gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On l&apos;active :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;# a2ensite crash
# /etc/init.d/apache2 restart&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Il y a vraiment peu de paramètres que l&apos;on peut configurer à ce niveau pour améliorer le fonctionnement. Une petite modification côté système est à faire dans &lt;em&gt;/etc/security/limits.conf&lt;/em&gt; :&lt;/p&gt;
&lt;pre&gt;* - nofile 65535&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Installer une usine à gaz pour une petite fonctionnalité qui est en plus ne dispose d&apos;aucun paramétrage fin.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Caching façon nginx&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On rajoute les mirroirs nginx :&lt;/p&gt;
&lt;pre&gt;deb http://nginx.org/packages/debian/ squeeze nginx
deb-src http://nginx.org/packages/debian/ squeeze nginx&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Puis :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;# wget http://nginx.org/packages/keys/nginx_signing.key -O - | apt-key add -
# aptitude update&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On installe le nécessaire :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;# aptitude install nginx&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On configure le vhost en créant un fichier &lt;em&gt;/etc/nginx/sites-available/crash&lt;/em&gt; :&lt;/p&gt;
&lt;pre&gt;server {
 listen 80;
 server_name crash;
 proxy_cache_key $scheme://$host$uri;
 location ~* / {
  proxy_hide_header &quot;Vary&quot;;
  add_header &quot;Vary&quot; &quot;Accept-Encoding&quot;;
  proxy_cache big;
  proxy_pass http://source-nginx;
 }
}&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Puis en l&apos;activant :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;# ln -s /etc/nginx/sites-available/crash /etc/nginx/sites-enable/
# /etc/init.d/nginx restart&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ensuite on remplace le fichier &lt;em&gt;/etc/nginx/nginx.conf&lt;/em&gt; par le suivant :&lt;/p&gt;
&lt;pre&gt;user www-data;
worker_processes 4; 
worker_rlimit_nofile 10000;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
timer_resolution 1ms;
events {
 worker_connections 10000;
 multi_accept on;
 use epoll;
 accept_mutex_delay 1ms;
}&lt;/pre&gt;
&lt;pre&gt;http {
 include /etc/nginx/mime.types;
 client_body_temp_path /tmp 1 2;
 client_header_timeout 5s;
 client_body_timeout 5s;
 send_timeout 10m;
 connection_pool_size 128k;
 client_header_buffer_size 16k;
 large_client_header_buffers 1024 128k; 
 request_pool_size 128k; 
 keepalive_requests 1000;
 keepalive_timeout 10;
 client_max_body_size 10g;
 client_body_buffer_size 1m;
 client_body_in_single_buffer on;
 open_file_cache max=10000 inactive=300s; 
 reset_timedout_connection on;
 gzip on;
 gzip_static on;
 gzip_min_length 1100;
 gzip_buffers 16 8k;
 gzip_comp_level 9;
 gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
 gzip_vary on;
 gzip_proxied any;
 output_buffers 1000 128k;
 postpone_output 1460;
 sendfile on; 
 sendfile_max_chunk 256k;
 tcp_nopush on;
 tcp_nodelay on;
 server_tokens off;
 resolver 127.0.0.1;
 ignore_invalid_headers on;
 index index.html;
 add_header X-CDN &quot;Served by myself&quot;;
 proxy_cache_path /opt/disk/ levels=1:2 keys_zone=big:10m max_size=2G;
 proxy_temp_path /opt/temp/ 1 2;
 proxy_cache_valid 404 10m;
 proxy_cache_valid 400 501 502 503 504 1m;
 proxy_cache_valid any 4320m;
 proxy_cache_use_stale updating invalid_header error timeout http_404 http_500 http_502 http_503 http_504;
 proxy_next_upstream error timeout invalid_header http_404 http_500 http_502 http_503 http_504;
 proxy_redirect off;
 proxy_set_header Host $http_host;
 proxy_set_header Server Apache;
 proxy_set_header Connection Close;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_pass_header Set-Cookie;
 proxy_pass_header User-Agent;
 proxy_set_header X-Accel-Buffering on;
 proxy_hide_header X-CDN;
 proxy_hide_header X-Server;
 proxy_intercept_errors off;
 proxy_ignore_client_abort on;
 proxy_connect_timeout 60;
 proxy_send_timeout 60;
 proxy_read_timeout 60;
 proxy_buffer_size 128k;
 proxy_buffers 16384 128k;
 proxy_busy_buffers_size 256k;
 proxy_temp_file_write_size 128k;
 proxy_cache_min_uses 0;
 include /etc/nginx/conf.d/*.conf;
 include /etc/nginx/sites-enabled/*;
}&lt;/pre&gt;
&lt;p&gt;Une petite modification côté système est à faire dans &lt;em&gt;/etc/security/limits.conf&lt;/em&gt; :&lt;/p&gt;
&lt;pre&gt;* - nofile 65535&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;A mon sens, c&apos;est celui qui offre le plus de possibilités dans le paramétrage fin et aussi dans l&apos;évolutivité. Il ne lui manque que peu (SSI en tête de liste) pour être parfait.&lt;/p&gt;
&lt;h2&gt;Caching façon squid&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On commence par installer l&apos;applicatif :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;# aptitude install squid&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Vous remarquerez que l&apos;installe une version de la branche 2.x et non 3.x. La raison est simple : squid3 est encore largement en retrait au niveau fonctionnalité (et stabilité) par rapport à la précédente branche, que l&apos;ancienne évolue toujours et qu&apos;on cherche à comparer des produits à mettre en prod.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On a besoin de changer les droits sur le dossier /opt :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;# chmod 777 /opt&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On paramètre alors le caching en éditant &lt;em&gt;/etc/squid/squid.conf&lt;/em&gt; :&lt;/p&gt;
&lt;pre&gt;acl all src all
acl localnet src 192.168.0.0/16
acl Safe_ports port 80
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access allow localnet
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 80 transparent
refresh_pattern . 0 20% 4320
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
coredump_dir /var/spool/squid
cache_peer source-squid parent 80 0 no-query originserver
cache_dir aufs /opt 2000 16 256
tcp_recv_bufsize 131072 bytes
maximum_object_size 1500000000 bytes&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On n&apos;oublie pas de modifier le fichier &lt;em&gt;/etc/default/squid&lt;/em&gt; :&lt;/p&gt;
&lt;pre&gt;SQUID_MAXFD=10240&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On pense encore à la petite modification côté système à faire dans &lt;em&gt;etc/security/limits.conf &lt;/em&gt;en rajoutant :&lt;/p&gt;
&lt;pre&gt;* - nofile 65535&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Squid est je pense celui qui a la configuration la moins claire. L&apos;optimisation est très restreinte. Son avantage est l&apos;implémentation complète de l&apos;HTCP qui permet à l&apos;architecture de caching de faire communiquer les noeuds entre eux, là où les autres demandes des petites astuces. Mono process, il ne profite pas des possibilités de la machine.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Caching façon varnish&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On commence par l&apos;installation :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;# aptitude install varnish&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On suit par la configuration en commencant par modifier les lignes suivantes dans &lt;em&gt;/etc/default/varnish&lt;/em&gt; :&lt;/p&gt;
&lt;pre&gt;START=yes
DAEMON_OPTS=&quot;-a :80 \
 -f /etc/varnish/default.vcl \
 -S /etc/varnish/secret \
 -p thread_pools=4 \
 -s file,/var/lib/varnish/$INSTANCE/varnish_storage.bin,2G&quot;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On enchaîne avec la configuration de &lt;em&gt;/etc/varnish/default.vcl&lt;/em&gt; :&lt;/p&gt;
&lt;pre&gt;backend default {
 .host = &quot;source-varnish&quot;;
 .port = &quot;80&quot;;
 .connect_timeout = 1s;
 .first_byte_timeout = 5s;
 .between_bytes_timeout = 2s;
}
sub vcl_recv {
 return(lookup);
}
sub vcl_fetch {
 return(deliver);
}&lt;/pre&gt;
&lt;p&gt;On rajoute la petite modification côté système dans &lt;em&gt;etc/security/limits.conf &lt;/em&gt;:&lt;/p&gt;
&lt;pre&gt;* - nofile 65535&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Varnish n&apos;a pas une syntaxe super claire. De plus, le paramétrage fin s&apos;arrête à définir les durées des objets, les latences et les actions à mener sur les HIT/MISS &amp;amp; co. Le seul intérêt que j&apos;ai trouvé à varnish est l&apos;implémentation complète des SSI (qui n&apos;est que partielle sur nginx par ex).&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Comparatif&lt;/h2&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;siege&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Siege fournit un test sur la durée et la qualité de réponse sur cette durée. Pour chaque fichier de test (remplacer XX par le nom du fichier), on lance les commandes suivantes :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;siege -b -c 1 -t 1M http://crash/XX
siege -b -c 10 -t 1M http://crash/XX
siege -b -c 100 -t 1M http://crash/XX
siege -b -c 1000 -t 1M http://crash/XX 
siege -b -c 10000 -t 1M http://crash/XX&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Siege étant très gourmand en mémoire, on est obligé de restreinte les tests sur la VM utilisée. Le tableau de résultat est disponible directement au format &lt;a href=&quot;http://cdn.aichelbaum.com/files/s/siege.pdf&quot;&gt;PDF&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Notez les points suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les durées sont annoncées en secondes&lt;/li&gt;
&lt;li&gt;les débits sont en Mo/s&lt;/li&gt;
&lt;li&gt;les erreurs sont dûes soit à la partie cliente (siege) soit à la partie serveur et donc sont à mettre entre parenthèses&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;Siege présente des résultats assez incohérent selon la relance sur les valeurs mais aussi sur sa consommation locale de ressources. Je ne suis pas sûr de pouvoir l&apos;utiliser pour ma conclusion (variation de plus de 10% à chaque reprise).&lt;/div&gt;
&lt;h3 style=&quot;text-align: justify;&quot;&gt;ab&lt;/h3&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;ab fournit un test instantanné pour définir la qualité de réponse du serveur sur une charge pré définie. Pour chaque fichier de test (remplacer XX par le nom du fichier), on lance les commandes suivantes :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;ab -n 1 -c 1 http://crash/XX
ab -n 10 -c 10 http://crash/XX
ab -n 100 -c 100 http://crash/XX
ab -n 1000 -c 1000 http://crash/XX&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le tableau de résultat est disponible directement au format &lt;a href=&quot;http://cdn.aichelbaum.com/files/a/ab.pdf&quot;&gt;PDF&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Notez les points suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les durées sont annoncées en secondes&lt;/li&gt;
&lt;li&gt;global est la durée globale du test&lt;/li&gt;
&lt;li&gt;moyenne est le temps moyen rencontré&lt;/li&gt;
&lt;li&gt;max est le temps maximum de chargement de la page&lt;/li&gt;
&lt;li&gt;erreur est le nombre de retour non valide&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;varnish est une très bonne solution en soit mais il s&apos;avère que le potentiel et les performance de nginx n&apos;en ont pas fait l&apos;un des serveurs HTTP de warez N°1 pour rien en son temps. Aujourd&apos;hui, l&apos;utiliser pour du caching a toutes ses raisons et bien plus encore.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;MAJ le 8 septembre 2012 à 16h20&lt;/strong&gt; : Modification de la mise en page des PDF et correction d&apos;un lien&lt;/li&gt;
&lt;/ol&gt;
</content>
    </entry>
  
    <entry>
      <title>Créer un caching HTTP façon CDN</title>
      <link href="https://francois.aichelbaum.com/2012/09/05/creer-un-caching-http-facon-cdn" />
      <updated>2012-09-05T15:17:41+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/09/05/creer-un-caching-http-facon-cdn</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-book&quot;&gt;&lt;/i&gt; What?&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#avant-propos-et-plateforme-http&quot; id=&quot;markdown-toc-avant-propos-et-plateforme-http&quot;&gt;Avant propos et plateforme HTTP&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#installation-des-serveursorigin&quot; id=&quot;markdown-toc-installation-des-serveursorigin&quot;&gt;Installation des serveurs &lt;em&gt;origin&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#installation-des-serveurs-source&quot; id=&quot;markdown-toc-installation-des-serveurs-source&quot;&gt;Installation des serveurs &lt;em&gt;source&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#installation-des-serveurs-edge&quot; id=&quot;markdown-toc-installation-des-serveurs-edge&quot;&gt;Installation des serveurs &lt;em&gt;edge&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#installation-dun-serveur-stats&quot; id=&quot;markdown-toc-installation-dun-serveur-stats&quot;&gt;Installation d’un serveur &lt;em&gt;stats&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#installation-dun-serveur-master&quot; id=&quot;markdown-toc-installation-dun-serveur-master&quot;&gt;Installation d’un serveur &lt;em&gt;master&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;C’est la mode au tout &lt;em&gt;Cloud&lt;/em&gt;. Je ne m’étalerais pas sur mon avis très critique à cette mode commerciale. Cependant, le fonctionnement des sites en eux-mêmes changent peu et la mode du Cloud n’entache en rien le besoin de performance. C’est le service proposé par de nombreuses société de part de le monde avec des services de livraison de contenu (CDN) qui inclus :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;distribution HTTP de contenus statiques&lt;/li&gt;
  &lt;li&gt;accélération HTTP de contenus statiques&lt;/li&gt;
  &lt;li&gt;streaming audio/vidéo &lt;em&gt;live&lt;/em&gt; ou &lt;em&gt;on-demand&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Je vais donc me focaliser sur comment monter une plateforme minimale de livraison HTTP et d’accélération HTTP.&lt;/p&gt;

&lt;h2 id=&quot;avant-propos-et-plateforme-http&quot;&gt;Avant propos et plateforme HTTP&lt;/h2&gt;

&lt;p&gt;L’accélération web consiste en la fourniture d’un service HTTP fiable, perfomant, et allégeant la charge sur la plateforme web du client : tout le contenu statique doit être fournit par la plateforme d’accélération ou au maximum, alors que les pages dynamiques sont services par la plateforme du client. Une plateforme d’accélération est simple à mettre en place. La problèmatique par contre, va résider principalement dans les performances (systèmes et réseaux) et dans les fonctionnalités avancées offertes aux clients. Le service doit être mutualisé avec un maximum de clients mais être également flexible et adapté à chacun.
La distribution HTTP repose sur le même principe à la différence que l’on doit héberger le contenu. Il est important qu’une machine qui fait de la distribution ne fasse pas d’accélération et inversement. Cette restriction est importante car les optimisations divergent quelques peu. Je ne m’attarderais pas sur l’installation des systèmes en eux-même.&lt;/p&gt;

&lt;h3 id=&quot;le-matériel&quot;&gt;Le matériel&lt;/h3&gt;

&lt;p&gt;Les performances dépendent aussi bien des logiciels et de leurs configurations, que du matériel choisi. Selon les moyens, on choisira entre l’aggrégat d’interface en gigabit ou la mise en place de cartes 10 Gbps. Il est à noté que les temps d’accès sont différents entre de l’optique et du cuivre, à l’avantage de l’optique.
De même, des SSD sont à privilégier pour le cache disque lors que des disques en 15k rpm ou 10k rpm peuvent suffire sur la partie distribution.
Pourquoi je me refuse à prendre des appliances ?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;limitées dans les fonctions additionnelles (ou sous licenses trop chères)&lt;/li&gt;
  &lt;li&gt;peu évolutives&lt;/li&gt;
  &lt;li&gt;performances largement en retrait par rapport à du &lt;em&gt;home-made&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;le-logiciel&quot;&gt;Le logiciel&lt;/h3&gt;

&lt;p&gt;Il est intéressant de privilégier pour les noeuds de cache, des machines &lt;em&gt;diskless&lt;/em&gt;, au système démarré en PXE et mis en &lt;em&gt;Ramdisk&lt;/em&gt;. Si vous avez besoin d’un article sur ce point, laissez-moi savoir. L’avantage est de réduire les I/O disques lié au système.
Côté mise en cache des objets, on se penchera sur un gros RAID0 de disques en SSD, le tout avec un formatage en XFS. Pourquoi pas en Ram ? simplement parce qu’il est facile de saturer les accès concurrents en Ram dans le cas d’un CDN et que les performances sont largement suffisantes avec une belle grappe de SSD.
Côté service HTTP, on utilisera nginx, aussi bien pour la distribution que pour le caching.  Pourquoi pas d’autres ?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;varnish en caching : il est moins extensible que nginx, un chouillat plus lourd et je le trouve clairement moins agréable à l’utilisation&lt;/li&gt;
  &lt;li&gt;squid en caching : monolithique et non multithreadé, on y perd en performance et en optimisation ; de plus sa configuration est trop lourde et ses performances sont au final en retrait&lt;/li&gt;
  &lt;li&gt;apache en caching ou en distribution : oui, pourquoi ne pas utiliser une gros usine à gaz polluante, archaïque et peu performante à la place de solution légère et performante ?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On n’écrit rien en local niveau log : on mettra en place un syslog distant et centralisé. L’attrait est double : réduire les I/O locales et pouvoir facilement générer les statistiques HTTP.&lt;/p&gt;

&lt;h3 id=&quot;la-plateforme-http&quot;&gt;La plateforme HTTP&lt;/h3&gt;

&lt;p&gt;Celle-ci regroupe donc à minima (et hors volonté de redondances sur tout) :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;un serveur PXE pour fournir les OS aux machines diskless (non détaillé ici) (&lt;em&gt;pxe&lt;/em&gt;)&lt;/li&gt;
  &lt;li&gt;un serveur syslog et statistiques (&lt;em&gt;stats&lt;/em&gt;)&lt;/li&gt;
  &lt;li&gt;un serveur de base de données pour le backoffice offrant aux clients ou à l’équipe les outils pour le déploiement des configurations par vhosts (non détaillé ici) (&lt;em&gt;db&lt;/em&gt;)&lt;/li&gt;
  &lt;li&gt;les serveurs de monitoring et management (&lt;em&gt;master&lt;/em&gt;)&lt;/li&gt;
  &lt;li&gt;les serveurs de caching (on parle d’&lt;em&gt;edges&lt;/em&gt;) ; il y aura 2 niveaux, donc on détaillera en &lt;em&gt;edge / source&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;les serveurs &lt;em&gt;origins&lt;/em&gt; HTTP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour des raisons de disponibilité (et de proximité), on sera amené à dupliquer autant de fois qu’il le faut chaque élément sur des sites distants. La plateforme est duplicable à volonté.
L’architecture est une pyramide inversée, à savoir à minima :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;4 serveurs edge qui attaquent&lt;/li&gt;
  &lt;li&gt;2 serveurs source qui attaquent&lt;/li&gt;
  &lt;li&gt;la plateforme du client ou 2 serveurs origin&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Les autres serveurs sont mis en parallèle de ce déploiement.&lt;/p&gt;

&lt;h3 id=&quot;le-réseau&quot;&gt;Le réseau&lt;/h3&gt;

&lt;p&gt;Les VIP en mode DSR seront gérées par des LVS déployés sur les masters. On peut aussi investir dans des cartes ACE. Sur la partie GSLB (load balancing géolocalisé) je vous conseille de vous référer à votre ingé réseau sur les possibilités de votre infra au niveau déclaration des entêtes &amp;amp; co. En effet, faire du GSLB en DNS pour la plateforme en elle-même est un peu moins efficace :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;à cause des serveurs DNS des FAI qui ne respectent pas les TTL (Free par ex …)&lt;/li&gt;
  &lt;li&gt;à cause des utilisateurs passant par des serveurs DNS tiers (Google, OpenDNS) qui faussent le calcul de géolocalisation&lt;/li&gt;
  &lt;li&gt;du fait que le site mis en cache doit aussi l’appliquer dans sa zone DNS et que c’est parfois compliqué de motiver un client&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La qualité du transit et des peerings est un point important pour assurer d’excellentes performances du CDN.
On note :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;X.X.A.0/24 le range d’IP public du datacenter A&lt;/li&gt;
  &lt;li&gt;X.X.B.0/24 le range d’IP public du datacenter B&lt;/li&gt;
  &lt;li&gt;10.0.A.0/8 le range d’IP privé du datacenter A&lt;/li&gt;
  &lt;li&gt;10.0.B.0/8 le range d’IP privé du datacenter B&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Les zones privées communiquent entre elles.&lt;/p&gt;

&lt;h2 id=&quot;installation-des-serveursorigin&quot;&gt;Installation des serveurs &lt;em&gt;origin&lt;/em&gt;&lt;/h2&gt;

&lt;h3 id=&quot;matériel&quot;&gt;Matériel&lt;/h3&gt;

&lt;p&gt;Au niveau matériel il s’agit, dans mon cas, de serveurs Dell R510 avec 12 disques de 2 To (pour le moment), 24 Go Ram, interfaces en 10 Gbps optiques.
On commence par déployer les packages dont on a besoin :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;aptitude -y install nginx-extras bind9 ntp sysfsutils xfsprogs syslog-ng&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Les serveurs origin se duplique automatiquement les fichiers du client grâce à une réplication en GlusterFS :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;wget http://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/5.0.3/glusterfs_3.3.0-1_amd64.deb
dpkg -i glusterfs_3.3.0-1_amd64.deb&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;La partie concernant l’importation des fichiers clients n’est pas exploitées ici. Du simple FTP au serveur SFTP utilisant un backend en LDAP, le choix est large.&lt;/p&gt;

&lt;h3 id=&quot;ntp&quot;&gt;NTP&lt;/h3&gt;

&lt;p&gt;On modifie simplement les lignes &lt;em&gt;server&lt;/em&gt; du fichier &lt;em&gt;/etc/ntp.conf&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;server&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;server&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;B&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;dns&quot;&gt;DNS&lt;/h3&gt;

&lt;p&gt;Le service ne sera utilisé qu’en local pour la résolution DNS pour les besoins du nginx.
Pour cela, on édite le fichier &lt;em&gt;/etc/bind/named.conf/options&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;options&lt;/span&gt; {
 &lt;span class=&quot;n&quot;&gt;directory&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/var/cache/bind&quot;&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;query&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;source&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;address&lt;/span&gt; * &lt;span class=&quot;n&quot;&gt;port&lt;/span&gt; *;
 &lt;span class=&quot;n&quot;&gt;forwarders&lt;/span&gt; { &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;B&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;auth&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;nxdomain&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;no&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;listen&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;on&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;v6&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;none&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;listen&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;on&lt;/span&gt; { &lt;span class=&quot;m&quot;&gt;127&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;allow&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;any&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;allow&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;recursion&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;any&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;version&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;none&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;max&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;per&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;per&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;recursive&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10000&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;minimal&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;responses&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;yes&lt;/span&gt; ;
};&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;optimisation-systeme&quot;&gt;OPTIMISATION SYSTEME&lt;/h3&gt;

&lt;p&gt;On s’attaque au scheduler disque en modifiant le fichier &lt;em&gt;/etc/sysfs.conf&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;block&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;sdb&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;queue&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;scheduler&lt;/span&gt; = &lt;span class=&quot;n&quot;&gt;noop&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On pense à adapter la partie en gras en fonction de ses disques. Dans la même idée, on modifier le bootloader &lt;em&gt;grub&lt;/em&gt; en modifiant &lt;em&gt;/etc/default/grub&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;GRUB_CMDLINE_LINUX&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;elevator=noop quiet&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;puis en mettant à jour&lt;em&gt; grub&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;update-grub&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Le filesystem de l’espace de cache a aussi son importance :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;mkfs.xfs -f -l size=128m /dev/sda3&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On adapte aussi le fichier &lt;em&gt;/etc/fstab&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;/&lt;span class=&quot;n&quot;&gt;dev&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;sdb1&lt;/span&gt; /&lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;store&lt;/span&gt;/ &lt;span class=&quot;n&quot;&gt;xfs&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rw&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;nobarrier&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;largeio&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;noatime&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;nodiratime&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;logbufs&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;8&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;inode64&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On organise ensuite la réplication entre les serveurs source. La réplication &lt;em&gt;GlusterFS&lt;/em&gt; n’est à configurer que sur l’un des noeuds :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;gluster volume create store replica 2 transport tcp origin1:/data/store origin2:/data/store
gluster volume start store
gluster volume set store performance.write-behind-window-size 1024
gluster volume set store cluster.self-heal-window-size 1024
gluster volume set store cluster.lookup-unhashed off
gluster volume set store performance.flush-behind on
gluster volume set store nfs.disable on
gluster volume set store cluster.self-heal-daemon on
gluster volume set store performance.cache-size 2147483648
gluster volume set store performance.io-thread-count 64
gluster volume set store feature.read-only off&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Notez qu’on peut répliquer autant que l’on désire. On prépare ensuite le montage du volume répliquer pour travailler dessus (/etc/fstab) :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;origin1&lt;/span&gt;:/&lt;span class=&quot;n&quot;&gt;store&lt;/span&gt; /&lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;tmp&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;glusterfs&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;defaults&lt;/span&gt;,&lt;span class=&quot;err&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;netdev&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On peut laisser le nom du premier serveur partout : le client GlusterFS l’utilise juste pour créer la connexion mais utilise le serveur qu’il considère le meilleur (en temps de réponse) pour les accès lecture/écrite.
La partie sysctl est importante (&lt;em&gt;/etc/sysctl.conf&lt;/em&gt;) :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;default&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;rp_filter&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;default&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_filter&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;rp_filter&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_filter&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;rmem_default&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;rmem_max&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;wmem_default&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;wmem_max&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_rmem&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;4096&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;87380&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_wmem&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;4096&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;65536&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_mem&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;4096&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;65536&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_low_latency&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;netdev_max_backlog&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;30000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;fs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;max&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;shmmax&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16000000000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;shmall&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16000000000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_abort_on_overflow&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_syncookies&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_fin_timeout&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_tw_reuse&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_tw_recycle&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ip_local_port_range&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1024&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;65535&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;min_free_kbytes&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;65536&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;lo&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth1&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;lo&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth1&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_orphan_retries&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_timestamps&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_sack&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_window_scaling&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_keepalive_intvl&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_keepalive_probes&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ip_forward&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;default&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;proxy_arp&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;proxy_arp&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;sysrq&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;default&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;send_redirects&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;send_redirects&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core_uses_pid&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core_pattern&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;dirty_background_ratio&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;dirty_ratio&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;40&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;swappiness&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;dirty_writeback_centisecs&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1500&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;fs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;xfs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;xfssyncd_centisecs&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;360000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;fs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;xfs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;xfsbufd_centisecs&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;3000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_max_syn_backlog&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;65536&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;optmem_max&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;40960&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_max_tw_buckets&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;360000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_reordering&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;icmp_ignore_bogus_error_responses&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_no_metrics_save&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_max_orphans&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_rfc1337&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;somaxconn&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_ecn&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ip_no_pmtu_disc&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_slow_start_after_idle&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_moderate_rcvbuf&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;A adapter selon les interfaces réseaux et la Ram (partie en gras). On l’applique avec un simple :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;sysctl -p&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Il est important d’appliquer les limites correspondantes au système (/etc/security/limits.conf) :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;*    &lt;span class=&quot;n&quot;&gt;soft&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;nofile&lt;/span&gt;    &lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;
*    &lt;span class=&quot;n&quot;&gt;hard&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;nofile&lt;/span&gt;    &lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Certaines modifications sont à appliquer au démarrage du système (&lt;em&gt;/etc/rc.local&lt;/em&gt;) :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;ifconfig eth0 txqueuelen 10000
ifconfig eth1 txqueuelen 10000
ifconfig eth0 mtu 9000
ifconfig eth1 mtu 9000
ethtool -K eth0 rx off tx off
ethtool -K eth1 rx off tx off&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;distribution-http&quot;&gt;Distribution HTTP&lt;/h3&gt;

&lt;p&gt;On s’attaque donc à &lt;em&gt;nginx&lt;/em&gt;. D’abord pour la partie globale :&lt;/p&gt;

&lt;p&gt;{% highlight conf %}
user www-data;
worker_processes 2; 
worker_rlimit_nofile 250000;&lt;/p&gt;

&lt;p&gt;error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;&lt;/p&gt;

&lt;p&gt;timer_resolution 1ms;&lt;/p&gt;

&lt;p&gt;events {
 worker_connections 102400;
 use epoll;
 multi_accept on;
 accept_mutex_delay 1ms;
}&lt;/p&gt;

&lt;p&gt;http {
 include /etc/nginx/mime.types;
 default_type application/octet-stream;&lt;/p&gt;

&lt;p&gt; log_format access ‘[$time_local] $request_time “$request_method $scheme://$host$request_uri $server_protocol” $request_length $status $bytes_sent “$http_referer” $remote_addr “$http_user_agent”’;
 access_log /data/log/access.log access;
 # Client connection
 client_body_temp_path /tmp 1 2;
 client_header_timeout 5s;
 client_body_timeout 5s;
 send_timeout 10m;
 connection_pool_size 256k;
 client_header_buffer_size 16k;
 large_client_header_buffers 1024 128k; 
 request_pool_size 128k; 
 keepalive_requests 1000;
 keepalive_timeout 10;
 client_max_body_size 10g;
 client_body_buffer_size 1m;
 client_body_in_single_buffer on;
 open_file_cache max=250000 inactive=300s; 
 reset_timedout_connection on;&lt;/p&gt;

&lt;p&gt; # Compression
 gzip on;
 gzip_static on;
 gzip_min_length 1100;
 gzip_buffers 16 8k;
 gzip_comp_level 9;
 gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
 gzip_vary on;
 gzip_proxied any;&lt;/p&gt;

&lt;p&gt; # Network optimizations
 output_buffers 1000 128k;
 postpone_output 1460;
 sendfile on; 
 sendfile_max_chunk 256k;
 tcp_nopush on;
 tcp_nodelay on;
 server_tokens off;&lt;/p&gt;

&lt;p&gt; # DNS
 resolver 127.0.0.1;&lt;/p&gt;

&lt;p&gt; # HTTP Request
 ignore_invalid_headers on;
 index index.html;
 add_header X-CDN “Served by myself”;
 add_header Connection close;&lt;/p&gt;

&lt;p&gt; server_names_hash_max_size 5120;
 server_names_hash_bucket_size 256;&lt;/p&gt;

&lt;p&gt;upstream_fair_shm_size 1024k;&lt;/p&gt;

&lt;p&gt; # Includes
 include /etc/nginx/conf.d/&lt;em&gt;.conf;
 include /etc/nginx/sites-enabled/&lt;/em&gt;;
}
{% endhighlight %}&lt;/p&gt;

&lt;p&gt;Ensuite, voici le template par&lt;em&gt; vhost&lt;/em&gt; (au format &lt;a href=&quot;http://twig.sensiolabs.org/&quot;&gt;twig&lt;/a&gt;) que votre robot déploiera :&lt;/p&gt;

&lt;p&gt;{% highlight conf %}&lt;/p&gt;
&lt;h3 id=&quot;-serial-&quot;&gt;{{ serial }}&lt;/h3&gt;
&lt;p&gt;server {
 listen &lt;em&gt;:80;
 server_name {{ frontends|join(‘ ‘) }};
{ % raw %}
 {% for option in default_options %}
  {{- option.name }} {{ option.value }};
 {% endfor %}
 {% for location in locations %}
  {% for rule_expert in location.rules_expert %}
  # {{ location.name }}
  location ~&lt;/em&gt; {{ rule_expert.pattern }} {
   {% for option in location.options %}
    {{- option.name }} {{ option.value }};
   {% endfor %}
   root /data/tmp/vhosts/{{ vhost }}.nginx_backend/;
  }
  {% endfor %}
 {% endfor %}
{ % endraw %}
 error_page 404 /404.html;
 error_page 500 /500.html;
 error_page 502 /502.html; 
 error_page 503 /503.html;
 error_page 504 /504.html;
 location = /404.html { root /var/www/nginx-default; }
 location = /500.html { root /var/www/nginx-default; }
 location = /502.html { root /var/www/nginx-default; }
 location = /503.html { root /var/www/nginx-default; }
 location = /504.html { root /var/www/nginx-default; }
}
{% endhighlight %}&lt;/p&gt;

&lt;h2 id=&quot;installation-des-serveurs-source&quot;&gt;Installation des serveurs &lt;em&gt;source&lt;/em&gt;&lt;/h2&gt;

&lt;h3 id=&quot;matériel-1&quot;&gt;Matériel&lt;/h3&gt;

&lt;p&gt;Au niveau matériel il s’agit, dans mon cas, de serveurs Dell R510 avec 12 disques de 2 To, 24 Go Ram, interfaces en 10 Gbps optiques.
On commence par déployer les packages dont on a besoin :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;aptitude -y install nginx-extras bind9 ntp sysfsutils xfsprogs syslog-ng&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Les serveurs &lt;em&gt;source&lt;/em&gt; se duplique automatiquement les fichiers mis en cache grâce à une réplication en GlusterFS :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;wget http://download.gluster.org/pub/gluster/glusterfs/LATEST/Debian/5.0.3/glusterfs_3.3.0-1_amd64.deb
dpkg -i glusterfs_3.3.0-1_amd64.deb&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;ntp-1&quot;&gt;NTP&lt;/h3&gt;

&lt;p&gt;On modifie simplement les lignes &lt;em&gt;server&lt;/em&gt; du fichier &lt;em&gt;/etc/ntp.conf&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;server&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;server&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;B&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;dns-1&quot;&gt;DNS&lt;/h3&gt;
&lt;p&gt;Le service ne sera utilisé qu’en local pour la résolution DNS pour les besoins du nginx.
Pour cela, on édite le fichier &lt;em&gt;/etc/bind/named.conf/options&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;options&lt;/span&gt; {
 &lt;span class=&quot;n&quot;&gt;directory&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/var/cache/bind&quot;&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;query&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;source&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;address&lt;/span&gt; * &lt;span class=&quot;n&quot;&gt;port&lt;/span&gt; *;
 &lt;span class=&quot;n&quot;&gt;forwarders&lt;/span&gt; { &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;B&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;auth&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;nxdomain&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;no&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;listen&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;on&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;v6&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;none&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;listen&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;on&lt;/span&gt; { &lt;span class=&quot;m&quot;&gt;127&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;allow&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;any&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;allow&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;recursion&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;any&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;version&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;none&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;max&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;per&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;per&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;recursive&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10000&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;minimal&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;responses&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;yes&lt;/span&gt; ;
};&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;optimisation-systeme-1&quot;&gt;OPTIMISATION SYSTEME&lt;/h3&gt;

&lt;p&gt;On s’attaque au scheduler disque en modifiant le fichier &lt;em&gt;/etc/sysfs.conf&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;block&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;sdb&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;queue&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;scheduler&lt;/span&gt; = &lt;span class=&quot;n&quot;&gt;noop&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On pense à adapter la partie en gras en fonction de ses disques. Dans la même idée, on modifier le bootloader &lt;em&gt;grub&lt;/em&gt; en modifiant &lt;em&gt;/etc/default/grub&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;GRUB_CMDLINE_LINUX&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;elevator=noop quiet&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;puis en mettant à jour&lt;em&gt; grub&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;update-grub&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Le filesystem de l’espace de cache a aussi son importance :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;mkfs.xfs -f -l size=128m /dev/sda3&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On adapte aussi le fichier &lt;em&gt;/etc/fstab&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;/&lt;span class=&quot;n&quot;&gt;dev&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;sdb1&lt;/span&gt; /&lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;cache&lt;/span&gt;/ &lt;span class=&quot;n&quot;&gt;xfs&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rw&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;nobarrier&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;largeio&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;noatime&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;nodiratime&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;logbufs&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;8&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;inode64&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On organise ensuite la réplication entre les serveurs source. La réplication &lt;em&gt;GlusterFS&lt;/em&gt; n’est à configurer que sur l’un des noeuds :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;gluster volume create cache replica 2 transport tcp source1:/data/cache source2:/data/cache
gluster volume start cache
gluster volume set cache performance.write-behind-window-size 131072
gluster volume set cache cluster.self-heal-window-size 1024
gluster volume set cache cluster.lookup-unhashed off
gluster volume set cache performance.flush-behind on
gluster volume set cache nfs.disable on
gluster volume set cache cluster.self-heal-daemon on
gluster volume set cache performance.cache-size 2147483648
gluster volume set cache performance.io-thread-count 64
gluster volume set cache feature.read-only off&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Notez qu’on peut répliquer autant que l’on désire. On prépare ensuite le montage du volume répliquer pour travailler dessus (&lt;em&gt;/etc/fstab&lt;/em&gt;) :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;source1&lt;/span&gt;:/&lt;span class=&quot;n&quot;&gt;cache&lt;/span&gt; /&lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;tmp&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;glusterfs&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;defaults&lt;/span&gt;,&lt;span class=&quot;err&quot;&gt;_&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;netdev&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On peut laisser le nom du premier serveur partout : le client GlusterFS l’utilise juste pour créer la connexion mais utilise le serveur qu’il considère le meilleur (en temps de réponse) pour les accès lecture/écrite.
La partie sysctl est importante (&lt;em&gt;/etc/sysctl.conf&lt;/em&gt;) :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;default&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;rp_filter&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;default&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_filter&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;rp_filter&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_filter&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;rmem_default&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;rmem_max&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;wmem_default&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;wmem_max&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_rmem&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;4096&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;87380&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_wmem&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;4096&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;65536&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_mem&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;4096&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;65536&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_low_latency&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;netdev_max_backlog&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;30000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;fs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;max&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;shmmax&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16000000000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;shmall&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16000000000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_abort_on_overflow&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_syncookies&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_fin_timeout&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_tw_reuse&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_tw_recycle&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ip_local_port_range&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1024&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;65535&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;min_free_kbytes&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;65536&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;lo&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth1&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;lo&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth1&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_orphan_retries&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_timestamps&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_sack&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_window_scaling&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_keepalive_intvl&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_keepalive_probes&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ip_forward&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;default&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;proxy_arp&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;proxy_arp&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;sysrq&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;default&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;send_redirects&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;send_redirects&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core_uses_pid&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core_pattern&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;dirty_background_ratio&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;dirty_ratio&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;40&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;swappiness&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;dirty_writeback_centisecs&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1500&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;fs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;xfs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;xfssyncd_centisecs&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;360000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;fs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;xfs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;xfsbufd_centisecs&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;3000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_max_syn_backlog&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;65536&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;optmem_max&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;40960&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_max_tw_buckets&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;360000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_reordering&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;icmp_ignore_bogus_error_responses&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_no_metrics_save&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_max_orphans&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_rfc1337&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;somaxconn&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_ecn&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ip_no_pmtu_disc&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_slow_start_after_idle&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_moderate_rcvbuf&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;A adapter selon les interfaces réseaux et la Ram (partie en gras). On l’applique avec un simple :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;sysctl -p&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Il est important d’appliquer les limites correspondantes au système (/etc/security/limits.conf) :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;*    &lt;span class=&quot;n&quot;&gt;soft&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;nofile&lt;/span&gt;    &lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;
*    &lt;span class=&quot;n&quot;&gt;hard&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;nofile&lt;/span&gt;    &lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Certaines modifications sont à appliquer au démarrage du système (&lt;em&gt;/etc/rc.local&lt;/em&gt;) :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;ifconfig eth0 txqueuelen 10000
ifconfig eth1 txqueuelen 10000
ifconfig eth0 mtu 9000
ifconfig eth1 mtu 9000
ethtool -K eth0 rx off tx off
ethtool -K eth1 rx off tx off&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;caching&quot;&gt;CACHING&lt;/h3&gt;

&lt;p&gt;On s’attaque donc à &lt;em&gt;nginx&lt;/em&gt;. D’abord pour la partie globale :&lt;/p&gt;

&lt;p&gt;{% highlight conf %}
user www-data;
worker_processes 2; 
worker_rlimit_nofile 2500004;&lt;/p&gt;

&lt;p&gt;error_log /var/log/nginx/error.log error;
pid /var/run/nginx.pid;&lt;/p&gt;

&lt;p&gt;timer_resolution 1ms;&lt;/p&gt;

&lt;p&gt;events {
 worker_connections 102400;
 use epoll;
 multi_accept on;
 accept_mutex_delay 1ms;
}&lt;/p&gt;

&lt;p&gt;http {
 include /etc/nginx/mime.types;
 default_type application/octet-stream;&lt;/p&gt;

&lt;p&gt; log_format access ‘[$time_local] $request_time “$request_method $scheme://$host$request_uri $server_protocol” $request_length $upstream_cache_status $status $proxy_host $upstream_addr $bytes_sent “$http_referer” $remote_addr “$http_user_agent”’;
 #access_log /data/log/access.log access;
 access_log off;
 # Client connection
 client_body_temp_path /tmp 1 2;
 client_header_timeout 5s;
 client_body_timeout 5s;
 send_timeout 10m;
 connection_pool_size 256k;
 client_header_buffer_size 16k;
 large_client_header_buffers 1024 128k; 
 request_pool_size 128k; 
 keepalive_requests 1000;
 keepalive_timeout 10;
 client_max_body_size 10g;
 client_body_buffer_size 1m;
 client_body_in_single_buffer on;
 open_file_cache max=250000 inactive=300s; 
 reset_timedout_connection on;&lt;/p&gt;

&lt;p&gt; # Compression
 gzip on;
 gzip_static on;
 gzip_min_length 1100;
 gzip_buffers 16 8k;
 gzip_comp_level 9;
 gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
 gzip_vary on;
 gzip_proxied any;&lt;/p&gt;

&lt;p&gt; # Network optimizations
 output_buffers 1000 128k;
 postpone_output 1460;
 sendfile on; 
 sendfile_max_chunk 256k;
 tcp_nopush on;
 tcp_nodelay on;
 server_tokens off;&lt;/p&gt;

&lt;p&gt; # DNS
 resolver 127.0.0.1;&lt;/p&gt;

&lt;p&gt; # HTTP Request
 ignore_invalid_headers on;
 index index.html;
 add_header X-CDN “Served by myself”;
 add_header Connection close;&lt;/p&gt;

&lt;p&gt; server_names_hash_max_size 5120;
 server_names_hash_bucket_size 256;&lt;/p&gt;

&lt;p&gt;upstream_fair_shm_size 1024k;
 # Proxy
 proxy_cache_path /data/tmp/disk/ levels=1:2 keys_zone=big:1000m max_size=16000G;
 proxy_temp_path /data/tmp/temp/ 1 2;
 proxy_cache_valid 404 10m;
 proxy_cache_valid 400 501 502 503 504 1m;
 proxy_cache_valid any 4320m;
 proxy_cache_use_stale updating invalid_header error timeout http_404 http_500 http_502 http_503 http_504;
 proxy_next_upstream error timeout invalid_header http_404 http_500 http_502 http_503 http_504;
 proxy_redirect off;
 proxy_set_header Host $http_host;
 proxy_set_header Server Apache;
 proxy_set_header Connection Close;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_pass_header Set-Cookie;
 proxy_pass_header User-Agent;
 proxy_set_header X-Accel-Buffering on;
 proxy_hide_header X-CDN;
 proxy_hide_header X-Server;
 proxy_intercept_errors off;
 proxy_ignore_client_abort on;
 proxy_connect_timeout 60;
 proxy_send_timeout 60;
 proxy_read_timeout 60;
 proxy_buffer_size 128k;
 proxy_buffers 16384 128k;
 proxy_busy_buffers_size 256k;
 proxy_temp_file_write_size 128k;
 proxy_cache_min_uses 0;
 # Includes
 include /etc/nginx/conf.d/&lt;em&gt;.conf;
 include /etc/nginx/sites-enabled/&lt;/em&gt;;
}
{% endhighlight %}&lt;/p&gt;

&lt;p&gt;Ensuite, voici le template par&lt;em&gt; vhost&lt;/em&gt; (au format &lt;a href=&quot;http://twig.sensiolabs.org/&quot;&gt;twig&lt;/a&gt;) que votre robot déploiera :&lt;/p&gt;

&lt;p&gt;{% highlight conf %}&lt;/p&gt;
&lt;h3 id=&quot;-serial--1&quot;&gt;{{ serial }}&lt;/h3&gt;
&lt;p&gt;proxy_cache_path /data/tmp/disk/{{ upstream }} levels=1:2 keys_zone={{ upstream }}:1000m inactive=4320m max_size=16000G;
upstream {{ upstream }}.nginx_backend {
{ % raw %}
 {% for backend in backends %}
 server {{ backend.name }}{% for key, value in backend.options %} {{ key }}={{ value }}{% endfor %};
 {% endfor %}
{ % endraw %}
 fair;
}
server {
 listen &lt;em&gt;:80;
 server_name {{ frontends|join(‘ ‘) }};
{ % raw %}
 {% for option in default_options %}
  {{- option.name }} {{ option.value }};
 {% endfor %}
 proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
 proxy_no_cache $http_pragma $http_authorization;
 {% for location in locations %}
  {% for rule_expert in location.rules_expert %}
  # {{ location.name }}
  location ~&lt;/em&gt; {{ rule_expert.pattern }} {
   {% for option in location.options %}
    {{- option.name }} {{ option.value }};
   {% endfor %}
   {% for header in location.del_headers -%}
    proxy_hide_header “{{ header.name }}”;
   {% endfor %}
   {% for header in location.mod_headers %}
    proxy_hide_header “{{ header.name }}”;
    add_header “{{ header.name }}” “{{ header.value }}”;
   {% endfor %}
   proxy_cache {{ upstream }};
   proxy_pass http://{{ upstream }}.nginx_backend;
  }
  {% endfor %}
 {% endfor %}
{ % endraw %}
 error_page 404 /404.html;
 error_page 500 /500.html;
 error_page 502 /502.html; 
 error_page 503 /503.html;
 error_page 504 /504.html;
 location = /404.html { root /var/www/nginx-default; }
 location = /500.html { root /var/www/nginx-default; }
 location = /502.html { root /var/www/nginx-default; }
 location = /503.html { root /var/www/nginx-default; }
 location = /504.html { root /var/www/nginx-default; }
}
{% endhighlight %}&lt;/p&gt;

&lt;h2 id=&quot;installation-des-serveurs-edge&quot;&gt;Installation des serveurs &lt;em&gt;edge&lt;/em&gt;&lt;/h2&gt;

&lt;h3 id=&quot;matériel-2&quot;&gt;Matériel&lt;/h3&gt;

&lt;p&gt;Au niveau matériel il s’agit, dans mon cas, de serveurs avec les matériels suivants :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;2 CPU Intel E5620 (la plateforme date un peu)&lt;/li&gt;
  &lt;li&gt;96 Go Ram&lt;/li&gt;
  &lt;li&gt;6 x 100 Go en SSD&lt;/li&gt;
  &lt;li&gt;interfaces réseaux optiques 10 Gbps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ce qui suit est à faire sur l’image PXE ou sur le système local si vous en avez mis un. On commence par déployer les packages dont on a besoin :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;aptitude -y install nginx-extras bind9 ntp sysfsutils xfsprogs syslog-ng&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;ntp-2&quot;&gt;NTP&lt;/h3&gt;

&lt;p&gt;On modifie simplement les lignes &lt;em&gt;server&lt;/em&gt; du fichier &lt;em&gt;/etc/ntp.conf&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;server&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;server&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;B&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;dns-2&quot;&gt;DNS&lt;/h3&gt;

&lt;p&gt;Le service ne sera utilisé qu’en local pour la résolution DNS pour les besoins du nginx.
Pour cela, on édite le fichier &lt;em&gt;/etc/bind/named.conf/options&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;options&lt;/span&gt; {
 &lt;span class=&quot;n&quot;&gt;directory&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/var/cache/bind&quot;&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;query&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;source&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;address&lt;/span&gt; * &lt;span class=&quot;n&quot;&gt;port&lt;/span&gt; *;
 &lt;span class=&quot;n&quot;&gt;forwarders&lt;/span&gt; { &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;B&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;auth&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;nxdomain&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;no&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;listen&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;on&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;v6&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;none&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;listen&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;on&lt;/span&gt; { &lt;span class=&quot;m&quot;&gt;127&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;allow&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;any&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;allow&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;recursion&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;any&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;version&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;none&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;max&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;per&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;per&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;recursive&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10000&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;minimal&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;responses&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;yes&lt;/span&gt; ;
};&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;optimisation-systeme-2&quot;&gt;OPTIMISATION SYSTEME&lt;/h3&gt;

&lt;p&gt;On s’attaque au scheduler disque en modifiant le fichier &lt;em&gt;/etc/sysfs.conf&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;block&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;sda&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;queue&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;scheduler&lt;/span&gt; = &lt;span class=&quot;n&quot;&gt;noop&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On pense à adapter la partie en gras en fonction de ses disques. Dans la même idée, on modifier le bootloader &lt;em&gt;grub&lt;/em&gt; en modifiant &lt;em&gt;/etc/default/grub&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;GRUB_CMDLINE_LINUX&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;elevator=noop quiet&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;puis en mettant à jour* grub* :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;update-grub&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Le filesystem de l’espace de cache a aussi son importance :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;mkfs.xfs -f -l size=128m /dev/sda3&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On adapte aussi le fichier &lt;em&gt;/etc/fstab&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;/&lt;span class=&quot;n&quot;&gt;dev&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;sda3&lt;/span&gt; /&lt;span class=&quot;n&quot;&gt;data&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;cache&lt;/span&gt;/ &lt;span class=&quot;n&quot;&gt;xfs&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;rw&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;nobarrier&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;largeio&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;noatime&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;nodiratime&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;logbufs&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;8&lt;/span&gt;,&lt;span class=&quot;n&quot;&gt;inode64&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;La partie sysctl est importante (/etc/sysctl.conf) :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;default&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;rp_filter&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;default&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_filter&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;rp_filter&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_filter&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;rmem_default&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;rmem_max&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;wmem_default&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;wmem_max&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_rmem&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;4096&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;87380&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_wmem&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;4096&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;65536&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_mem&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;4096&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;65536&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;16777216&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_low_latency&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;netdev_max_backlog&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;30000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;fs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;file&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;max&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;shmmax&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16000000000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;shmall&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;16000000000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_abort_on_overflow&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_syncookies&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_fin_timeout&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_tw_reuse&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_tw_recycle&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ip_local_port_range&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1024&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;65535&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;min_free_kbytes&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;65536&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;lo&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth1&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth2&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth3&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth5&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_ignore&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;lo&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth1&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth2&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth3&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;eth5&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;arp_announce&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_orphan_retries&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_timestamps&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_sack&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_window_scaling&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_keepalive_intvl&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_keepalive_probes&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ip_forward&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;default&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;proxy_arp&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;proxy_arp&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;sysrq&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;default&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;send_redirects&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;all&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;send_redirects&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core_uses_pid&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;kernel&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core_pattern&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;dirty_background_ratio&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;dirty_ratio&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;40&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;swappiness&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;vm&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;dirty_writeback_centisecs&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1500&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;fs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;xfs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;xfssyncd_centisecs&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;360000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;fs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;xfs&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;xfsbufd_centisecs&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;3000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_max_syn_backlog&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;65536&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;optmem_max&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;40960&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_max_tw_buckets&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;360000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_reordering&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;icmp_ignore_bogus_error_responses&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_no_metrics_save&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_max_orphans&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_rfc1337&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;core&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;somaxconn&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_ecn&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ip_no_pmtu_disc&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_slow_start_after_idle&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;net&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;ipv4&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tcp_moderate_rcvbuf&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;A adapter selon les interfaces réseaux et la Ram (partie en gras). On l’applique avec un simple :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;sysctl -p&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Il est important d’appliquer les limites correspondantes au système (/etc/security/limits.conf) :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;*    &lt;span class=&quot;n&quot;&gt;soft&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;nofile&lt;/span&gt;    &lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;
*    &lt;span class=&quot;n&quot;&gt;hard&lt;/span&gt;    &lt;span class=&quot;n&quot;&gt;nofile&lt;/span&gt;    &lt;span class=&quot;m&quot;&gt;262144&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Certaines modifications sont à appliquer au démarrage du système (&lt;em&gt;/etc/rc.local&lt;/em&gt;) :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;ifconfig eth0 txqueuelen 10000
ifconfig eth1 txqueuelen 10000
ifconfig eth2 txqueuelen 10000
ifconfig eth3 txqueuelen 10000
ifconfig eth4 txqueuelen 10000
ifconfig eth5 txqueuelen 10000
ifconfig eth0 mtu 9000
ifconfig eth1 mtu 9000
ifconfig eth2 mtu 9000
ifconfig eth3 mtu 9000
ifconfig eth4 mtu 9000
ifconfig eth5 mtu 9000
ethtool -K eth0 rx off tx off
ethtool -K eth1 rx off tx off
ethtool -K eth2 rx off tx off
ethtool -K eth3 rx off tx off
ethtool -K eth4 rx off tx off
ethtool -K eth5 rx off tx off&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;caching-1&quot;&gt;CACHING&lt;/h3&gt;

&lt;p&gt;Afin d’optimiser le nombre de socket par machine en fonction des ressources, on affecte plusieurs IP en alias à l’interface publique. De même, on pense à rajouter les IP des VIP à la loopback (&lt;em&gt;/etc/network/interfaces&lt;/em&gt;).&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;auto&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lo&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;iface&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lo&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;inet&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;loopback&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;auto&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;iface&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;inet&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;static&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;netmask&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;255&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;255&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;255&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;gateway&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;post&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;up&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ifconfig&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;11&lt;/span&gt;/&lt;span class=&quot;m&quot;&gt;32&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;post&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;up&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ifconfig&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;12&lt;/span&gt;/&lt;span class=&quot;m&quot;&gt;32&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;post&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;up&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ifconfig&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;13&lt;/span&gt;/&lt;span class=&quot;m&quot;&gt;32&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;post&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;up&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ifconfig&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;14&lt;/span&gt;/&lt;span class=&quot;m&quot;&gt;32&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;post&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;up&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ifconfig&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;4&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;15&lt;/span&gt;/&lt;span class=&quot;m&quot;&gt;32&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;post&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;up&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ifconfig&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;5&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;16&lt;/span&gt;/&lt;span class=&quot;m&quot;&gt;32&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;post&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;up&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ifconfig&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;6&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;17&lt;/span&gt;/&lt;span class=&quot;m&quot;&gt;32&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;post&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;up&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ifconfig&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;7&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;18&lt;/span&gt;/&lt;span class=&quot;m&quot;&gt;32&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;post&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;up&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ifconfig&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;eth0&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;8&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;19&lt;/span&gt;/&lt;span class=&quot;m&quot;&gt;32&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;auto&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lo&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;iface&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lo&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;inet&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;static&lt;/span&gt; 
 &lt;span class=&quot;n&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;248&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;netmask&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;255&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;255&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;255&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;255&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;auto&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lo&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;iface&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;lo&lt;/span&gt;:&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;inet&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;static&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;address&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;249&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;netmask&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;255&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;255&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;255&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;255&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Ensuite, on s’attaque à &lt;em&gt;nginx&lt;/em&gt;. D’abord pour la partie globale :&lt;/p&gt;

&lt;p&gt;{% highlight conf %}
user www-data;
worker_processes 32; 
worker_rlimit_nofile 262144;&lt;/p&gt;

&lt;p&gt;error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;&lt;/p&gt;

&lt;p&gt;timer_resolution 1ms;&lt;/p&gt;

&lt;p&gt;syslog local5 nginx;&lt;/p&gt;

&lt;p&gt;events {
 worker_connections 262144;
 use epoll;
 multi_accept on;
 accept_mutex_delay 1ms;
}&lt;/p&gt;

&lt;p&gt;http {
 include /etc/nginx/mime.types;
 default_type application/octet-stream;&lt;/p&gt;

&lt;p&gt; log_format access ‘[$time_local] $request_time “$request_method $scheme://$host$request_uri $server_protocol” $request_length $upstream_cache_status $status $proxy_host $upstream_addr $bytes_sent “$http_referer” $remote_addr “$http_user_agent”’;
 access_log syslog access;&lt;/p&gt;

&lt;p&gt; # Client connection
 aio off;
 client_body_temp_path /tmp 1 2;
 client_header_timeout 5s;
 client_body_timeout 5s;
 send_timeout 10m;
 connection_pool_size 256k;
 client_header_buffer_size 16k;
 large_client_header_buffers 1024 256k; 
 request_pool_size 128k; 
 keepalive_requests 1000;
 keepalive_timeout 10;
 client_max_body_size 10g;
 client_body_buffer_size 1m;
 client_body_in_single_buffer on;
 open_file_cache max=1000 inactive=3600s; 
 reset_timedout_connection on;&lt;/p&gt;

&lt;p&gt; # Compression
 gzip on;
 gzip_static on;
 gzip_min_length 1100;
 gzip_buffers 16 8k;
 gzip_comp_level 9;
 gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
 gzip_vary on;
 gzip_proxied any;&lt;/p&gt;

&lt;p&gt; # Network optimizations
 output_buffers 1000 128k;
 postpone_output 1460;
 sendfile on; 
 sendfile_max_chunk 256k;
 tcp_nopush on;
 tcp_nodelay on;
 server_tokens off;&lt;/p&gt;

&lt;p&gt; # DNS
 resolver 127.0.0.1;&lt;/p&gt;

&lt;p&gt; # HTTP Request
 ignore_invalid_headers on;
 index index.html;
 add_header X-CDN “Served by myself”;
 add_header Connection close;&lt;/p&gt;

&lt;p&gt; # Proxy
 proxy_cache_path /data/cache/disk levels=1:2 keys_zone=big:4000m inactive=4320m max_size=500G;
 proxy_temp_path /data/cache/temp 1 2;
 proxy_cache_valid 404 10m;
 proxy_cache_valid 400 501 502 503 504 1m;
 proxy_cache_valid any 4320m;
 proxy_cache_use_stale updating invalid_header error timeout http_404 http_500 http_502 http_503 http_504;
 proxy_next_upstream error timeout invalid_header http_404 http_500 http_502 http_503 http_504;
 proxy_redirect off;
 proxy_set_header Host $http_host;
 proxy_set_header Server Apache;
 proxy_set_header Connection Close;
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_pass_header Set-Cookie;
 proxy_pass_header User-Agent;
 proxy_set_header X-Accel-Buffering on;
 proxy_hide_header X-CDN;
 proxy_hide_header X-Server;
 proxy_intercept_errors on;
 proxy_ignore_client_abort on;
 proxy_connect_timeout 10;
 proxy_send_timeout 10;
 proxy_read_timeout 10;
 proxy_buffer_size 128k;
 proxy_buffers 65536 128k;
 proxy_busy_buffers_size 256k;
 proxy_temp_file_write_size 128k;&lt;/p&gt;

&lt;p&gt; server_names_hash_max_size 5120;
 server_names_hash_bucket_size 256;&lt;/p&gt;

&lt;p&gt;upstream_fair_shm_size 1024k;&lt;/p&gt;

&lt;p&gt; # Includes
 include /etc/nginx/conf.d/&lt;em&gt;.conf;
 include /etc/nginx/sites-enabled/&lt;/em&gt;;
}
{% endhighlight %}&lt;/p&gt;

&lt;p&gt;Ensuite, voici le template par* vhost* (au format &lt;a href=&quot;http://twig.sensiolabs.org/&quot;&gt;twig&lt;/a&gt;) que votre robot déploiera :&lt;/p&gt;

&lt;p&gt;{% highlight conf %}&lt;/p&gt;
&lt;h3 id=&quot;-serial--2&quot;&gt;{{ serial }}&lt;/h3&gt;
&lt;p&gt;proxy_cache_path /data/cache/disk/{{ upstream }} levels=1:2 keys_zone={{ upstream }}:1000m inactive=4320m max_size=400G;
upstream {{ upstream }}.nginx_backend {
 server X.X.A.101 max_fails=1 fail_timeout=1; 
 server X.X.B.101 max_fails=1 fail_timeout=1;
 fair;
}
server {
 listen &lt;em&gt;:80;
 server_name {{ frontends|join(‘ ‘) }};
{ % raw %}
 {% for option in default_options %}
  {{- option.name }} {{ option.value }};
 {% endfor %}
 proxy_no_cache $cookie_nocache $arg_nocache $arg_comment;
 proxy_no_cache $http_pragma $http_authorization;
 {% for location in locations %}
  {% for rule_expert in location.rules_expert %}
  # {{ location.name }}
  location ~&lt;/em&gt; {{ rule_expert.pattern }} {
   {% for option in location.options %}
    {{- option.name }} {{ option.value }};
   {% endfor %}
   {% for header in location.del_headers %}
    proxy_hide_header “{{ header.name }}”;
   {% endfor %}
   {% for header in location.mod_headers %}
    proxy_hide_header “{{ header.name }}”;
    add_header “{{ header.name }}” “{{ header.value }}”;
   {% endfor %}
   proxy_cache {{ upstream }};
   proxy_pass http://{{ upstream }}.nginx_backend;
  }
  {% endfor %}
 {% endfor %}
{ % endraw %}
 error_page 404 /404.html;
 error_page 500 /500.html;
 error_page 502 /502.html; 
 error_page 503 /503.html;
 error_page 504 /504.html;
 location = /404.html { root /var/www/nginx-default; }
 location = /500.html { root /var/www/nginx-default; }
 location = /502.html { root /var/www/nginx-default; }
 location = /503.html { root /var/www/nginx-default; }
 location = /504.html { root /var/www/nginx-default; }
}
{% endhighlight %}&lt;/p&gt;

&lt;h3 id=&quot;syslog&quot;&gt;SYSLOG&lt;/h3&gt;

&lt;p&gt;On envoie les logs nginx directement sur le syslog centralisé, en modifiant le fichier &lt;em&gt;/etc/syslog-ng/syslog-ng.conf&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;destination&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;d_remote&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;tcp&lt;/span&gt;(&lt;span class=&quot;s2&quot;&gt;&quot;10.0.A.202&quot;&lt;/span&gt;, &lt;span class=&quot;n&quot;&gt;port&lt;/span&gt;(&lt;span class=&quot;m&quot;&gt;514&lt;/span&gt;)); };
&lt;span class=&quot;n&quot;&gt;filter&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;f_nginx&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;facility&lt;/span&gt;(&lt;span class=&quot;n&quot;&gt;local5&lt;/span&gt;); };
&lt;span class=&quot;n&quot;&gt;log&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;source&lt;/span&gt;(&lt;span class=&quot;n&quot;&gt;s_src&lt;/span&gt;); &lt;span class=&quot;n&quot;&gt;filter&lt;/span&gt;(&lt;span class=&quot;n&quot;&gt;f_nginx&lt;/span&gt;); &lt;span class=&quot;n&quot;&gt;destination&lt;/span&gt;(&lt;span class=&quot;n&quot;&gt;d_remote&lt;/span&gt;); };&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h2 id=&quot;installation-dun-serveur-stats&quot;&gt;Installation d’un serveur &lt;em&gt;stats&lt;/em&gt;&lt;/h2&gt;

&lt;h3 id=&quot;matériel-3&quot;&gt;Matériel&lt;/h3&gt;

&lt;p&gt;Pour la partie matériel, j’ai pris un HP G7 avec des disques 15k rpm mis en RAID 10. Au niveau réseau, les interfaces gigabit suffisent amplement.&lt;/p&gt;

&lt;h3 id=&quot;packages&quot;&gt;Packages&lt;/h3&gt;

&lt;p&gt;On installe les packages nécessaires :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;aptitude -y install bind9 awstats jdresolve syslog-ng geoip-bin groip-database ntp&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;ntp-3&quot;&gt;NTP&lt;/h3&gt;

&lt;p&gt;On modifie simplement les lignes &lt;em&gt;server&lt;/em&gt; du fichier &lt;em&gt;/etc/ntp.conf&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;server&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;server&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;B&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;dns-3&quot;&gt;DNS&lt;/h3&gt;

&lt;p&gt;Le service ne sera utilisé qu’en local pour la résolution DNS des IP utilisateurs au moment de l’écriture des logs (ce qui évitera de le faire a posteriori pendant le calcul des statistiques).
Pour cela, on édite le fichier &lt;em&gt;/etc/bind/named.conf/options&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;options&lt;/span&gt; {
 &lt;span class=&quot;n&quot;&gt;directory&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/var/cache/bind&quot;&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;query&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;source&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;address&lt;/span&gt; * &lt;span class=&quot;n&quot;&gt;port&lt;/span&gt; *
 &lt;span class=&quot;n&quot;&gt;forwarders&lt;/span&gt; { &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;B&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;auth&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;nxdomain&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;no&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;listen&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;on&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;v6&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;none&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;listen&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;on&lt;/span&gt; { &lt;span class=&quot;m&quot;&gt;127&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;allow&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;any&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;allow&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;recursion&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;any&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;version&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;none&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;max&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;per&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;per&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;recursive&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10000&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;minimal&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;responses&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;yes&lt;/span&gt; ;
};&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;syslog-1&quot;&gt;SYSLOG&lt;/h3&gt;

&lt;p&gt;On centralise donc l’arrivée des logs &lt;em&gt;nginx&lt;/em&gt; via &lt;em&gt;syslog-ng&lt;/em&gt;. Pour cela, on édite simplement le fichier &lt;em&gt;/etc/syslog-ng/syslog-ng.conf&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;source&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;s_net&lt;/span&gt; {
 &lt;span class=&quot;n&quot;&gt;udp&lt;/span&gt;(&lt;span class=&quot;n&quot;&gt;ip&lt;/span&gt;(&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;) &lt;span class=&quot;n&quot;&gt;port&lt;/span&gt;(&lt;span class=&quot;m&quot;&gt;514&lt;/span&gt;));
 &lt;span class=&quot;n&quot;&gt;tcp&lt;/span&gt;(&lt;span class=&quot;n&quot;&gt;ip&lt;/span&gt;(&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;) &lt;span class=&quot;n&quot;&gt;port&lt;/span&gt;(&lt;span class=&quot;m&quot;&gt;514&lt;/span&gt;) &lt;span class=&quot;n&quot;&gt;max&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;connections&lt;/span&gt;(&lt;span class=&quot;m&quot;&gt;512&lt;/span&gt;));
};
&lt;span class=&quot;n&quot;&gt;destination&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;d_nginx&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;program&lt;/span&gt;(&lt;span class=&quot;s2&quot;&gt;&quot;/usr/bin/jdresolve -a - | /usr/bin/php /opt/cdn/bin/dispatch.php&quot;&lt;/span&gt;); };
&lt;span class=&quot;n&quot;&gt;log&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;source&lt;/span&gt;(&lt;span class=&quot;n&quot;&gt;s_net&lt;/span&gt;); &lt;span class=&quot;n&quot;&gt;destination&lt;/span&gt;(&lt;span class=&quot;n&quot;&gt;d_nginx&lt;/span&gt;); };&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;jdresolve est une application java permettant la résolution DNS à la volée. On le fait à ce moment plutôt que sur le &lt;em&gt;nginx&lt;/em&gt; pour éviter de rallonger la durée de traitement de la requête HTTP. Idem, il est fait avant le calcul des statistiques pour ne pas rallonger le traitement. En effet, &lt;em&gt;awstats&lt;/em&gt; est une véritable limace quand il s’agit de résoudre la partie DNS. Le script dispatch.php permet de dispatcher la ligne dans un fichier spécifique à son &lt;em&gt;vhost&lt;/em&gt;.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-php&quot; data-lang=&quot;php&quot;&gt;&lt;span class=&quot;k&quot;&gt;foreach&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;explode&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;file_get_contents&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;php://stdin&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$log&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
 &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;empty&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$log&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;continue&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;
 &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;preg_match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;%.*&quot;.* http://([^/]*)/.* .*&quot;.* ([^\s]+).nginx_backend.*&quot;.*&quot; .* &quot;.*&quot;%i&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$log&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;===&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;FALSE&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;die&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;Invalid log format on line &lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$id&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
 &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
 &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;isset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nv&quot;&gt;$dir&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;/mnt/nfs/log/&apos;&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;date&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;Y/m/d&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
  &lt;span class=&quot;o&quot;&gt;@&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;mkdir&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$dir&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;mo&quot;&gt;0777&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;kc&quot;&gt;true&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
  &lt;span class=&quot;nv&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;substr&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;strpos&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;[&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;));&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;file_put_contents&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$dir&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;/&apos;&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;.log&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;FILE_APPEND&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
 &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;isset&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;])&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;sizeof&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]))&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;nb&quot;&gt;file_put_contents&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;/tmp/trash.log&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;$match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;se&quot;&gt;\n&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;FILE_APPEND&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;
 &lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Pensez à modifier le chemin de dépôt pour les logs (en gras).&lt;/p&gt;

&lt;h3 id=&quot;statistiques&quot;&gt;Statistiques&lt;/h3&gt;

&lt;p&gt;La partie des statistiques repose sur &lt;em&gt;awstats&lt;/em&gt;. Un script permet de collecter les informations en base pour chaque &lt;em&gt;vhost&lt;/em&gt; et la génération en dynamique de sa configuration en cas de besoin. Je ne vais pas pouvoir vous fournir le script. Cependant, voici le modèle pour les fichiers de configuration d’&lt;em&gt;awstats&lt;/em&gt;.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;LogFile&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;###LOG###&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;LogType&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;W&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;LogFormat&lt;/span&gt; = &lt;span class=&quot;s2&quot;&gt;&quot;%time1 %extra1 %methodurl %extra2 %extra3 %code %extra4 %extra5 %bytesd %refererquot %host %uaquot&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;LogSeparator&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot; &quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;SiteDomain&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;###VHOST###&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;HostAliases&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;###FQDN###&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;DNSLookup&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;DirData&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;/var/lib/awstats&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;DirCgi&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;/cgi-bin&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;DirIcons&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;/awstats-icon&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;AllowToUpdateStatsFromBrowser&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;AllowFullYearView&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;EnableLockForUpdate&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;DNSStaticCacheFile&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;dnscache.txt&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;DNSLastUpdateCacheFile&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;dnscachelastupdate.txt&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;SkipDNSLookupFor&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;AllowAccessFromWebToAuthenticatedUsersOnly&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;AllowAccessFromWebToFollowingAuthenticatedUsers&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;AllowAccessFromWebToFollowingIPAddresses&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;CreateDirDataIfNotExists&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;BuildHistoryFormat&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;text&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;BuildReportFormat&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;html&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;SaveDatabaseFilesWithPermissionsForEveryone&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;PurgeLogFile&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ArchiveLogRecords&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;KeepBackupOfHistoricFiles&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;DefaultFile&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;index.html&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;SkipHosts&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;REGEX[^X\.X\.A\.] REGEX[^X\.X\.B\.]&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;SkipUserAgents&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;SkipFiles&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;SkipReferrersBlackList&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;OnlyHosts&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;OnlyUserAgents&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;OnlyFiles&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;NotPageList&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ValidHTTPCodes&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;200 206 300 301 302 303 304 305 307&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ValidSMTPCodes&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;1 250&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;AuthenticatedUsersNotCaseSensitive&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;URLNotCaseSensitive&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;URLWithAnchor&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;URLQuerySeparators&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;?;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;URLWithQuery&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;URLWithQueryWithOnlyFollowingParameters&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;URLWithQueryWithoutFollowingParameters&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;URLReferrerWithQuery&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;WarningMessages&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ErrorMessages&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;DebugMessages&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;NbOfLinesForCorruptedLog&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;50&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;WrapperScript&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;DecodeUA&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MiscTrackerUrl&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;/js/awstats_misc_tracker.js&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;LevelForBrowsersDetection&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 0 disables Browsers detection.
&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 2 reduces AWStats speed by 2%
&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# allphones reduces AWStats speed by 5%
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LevelForOSDetection&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 0 disables OS detection.
&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 2 reduces AWStats speed by 3%
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LevelForRefererAnalyze&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 0 disables Origin detection.
&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 2 reduces AWStats speed by 14%
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LevelForRobotsDetection&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 0 disables Robots detection.
&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 2 reduces AWStats speed by 2.5%
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LevelForSearchEnginesDetection&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 0 disables Search engines detection.
&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 2 reduces AWStats speed by 9%
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LevelForKeywordsDetection&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 0 disables Keyphrases/Keywords detection.
&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 2 reduces AWStats speed by 1%
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LevelForFileTypesDetection&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 0 disables File types detection.
&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 2 reduces AWStats speed by 1%
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;LevelForWormsDetection&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 0 disables Worms detection.
&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# 2 reduces AWStats speed by 15%
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;UseFramesWhenCGI&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;DetailedReportsOnNewWindows&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;Expires&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxRowsInHTMLOutput&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1000&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;Lang&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;fr&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;DirLang&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;/usr/share/awstats/lang&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowMenu&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;ShowSummary&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;UVPHB&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowMonthStats&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;UVPHB&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowDaysOfMonthStats&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;VPHB&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowDaysOfWeekStats&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;PHB&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowHoursStats&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;PHB&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowDomainsStats&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;PHB&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowHostsStats&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;PHBL&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowAuthenticatedUsers&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowRobotsStats&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;HBL&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowWormsStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowEMailSenders&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowEMailReceivers&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowSessionsStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowPagesStats&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;PBEX&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowFileTypesStats&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;HB&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowFileSizesStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;ShowOSStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowBrowsersStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowScreenSizeStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowOriginStats&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;PH&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowKeyphrasesStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowKeywordsStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowMiscStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowHTTPErrorsStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowSMTPErrorsStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowClusterStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;AddDataArrayMonthStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;AddDataArrayShowDaysOfMonthStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;AddDataArrayShowDaysOfWeekStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;AddDataArrayShowHoursStats&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;IncludeInternalLinksInOriginSection&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxNbOfDomain&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MinHitDomain&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxNbOfHostsShown&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MinHitHost&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxNbOfLoginShown&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MinHitLogin&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxNbOfRobotShown&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MinHitRobot&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxNbOfPageShown&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MinHitFile&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxNbOfOsShown&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MinHitOs&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxNbOfBrowsersShown&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MinHitBrowser&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxNbOfScreenSizesShown&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MinHitScreenSize&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxNbOfWindowSizesShown&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MinHitWindowSize&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxNbOfRefererShown&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MinHitRefer&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxNbOfKeyphrasesShown&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MinHitKeyphrase&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxNbOfKeywordsShown&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MinHitKeyword&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxNbOfEMailsShown&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;20&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MinHitEMail&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;FirstDayOfWeek&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowFlagLinks&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ShowLinksOnUrl&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;UseHTTPSLinkForUrl&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;MaxLengthOfShownURL&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;64&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;HTMLHeadSection&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;HTMLEndSection&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;BarWidth&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;260&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;BarHeight&lt;/span&gt; = &lt;span class=&quot;m&quot;&gt;90&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;StyleSheet&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;color_Background&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;FFFFFF&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Background color for main page (Default = &quot;FFFFFF&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_TableBGTitle&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;CCCCDD&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Background color for table title (Default = &quot;CCCCDD&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_TableTitle&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;000000&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Table title font color (Default = &quot;000000&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_TableBG&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;CCCCDD&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Background color for table (Default = &quot;CCCCDD&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_TableRowTitle&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;FFFFFF&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Table row title font color (Default = &quot;FFFFFF&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_TableBGRowTitle&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;ECECEC&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Background color for row title (Default = &quot;ECECEC&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_TableBorder&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;ECECEC&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Table border color (Default = &quot;ECECEC&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_text&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;000000&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Color of text (Default = &quot;000000&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_textpercent&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;606060&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Color of text for percent values (Default = &quot;606060&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_titletext&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;000000&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Color of text title within colored Title Rows (Default = &quot;000000&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_weekend&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;EAEAEA&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Color for week-end days (Default = &quot;EAEAEA&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_link&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;0011BB&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Color of HTML links (Default = &quot;0011BB&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_hover&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;605040&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Color of HTML on-mouseover links (Default = &quot;605040&quot;) 
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_u&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;FFAA66&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Background color for number of unique visitors (Default = &quot;FFAA66&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_v&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;F4F090&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Background color for number of visites (Default = &quot;F4F090&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_p&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;4477DD&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Background color for number of pages (Default = &quot;4477DD&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_h&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;66DDEE&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Background color for number of hits (Default = &quot;66DDEE&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_k&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;2EA495&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Background color for number of bytes (Default = &quot;2EA495&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_s&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;8888DD&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Background color for number of search (Default = &quot;8888DD&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_e&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;CEC2E8&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Background color for number of entry pages (Default = &quot;CEC2E8&quot;)
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;color_x&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;C1B2E2&quot;&lt;/span&gt; &lt;span class=&quot;c&quot;&gt;# Background color for number of exit pages (Default = &quot;C1B2E2&quot;)
#LoadPlugin=&quot;hashfiles&quot;
#LoadPlugin=&quot;geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat&quot;
&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ExtraTrackedRowsLimit&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;500&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ExtraSectionName1&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;Hit cache status&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ExtraSectionCodeFilter1&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;ExtraSectionCondition1&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ExtraSectionFirstColumnTitle1&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;Cache Status&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ExtraSectionFirstColumnValues1&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;extra3,(.*)&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ExtraSectionFirstColumnFormat1&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;%s&quot;&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;ExtraSectionStatTypes1&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;H&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;ExtraSectionAddAverageRow1&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;ExtraSectionAddSumRow1&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;MaxNbOfExtra1&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;100&lt;/span&gt; 
&lt;span class=&quot;n&quot;&gt;MinHitExtra1&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Il est intéressant que le script gérant ces statistiques précalcule aussi les pages statiques HTML pour éviter des chargements trop long lors des consultations.&lt;/p&gt;

&lt;h2 id=&quot;installation-dun-serveur-master&quot;&gt;Installation d’un serveur &lt;em&gt;master&lt;/em&gt;&lt;/h2&gt;

&lt;h3 id=&quot;materiel&quot;&gt;Materiel&lt;/h3&gt;

&lt;p&gt;Au niveau matériel, on recycle ce qu’on a. Il n’y a pas besoin de performances réelles sauf pour la base de données donc le choix est libre.&lt;/p&gt;

&lt;h3 id=&quot;packages-1&quot;&gt;Packages&lt;/h3&gt;

&lt;p&gt;On installe les packages principaux :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;aptitude -y install ldirectord ipvsadm bind9 ntp&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Pour la partie backoffice et outils de cron développés en interne, je vous laisse le choix. Je ne peux pas vous fournir mon code pour le moment. Pour autant, une bonne partie de la magie se passe là concernant le déploiement automatique, la customisation par site et le monitoring.&lt;/p&gt;

&lt;h3 id=&quot;dns-4&quot;&gt;DNS&lt;/h3&gt;

&lt;p&gt;Le serveur DNS serveur de forwarders aux autres serveurs DNS. Lui utilisera ceux d’&lt;a href=&quot;http://www.opendns.com/&quot;&gt;OpenDNS&lt;/a&gt; tant qu’à faire. Pour cela, on édite le fichier &lt;em&gt;/etc/bind/named.conf/options&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;options&lt;/span&gt; {
 &lt;span class=&quot;n&quot;&gt;directory&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/var/cache/bind&quot;&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;query&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;source&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;address&lt;/span&gt; * &lt;span class=&quot;n&quot;&gt;port&lt;/span&gt; *;
 &lt;span class=&quot;n&quot;&gt;forwarders&lt;/span&gt; { &lt;span class=&quot;m&quot;&gt;208&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;67&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;222&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;222&lt;/span&gt;; &lt;span class=&quot;m&quot;&gt;208&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;67&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;220&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;220&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;auth&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;nxdomain&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;no&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;listen&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;on&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;v6&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;none&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;listen&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;on&lt;/span&gt; { &lt;span class=&quot;m&quot;&gt;127&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;201&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;allow&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;transfer&lt;/span&gt; { &lt;span class=&quot;m&quot;&gt;127&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;; &lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;/&lt;span class=&quot;m&quot;&gt;8&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;allow&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;any&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;allow&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;recursion&lt;/span&gt; { &lt;span class=&quot;n&quot;&gt;any&lt;/span&gt;; };
 &lt;span class=&quot;n&quot;&gt;version&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;none&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;max&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;per&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;per&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;query&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;recursive&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;clients&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;10000&lt;/span&gt;;
 &lt;span class=&quot;n&quot;&gt;minimal&lt;/span&gt;-&lt;span class=&quot;n&quot;&gt;responses&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;yes&lt;/span&gt; ;
};&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Il servira aussi la zone DNS dédiée au CDN. On préconisera au client (même si l’on perd un peu en performance) de faire des CNAME vers ces enregistrement. Cela évitera d’avoir à le prévenir si l’on fait des changements. Si les changements ne sont pas prévu, que l’on gère les zones clientes en interne, ou que l’on préfère les performances, on se refusera de faire des CNAME.&lt;/p&gt;

&lt;h3 id=&quot;load-balancing&quot;&gt;Load-balancing&lt;/h3&gt;

&lt;p&gt;On édite le fichier &lt;em&gt;/etc/network/interfaces&lt;/em&gt; et on rajoute à l’interface publique (&lt;em&gt;eth0&lt;/em&gt; ici) :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;post-up ifconfig eth0:0 X.X.A.248/32
post-up ifconfig eth0:0 X.X.A.249/32&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On utilise donc ldirector/ipvsadm. Dans &lt;em&gt;/etc/default/ldirectord&lt;/em&gt; on définit le chemin de la configuration :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;CONFIG_FILE&lt;/span&gt;=/&lt;span class=&quot;n&quot;&gt;etc&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;ldirectord&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;conf&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Puis, on modifie le fichier correspondant :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;checktimeout&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;negotiatetimeout&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;2&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;checkinterval&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;autoreload&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;yes&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;logfile&lt;/span&gt;=&lt;span class=&quot;s2&quot;&gt;&quot;l0&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;quiescent&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;yes&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;emailalert&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;support&lt;/span&gt;@&lt;span class=&quot;n&quot;&gt;domaine&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;tld&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;virtual&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;248&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;11&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;12&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;13&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;14&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;15&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;16&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;17&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;18&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;19&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;20&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;21&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;22&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;23&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;24&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;25&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;26&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;27&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;28&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;29&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;service&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;scheduler&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;sed&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;protocol&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;connect&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;persistent&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;5&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;virtual&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;249&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;10&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;11&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;12&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;13&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;14&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;15&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;16&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;17&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;18&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;19&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;20&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;21&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;22&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;23&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;24&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;25&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;26&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;27&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;28&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;real&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;X&lt;/span&gt;.&lt;span class=&quot;n&quot;&gt;A&lt;/span&gt;.&lt;span class=&quot;m&quot;&gt;29&lt;/span&gt;:&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;gate&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;service&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;http&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;scheduler&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;sed&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;protocol&lt;/span&gt;=&lt;span class=&quot;n&quot;&gt;connect&lt;/span&gt;
 &lt;span class=&quot;n&quot;&gt;persistent&lt;/span&gt;=&lt;span class=&quot;m&quot;&gt;5&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Pour information sur cette configuration :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;gate permet le fonctionnement en DSR du load balancing&lt;/li&gt;
  &lt;li&gt;persistent définit la durée du sticky pour la session (ici 5 secondes)&lt;/li&gt;
  &lt;li&gt;autoreload déclenche le rechargement de la configuration à chaque modification du fichier&lt;/li&gt;
  &lt;li&gt;emailalert nous préviendra par email de tout changement d’état dans la VIP&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Plus qu’à lancer relancer l’interface réseau puis le service et voilà la VIP prête.&lt;/p&gt;

&lt;h3 id=&quot;ntp-4&quot;&gt;NTP&lt;/h3&gt;
&lt;p&gt;On veut que tous les serveurs soit synchro niveau temps. Autant avoir un serveur de référence à proximité. On a donc installé le package. Aucune modification de base à faire.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Du vent dans mes molllets : un vent de jeunesse</title>
      <link href="https://francois.aichelbaum.com/2012/09/05/du-vent-dans-mes-molllets-un-vent-de-jeunesse" />
      <updated>2012-09-05T11:11:01+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/09/05/du-vent-dans-mes-molllets-un-vent-de-jeunesse</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/du-vent-dans-mes-mollets-22-08-2012-10-g.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-6836&quot; title=&quot;Du vent dans mes mollets&quot; src=&quot;/assets/du-vent-dans-mes-mollets-22-08-2012-10-g-150x150.jpg&quot; alt=&quot;Du vent dans mes mollets&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Après une publication à succès aux formats livre et BD, Raphaële Moussafir nous offre une version cinéma de son oeuvre &lt;em&gt;Du vent dans mes mollets&lt;/em&gt;. Elle nous y raconte donc les déboires de la jeune Rachel qui, du haut de ses neuf ans, vit bien des aventures après sa rencontre avec Valérie. Transportés dans les années 80 par son récit, nous transporte-t-elle également dans ses émotions ? Chronique d&apos;une enfant des années 70/80.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;La jeunesse et ses soucis&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;L&apos;introduction animée, façon &lt;a href=&quot;http://www.youtube.com/watch?v=i58qcYzFHCs&quot;&gt;Alinéa&lt;/a&gt;, nous raconte la naissance et les très jeunes années de la petite Rachel. On voit donc en accéléré toutes les tristesses qui l&apos;ont traumatisée au point de dormir habillée et avec son cartable sur le dos. Bonne pour un tour chez le psy selon sa mère.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt; [video]http://www.youtube.com/watch?v=ovPGdCoPmzc[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Arrivée à neuf ans, dans une nouvelle classe, elle rencontre donc l&apos;&lt;em&gt;intrépide&lt;/em&gt; Valérie. Fille d&apos;une mère célibataire, celle-ci est prête pour les 400 coups dans lesquels elle embarque Rachel.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/large_603952.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-6848&quot; title=&quot;Du vent dans mes mollets&quot; src=&quot;/assets/large_603952-150x150.jpg&quot; alt=&quot;Du vent dans mes mollets&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/DU-VENT-DANS-MES-MOLLETS_portrait_w858.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-6851&quot; title=&quot;Du vent dans mes mollets&quot; src=&quot;/assets/DU-VENT-DANS-MES-MOLLETS_portrait_w858-150x150.jpg&quot; alt=&quot;Du vent dans mes mollets&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/du-vent-dans-mes-mollets-22-08-2012-19-g.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-6854&quot; title=&quot;Du vent dans mes mollets&quot; src=&quot;/assets/du-vent-dans-mes-mollets-22-08-2012-19-g-150x150.jpg&quot; alt=&quot;Du vent dans mes mollets&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/du_vent_dans_mes_mollets_2.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-6857&quot; title=&quot;Du vent dans mes mollets&quot; src=&quot;/assets/du_vent_dans_mes_mollets_2-150x150.jpg&quot; alt=&quot;Du vent dans mes mollets&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/20148004.jpg-r_640_600-b_1_D6D6D6-f_jpg-q_x-xxyxx.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-6860&quot; title=&quot;Du vent dans mes mollets&quot; src=&quot;/assets/20148004.jpg-r_640_600-b_1_D6D6D6-f_jpg-q_x-xxyxx-150x150.jpg&quot; alt=&quot;Du vent dans mes mollets&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/1748089_7_0a05_une-scenedu-film-francais-du-vent-dans-mes_733b037dd50fb5ee029d02558f8bd48c.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-6863&quot; title=&quot;Du vent dans mes mollets&quot; src=&quot;/assets/1748089_7_0a05_une-scenedu-film-francais-du-vent-dans-mes_733b037dd50fb5ee029d02558f8bd48c-150x150.jpg&quot; alt=&quot;Du vent dans mes mollets&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On se fait donc transporté au début des années 80 (1981, la meilleure :-P) les larmes aux yeux tellement on rigole. C&apos;est dans les petits détails que l&apos;on reconnait les bons artisants dit le père. C&apos;est dans les détails du décors, des scènes et du magnifique jeune d&apos;acteurs (Agnès Jaoui mais aussi les deux jeunes gamines) que l&apos;on admire et reconnaît le travail de qualité. Les cuisines kitch. Les tenues hautes en couleur. Les parents qui se parlent en franglais pour que la jeune tête blonde ne comprenne pas (selon eux).... Un moment quasi inoubliable.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Mais, parce que je suis mauvais en râlerie, voici les (rares) points noirs relevés :&lt;/p&gt;
&lt;ul&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;tellement de participants au film qu&apos;on nous détaille même les employés de la cantine du tournage ou la marque de café pour le ravitaillement ; faut bien une durée minimale au générique&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;tout est fait dans le détail des années 80 sauf ... la signalisation routière trop moderne ; penser aux cyclistes sur la route, c&apos;est plus récent ...&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Tout ceci n&apos;enlève rien à la réussite du film qui mérite qu&apos;on aille prendre sa place. Enfin un bon film français dans les règles de l&apos;art et ca faisait (presque) longtemps qu&apos;on en attendait.&lt;/div&gt;
&lt;p&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/09/VENT-DANS-MES-MOLLETS_vdef1-800x1064.jpg&quot;&gt;&lt;img class=&quot;alignnone size-large wp-image-6839 aligncenter&quot; title=&quot;Du vent dans mes mollets&quot; src=&quot;/assets/VENT-DANS-MES-MOLLETS_vdef1-800x1064-769x1024.jpg&quot; alt=&quot;Du vent dans mes mollets&quot; width=&quot;584&quot; height=&quot;777&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Revue du web du 3 septembre 2012</title>
      <link href="https://francois.aichelbaum.com/2012/09/03/revue-du-web-du-3-septembre-2012" />
      <updated>2012-09-03T16:42:07+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/09/03/revue-du-web-du-3-septembre-2012</id>
      <content type="html">&lt;p&gt;C’est lundi. C’est la pluie. C’est pas rose. C’est la faute à morose. Mais bon, il y a toujours de la musique pour nous ramener un peu de baaume au coeur. Ainsi il ira alors de la revue du web du jour. Au passage, allez faire un tour sur &lt;a href=&quot;/tags/mmc&quot;&gt;cette page&lt;/a&gt; du blog pour écouter (et soutenir) des talents emmergeants.&lt;/p&gt;

&lt;h2 id=&quot;quentin-tarantino-dans-un-mashup-hommage&quot;&gt;Quentin Tarantino dans un mashup hommage&lt;/h2&gt;

&lt;p&gt;La semaine dernière, Kubrick a eu le droit à un hommage en vidéo. Cette fois, c’est au tour du déjanté Quentin Tarantino de passer à la moulinette d’un mashup en règle. Hommage de qualité. via &lt;a href=&quot;http://golem13.fr/le-mashup-des-films-de-quentin-tarantino/&quot;&gt;Golem13&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;h2 id=&quot;le-web-et-ses-mashup&quot;&gt;Le web et ses mashup&lt;/h2&gt;

&lt;p&gt;A croire que c’est la mode de faire des mélanges. Cette fois ci, on nous mélange des bandes sons de films et chansons diverses pour un résultat sans équivoque. Du pur plaisir pour les oreilles. via &lt;a href=&quot;http://golem13.fr/superbe-mashup-de-11-videos/&quot;&gt;Golem13&lt;/a&gt;.&lt;/p&gt;

&lt;iframe width=&quot;640&quot; height=&quot;360&quot; src=&quot;https://player.vimeo.com/video/ithacaaudio/walking-in-your-mind&quot; frameborder=&quot;0&quot; webkitallowfullscreen=&quot;&quot; mozallowfullscreen=&quot;&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;h2 id=&quot;il-nest-pas-bon-découter-la-musique-trop-fort&quot;&gt;Il n’est pas bon d’écouter la musique trop fort&lt;/h2&gt;

&lt;p&gt;Même quand il s’agît du magistral &lt;em&gt;Highway to Hell&lt;/em&gt; d’AC-DC. C’est la dure leçon apprise par cette femme qui a eu la visite régulière de la police : quatre fois en 26h. Bon le titre est magnifique, on se le passe facilement en boucle en montant le son. Il faut croire que ce n’est pas du goût de tous. via &lt;a href=&quot;http://golem13.fr/highway-to-hell-joyce-coffey/&quot;&gt;Golem13&lt;/a&gt; (oui encore !)&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;h2 id=&quot;les-androïdes-jouent-il-de-la-musique-&quot;&gt;Les androïdes jouent-il de la musique ?&lt;/h2&gt;

&lt;p&gt;C’est une question que Philip K. Dick aurait pu se poser. On voit de plus en plus de présentation de robots aux activités diverses. Dans le cas présent, un robot à 4 bras qui se déchaîne sur sa batterie. Ok, c’est programmé. Ok, on y perd l’âme de l’artiste. Mais le résultat est là. Ca ne vaut Franck Beard des ZZ-Top qui se défonce à la batterie du haut de ses 63 ans dans de longs solos mémorables. via &lt;a href=&quot;http://www.journaldugeek.com/2012/09/03/stickboy-robot-batteur-4-bras/&quot;&gt;JdG&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>Revue du web du 31 août 2012</title>
      <link href="https://francois.aichelbaum.com/2012/08/31/revue-du-web-du-31-aout-2012" />
      <updated>2012-08-31T12:19:10+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/31/revue-du-web-du-31-aout-2012</id>
      <content type="html">&lt;p&gt;C’est Trolldi. Une semaine sans billet c’est long alors une bonne revue du web pour se détendre et pour compenser. Bon surf !&lt;/p&gt;

&lt;h2 id=&quot;beer-chase--il-y-a-des-priorités-dans-la-vie&quot;&gt;Beer chase : il y a des priorités dans la vie&lt;/h2&gt;

&lt;p&gt;Et dans le cas présent, les voleurs préfèrent la bière à l’argent. La bière &lt;em&gt;Carlton Draught&lt;/em&gt; s’offre une pub kitchissime avec un bon &lt;em&gt;feeling&lt;/em&gt; des années 80 avec une course poursuite entre la police et des voyous. C’est sûrement de la &lt;em&gt;pisse&lt;/em&gt; comme diraient certains mais c’est vendeur.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;h2 id=&quot;batman-au-pays-des-tigre--dragon&quot;&gt;Batman au pays des Tigre &amp;amp; Dragon&lt;/h2&gt;

&lt;p&gt;Cartoon Network présente régulièrement, au travers du DC Nations, des courts métrages issue de l’univers de DC. Une vidéo qui fait le tour du net est celle du mashup entre Batman (accompagné de Catwoman et Bane) et la Chine médiévale. Un régal.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;h2 id=&quot;le-web-le-cloud-et-les-américains&quot;&gt;Le web, le cloud et les américains&lt;/h2&gt;

&lt;p&gt;On savait les américains légèrement incultes et limités dans leur compréhension du monde mais là je crois qu’il y a une absence totale de capacité d’abstraction. L’information est remontée par le JdG dans &lt;a href=&quot;http://www.journaldugeek.com/2012/08/30/cloud-computing-certains-americains-pensent-a-un-vrai-nuage/&quot;&gt;un article d’hier&lt;/a&gt;. Seuls 16% des américains savent ce qu’est le cloud. Une personne sur deux pensent que la météo influe sur le service. Quand on vous dit que notre métier est du maraboutage.&lt;/p&gt;

&lt;h2 id=&quot;je-vous-mets-un-petit-bout-de-cervelle-avec-ca-&quot;&gt;Je vous mets un petit bout de cervelle avec ca ?&lt;/h2&gt;

&lt;p&gt;Beaucoup foncent au &lt;a href=&quot;http://www.lecamionquifume.com/&quot;&gt;Camion qui fume&lt;/a&gt; en ce moment. Aux US, c’est une pratique très répandu au point qu’il faut avoir de l’imagination pour se démarquer. &lt;a href=&quot;http://golem13.fr/the-gory-gourmet-food-truck/&quot;&gt;The Gory Gourmet&lt;/a&gt; vous proposer donc la version Zombies. Comme une odeur de vache folle. Why not ?&lt;/p&gt;

&lt;h2 id=&quot;kubrick-nest-pas-cubique&quot;&gt;Kubrick n’est pas cubique&lt;/h2&gt;

&lt;p&gt;Bon elle était facile celle-là. Kubrick est un maître du cinéma et de la perspective qu’il utilise à foison dans ses films. Golem13 nous présente un petit mashup de ses films avec la bande son (envoutante et magnifique) de Requiem for a Dream. Petit hommage en soi au maître.&lt;/p&gt;

&lt;iframe width=&quot;640&quot; height=&quot;360&quot; src=&quot;https://player.vimeo.com/video/48425421&quot; frameborder=&quot;0&quot; webkitallowfullscreen=&quot;&quot; mozallowfullscreen=&quot;&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
</content>
    </entry>
  
    <entry>
      <title>Go on : retour de Matthew Perry encore plus speed</title>
      <link href="https://francois.aichelbaum.com/2012/08/25/go-on-retour-de-matthew-perry-encore-plus-speed" />
      <updated>2012-08-25T21:11:33+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/25/go-on-retour-de-matthew-perry-encore-plus-speed</id>
      <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/Go-On-e1344553990948-150x150.jpg&quot; alt=&quot;Go on&quot; /&gt;{.left} Matthew Perry, le Chandler Bing de &lt;a href=&quot;https://www.youtube.com/watch?v=Kj1zBmJE_64&quot;&gt;Friends&lt;/a&gt;, revient dans une nouvelle sitcom après l’échec de &lt;a href=&quot;https://www.youtube.com/watch?v=nCmPPEs6wN4&quot;&gt;Mr Sunshine&lt;/a&gt;, son projet personnel abandonné par ABC. Traits tirés, poids perdus, le comique de service est-il de retour pour le meilleur ou pour le pire ? En tout cas sa dynamique réclame qu’on le suive. &lt;em&gt;Go on&lt;/em&gt; sera diffusée sur NBC à partir de septembre mais son pilote a déjà été diffusé par le network américain.&lt;/p&gt;

&lt;h2 id=&quot;matthew-perry-sous-crack&quot;&gt;Matthew Perry sous crack&lt;/h2&gt;

&lt;p&gt;Autant son projet personnel était dynamique, autant il a été quelque peu mal mené et surtout mal vendu par ABC. Pour autant, il ne s’est pas laissé abattu et a rempilé pour un nouveau projet proposé par Scott Silveri.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;J’ai pu voir le pilote. L’acteur se montre fatigué mais pour autant n’a pas perdu de son &lt;em&gt;speed&lt;/em&gt; et de son décallage. Animateur radio mis au repos par sa direction suite au décès de sa femme, on lui demande de suivre une thérapie. Le groupe d’anonyme qui lui est affecté travaille sur les “changements de vie”. Entre les difficultés d’intégration, la perte d’un proche, les ennuis de santé, les phobies, … chaque personne du groupe à une multitude de problèmes sur lesquels il doit travailler. Tout un programme.&lt;/p&gt;

&lt;p&gt;La thérapiste, aux faux airs de Courteney Cox, a du mal à canaliser l’énergie de Matthew Perry qui ne demande qu’une chose : partager son énergie et maquiller sa propre douleur. Une morale en ressort : il y a toujours pire. Donc, autant regarder vers le haut.
Une série à découvrir en septembre.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/182570_3402590706773_1150134598_n.jpg&quot; title=&quot;&quot; srcset=&quot; /assets/182570_3402590706773_1150134598_n.jpg 400w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Vos enfants 2.0</title>
      <link href="https://francois.aichelbaum.com/2012/08/25/vos-enfants-2-0" />
      <updated>2012-08-25T14:04:24+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/25/vos-enfants-2-0</id>
      <content type="html">&lt;aside class=&quot;sidebar__right sticky&quot;&gt;
&lt;nav class=&quot;toc&quot;&gt;
    &lt;header&gt;&lt;h4 class=&quot;nav__title&quot;&gt;&lt;i class=&quot;fa fa-book&quot;&gt;&lt;/i&gt; What?&lt;/h4&gt;&lt;/header&gt;
&lt;ul class=&quot;toc__menu&quot; id=&quot;markdown-toc&quot;&gt;
  &lt;li&gt;&lt;a href=&quot;#les-enfants-et-les-bonnes-pratiques-à-leur-inculquée&quot; id=&quot;markdown-toc-les-enfants-et-les-bonnes-pratiques-à-leur-inculquée&quot;&gt;Les enfants et les bonnes pratiques à leur inculquée&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#les-enfants-un-ordinateur-et-internet&quot; id=&quot;markdown-toc-les-enfants-un-ordinateur-et-internet&quot;&gt;Les enfants, un ordinateur et internet&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#limiter-le-temps-dutilisation&quot; id=&quot;markdown-toc-limiter-le-temps-dutilisation&quot;&gt;Limiter le temps d’utilisation&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#filtrage-du-web&quot; id=&quot;markdown-toc-filtrage-du-web&quot;&gt;Filtrage du web&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;#petit-cadeau-pour-mon-neveu&quot; id=&quot;markdown-toc-petit-cadeau-pour-mon-neveu&quot;&gt;Petit cadeau pour mon neveu&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

  &lt;/nav&gt;
&lt;/aside&gt;

&lt;p&gt;Je vais faire mon vieux, mais à mon époque, lorsque l’on cherchait des infos, on sortait et finissait à la bibliothèque. Aujourd’hui, c’est de plus en plus rare de le voir. L’information (qu’il faut apprendre à confirmer) est disponible facilement via internet. Les enfants d’aujourd’hui sont connectés de plus en plus jeune. Et lorsque je vois les débordements qu’il y a (pédo-pornographie, facilité d’accès à des contenus sensibles, …) et la dérive qui en découle dans le comportement de nos enfants, j’ai peur. Du coup, vu que l’un de mes neveux (12 ans) a besoin d’un ordinateur, tant qu’à faire, autant le lui préparer, le sécuriser et lui apprendre à s’en servir. Je m’intéresse dans l’article présent à la sécurisation du PC et surtout du surf de cette petite tête blonde. Je suppose que vous lui avez déjà installer le nécessaire pour le loisir et les études.&lt;/p&gt;

&lt;h2 id=&quot;les-enfants-et-les-bonnes-pratiques-à-leur-inculquée&quot;&gt;Les enfants et les bonnes pratiques à leur inculquée&lt;/h2&gt;

&lt;p&gt;Déjà, on ne va pas céder &lt;em&gt;totalement&lt;/em&gt; à la facilité. Totalement, car autant je ne lui mettrais pas un Windows, autant il aura le droit à une Ubuntu 12.04. Par contre, cela n’empêche pas d’y faire un ménage salvateur (liste non exhaustive) :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Thunderbird, Evolution&lt;/li&gt;
  &lt;li&gt;Empathy, Pidgin&lt;/li&gt;
  &lt;li&gt;les accès au bureau à distance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ensuite, on pense à installer, même si on n’est pas &lt;em&gt;trolldi&lt;/em&gt;, un anti-virus. Ce n’est pas le seul ordinateur de la maison, et il risque aussi d’échanger avec l’extérieur (famille, amis…). J’ai choisi pour le coup &lt;em&gt;ClamAV&lt;/em&gt;.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;sudo apt-get install clamav clamtk&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On rajoutera une crontab pour mettre à jour régulièrement la base et pour scanner la machine :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;m&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;18&lt;/span&gt; * * * /&lt;span class=&quot;n&quot;&gt;usr&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;bin&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;freshclam&lt;/span&gt; --&lt;span class=&quot;n&quot;&gt;quiet&lt;/span&gt;
&lt;span class=&quot;m&quot;&gt;10&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;18&lt;/span&gt; * * * /&lt;span class=&quot;n&quot;&gt;us&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;bin&lt;/span&gt;/&lt;span class=&quot;n&quot;&gt;rclamscan&lt;/span&gt; -&lt;span class=&quot;n&quot;&gt;r&lt;/span&gt; /&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Au besoin, je me connecterais pour le faire à la main.
Niveau firewall, j’install ufw pour le moment mais je verrais plus tard pour en faire la configuration selon les besoins, vu qu’il y a déjà un pare-feu dans la maison.
On pensera à se garder un compte d’administration sur la machine et à restreindre les droits d’utilisation de l’enfant en lui interdisant tout ce qui est tâche d’administration. Ca se passe simplement dans &lt;em&gt;Users and groups&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;les-enfants-un-ordinateur-et-internet&quot;&gt;Les enfants, un ordinateur et internet&lt;/h2&gt;

&lt;p&gt;Personnellement, je pense qu’à 12 ans, on ne sait pas ce qui est bon pour nous sur internet et qu’on a besoin d’une supervision compétente. Du coup, &lt;em&gt;exit&lt;/em&gt; les emails pour le moment. Au pire, on lui donnera un compte dont on gardera le mot de passe pour pouvoir surveiller. Idem pour tout ce qui est &lt;em&gt;chat&lt;/em&gt;. De plus, ils viendront bien vite à y passer trop de temps donc autant encore le limiter comme on le fait pour la TV ou les jeux vidéos (si-si, il faut limiter).&lt;/p&gt;

&lt;h2 id=&quot;limiter-le-temps-dutilisation&quot;&gt;Limiter le temps d’utilisation&lt;/h2&gt;

&lt;p&gt;Nanny n’étant plus suivi, je me repporte sur TimeKpr (en me basant sur la doc &lt;a href=&quot;http://doc.ubuntu-fr.org/timekpr&quot;&gt;Ubuntu&lt;/a&gt;). Au moment de l’écriture de ce billet, la version pour Precise n’est toujours pas disponible donc on suit la version pour Oneiric en ajustant.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;sudo add-apt-repository ppa:timekpr-maintainers/ppa
sudo sed -i.bak &apos;s/precise/oneiric/&apos; /etc/apt/sources.list.d/timekpr-maintainers-ppa-precise.list 
sudo rm /etc/apt/sources.list.d/timekpr-maintainers-ppa-precise.list.bak
sudo aptitude update
sudo aptitude install timekpr
&lt;/span&gt;&lt;span class=&quot;gp&quot;&gt;sudo echo &quot;account required pam_time.so&quot; &amp;gt;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; /etc/pam.d/lightdm
&lt;span class=&quot;gp&quot;&gt;sudo sed -i.bak &apos;/^OnlyShowIn=/s|$&lt;/span&gt;|Unity&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt;|&lt;span class=&quot;s1&quot;&gt;&apos; /etc/xdg/autostart/timekpr-client.desktop
&lt;/span&gt;&lt;span class=&quot;go&quot;&gt;sudo rm /etc/xdg/autostart/timekpr-client.desktop.bak&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Ensuite, le lancement se fait simplement :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;soit par le menu &lt;em&gt;System -&amp;gt; Administration -&amp;gt; TimeKpr Control Panel&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;soit sous Unity, simplement en tappant TimeKpr dans la recherche d’application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;L’interface étant assez simple, je ne vais pas rentrer dans le détail. Par contre, il semble que certains bugs soient toujours d’actualité. Toujours selon la doc :&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Irrespect des limites de temps
On modifie le fichier &lt;em&gt;/usr/share/python-support/timekpr/timekpr.py&lt;/em&gt; pour faire deux modifications. On remplace à la ligne 124&lt;/li&gt;
&lt;/ol&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;getcmdoutput&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;users&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;par&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;n&quot;&gt;u&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;getcmdoutput&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;ps -e -o ruser&lt;/span&gt;&lt;span class=&quot;sh&quot;&gt;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On fait de même à la ligne 207 en remplaçant :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;isnotified&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;username&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;par&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;isfile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;conffile&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;and&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;not&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;isnotified&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;username&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;):&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ol&gt;
  &lt;li&gt;Pas d’affichage du temps restant
On modifie le fichier&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;/usr/share/python-support/timekpr/timekpr-client.py&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;
&lt;p&gt;en ajoutant après la ligne 42 :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-python&quot; data-lang=&quot;python&quot;&gt;&lt;span class=&quot;n&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;lastNotified&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;datetime&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;datetime&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;fromtimestamp&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;On a donc installé le strict nécessaire au niveau utilisation et on s’est assuré de limiter l’usage de l’ordinateur. Il est donc maintenant temps de filtrer le grand n’importe quoi qu’est internet.&lt;/p&gt;

&lt;h2 id=&quot;filtrage-du-web&quot;&gt;Filtrage du web&lt;/h2&gt;

&lt;p&gt;On va le faire avec une combinaison Squid/DansGuardian. Pensez à modifier les IP.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;sudo aptitiude install squid dansguardian&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;&lt;em&gt;Squid&lt;/em&gt; ne sera utilisé que via le* localhost* car c’est* DansGuardian* qui sera considéré comme proxy dans les configuration. Pour DansGuardian, il faudra commencer par commenter la ligne UNCONFIGURED dans &lt;em&gt;/etc/dansguardian/dansguardian.conf&lt;/em&gt;. On définit aussi le langage pour les erreurs.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;language&lt;/span&gt; = &lt;span class=&quot;s1&quot;&gt;&apos;french&apos;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Vu qu’on ne veut pas que l’enfant puisse facilement désactiver les paramètres du proxy sur Firefox, on les écrit en dur dans la configuration de Firefox &lt;em&gt;/usr/lib/firefox/firefox.cfg&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;lockPref&lt;/span&gt;(&lt;span class=&quot;s2&quot;&gt;&quot;network.proxy.http&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;10.202.0.1&quot;&lt;/span&gt;);
&lt;span class=&quot;n&quot;&gt;lockPref&lt;/span&gt;(&lt;span class=&quot;s2&quot;&gt;&quot;network.proxy.http_port&quot;&lt;/span&gt;,&lt;span class=&quot;m&quot;&gt;8080&lt;/span&gt;);
&lt;span class=&quot;n&quot;&gt;lockPref&lt;/span&gt;(&lt;span class=&quot;s2&quot;&gt;&quot;network.proxy.type&quot;&lt;/span&gt;,&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;);
&lt;span class=&quot;n&quot;&gt;lockPref&lt;/span&gt;(&lt;span class=&quot;s2&quot;&gt;&quot;network.proxy.no_proxies_on&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;localhost,127.0.0.1&quot;&lt;/span&gt;);
&lt;span class=&quot;n&quot;&gt;lockPref&lt;/span&gt;(&lt;span class=&quot;s2&quot;&gt;&quot;network.proxy.share_proxy_settings&quot;&lt;/span&gt;, &lt;span class=&quot;n&quot;&gt;true&lt;/span&gt;);&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Il faut ensuite activer le vérouillage dans le fichier &lt;em&gt;/etc/firefox/syspref.js&lt;/em&gt; :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-conf&quot; data-lang=&quot;conf&quot;&gt;&lt;span class=&quot;n&quot;&gt;pref&lt;/span&gt;(&lt;span class=&quot;s2&quot;&gt;&quot;general.config.obscure_value&quot;&lt;/span&gt;, &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;);
&lt;span class=&quot;n&quot;&gt;pref&lt;/span&gt;(&lt;span class=&quot;s2&quot;&gt;&quot;general.config.filename&quot;&lt;/span&gt;, &lt;span class=&quot;s2&quot;&gt;&quot;firefox.cfg&quot;&lt;/span&gt;);&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h2 id=&quot;petit-cadeau-pour-mon-neveu&quot;&gt;Petit cadeau pour mon neveu&lt;/h2&gt;

&lt;p&gt;Il est fan des jeux de type RPG et veut s’en faire. Je ne vais pas lui mettre RPG Maker qui est pour Windows seulement, mais par contre un équivalent sous Linux, avec un petit jeu bonus. Ca sera toujours ça en attendant qu’il apprenne à coder.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;go&quot;&gt;wget http://hamsterrepublic.com/ohrrpgce/archive/debian/ohrrpgce_2012.07.31.alectormancy+2-5284_i386.deb
wget http://hamsterrepublic.com/ohrrpgce/archive/debian/vikings-of-midgard_2012.07.31.alectormancy+2-5284_i386.deb 
aptitude install libncurses5\:i386 libsdl-mixer1.2\:i386 libsdl1.2debian\:i386 libx11-6\:i386 libxext6\:i386 libxpm4\:i386 libxrandr2\:i386 libxrender1\:i386
dpkg -i  ohrrpgce*.deb vikings*.deb&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

</content>
    </entry>
  
    <entry>
      <title>Revue du web du 24 août 2012</title>
      <link href="https://francois.aichelbaum.com/2012/08/24/revue-du-web-du-24-aout-2012" />
      <updated>2012-08-24T13:23:20+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/24/revue-du-web-du-24-aout-2012</id>
      <content type="html">&lt;p&gt;C’est vendredi, c’est ravioli … Non c’est pas ça ! C’est ravioli, c’est trolldi … presque ! C’est vendredi, c’est trolldi ! Revue du web pour se faire plaisir.&lt;/p&gt;

&lt;h2 id=&quot;les-jeux-quon-a-joué-mentalement&quot;&gt;Les jeux qu’on a joué mentalement&lt;/h2&gt;

&lt;p&gt;Gamins, que ca soit dans la rue, la cour, le jardin, en voiture, on s’est tous imaginé des histoires ou des jeux auxquels on jouait. &lt;a href=&quot;http://www.journalgraphic.com/2012/08/23/games-we-play-jeux-inconscients-joue/&quot;&gt;Journal du Graphique&lt;/a&gt; nous présente une vidéo de &lt;a href=&quot;https://www.youtube.com/user/followthefoot&quot;&gt;Followthefoot&lt;/a&gt; assez sympa qui les remet en image. Je vous conseille au passage d’explorer sa chaîne Youtube, elle vaut vraiment le détour.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;h2 id=&quot;le-web-redécouvre-les-gif-animés&quot;&gt;Le Web redécouvre les GIF animés&lt;/h2&gt;

&lt;p&gt;Le micro-blogging photo de Tumblr : vous connaissez. Mais certains semblent (re)découvrir les GIF animés et les considèrent comme une révolution. Pourquoi pas. Chacun y va de son train d’images. Même les community manager. Parfois, c’est drôle, comme celui d’&lt;a href=&quot;http://500000fans.tumblr.com/&quot;&gt;Orange&lt;/a&gt;. Chez Orange, c’est trolldi tous les jours.&lt;/p&gt;

&lt;h2 id=&quot;fan-de-modélisme-et-des-avengers-cest-par-ici&quot;&gt;Fan de modélisme et des Avengers, c’est par ici&lt;/h2&gt;

&lt;p&gt;Certains occupent leur vendredi différemment. &lt;a href=&quot;http://www.journaldugeek.com/2012/08/24/heliporteur-s-h-i-e-l-d-aeromodelisme-fan/&quot;&gt;Journal du Geek&lt;/a&gt; nous présente un fan des deux ayant reproduit l’héliporteur du film. Par contre, dans &lt;a href=&quot;https://www.youtube.com/watch?v=11Mide2KXow&quot;&gt;Captain Sky&lt;/a&gt;, il y en avait un paquet à la fin. D’ailleurs à croire qu’il faut être borgne pour commander ces machines.&lt;/p&gt;

&lt;h2 id=&quot;on-se-demandait-comment-le-sol-de-letoile-noire-pouvait-être-aussi-brillant&quot;&gt;On se demandait comment le sol de l’Etoile Noire pouvait être aussi brillant&lt;/h2&gt;

&lt;p&gt;Et bien avec un nettoyage régulier et un petit passage de cape … pardon, de serpillère. Via &lt;a href=&quot;https://twitter.com/JeremyBenmoussa&quot;&gt;@jeremybenmoussa&lt;/a&gt; sur Twitter.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Krung Thep : un Thaïlandais à Belleville</title>
      <link href="https://francois.aichelbaum.com/2012/08/24/krung-thep-un-thailandais-a-belleville" />
      <updated>2012-08-24T10:00:10+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/24/krung-thep-un-thailandais-a-belleville</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/765-krung-thep.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-6644&quot; title=&quot;Krung Thep&quot; src=&quot;/assets/765-krung-thep-150x150.jpg&quot; alt=&quot;Krung Thep&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Bon ok, c&apos;est facile, il y a trois quartiers asiatiques à Paris : rue au Maire, dans le III&lt;sup&gt;e&lt;/sup&gt; arrondissement, le Triangle de Choisy, dans le XIII&lt;sup&gt;e&lt;/sup&gt;, Belleville, à cheval sur le XIX&lt;sup&gt;e&lt;/sup&gt; et le  XX&lt;sup&gt;e&lt;/sup&gt;. Pour autant, la majorité des restaurants proposés sont des Chinois ou des Japonais (en style de nourriture, je parle). Pour le coup, j&apos;ai pu testé un Thaïlandais : &lt;a href=&quot;https://maps.google.fr/maps?q=Krung+Thep&amp;amp;ie=UTF-8&amp;amp;ei=Bi43UMvdPMqQ0AWi1IGwDg&amp;amp;ved=0CAsQ_AUoAg&quot;&gt;Krung Thep&lt;/a&gt;. Dépaysement ? Goût ? Voyagons et découvrons.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Un Thaïlandais mitigé&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;La devanture s&apos;apparente à n&apos;importe quel restaurant asiatique du quartier. Par contre, contrairement aux cantines chinoises de la rue de Belleville, une fois la porte passée, on se retrouve &lt;em&gt;presque&lt;/em&gt; en Thaïlande.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Alors que bien des restaurants Thaïlandais se contente de chaises et tables à l&apos;occidentale, ici, on vous propose une mise à table plus proche de la thaïlandaise. Proche car on ne vous l&apos;impose pas. Alors que l&apos;on devrait s&apos;assoir en tailleur et s&apos;accouder à une table basse, la table est réhaussée et les coussins vous offrent le choix entre une position occidentale ou l&apos;attendu tailleur. Il faudra cependant un minimum de souplesse pour s&apos;installer : on n&apos;y emmènera pas nos &lt;em&gt;vieux&lt;/em&gt;. L&apos;ameublement et la décoration sont là pour vous orienter vers un esprit du pays bien que le batiment et le quartier se rappellent vite à vous. A noter aussi l&apos;intégralité du personnel féminin. Après tout, la thaïlande a une culture matriarcale. Pour autant, le service peut paraître assez froid (étonnant en comparaison au &lt;a href=&quot;http://francois.aichelbaum.com/restaurant-du-tibet-permathang-depaysement-et-chaleur/&quot;&gt;Tibétain&lt;/a&gt;).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le menu à rallonge m&apos;inspire peu ou trop. En effet, trop de choix tue le choix. Mais surtout, trop de choix signifie pas de spécialisation et un à peu près en tout. Et c&apos;est bien là le cas. Après un choix compliqué pour varier les saveurs et tester un maximum de choses, on s&apos;affaire à goûter. Et là, rien d&apos;exceptionnel. C&apos;est bon, mais sans plus.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour avoir testé rapidement par le passé d&apos;autres restaurants Thaïlandais, je peux vous le dire, celui-ci n&apos;a rien d&apos;exceptionnel. Il ne restera pas dans les annales. Mais le cadre et le niveau correct de la nourriture vous offriront une excellente alternative aux cantines chinoises de Belleville si vous êtes dans le quartier.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/krung-thep-belleville-restaurant.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-6647&quot; title=&quot;Krung Thep&quot; src=&quot;/assets/krung-thep-belleville-restaurant-150x150.jpg&quot; alt=&quot;Krung Thep&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/Krung-Thep.jpg&quot;&gt;&lt;img title=&quot;Krung Thep&quot; src=&quot;/assets/Krung-Thep-150x150.jpg&quot; alt=&quot;Krung Thep&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/1102_restaurantkrungthep01_1264933812.jpg&quot;&gt;&lt;img title=&quot;Krung Thep&quot; src=&quot;/assets/1102_restaurantkrungthep01_1264933812-150x150.jpg&quot; alt=&quot;Krung Thep&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/1102_restaurantkrungthep01_1264933812.jpg&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Dupliquer une machine sous Linux en ssh (à la bourrin)</title>
      <link href="https://francois.aichelbaum.com/2012/08/23/dupliquer-une-machine-sous-linux-n-ssh-a-la-bourrin" />
      <updated>2012-08-23T19:48:17+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/23/dupliquer-une-machine-sous-linux-n-ssh-a-la-bourrin</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Pour des besoins divers, j&apos;ai besoin de dupliquer un grand nombre de machines. Dans le cas de ces derniers jours, je dois faire du P2V sur une plateforme d&apos;une 50e de machine. Le P2V, c&apos;est transformer une machine physique en machine virtuelle (pour le coup sur VMWare). La plateforme étant en production et le calendrier définissant une migration s&apos;étalant sur un mois, je duplique tout maintenant, fait la bonne configuration et ferait juste un offset des sites web (scripts PHP, images, bases SQL) au moment de la bascule avec les DNS. Petit décryptage de comment se simplifier la vie. Le but est d&apos;être rapide et efficace et d&apos;avoir peut de boulot à refaire.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;1 - Avant propos&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Selon vos besoins et le nombre de machines certaines étapes peuvent être supprimées. Dans mon cas, on ouvrira un tunnel SSH via une machine qui sert de passerelle pour le transfert.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Dans la suite on nommera :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span style=&quot;color: #3366ff;&quot;&gt;bridge&lt;/span&gt; : la machine qui sert pour le tunnel SSH&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: #3366ff;&quot;&gt;phy1&lt;/span&gt; ... &lt;span style=&quot;color: #3366ff;&quot;&gt;phy9&lt;/span&gt; : les machines physiques 1 à 9&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;color: #3366ff;&quot;&gt;vm1&lt;/span&gt; ... &lt;span style=&quot;color: #3366ff;&quot;&gt;vm9&lt;/span&gt; : les &lt;span style=&quot;color: #3366ff;&quot;&gt;vm1&lt;/span&gt; à &lt;span style=&quot;color: #3366ff;&quot;&gt;vm9&lt;/span&gt; qu&apos;on aura préparé sur notre infra (VMWare, Xen, Proxmox ...) avec les bonnes spécifications matériel  (on gardera une cohérence avec les machines physiques au niveau des numéros dans la suite)&lt;/li&gt;
&lt;li style=&quot;text-align: justify;&quot;&gt;&lt;span style=&quot;color: #3366ff;&quot;&gt;login&lt;/span&gt; : le login qu&apos;on utilise non &lt;em&gt;root&lt;/em&gt; qu&apos;on utilise par défaut sur les serveurs&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On suppose que notre machine perso est sur une &lt;a href=&quot;http://www.debian.org/&quot;&gt;Debian&lt;/a&gt;-like pour install des packages manquant. On suppose également que les configurations serveurs sont homogènes sur le parc de serveurs physiques (sinon rapprenez vos bases).&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;2 - Préparer sur les machines physiques (pré-configuration SSH)&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Vu qu&apos;on a une plateforme existente, on suppose qu&apos;on a les moyens de s&apos;y connecter facilement via une patte réseau de management (clées SSH + sudo par ex).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Sur notre machine on installera le package cssh.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;$ sudo aptitude install clusterssh&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ce package permet de lancer plusieurs sessions SSH via une seule ligne de commande et d&apos;y reproduire les mêmes commandes sur chaque session.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On se génère aussi une clé SSH (type RSA) :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;$ ssh-keygen -t rsa&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On met ensuite la clé &lt;em&gt;.ssh/id_rsa.pub&lt;/em&gt; disponible en HTTP pour la plateforme physique (et pas pour la Terre entière !). Pensez à la supprimer après la duplication.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On se connecte alors à chaque machine et on y exécute les commandes suivantes.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;$ cssh &lt;span style=&quot;color: #3366ff;&quot;&gt;phy1 phy2 phy2&lt;/span&gt; ...  &lt;span style=&quot;color: #3366ff;&quot;&gt;phy9&lt;/span&gt;
$ sudo su -&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On aura besoin de l&apos;accès root pour le transfert, donc on se l&apos;autorise temporairement en SSH.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;# mkdir -p .ssh
# wget http://mon-serveur-perso/macle.pub -O - &amp;gt;&amp;gt; .ssh/authorized_keys&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ne cherchez ma clé publique, elle n&apos;est pas sur le net.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Choisissez ensuite votre éditer favori (&lt;em&gt;vim&lt;/em&gt;, &lt;em&gt;nano&lt;/em&gt;, &lt;em&gt;ed&lt;/em&gt;...) pour éditer le fichier &lt;em&gt;/etc/ssh/sshd_config&lt;/em&gt; :&lt;/p&gt;
&lt;pre&gt;&lt;span style=&quot;background-color: #ffcc99; color: #000000;&quot;&gt;&lt;strong&gt;- &lt;/strong&gt;PermitRootLogin no&lt;/span&gt;
&lt;span style=&quot;background-color: #ccffcc; color: #000000;&quot;&gt;&lt;strong&gt;+&lt;/strong&gt; PermitRootLogin yes&lt;/span&gt;
&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ccffcc;&quot;&gt;&lt;strong&gt;+&lt;/strong&gt; AllowUsers root@&lt;span style=&quot;color: #3366ff;&quot;&gt;bridge&lt;/span&gt; &lt;span style=&quot;color: #3366ff;&quot;&gt;login&lt;/span&gt;@* &lt;/span&gt;&lt;span style=&quot;background-color: #ffcc99;&quot;&gt;&lt;strong&gt;-&lt;/strong&gt; RSAAuthentication no&lt;/span&gt;&lt;/span&gt;
&lt;span style=&quot;background-color: #ffcc99; color: #000000;&quot;&gt;&lt;strong&gt;-&lt;/strong&gt; PubkeyAuthentication no&lt;/span&gt;
&lt;span style=&quot;background-color: #ffcc99; color: #000000;&quot;&gt;&lt;strong&gt;-&lt;/strong&gt; #AuthorizedKeysFile %h/.ssh/authorized_keys&lt;/span&gt;
&lt;span style=&quot;background-color: #ccffcc; color: #000000;&quot;&gt;&lt;strong&gt;+&lt;/strong&gt; RSAAuthentication yes&lt;/span&gt;
&lt;span style=&quot;background-color: #ccffcc; color: #000000;&quot;&gt;&lt;strong&gt;+&lt;/strong&gt; PubkeyAuthentication yes&lt;/span&gt;
&lt;span style=&quot;background-color: #ccffcc; color: #000000;&quot;&gt;&lt;strong&gt;+&lt;/strong&gt; AuthorizedKeysFile %h/.ssh/authorized_keys &lt;/span&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Si vos équipes de dev se connectent aussi en SSH, pensez à les rajouter dans les &lt;em&gt;AllowUsers&lt;/em&gt;. On peut alors relancer le service &lt;em&gt;sshd&lt;/em&gt; :&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;# /etc/init.d/ssh restart&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On pense à s&apos;assurer que le package rsync est installé.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;# aptitude install rsync&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On prendra le temps d&apos;analyser la volumétrie des dossiers pour ne pas copier ce qui n&apos;est pas vraiment nécessaire. Donc mon cas, je cherche à ne pas trop me casser la tête, donc je ne transfert pas ce qui est de type backup et aussi les montages NFS (que j&apos;ai armonisés en les montant en sous-dossiers de &lt;em&gt;/mnt/nfs&lt;/em&gt;).&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On peut alors se délogguer de ces machines.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;3 - Lancer la synchro en rsync via un tunnel SSH&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Afin d&apos;éviter de trop saturer les liens réseaux (vu que l&apos;ancienne plateforme physique reste en production le temps du transfert), on évitera de faire trop de duplication en simultané.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On démarre donc la &lt;span style=&quot;color: #3366ff;&quot;&gt;vm1&lt;/span&gt;, qui remplacera &lt;span style=&quot;color: #3366ff;&quot;&gt;phy1&lt;/span&gt; et que l&apos;on aura préalablement bien provisionné. La machine sera démarrée sur un liveCD (personnellement, je démarre sur une ISO &lt;a href=&quot;http://www.gentoo.org/&quot;&gt;Gentoo&lt;/a&gt;). Une fois l&apos;OS disponible, on se lance un terminal si l&apos;on est sur l&apos;interface graphique. Ensuite, tout se fera de la même manière, en ligne de commande. Je suppose que vous connaissez la configuration IP qui va bien pour &lt;span style=&quot;color: #3366ff;&quot;&gt;vm1&lt;/span&gt;.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;$ sudo ifconfig eth0 &lt;em&gt;IPVM1/CIDR&lt;/em&gt;
$ sudo route add default gw &lt;em&gt;IPGW&lt;/em&gt;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On partitionne le disque comme il faut. Là encore j&apos;ai une préférence pour le vieillissant &lt;em&gt;cfdisk&lt;/em&gt;. Ensuite formatage des partitions. Puis montage. On supposera que l&apos;on a fait très basique avec juste un&lt;em&gt; /&lt;/em&gt; accompagné d&apos;un &lt;em&gt;/boot&lt;/em&gt; et d&apos;un &lt;em&gt;swap&lt;/em&gt; pour le partitionnement du disque &lt;em&gt;/dev/sda&lt;/em&gt; (&lt;span style=&quot;text-decoration: underline;&quot;&gt;&lt;strong&gt;ADAPTEZ !&lt;/strong&gt;&lt;/span&gt;).&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;$ sudo mount /dev/sda3 /mnt/gentoo
$ sudo mkdir /mnt/gentoo/boot 
$ sudo mount /dev/sda1 /mnt/gentoo/boot
$ mkdir .ssh
$ echo &quot;Host &lt;span style=&quot;color: #3366ff;&quot;&gt;phy1&lt;/span&gt;&quot; &amp;gt;&amp;gt; .ssh/config
$ echo &quot; ProxyCommand nohup ssh &lt;span style=&quot;color: #3366ff;&quot;&gt;bridge&lt;/span&gt; nc -w1 %h %p&quot; &amp;gt;&amp;gt; .ssh/config
$ wget http://mon-serveur-perso/macle.priv -O .ssh/id_rsa&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Encore une fois, inutile de chercher ma clé privée ...&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;On peut enfin s&apos;occuper du transfert. Certains dossiers sont donc à éviter. A vous d&apos;en rajouter.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;$ sudo rsync -av --progress root@&lt;span style=&quot;color: #3366ff;&quot;&gt;phy1&lt;/span&gt;:/* /mnt/gentoo/ --exclude=&quot;/dev/*&quot; --exclude=&quot;/sys/*&quot; --exclude=&quot;/proc/*&quot; --exclude=&quot;/mnt/nfs/*/*&quot;&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Maintenant que c&apos;est fini, occupons-nous de la configuration finale.&lt;/p&gt;
&lt;pre style=&quot;text-align: justify;&quot;&gt;$ sudo mount -t proc none /mnt/gentoo/proc
$ sudo mount -t sysfs none /mnt/gentoo/sys
$ sudo cp -a /dev/* /mnt/gentoo/dev
$ sudo mount -o bind /dev /mnt/gentoo/dev
$ sudo chroot /mnt/gentoo /bin/bash&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Vu qu&apos;on a supposé être sur une Debian, on modifiera les fichiers suivant comme il va bien :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;/etc/fstab&lt;/li&gt;
&lt;li&gt;/etc/hosts&lt;/li&gt;
&lt;li&gt;/etc/networks&lt;/li&gt;
&lt;li&gt;/etc/network/interfaces&lt;/li&gt;
&lt;li&gt;/etc/ssh/sshd_config (pour supprimer les modifications faites au point 2)&lt;/li&gt;
&lt;li&gt;/etc/udev/rules.d/70-persistent-net.rules ou z25-persistent-net.rules (ou du genre, selon la version, qui est à vider de son contenu)&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Je vous laisse adapter aux applications installées sur la machine. De la même manière, on purge la clé SSH rajoutée pour le transfert. Ensuite il faut mettre à jour &lt;em&gt;grub&lt;/em&gt;.&lt;/p&gt;
&lt;pre&gt;# update-grub
# /usr/sbin/grub-install /dev/sda&lt;/pre&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Sur certaines vieilles Debian, il m&apos;est arrivé de devoir modifier le fichier &lt;em&gt;/boot/grub/menu.lst&lt;/em&gt; et &lt;em&gt;/etc/mtab&lt;/em&gt; à la main avant de lancer &lt;em&gt;grub-install&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Une fois fini, il vous suffit de redémarrer la VM sans l&apos;ISO de Gentoo et voilà!&lt;/p&gt;
&lt;p&gt;A reproduire pour chaque migration P2V.&lt;/p&gt;
&lt;h2&gt;4 - Nettoyage&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Une fois les machines dupliquées (ou à chaque), on pense à faire un rollback des modifications du point 2 en supprimant la clé SSH et en remodifiant la configuration de SSH.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Revue du web du 23 août 2012</title>
      <link href="https://francois.aichelbaum.com/2012/08/23/revue-du-web-du-23-aout-2012" />
      <updated>2012-08-23T14:58:47+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/23/revue-du-web-du-23-aout-2012</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Il fait beau. Les oiseaux chantent. Les navets sont au cinéma. L&apos;estomac se creuse. Les méninges se réveilles sur le web. Petite revue du jour ...&lt;/p&gt;
&lt;p&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h2&gt;Jack Bauer se recycle dans la patisserie&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;La vidéo a fait le tour du web hier et j&apos;ai pu en profiter au cinéma pendant les bandes annonces aussi. Jack Bauer veut faire de la patisserie et avoir une boutique en ligne. Donc il se trouve un geek pour le faire mais surtout, le nouvel &lt;em&gt;ultrabook&lt;/em&gt; Acer.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=5zemXwxg8Og[/video]&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Le web montre le meilleur ... de nos photographes&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Il n&apos;est pas question de Mme Michu et de ses photos ou de mon blog et mes ridicules clichés de promenades mais simplement d&apos;une collecte de photos pro ... bonnes pour la poubelle. Certains photographes devraient se demander pourquoi il y a des écoles de photographies. &lt;a href=&quot;http://youarenotaphotographer.com/&quot;&gt;Vous n&apos;êtes pas un photographe&lt;/a&gt;.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Un webdesigner propose son CV façon Zelda&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Alors que certains ne savent toujours pas rédiger un simple CV sans faute. Alors que d&apos;autres préfère remplacer le papier par la chanson. Alors que certains tentent le CV vidéo. Daniel Sternlicht propose &lt;a href=&quot;http://danielsternlicht.com/&quot;&gt;son CV&lt;/a&gt; en un jeu HTML aux graphismes qui ne sont pas sans rappeler les vieux Zelda. Ca s&apos;appelle &quot;savoir se vendre&quot;.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Quand des femmes défendent Assange&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ca se passe dans les colonnes web (papiers aussi ?) du Guardian. Katrin Alexsson et Lisa Longstaff dénonce une machination politico-judiciaire. Alors qu&apos;elles se revendique Femmes (logique) et contre le viol (re-logique), elles rappellent les nombreux non-respects de procédure dans l&apos;affaire, le changement de dénomination du dossier, les manipulations médiatiques. Elles mettent également en exergue que les médias majeux s&apos;intéresse à Assange comme s&apos;il avait été déclaré coupable. De même, elles opposent le comportement des autorités anglaises contre Assange, à leur comportement contre Pinochet à l&apos;époque. On rajoute ceci aux déclarations du jour d&apos;un des avocats d&apos;Assange, le dossier est loin d&apos;être fini. Merci mesdames pour &lt;a href=&quot;http://www.guardian.co.uk/commentisfree/2012/aug/23/women-against-rape-julian-assange&quot;&gt;votre article&lt;/a&gt;.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>The expendables 2 ou une indigestion bouchère d’action</title>
      <link href="https://francois.aichelbaum.com/2012/08/23/the-expendables-2-ou-une-indigestion-bouchere-daction" />
      <updated>2012-08-23T10:21:26+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/23/the-expendables-2-ou-une-indigestion-bouchere-daction</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/Video-The-Expendables-2.jpg&quot;&gt;&lt;img class=&quot;alignleft&quot; title=&quot;The Expendables 2 - Icone&quot; src=&quot;/assets/Video-The-Expendables-2-150x150.jpg&quot; alt=&quot;The Expendables 2&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Le premier film avait été un plaisir : réunir un wagon de stars des films d&apos;actions des 30 dernières années sur un seul plateau. Scénario et réalisation pour &lt;em&gt;Sly&lt;/em&gt;, qui n&apos;est plus un débutant. Le film se présentait bien malgré un accueil mitigé à l&apos;époque. Selon les codes des nanards d&apos;actions, il avait cependant peu de points faibles.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Aujourd&apos;hui, &lt;em&gt;XP2012&lt;/em&gt; (comme écrit sur l&apos;avion de Sly), change de réal et de scénariste. Il présente de nouvelles têtes. Il nous fait des promesses. C&apos;était hier sa sortie officielle. C&apos;est ce matin que je me fais un maximum d&apos;ennemis, sans &lt;em&gt;spoiler&lt;/em&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h2&gt;De l&apos;action nerveuse ... même derrière la caméra&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Bon c&apos;est tout excité que je fais mon téméraire pour me taper un block-buster au ciné le jour de sa sortie. Après tout, c&apos;est un film sous testostérone donc autant faire ressortir la mienne.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=7rkdTcQLwZ4[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Sly avait été très fédérateur pour le premier opus. D&apos;ailleurs, on ressentait un certain plaisir pour ses collègues de jouer devant sa caméra. On s&apos;étonne alors qu&apos;il ait laissé sa place de réal et de scénariste à &lt;a href=&quot;http://fr.wikipedia.org/wiki/Simon_West&quot;&gt;Simon West&lt;/a&gt;. Simon West n&apos;est pas un inconnu de l&apos;action pour autant. Au cinéma, il nous a déjà réalisé &lt;a href=&quot;http://www.youtube.com/watch?v=fWq-S1_1vnc&quot;&gt;les Ailes de l&apos;Enfer&lt;/a&gt; (plutôt bon), &lt;a href=&quot;http://www.youtube.com/watch?v=TbJbk0H33IU&quot;&gt;le déshonneur d&apos;Elisabeth Campbell&lt;/a&gt; (très mauvais) et &lt;a href=&quot;http://www.youtube.com/watch?v=cnNBqNb3taw&quot;&gt;Lara Croft&lt;/a&gt; (plutôt mauvais). Côté série, il s&apos;est attaqué aux pilotes de &lt;a href=&quot;http://www.youtube.com/watch?v=k3K-y-I0yz8&quot;&gt;Human Target&lt;/a&gt; et &lt;a href=&quot;http://www.youtube.com/watch?v=PajqY0VgYiU&quot;&gt;The Cape&lt;/a&gt;, tous deux motivant les spectateurs. A croire que le cinéma n&apos;est pas sa tasse de thé. Aujourd&apos;hui, il désire offrir une suite à The Expendables, suite justement &lt;em&gt;expendable&lt;/em&gt; (sacrifiable) car pas indispensable.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/Premiere-seance-du-22-aout-Expendables-2-ecrase-ses-concurrents_portrait_w5321.jpg&quot;&gt;&lt;img title=&quot;Sly + Norris&quot; src=&quot;/assets/Premiere-seance-du-22-aout-Expendables-2-ecrase-ses-concurrents_portrait_w5321-150x150.jpg&quot; alt=&quot;The Expendables 2&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/no_flash.jpg&quot;&gt;&lt;img title=&quot;Site Promo&quot; src=&quot;/assets/no_flash-150x150.jpg&quot; alt=&quot;The Expendables 2&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/jean-claude-van-damme-the-expendables-2.jpg&quot;&gt;&lt;img title=&quot;JCVD&quot; src=&quot;/assets/jean-claude-van-damme-the-expendables-2-150x150.jpg&quot; alt=&quot;The Expendables 2&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/jean-claude-van-damme-the-expendables-2.jpg&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/EXPENDABLES-2-LINEUP.jpg&quot;&gt;&lt;img title=&quot;L&apos;Equipe&quot; src=&quot;/assets/EXPENDABLES-2-LINEUP-150x150.jpg&quot; alt=&quot;The Expendables 2&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/Expendables-2-trailer-3-008.jpg&quot;&gt;&lt;img title=&quot;Vilain et ses méchants&quot; src=&quot;/assets/Expendables-2-trailer-3-008-150x150.jpg&quot; alt=&quot;The Expendables 2&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/expendables-2-photo-501fe42e3059f.jpg&quot;&gt;&lt;img title=&quot;Sly + Schwarzy + Willis&quot; src=&quot;/assets/expendables-2-photo-501fe42e3059f-150x150.jpg&quot; alt=&quot;The Expendables 2&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/expendables-2-making-of.jpg&quot;&gt;&lt;img title=&quot;The Expendables 2&quot; src=&quot;/assets/expendables-2-making-of-150x150.jpg&quot; alt=&quot;The Expendables 2&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/expendables-2-box-office.jpg&quot;&gt;&lt;img title=&quot;The Expendables 2&quot; src=&quot;/assets/expendables-2-box-office-150x150.jpg&quot; alt=&quot;The Expendables 2&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/expendables2-photo-sly-schwarzy.jpg&quot;&gt;&lt;img title=&quot;Schwarzy + Sly à l&apos;hosto&quot; src=&quot;/assets/expendables2-photo-sly-schwarzy-150x150.jpg&quot; alt=&quot;The Expendables 2&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/expendables-2-box-office.jpg&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/expendables2-photo-sly-schwarzy.jpg&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/expendables2-photo-sly-schwarzy.jpg&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Alors oui, à vouloir faire une suite à tout prix, on est obligé de faire de la sur-enchère. Cependant certaines choses manquent ou sont mal faites. L&apos;absence de Mickey Rourke au bar est bien malheureuse. Tout comme les acteurs espérés (un jour ?) : Jackie Chan (indisponible), Nicolas Cage (trop cher), John Travolta (non intéressé), Antonio Banderas (indisponible), Clint Eastwood (?), Steven Segal (?), Wesley Snipes (en prison pour fraude fiscale - libéré en 2013) ... Par contre, d&apos;autre sont présents : Schwarzy (avec une tenue rappelant le premier &lt;a href=&quot;http://www.youtube.com/watch?v=c4Jo8QoOTQ4&quot;&gt;Terminator&lt;/a&gt;), Bruce Willis, Chuck Norris, mais surtout (et malheureusement quelque part), Jean-Claude Van Damme bien trop &lt;em&gt;aware&lt;/em&gt;. Liam Hemsworth représente la très jeune vague d&apos;acteurs de films d&apos;action.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Alors pour ces nouveaux (qui ne sont pas que des caméos), comment s&apos;intègrent-ils ? Pour ce qui est de Willis, rien à dire, il n&apos;a jamais arrêté et a même fait évolué son personnage de simple flic à agent de la CIA (&lt;a href=&quot;http://francois.aichelbaum.com/cest-pas-moi-cest-lui/&quot;&gt;Sans issue&lt;/a&gt; par ex). Egale à lui-même.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Schwarzy avait mis sa carrière d&apos;acteur en stand by. Il n&apos;a jamais eu un jeu parfait surtout avec ses difficultés de prononciation pour ses premiers films. Cependant, il a toujours été convaincant. Là encore, il ne déroge pas à la règle et répond à ce dont on attend de lui.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Chuck Norris est l&apos;archétype de l&apos;acteur qui n&apos;a pas pris la grosse tête alors que tout le monde et surtout tout internet parle de lui. L&apos;auto-dérision lui était déjà &lt;a href=&quot;http://www.youtube.com/watch?v=arKpdxjHamI&quot;&gt;connu&lt;/a&gt; après les &lt;em&gt;Chuck Norris Facts&lt;/em&gt;. Sa prestation continue dans ce sens et l&apos;arrivée du Texas Ranger pour les sauver tous est à savourer. D&apos;ailleurs un des &lt;em&gt;facts&lt;/em&gt; est repris : &quot;Un jour, un cobra royal a mordu &lt;em&gt;Chuck Norris&lt;/em&gt;. Après cinq jours de longue agonie, le cobra est mort&quot;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Liam Hemsworth a le spectre de l&apos;un de ses ainés à combattre (Chris, vu dans Thor et The Avengers entre autres). Et avoir la même trombine et le même regard que son frangin ne va pas l&apos;y aider s&apos;il reste dans les films d&apos;action. Mais bon, il ne joue pas trop mal ... tant que le script (merci West ...) ne le démolie pas : ex-soldat, il dit avoir abandonné l&apos;armée à cause des atrocités de la guerre. C&apos;est sûr que se faire recruter comme boucher dans une équipe de mercernaires, ca sera bien moins violent.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;JCVD. Un cas à part. On ne le présente plus. Par contre, on rigole de son retournement de veste. Il était connu qu&apos;il avait refusé l&apos;invitation pour le premier opus car il n&apos;avait pas envie de perdre contre Jet Li et qu&apos;il ne croyait pas en ce projet. Pour autant, dans une &lt;a href=&quot;http://www.lesinrocks.com/2012/08/22/cinema/jean-claude-van-damme-linterview-fleuve-11288790/&quot;&gt;récente interview&lt;/a&gt;, il annonce que c&apos;est simplement pour des raisons d&apos;emploi du temps. Vu l&apos;avancé de son projet, cette raison est peu valable. Avec cette mauvaise fois, se rajoute un jeu d&apos;acteur en déclin. Il partait pourtant de très bas. Le travail aide ... Ridicile. D&apos;ailleurs, il interprête le vilain de l&apos;histoire, sobrement nommé Vilain. C&apos;est dire.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Au niveau du film en lui-même, que dire ? Dès le début, un goût de déjà-vu se fait sentir. C&apos;est sûr, l&apos;intro n&apos;est pas sans rappeler le dernier &lt;a href=&quot;http://www.youtube.com/watch?v=z93AADd2Dpo&quot;&gt;A-Team&lt;/a&gt;. Et ce sentiment se renforcera à chaque &lt;em&gt;cliché&lt;/em&gt;, à chaque clin d&apos;oeil. En fait, si on veut faire court, là où &lt;em&gt;The Expendables&lt;/em&gt; était un agréable plaisir bourré d&apos;action rénovée, ce second film n&apos;est qu&apos;un immense clin d&apos;oeil proche d&apos;un &lt;a href=&quot;http://fr.wikipedia.org/wiki/Fanfiction&quot;&gt;fanfic&lt;/a&gt;. Les acteurs se balancent leurs répliques cultent (ou se les échangent). Les plans vu dans les autres films s&apos;enchaîne. Par ex, un hélico abattu par Bruce Willis avec une voiture dans &lt;em&gt;Die Hard 4&lt;/em&gt;, se transforme en un hélico abattu par Sylvester Stallone. Les tenues sont là aussi pour rappeler les précédents films : tenue de  &lt;em&gt;Terminator&lt;/em&gt; pour Schwarzy, tenues de&lt;em&gt; Demolition Man&lt;/em&gt; et &lt;em&gt;Rocky&lt;/em&gt; pour Sly par ex.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Tout ceci pourrait tirer le film vers le kitch qui plait presque sans problème si la réalisation suivait. Enormément d&apos;erreurs. Trop d&apos;erreurs. D&apos;ailleurs, inspirés de &lt;a href=&quot;http://www.allocine.fr/video/emissions/faux-raccords/episode/?cmedia=19370188&quot;&gt;cette émission&lt;/a&gt;, les muscles devraient s&apos;occuper de son cas mais surtout du directeur de la photographie. Ca manque de bimbos ! Du coup, on aurait pu espérer que Charisma Carpenter la joue pour compenser. Mais non. Dommage. Et que dire justement du directeur de la photographie : on n&apos;a pas idée de filmer en analogique puis de faire un zoom &quot;de la mort qui tue&quot; en numérique en &lt;em&gt;post-prod&lt;/em&gt;. Ca pique les yeux ! Certains acteurs sont transparents : Jet Li malgré l&apos;intro ou encore Randy Couture. Quel gâchis.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Bref, j&apos;ai passé un bon moment en salle en me grillant les derniers neurones vivants hier soir. On profite des acteurs présents et on se remémore les films précédents. Pour autant, l&apos;arrière goût de déjà-vu/vu-et-revu ne passe pas et laisse une certaine amertume envers Simon West.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/expend2-poster-1.jpg&quot;&gt;&lt;img class=&quot;aligncenter&quot; title=&quot;The Expendables 2&quot; src=&quot;/assets/expend2-poster-1-692x1024.jpg&quot; alt=&quot;The Expendables 2&quot; width=&quot;584&quot; height=&quot;864&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>Revue du web du 22 août 2012</title>
      <link href="https://francois.aichelbaum.com/2012/08/22/revue-du-web-du-22-aout-2012" />
      <updated>2012-08-22T12:40:44+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/22/revue-du-web-du-22-aout-2012</id>
      <content type="html">&lt;p&gt;Comme tous les jours ou presque, petite revue du web. Cette fois, on s’intéresse à notre petite personne en priorité.&lt;/p&gt;

&lt;h2 id=&quot;vieux-pas-si-con&quot;&gt;Vieux (pas si) con&lt;/h2&gt;
&lt;p&gt;Rah les vieux cons qu’ils disaient. Ces ‘jeunz en jean-t-shirt-basket-casquette à l’envers. S’ils savaient. Mais il ne peuvent pas le savoir. Comme ils ne savent pas ce qu’ils feront de leur vie, du fait de leur jeunesse. Après tout, le cerveau n’est pas mature avant 30 ans. Merci le site web de &lt;a href=&quot;http://www.slate.fr/lien/60741/adulte-cerveau-adolescent-maturite&quot;&gt;Slate&lt;/a&gt;. Ca me rappelle du Brassens tiens.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;h2 id=&quot;parmi-les-super-héros--le--cochon-dinde-&quot;&gt;Parmi les super-héros : le … cochon-d’inde !&lt;/h2&gt;

&lt;p&gt;Vous ne connaissez pas le sketch de Bruno Salomon ? Pas grave. Par contre, Slate (oui encore eux ce matin), nous rapporte une &lt;a href=&quot;http://www.slate.fr/lien/60771/super-heros-identification-perception-effets-psychologiques&quot;&gt;étude de psys américains&lt;/a&gt;. Selon cette étude, il est sain (psychologiquement voire physiquement) de s’identifier à des Super-héros. Bon bah je retourne sortir ma panoplie du Punisher et régler leur compte à ces mécréants de l’open-space.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;h2 id=&quot;mars-attacks&quot;&gt;Mars attacks&lt;/h2&gt;

&lt;p&gt;Alors pour ceux qui n’ont pas suivi, un nouveau robot (Curiosity) a été déployé sur Mars. Depuis il nous envoie régulièrement des clichés. Un vrai paparazzi. D’ailleurs, il tient à nous présenter ses amis les martiens. Article fort sympa de chez &lt;a href=&quot;http://www.gizmodo.fr/2012/08/21/ovni-curiosity-photographie-mars.html&quot;&gt;Gizmodo FR&lt;/a&gt;. Préparez-vous à l’invasion !&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;h2 id=&quot;couper-laccès-au-web-peut-vous-coûter-la-vie&quot;&gt;Couper l’accès au web peut vous coûter la vie&lt;/h2&gt;

&lt;p&gt;Petit fait divers rapporté par le &lt;a href=&quot;http://www.journaldugeek.com/2012/08/22/elle-tue-son-oncle-qui-avait-coupe-internet/&quot;&gt;Journal du Geek&lt;/a&gt;. Une timbrée de 19 ans a simplement tué son oncle pour lui avoir couper l’accès au net. Elle était droguée &lt;em&gt;au net&lt;/em&gt;. Quand on voit que les jeunes ne pourraient pas survivre sans être connectés, on se rend compte qu’ils pourraient aussi tuer pour être connectés. SFR l’avait prédit.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>Abraham Lincoln, chasseur de vampires de pourfandeur d&amp;#039;Histoire</title>
      <link href="https://francois.aichelbaum.com/2012/08/22/abraham-lincoln-chasseur-de-vampires-de-pourfandeur-dhistoire" />
      <updated>2012-08-22T11:18:30+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/22/abraham-lincoln-chasseur-de-vampires-de-pourfandeur-dhistoire</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/482px-Abe_Lincoln_young.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-6539&quot; title=&quot;Abraham Lincoln&quot; src=&quot;/assets/482px-Abe_Lincoln_young-150x150.jpg&quot; alt=&quot;Abraham Lincoln&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Il est de ces hommes dont la vie est devenue une légende. &lt;a href=&quot;http://fr.wikipedia.org/wiki/Abraham_Lincoln&quot;&gt;Abraham Lincoln&lt;/a&gt; fait partie de ceux-là. Une vie tellement remplie et importante pour l&apos;évolution d&apos;un pays qu&apos;il a inspiré nombre de mouvements et de sentiments. Nombre d&apos;histoires aussi sont nés de sa légende. Une des ces histoires est la biographie fictive de Seth Grahame-Smith de 2010. Et fictive, elle l&apos;est très largement, surtout lorsqu&apos;elle modifie des faits réels pour justifier de ses idées. Classé en horreur, faut-il frissonner de sa version cinéma ?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Abraham Lincoln aime la hache ...&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;... et l&apos;auteur du bouquin mais surtout &lt;a href=&quot;http://fr.wikipedia.org/wiki/Timur_Bekmambetov&quot;&gt;Timur Bekmambetov&lt;/a&gt; aussi. Ce russe ne vous est peut-être pas inconnu : &lt;a href=&quot;http://www.youtube.com/watch?v=2ySIiB1OBa8&quot;&gt;Night Watch&lt;/a&gt;, &lt;a href=&quot;http://www.youtube.com/watch?v=ZtVD97ss7rU&quot;&gt;Day Watch&lt;/a&gt; (il est où le 3e opus tant attendu ?), et le m****** &lt;a href=&quot;http://www.youtube.com/watch?v=sxEAE-10YTE&quot;&gt;Wanted&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=34x6m-ahGIo[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Alors oui, Smith présente son oeuvre comme une autobiographie fictive. Mais est-ce une raison pour modifier des faits avérés ? Il aurait été plus salutaire de ne pas le faire pour amplifier la possible véracité des faits fictifs contés. Au final, la vie et l&apos;oeuvre de Lincoln sont coupées et modifiées à grands coups de hache. De la vraie bouillie. Quand on sait que Tim Burton est à la production, on se demande s&apos;il n&apos;avait pas un coup dans le pif au moment de signer le contrat.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/JPABRAHAM-articleLarge.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-6545&quot; title=&quot;Will &amp;amp; Abraham&quot; src=&quot;/assets/JPABRAHAM-articleLarge-150x150.jpg&quot; alt=&quot;Will &amp;amp; Abraham&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/abraham-lincoln-vampire-hunter-rufus-sewell-benjamin-walker-erin-wasson.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-6548&quot; title=&quot;Abraham contre Vadoma&quot; src=&quot;/assets/abraham-lincoln-vampire-hunter-rufus-sewell-benjamin-walker-erin-wasson-150x150.jpg&quot; alt=&quot;Abraham contre Vadoma&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/ABRAHAM-LINCOLN-VAMPIRE-HUNTER-NOUVEAU-POSTER-XL.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-6551&quot; title=&quot;Statue d&apos;Abraham&quot; src=&quot;/assets/ABRAHAM-LINCOLN-VAMPIRE-HUNTER-NOUVEAU-POSTER-XL-150x150.jpg&quot; alt=&quot;Statue d&apos;Abraham&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/20120809_abrahamlincoln_cover.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-6554&quot; title=&quot;Abraham Lincoln&quot; src=&quot;/assets/20120809_abrahamlincoln_cover-150x150.jpg&quot; alt=&quot;Abraham Lincoln&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/2012_5_25_AbrahamLincolnVampireHunter1.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-6557&quot; title=&quot;Abraham Lincoln&quot; src=&quot;/assets/2012_5_25_AbrahamLincolnVampireHunter1-150x150.jpg&quot; alt=&quot;Abraham Lincoln&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/482px-Abe_Lincoln_young1.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-6560&quot; title=&quot;Abraham Lincoln&quot; src=&quot;/assets/482px-Abe_Lincoln_young1-150x150.jpg&quot; alt=&quot;Abraham Lincoln&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Je dois avouer que je suis aller voir le film pour une double raison : l&apos;ambiance ressentie sur la bande annonce qui m&apos;interpelait et le grand bordel qui en ressortait. Le film est-il aussi bordélique ? En fait non. Mais cela ne le sauve pas pour autant.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Des films bordéliques, il y en a eu. Et bien souvent, le résultat était bénéfique : &lt;a href=&quot;http://www.youtube.com/watch?v=JY3u7bB7dZk&quot;&gt;Serenity&lt;/a&gt; (et la série &lt;a href=&quot;http://www.youtube.com/watch?v=mG9bSBGLtMc&quot;&gt;Firefly&lt;/a&gt;), &lt;a href=&quot;http://www.youtube.com/watch?v=He_PWsJqsVY&quot;&gt;Iron Sky&lt;/a&gt;, ... Mais là, le bordelique s&apos;amoindrit, le soufflé retombe et le navet s&apos;enfonce.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Faux raccords à foisons, aberrations à répétitions, jeu d&apos;acteurs très en retrait, qualité des effets graphiques qui joue au yo-yo, Histoire trop modifiée... Le film n&apos;a pas grand chose pour plaire. Et c&apos;est ce qui ressort du film. On y reste pour voir comment va évoluer le film, mais connaissant la fin, peu de surprises pour nous réconforter d&apos;avoir attendu.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Une énorme déception et un film à fuire.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/2012_5_25_AbrahamLincolnVampireHunter.jpg&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-6542 aligncenter&quot; title=&quot;Abraham Lincoln, chasseur de vampires&quot; src=&quot;/assets/2012_5_25_AbrahamLincolnVampireHunter-300x230.jpg&quot; alt=&quot;Abraham Lincoln, chasseur de vampires&quot; width=&quot;300&quot; height=&quot;230&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Revue du web du 21 août 2012</title>
      <link href="https://francois.aichelbaum.com/2012/08/21/revue-du-web-du-21-aout-2012" />
      <updated>2012-08-21T11:04:19+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/21/revue-du-web-du-21-aout-2012</id>
      <content type="html">&lt;p&gt;Aujourd’hui la revue du web sera très geek. Pour autant, je vais tenter de titiller vos souvenirs, vos plaisirs et votre curiosité.&lt;/p&gt;

&lt;p&gt;## X-or, le shériff, le shériff de l’espace&lt;/p&gt;

&lt;p&gt;En 5/1000e il se transforme. En 5/1000e, je rédige ce billet … ou presque. Certains se souviendront sûrement de lui ou de ses successeurs. Par contre, je ne vais pas paraphraser l’article du site web &lt;a href=&quot;http://www.serieslive.com/news/x-or-renait-au-cinema/16606/&quot;&gt;Séries Live&lt;/a&gt; et vais vous laisser gratter un peu vos souvenirs et la poussière déposée dessus. Par contre, pour le plaisir, … le générique d’antant.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;## La télécommande universelle façon gamin&lt;/p&gt;

&lt;p&gt;Quand on me parle de télécommande universelle, je pense à deux choses : les télécommandes universelles pour remplacer les 50.000 télécommandes du salon et les montres-télécommandes à l’époque du collège. Là, nous avons le droit à un petit plaisantin qui prend plaisir à utiliser son petit montage dans la rue pour éteindre les TV des bars ou boutiques. Vraiment dans l’esprit des montres de l’époque. Bizarrement, je trouvais ca plus comique à l’époque, vieux con que je suis.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;## Disney, l’open-source et le web&lt;/p&gt;

&lt;p&gt;Quand je vois la news reprise sur le net depuis hier, je pense que Disney vient de se faire un paquet d’ennemi et que ca promet un joli bizutage. En cause, une séquence dans l’une des séries produites et diffusées par Disney Channel où l’on peut entendre un joli “&lt;em&gt;As-tu utilisé du code open source pour gagner du temps et un virus était caché dedans ?&lt;/em&gt;”. Personnellement, je doute que cela soit dû à une mauvaise information du scénariste. Je miserais plus sur un partenaire &lt;em&gt;à la noix&lt;/em&gt; (&lt;em&gt;à la pomme&lt;/em&gt; vu l’ordinateur de la séquence) ayant demandé une petite séquence propagande.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;## Le Lazer Game nouveau est arrivé&lt;/p&gt;

&lt;p&gt;Beaucoup d’entre vous connaissent les Lazer Games, peu importe le nom commercial du produit. Souvent en entrepôt, le jeu part à la conquête de la ville. &lt;a href=&quot;http://www.gizmodo.fr/2012/08/20/lazer-tag-nouveau-arrive.html&quot;&gt;Gizmodo FR&lt;/a&gt; nous présente donc une évolution du produit très intéressante pour les &lt;em&gt;aficionados&lt;/em&gt; du jeu. Ce n’est pas excessif au niveau prix, c’est à la page (&lt;em&gt;version iPhone&lt;/em&gt; seulement pour le moment).&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;## Michael Moore, Oliver Stone et les US&lt;/p&gt;

&lt;p&gt;Michael Moore critique ouvertement les US avec des films-documentaires : &lt;a href=&quot;http://www.youtube.com/watch?v=EUSpszWfu_w&quot;&gt;Bowling for Columbine&lt;/a&gt;, &lt;a href=&quot;http://www.youtube.com/watch?v=2Zf2nCiBJLo&quot;&gt;Fahrenheit 9/11&lt;/a&gt;, &lt;a href=&quot;http://www.youtube.com/watch?v=8BJyyyRYbSk&quot;&gt;SiCKO&lt;/a&gt; … Oliver Stone le fait de manière souvent plus &lt;em&gt;poétique&lt;/em&gt; : &lt;a href=&quot;http://www.youtube.com/watch?v=4_67t6I_beg&quot;&gt;Tueurs nés&lt;/a&gt;, &lt;a href=&quot;http://www.youtube.com/watch?v=EdwjsNmwo7k&quot;&gt;Né un 4 juillet&lt;/a&gt;, &lt;a href=&quot;http://www.youtube.com/watch?v=gKDG9kolAaY&quot;&gt;JFK&lt;/a&gt;, &lt;a href=&quot;http://www.youtube.com/watch?v=dO2LWKpeyI8&quot;&gt;Nixon&lt;/a&gt;, &lt;a href=&quot;http://www.youtube.com/watch?v=weELpc3pYMs&quot;&gt;W&lt;/a&gt; … Aujourd’hui, ils nous offrent un papier commun dans l’édition du NY Times, disponible sur &lt;a href=&quot;http://www.nytimes.com/2012/08/21/opinion/wikileaks-and-the-global-future-of-free-speech.html?_r=2&quot;&gt;son site web&lt;/a&gt;. A lire sans modération.&lt;/p&gt;

&lt;p&gt;## L’Elysee et la sécurité&lt;/p&gt;

&lt;p&gt;Dans certains pays, d’autres seraient morts pour moins que ça. Il est donc question d’un entrepreneur se baladant avec une clé USB non cryptée contenant les plans de l’Elysée. Clé volée directement dans sa voiture. C’est &lt;a href=&quot;http://www.rue89.com/2012/08/21/les-plans-de-lelysee-derobes-dans-une-voiture-234748&quot;&gt;Rue 89&lt;/a&gt; qui le rapporte sur son site web. De quoi lancer un film de série Z.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Total Recall : ma mémoire a le hoquet</title>
      <link href="https://francois.aichelbaum.com/2012/08/17/total-recall-ma-memoire-a-le-hoquet" />
      <updated>2012-08-17T22:58:08+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/17/total-recall-ma-memoire-a-le-hoquet</id>
      <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/total_recall_rect-460x3071-150x150.jpg&quot; alt=&quot;Douglas Quaid - Total Recall&quot; /&gt;{.left} Qui n’a jamais rêvé que le fruit de son imagination soit réel ? Malheureusement, il est dur de réaliser tous nos rêves. Pour autant, pourquoi ne pas s’assurer qu’ils deviennent de vrais souvenirs, gravés dans votre mémoire. C’est le business de &lt;em&gt;Rekall Inc&lt;/em&gt; : “Dites-nous vos rêves, nous les réalisons”.
Inspiré de la courte nouvelle de Philip K. Dick (&lt;a href=&quot;http://fr.wikipedia.org/wiki/Souvenirs_%C3%A0_vendre_(nouvelle)&quot;&gt;We Can Remember It for You Wholesale&lt;/a&gt;), le film de 2012 est surtout un remake de celui de &lt;a href=&quot;https://www.youtube.com/watch?v=WFMLGEHdIjE&quot;&gt;1990&lt;/a&gt; avec Schwarzy. Quelques différences nous offrent un film qui sait se distinguer de son aïeul.&lt;/p&gt;

&lt;h2 id=&quot;une-mémoire-à-déprogrammer&quot;&gt;Une mémoire à déprogrammer&lt;/h2&gt;

&lt;p&gt;Le premier réflexe que l’on a, est de se souvenir de la première version. Cependant, même si l’on se prend à chercher les clins d’oeil et les différences, il est plus agréable d’essayer de découvrir se film comme une nouvelle aventure, indépendante et vierge.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Pourquoi partir dans cette optique ? Simplement parce que la nouvelle de Philip K. Dick ne fait que tracer les lignes initiales de ces deux films (&lt;a href=&quot;http://fr.wikipedia.org/wiki/Total_Recall&quot;&gt;1&lt;/a&gt; et &lt;a href=&quot;http://fr.wikipedia.org/wiki/Total_Recall_:_M%C3%A9moires_programm%C3%A9es&quot;&gt;2&lt;/a&gt;), mais aussi de la série &lt;a href=&quot;http://www.serieslive.com/serie/total-recall-2070/657/&quot;&gt;Total Recall 2070&lt;/a&gt;. En effet, il n’y est question que de Douglas Quaid rêvant d’aller sur Mars sans en avoir les moyens. Il s’intéresse alors à la société Rekall Inc, offrant d’implanter de faux souvenirs dans votre mémoire. Mais le service vient à déparer pour en interférant avec de vrais souvenirs enfouis. Rien de plus.
Dans la version de 1990, on enchaîne sur ce que serait ce souvenir enfoui. L’action majeur se passe sur Mars, planète que notre ami body-buildé Douglas Quaid va sauver. Dans la série de 1999, il s’agit de suivre des enqueteurs dont la plupart des affaires gravitent autour de Rekall. Aujourd’hui, Douglas Quaid est de nouveau parmi nous mais vit sur une Terre divisée entre les riches britanniques et les pauvres ouvriers australiens (oui je schématise).&lt;/p&gt;

&lt;p&gt;Bien accompagné cette fois-ci encore (spéciale dédicace à Jessica Biel pour ma part), Douglas travaille comme ouvrier sur les chaines d’assemblage de soldats-robots. Pauvre, il aspire à plus grand de son côté du globe. Surtout qu’un rêve  récurrent le perturbe, à croire que sa mémoire veut lui dire quelque chose. Une publicité pour Rekall va l’attirer dans l’usine à souvenir. De là, sa mémoire va commencer à se libérer.
Et pour nous, le début d’un film au pas de course, à l’action nerveuse mais pourtant claire. Calé sur la version de 1990 en bien des points et surtout l’enchaînement des séquence, le film se dénote pourtant sur l’univers, plus proche de &lt;a href=&quot;https://www.youtube.com/watch?v=mKylB9f3_Gk&quot;&gt;Blade Runner&lt;/a&gt; que du premier &lt;em&gt;Total Recall&lt;/em&gt;. La partie graphique plus dans le détail mais aussi la bande son plus recherchée marquent là encore des différences avec le précédent. Mais le remake se veut aussi un hommage au travail accompli par le passé et les clins d’oeil se multiplient.
On finit par se faire transporter dans ce film à grandes prétentions dans une aventure sous crack mêlant action dynamique, thème inspirant et jolie plastique. Cependant, les nombreux faux raccords pourraient causer du tord au film si l’on y fait trop attention. Reste qu’il m’avait fait peur à son annonce, mais qu’il a presque su me faire oublier l’espace de deux heures le précédent film. Un bon moment qui aurait pu être exceptionnel avec un travail mieux fini, &lt;em&gt;remake&lt;/em&gt; oblige.&lt;/p&gt;

&lt;p&gt;P.S. : une fille pourrait-elle m’expliquer à quoi cela sert-il de mettre une culotte blanche presque transparente par dessus un string blanc ?&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/totalRecall20121.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/totalRecall20121.jpg 480w, /assets/totalRecall20121.jpg 500w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Rebelle : douche écossaise</title>
      <link href="https://francois.aichelbaum.com/2012/08/17/rebelle-douche-ecossaise" />
      <updated>2012-08-17T16:13:12+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/17/rebelle-douche-ecossaise</id>
      <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/le-rebelle-150x150.jpg&quot; alt=&quot;Le Rebelle&quot; /&gt;{.left} Le Rebelle : &lt;em&gt;il était flic, il faisait du bon travail mais il a commis le crime le plus grave en témoignant contre d’autres flics …&lt;/em&gt; La testostérone à l’état brut sur petit écran. Mais avec un grand coeur, faut pas déconner. Que de souvenir. Donc le film sort au cinéma …. Hmm ? On me souffle dans l’oreillette que je me serais trompé de Rebelle ? Dommage !
Donc, hier j’ai pu voir le dernier Pixar avec deux semaines de retard. Une morale au ton comique pour les enfants (petits et grands). &lt;em&gt;Dé-pixélisation&lt;/em&gt; d’un bon moment en salle obscure.&lt;/p&gt;

&lt;h2 id=&quot;pixar-se-rebelle-en-roux&quot;&gt;Pixar se rebelle en roux&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;http://fr.wikipedia.org/wiki/Pixar_Animation_Studios&quot;&gt;Pixar&lt;/a&gt;, c’est un film d’animation par an en moyenne. Un chef d’oeuvre artistique presque à chaque fois : &lt;a href=&quot;https://www.youtube.com/watch?v=KYz2wyBy3kc&quot;&gt;Toy Story&lt;/a&gt;, &lt;a href=&quot;https://www.youtube.com/watch?v=9jemRQTLFH4&quot;&gt;Monstre &amp;amp; Cie&lt;/a&gt;, &lt;a href=&quot;https://www.youtube.com/watch?v=wYcxGGLkE84&quot;&gt;le Monde de Nemo&lt;/a&gt;,&lt;a href=&quot;https://www.youtube.com/watch?v=wphN9hG0l5w&quot;&gt;les Indestructibles&lt;/a&gt;, &lt;a href=&quot;https://www.youtube.com/watch?v=c3sBBRxDAqk&quot;&gt;Ratatouille&lt;/a&gt;, &lt;a href=&quot;https://www.youtube.com/watch?v=alIq_wG9FNk&quot;&gt;Wall-E&lt;/a&gt;, &lt;a href=&quot;https://www.youtube.com/watch?v=p-TdCD6DBfM&quot;&gt;Là-Haut&lt;/a&gt;. &lt;em&gt;Rebelle&lt;/em&gt; est-il de cette étoffe. Pour les trop pressés, un grand Oui !&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Pour résumer l’histoire, nous suivons donc Merida, princesse héritière du roi d’Ecosse, destinée à se marier et devenir une sage petite princesse avec de bonnes manières. Bah, oui ! Une fille, ça ne rôte pas. Ca ne pète pas. Ca ne fait pas caca. Ca n’a pas besoin de savoir chasser. Sauf que Merida rêve du parfait contraire. Une demande à la sorcière du coin devrait l’y aider … Début des ennuis pour elle et du spectacle pour nous.
J’ai eu l’occasion de voir le film en VO et là, l’accent écossais fait une énorme différence sur le film en français. Cependant, avec des enfants, on fuiera clairement cette version. Mais pour les grands enfants, un plaisir additionnel, surtout à se dire “Mais qu’est-qu’il dit le blondinet ?”
Comme toujours avec les &lt;em&gt;Pixar&lt;/em&gt;, une morale doit nous être livrée. Et pour ne pas déroger à la règle, les crises de fous rire vont nous y aider. Comment résister aux mini roux prêts à tout pour la farce ? Comme résister aux Jeux Ecossais bien moins ridicule que nos chers JO ? Réveillons le rebelle écossais qui dort en nous et allons taquiner du rouquin !
Sur le plan artistique, chaque détail compte. On sentirait presque les vents écossais sur notre visage en humant la bonne mousse fraiche. On pourra s’amuser cependant à chercher les coquilles mais le plaisir est trop présent pour perdre ainsi son temps.
Un voyage en Ecosse qu’on aimerait revivre. En attendant, vais me manger un &lt;em&gt;haggis-burger&lt;/em&gt; …
N.B. : l’hommage pour &lt;a href=&quot;http://www.lefigaro.fr/cinema/2011/08/25/03002-20110825ARTFIG00508-pixar-l-autre-grande-reussite-de-steve-jobs.php&quot;&gt;Steve Jobs&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;P.S. : pour un certain père indigne dont je ne citerais pas le nom, oui j’ai aimé et j’assume !&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/Concours-Rebelle-300x184.jpg&quot; title=&quot;&quot; srcset=&quot; /assets/Concours-Rebelle-300x184.jpg 300w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Revue du web du 17 août 2012</title>
      <link href="https://francois.aichelbaum.com/2012/08/17/revue-du-web-du-17-aout-2012" />
      <updated>2012-08-17T14:50:07+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/17/revue-du-web-du-17-aout-2012</id>
      <content type="html">&lt;p&gt;Allez, c’est vendredi, c’est la journée des trolls pour les geeks mais surtout une veille de WE et il fait chaud. Bref, on se rafraîchit un peu les méninges. Bref, petite revue du web. Très petite vu la journée.&lt;/p&gt;

&lt;h2 id=&quot;gros-muscles-grosses-gaffes&quot;&gt;Gros muscles, grosses gaffes&lt;/h2&gt;

&lt;p&gt;Allociné, outre les infos sur le cinéma, propose quelques web-émissions assez sympa. L’une de mes préférées, c’est “Faux Raccord”. Celle d’aujourd’hui, première de la nouvelle saison est particulièrement risible sur les dialogues. Alors c’est parti pour le trio &lt;a href=&quot;http://www.allocine.fr/video/emissions/faux-raccords/episode/?cmedia=19370188&quot;&gt;Sly-Schwarzy-Willis&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;assange-ou-comment-fuire-langleterre&quot;&gt;Assange ou comment fuire l’Angleterre&lt;/h2&gt;

&lt;p&gt;Il est de ces personnes dont la vie fait parler la presse du monde entier pendant des semaines. C’est le cas de Julian Assange. Pour rappel, le fondateur de &lt;a href=&quot;http://fr.wikipedia.org/wiki/WikiLeaks&quot;&gt;Wikileaks&lt;/a&gt; est convoqué en Suède pour être entendu dans &lt;a href=&quot;http://bugbrother.blog.lemonde.fr/2010/12/08/wikileaks-julian-assange-nest-pas-un-violeur/&quot;&gt;une affaire de viol et d’aggression sexuelle&lt;/a&gt;. Il n’y est pas encore condamné ni même accusé. Cependant, l’Angleterre souhaite l’y renvoyé par tous les moyens. Certains y voir un complot des Etats Unis. Reste que le pays de sa Majesté n’avait pas mis autant de moyen à l’époque d’&lt;a href=&quot;http://en.wikipedia.org/wiki/Murder_of_Yvonne_Fletcher&quot;&gt;un tueur de flic&lt;/a&gt;. Mais bon, en marge des manifestations pro-Assange, certains s’en donnent à coeur joie sur le web et imaginent des &lt;a href=&quot;http://www.numerama.com/magazine/23434-julian-assange-5-tactiques-pour-s-enfuir-de-l-ambassade.html&quot;&gt;sorties du pays possible&lt;/a&gt;. De quoi bien rire.&lt;/p&gt;

&lt;h2 id=&quot;cest-lété-les-cités-sont-de-sortie-pour-la-drague&quot;&gt;C’est l’été, les cités sont de sortie pour la drague&lt;/h2&gt;

&lt;p&gt;Aller, petit plaisir avec un &lt;a href=&quot;http://payetashnek.tumblr.com/&quot;&gt;Tumblr&lt;/a&gt; à savourer. Même si la probabilité que certaines ne soient que pure invention, elles ne restent pas très éloignées de la réalité.&lt;/p&gt;

&lt;h2 id=&quot;roulez-moins-cher-pour-vos-vacances&quot;&gt;Roulez moins cher pour vos vacances&lt;/h2&gt;

&lt;p&gt;Petite astuce pour ceux qui prennent la route pour les vacances (et même les autres). Voici &lt;a href=&quot;http://www.challenges.fr/revue-de-presse/20120817.CHA9661/les-astuces-d-un-ingenieur-nantais-pour-reduire-de-30-sa-facture-aux-peages.html?xtor=RSS-16&quot;&gt;un petit site&lt;/a&gt; avec une carte interactive qui permet de définir le trajet le plus économique au niveau des péages, quite à sortir pour re-rentrer sur l’autoroute. Bonne idée. Très utile surtout vu l’augmentation régulière des tarifs autoroutiers.&lt;/p&gt;

&lt;h2 id=&quot;téléphoner-ou-manger-il-faut-choisir&quot;&gt;Téléphoner ou manger, il faut choisir&lt;/h2&gt;

&lt;p&gt;Dans la série des bons plans qu’il faudra faire venir chez nous, voici l’idée d’un chef de LA. Pour redonner un côté convivial aux tables et &lt;em&gt;déconnecter&lt;/em&gt; ses clients, le chef offre &lt;a href=&quot;http://www.gizmodo.fr/2012/08/17/sms-restaurant.html&quot;&gt;une réduction&lt;/a&gt; sur l’addition de 5% si on n’utilise pas son smartphone. A développer.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Revue du web du 14 août 2012</title>
      <link href="https://francois.aichelbaum.com/2012/08/14/revue-du-web-du-14-aout-2012" />
      <updated>2012-08-14T12:27:06+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/14/revue-du-web-du-14-aout-2012</id>
      <content type="html">&lt;p&gt;Nouvelle révue du web avec du plaisir et de l’image choc. Bon surf !&lt;/p&gt;

&lt;h2 id=&quot;un-holodeck-à-la-maison&quot;&gt;Un holodeck à la maison&lt;/h2&gt;

&lt;p&gt;Petit rappel sur ce qu’est un &lt;a href=&quot;http://fr.wikipedia.org/wiki/Holodeck&quot;&gt;holodeck&lt;/a&gt;. C’est un concept issu de Star Trek qui propose une salle “toute virtuelle”. Un monde y est recré et vous y intéragissez à volonté. C’est le summum de la réalité virtuelle. Bah de petits étudiants californiens en ont monté un. Bon, ok ce n’est pas encore du niveau de &lt;a href=&quot;http://www.youtube.com/watch?v=E11v3qmuKxk&quot;&gt;celui de Star Trek&lt;/a&gt;, mais ca vaut le détour.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;h2 id=&quot;gotye-ses-fans-et-le-web&quot;&gt;Gotye, ses fans et le web&lt;/h2&gt;

&lt;p&gt;Gotye et son &lt;a href=&quot;http://www.youtube.com/watch?v=8UVNT4wvIGY&quot;&gt;Somebody that I used to know&lt;/a&gt; a été repris un paquet de fois sur le web, de manière détournée ou non. Petit signe de reconnaissance, l’artiste publie une vidéo en mixant une bonne partie. Aucune modification aux reprises des fans, juste une compilation des sons. Très agréable et presque zen.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;h2 id=&quot;des-pyramides-englouties--dans-le-désert&quot;&gt;Des pyramides englouties … dans le désert&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/pyr-3-564x540-150x150.jpg&quot; alt=&quot;De nouvelles pyramides mises à jour ?&quot; class=&quot;left&quot; /&gt; Bon cette fois-ci il ne s’agit pas de pyramides englouties dans l’océan. Des &lt;a href=&quot;http://news.yahoo.com/long-lost-egyptian-pyramids-found-google-earth-005252340.html&quot;&gt;photos de Google Earth&lt;/a&gt; auraient mis à jour de &lt;em&gt;nouvelles&lt;/em&gt; dans le désert égyptien. Elles semblent bien vieille, bien erodées.
Il n’y a plus qu’à y envoyer Indy ou Lara sur place pour s’assurer de la chose.&lt;/p&gt;

&lt;h2 id=&quot;le-choc-du-jour--mort-pour-une-photo&quot;&gt;Le choc du jour : mort pour une photo&lt;/h2&gt;

&lt;p&gt;Il y a des morts violentes et absurdes. Et clairement, celle qui fait le tour de &lt;a href=&quot;http://www.leparisien.fr/faits-divers/battu-a-mort-a-cause-d-une-photo-14-08-2012-2124766.php&quot;&gt;la presse&lt;/a&gt; aujourd’hui l’est. Le tord de la victime : avoir apprécié une moto et la toucher pour une prise de photo. Le (présumé) coupable : un agent de sécurité au sang un peu trop chaud. L’arme : les chaussures de sécurité (coquées donc) de l’agent dans la figure de la victime. L’action se passe en deux temps car bon, mettre un homme à terre seul, c’est peu amusant. Donc autant revenir avec ses potes pour l’achever. Mon commentaire ? 1981.&lt;/p&gt;

&lt;h2 id=&quot;cest-de-lart-on-vous-dit-&quot;&gt;C’est de l’art on vous dit !&lt;/h2&gt;

&lt;p&gt;Aussi inutile qu’un frigo sur la banquise. Aussi artistique qu’un monochrome de Whiteman. Voici les &lt;a href=&quot;http://golem13.fr/william-bett-surveillance/&quot;&gt;photos des caméras de surveillances&lt;/a&gt; exposées tels des chefs d’oeuvre. On va oublier le droit à l’image, l’accès à des données de sécurité et surtout que l’artiste n’a rien fait si ce n’est une capture d’une image qu’il ne contrôle pas. Bref, c’est de l’art puisqu’on nous le dit. Point barre.&lt;/p&gt;

&lt;h2 id=&quot;des-bandes-annonces-comme-vous-en-rêviez&quot;&gt;Des bandes annonces comme vous en rêviez&lt;/h2&gt;

&lt;p&gt;Des amateurs. Des jeux vidéos. Des bandes annonces. De futurs films du box office. Il n’en fallait pas plus et le &lt;a href=&quot;http://www.journaldugamer.com/2012/08/13/top-5-meilleures-ba-amateurs/&quot;&gt;Journal du Gamer&lt;/a&gt; nous gratifie d’une petit Top5 qui fait du bien par où ca passe. Après tout, on a eu un florilège d’adaption vidéo ludique (voire ludique) au cinéma. Non je ne parle pas de la bataille navale transformée en &lt;a href=&quot;/la-croisiere-samuse/&quot;&gt;Battleship&lt;/a&gt; en tête de liste.&lt;/p&gt;

&lt;h2 id=&quot;the-expendables-3&quot;&gt;The Expendables 3&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/418851_344755945610456_263059213_n-600x921-150x150.jpg&quot; alt=&quot;The Expendables version jeux vidéos&quot; class=&quot;left&quot; /&gt; Alors que l’épisode 2 sort au cinéma cet été, un graphiste nous offre sa vision des Expendables qui serait au final digne de faire l’affiche d’un 3e opus. On remplace donc les stars du cinéma d’action par les stars du jeu vidéo d’action. Un bon plaisir.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hail to the Kings, Baby!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;what-a-piece-of-chalk&quot;&gt;What a piece of Chalk&lt;/h2&gt;

&lt;p&gt;Petit court métrage présenté par &lt;a href=&quot;http://www.journalgraphic.com/2012/08/12/court-metrage-with-piece-chalk/&quot;&gt;le Journal Graphic&lt;/a&gt;. C’est beau. C’est porteur de plein de choses. Juste à apprécier … et à méditer.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>Valentin : la cuisine familiale de Belleville et de Thaïlande</title>
      <link href="https://francois.aichelbaum.com/2012/08/12/restaurant-valentin" />
      <updated>2012-08-12T14:02:21+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/12/restaurant-valentin</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/9DDDE2C9-C706-49D5-B42B-DB471046E1CF.jpeg&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-5294 alignleft&quot; title=&quot;9DDDE2C9-C706-49D5-B42B-DB471046E1CF.jpeg&quot; src=&quot;/assets/9DDDE2C9-C706-49D5-B42B-DB471046E1CF-150x150.jpeg&quot; alt=&quot;&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Samedi soir, la fatigue de la journée s&apos;est fait sentir. La ballade en forêt m&apos;a ouvert l&apos;appétit. Direction un petit restaurant offrant de la cuisine familiale. Le choix s&apos;est porté sur Valentin, petit restaurant à la devanture sans prétention, en haut de la &lt;a href=&quot;https://maps.google.fr/maps?q=valentin+rue+rebeval&amp;amp;ie=UTF-8&amp;amp;ei=rJYnULb1BITMhAfGhYCoAg&amp;amp;ved=0CFcQ_AUoAg&quot;&gt;rue Rebeval, dans le 19e&lt;/a&gt;.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;!--more--&gt;&lt;/p&gt;
&lt;h2&gt;Valentin ou la cuisine familiale voyage en Thaïlande&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;La carte de Valentin se fait alléchante, mélangeant une cuisine du terroir à de la cuisine aux saveurs Thaïlandaises. La carte est annoncée sur des enveloppes marrons rangées dans des portes dessins. La carte du jour écrite rapidement sur un feuille de carnet. On se croirait presque revenu à l&apos;école. A deux, petit tour du repas choisi.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Entrées : os à moelle ; calamars à la thaïlandaise&lt;/li&gt;
&lt;li&gt;Plats : tomates farcies ; raie au curry doux&lt;/li&gt;
&lt;li&gt;Desserts : tiramisu ; tarte tatin&lt;/li&gt;
&lt;li&gt;Boissons : Saint Géron et bière Organic&lt;/li&gt;
&lt;/ul&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;Que dire : tout est parfait pour de la cuisine familiale. On sent que la patron a voyagé et  apprécié la Thaïlande : il n&apos;a qu&apos;une envie, nous le faire partager au travers de la carte. On déguste l&apos;entrée. L&apos;os à moelle est divin ; les calamars bien frais et assaisonné. La sauce au curry et lait de coco relève parfaitement la raie très bien cuite. Cependant, la préparation aurait pu être parfaitement finie en retirant le cartilage des filets. Pour un néophyte, cela peut être rébarbatif. Heureusement, cela n&apos;enlève rien au goût. Côté tomates farcies, rien a redire, c&apos;est très bon. La fin du repas se marque par deux desserts magnifiques (oui, le tiramisu n&apos;est ni du terroir ni de Thaïlande). Assis à une table collée au bar, on voit les autres desserts se faire dresser et l&apos;eau reste en bouche pour multiplier les goûts.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;On en reste cependant là. L&apos;estomac est bombé. Les papilles en ébullition. La note un peu élevé mais sobre (64€). L&apos;accueil a été très chaleureux avec quelques blagues du patron. L&apos;adresse est notée pour un nouveau rendez-vous.&lt;/div&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[print_gllr id=5291]&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Restaurant du Tibet-Pemathang : dépaysement et chaleur</title>
      <link href="https://francois.aichelbaum.com/2012/08/12/restaurant-du-tibet-permathang-depaysement-et-chaleur" />
      <updated>2012-08-12T13:29:04+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/12/restaurant-du-tibet-permathang-depaysement-et-chaleur</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/pemathangbig.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-5279&quot; title=&quot;Tibet-Permathang&quot; alt=&quot;Tibet-Permathang&quot; src=&quot;/assets/pemathangbig-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Vendredi soir, affamé et d&apos;humeur aventureuse, je me suis retrouvé dans mon vieux V&lt;sup&gt;e&lt;/sup&gt; arrondissement de Paris en direction d&apos;un restaurant Thaïlandais à Maubert-Mutualité que l&apos;on m&apos;avait recommandé. Fermé pour les vacances, je me suis rabattu sur un Tibétain (tout aussi recommandé) un peu plus haut dans la rue. Découverte de la chaleur et des saveurs du &lt;a href=&quot;https://maps.google.fr/maps?ie=UTF-8&amp;amp;q=restaurant+tibetain+paris+5&amp;amp;fb=1&amp;amp;gl=fr&amp;amp;hq=restaurant+tibetain&amp;amp;hnear=0x47e671ef6ff7f46f:0x50b82c368941a90,5e+Arrondissement,+Paris&amp;amp;cid=0,0,2374113226799631725&amp;amp;ei=oY0nUL6mBNCwhAex1IHoBw&amp;amp;ved=0CIIBEK8LMAU&quot;&gt;Tibet-Pemathang&lt;/a&gt;, au 13 rue Montagne Sainte Geneviève, Paris 5&lt;sup&gt;e&lt;/sup&gt;.&lt;!--more--&gt;&lt;/p&gt;
&lt;h2&gt;Au Tibet, société matriarcale ; ici, restaurant féminin&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Premier étonnement culturel : de l&apos;accueil à la cuisine, en passant par le service, tout est accompli par des femmes tibétaines. Un peu d&apos;explication nous fait comprendre que la société tibétaine est une société matriarcale. La hiérarchie est ici reportée. L&apos;accueil se montre alors hyper chaleureux et il est clair que le client est plus que soigné.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Second étonnement culturel : je suis le seul homme présent dans le restaurant pendant toute la soirée. A croire que la clientèle se passe le mot seulement entre femmes et que les hommes sont bannis de cette importation de société matriarcale. Amusant mais malheureux quelque part. Pour autant, j&apos;en profite bien car l&apos;ambiance y est agréable.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;D&apos;ailleurs, tout de l&apos;attention du personnel à la décoration est chaleureux. Sans trop en faire pour nous transporter au Tibet, les quelques photos et la présence du bois apparent suffisent amplement à nous faire voyager et à sentir la chaleur de l&apos;accueil, ancrée dans cette société. Plus qu&apos;à mettre les pieds sous la table, lire le menu et déguster.&lt;/p&gt;
&lt;h2 style=&quot;text-align: justify;&quot;&gt;Voyage au Tibet au travers de la nourriture&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Chaque plat au menu est présenté sous son nom tibétain et accompagné d&apos;une explication en français. C&apos;est limpide et les babines salivent délicieusement. On va faire donc simple, une entrée variée qui reprend chaque entrée (hors soupe) en petite quantité. Suivra un boeuf sauté et épicé. Et pour finir, une coule douce du Tibet. Le tout accompagné d&apos;un Dhara : yaourt mélangé façon milk shake avec du miel. Addition : environ 30€ pour ce menu. Verdict ?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;De manière générale, les produits sont frais et bien préparés. L&apos;entrée est parfaite pour découvrir plusieurs spécialités rapidement. Le plat, très épicés est un régal. Le Dhara est alors parfait pour calmer les épices du plat. D&apos;ailleurs j&apos;en redemande volontiers. Pour ce qui est du dessert, il clôt ce repas. A travers les plats, on ressent les différentes influences des immigrants ayant rejoint le Tibet à travers le temps. Les saveurs tendent aussi bien vers l&apos;Inde que vers la Chine avec des pointes d&apos;épices venant d&apos;ailleurs. Un savoureux mélange qui assure le voyage.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Sans conteste, l&apos;une de mes plus belles aventures culinaires de ces derniers temps. Le prix vaut largement la qualité du repas et le voyage au Tibet ainsi réalisé. On comprend vite la panoplie de stickers du Guide du Routard sur la devanture. A refaire !&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/PT01.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-5282 aligncenter&quot; title=&quot;Tibet-Permathang&quot; alt=&quot;Tibet-Permathang&quot; src=&quot;/assets/PT01-150x150.jpg&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Revue du web du 10 août 2012</title>
      <link href="https://francois.aichelbaum.com/2012/08/10/revue-du-web-du-10-aout-2012" />
      <updated>2012-08-10T14:24:08+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/10/revue-du-web-du-10-aout-2012</id>
      <content type="html">&lt;p&gt;Comme depuis quelques temps, petite revue du web en vidéos, en images et en textes.&lt;/p&gt;

&lt;h2 id=&quot;les-cariboux-soutiennent-leur-équipe-olympique-sur-le-web&quot;&gt;Les cariboux soutiennent leur équipe olympique sur le web&lt;/h2&gt;

&lt;p&gt;Nos cousins de l’autre côté de l’Atlantique soutiennent à fond leur équipe olympique. La société Rona, l’équivalent de notre Leroy Merlin, le montre dans un spot mis sur le web.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;h2 id=&quot;pour-lamour-du-bien-gras&quot;&gt;Pour l’amour du bien gras&lt;/h2&gt;

&lt;p&gt;Un bon burger, il n’y a que ca de vrai. Ca nourrit. Ca remonte le moral. Ca guérit de beaucoup de choses (c’est beau l’utopie non ?). C’est aussi un art. Petite galerie sur &lt;a href=&quot;http://fatandfuriousburger.tumblr.com/&quot;&gt;Tumblr&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;les-nounours-sont-nos-amis&quot;&gt;Les nounours sont nos amis&lt;/h2&gt;

&lt;p&gt;En tout cas, l’ours en peluche se veut signe de paie et de démocratie selon certains suédois qui en ont &lt;a href=&quot;http://www.lemonde.fr/europe/article/2012/08/10/minsk-stockholm-les-nounours-de-la-discorde_1744694_3214.html#xtor=RSS-3208&quot;&gt;parachuté un paquet sur la Biélorussie&lt;/a&gt;. Le Monde dans son édition web nous explique rapidement la violence de l’acte suédois contre la paisible dictature biélorusse.&lt;/p&gt;

&lt;h2 id=&quot;lathétisme-est-dangereux-pour-votre-santé&quot;&gt;L’athétisme est dangereux pour votre santé&lt;/h2&gt;

&lt;p&gt;Le Huffington Post rapporte les dangers de l’athlétisme amateur au travers d’une &lt;a href=&quot;http://www.huffingtonpost.fr/2012/08/08/jo-athletisme-amateur-gif-chutes_n_1763021.html&quot;&gt;série de GIFs animés&lt;/a&gt;. Attention, risque sévère de migraine en perspective.&lt;/p&gt;

&lt;h2 id=&quot;le-cinéma-peut-être-meûgnon&quot;&gt;Le cinéma peut être meûgnon&lt;/h2&gt;

&lt;p&gt;Qu’ils peuvent être chou les bouts-de-choux. Personnages de cinéma &lt;a href=&quot;http://golem13.fr/praia-de-belas-moivies-kids/&quot;&gt;revisités façon garderie&lt;/a&gt;. C’est frais. C’est sur Golem13.&lt;/p&gt;

&lt;h2 id=&quot;ff-est-mort-pas-vive-ff&quot;&gt;FF est mort. Pas vive FF&lt;/h2&gt;

&lt;p&gt;C’est le Journal du Gamer qui publie &lt;a href=&quot;http://www.journaldugamer.com/2012/07/27/pal-81-final-fantasy-est-mort-adieu/&quot;&gt;une critique&lt;/a&gt; sur la décadence du jeu vidéo à la japonaise, license &lt;a href=&quot;http://fr.wikipedia.org/wiki/Final_Fantasy&quot;&gt;Final Fantasy&lt;/a&gt; en tête. Ca fait du bien de lire quelqu’un du même avis. La profondeur des histoires et des univers, sans parler d’un vrai &lt;em&gt;character design&lt;/em&gt; est absent depuis bien trop longtemps au profit de la technique sur ce genre de jeux. Personnellement, oui FF VII me hante et FF XII a achevé la saga en s’orientant dans un gameplay à la MMO alors que FF XI n’aurait jamais dû être. C’était mieux &lt;em&gt;avant&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;faire-du-camping-et-emmener-un-stock-de-bière&quot;&gt;Faire du camping et emmener un stock de bière&lt;/h2&gt;

&lt;p&gt;Quand on fait dans le &lt;em&gt;roots&lt;/em&gt;, on a très peu de place. Pour autant, on n’abandonne pas sa bibine. Gizmodo présente une solution : &lt;a href=&quot;http://www.gizmodo.fr/2012/08/10/biere-en-poudre.html&quot;&gt;la bière en poudre&lt;/a&gt;. A tester mais j’ai peur.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Jusqu&amp;#039;à ce que la fin du monde nous sépare : j&amp;#039;en suis mort</title>
      <link href="https://francois.aichelbaum.com/2012/08/09/jusqua-ce-que-la-fin-du-monde-nous-separe-jen-suis-mort" />
      <updated>2012-08-09T11:15:27+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/09/jusqua-ce-que-la-fin-du-monde-nous-separe-jen-suis-mort</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/geocroiseur_impact.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-4874&quot; title=&quot;Apocalypse&quot; src=&quot;/assets/geocroiseur_impact-150x150.jpg&quot; alt=&quot;Apocalypse&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;2012. La fin du monde approche selon la croyance populaire (non ce ne sont pas les mayas qui l&apos;ont dit). Cependant, un astéroïde nous menace. Bruce Willis veut nous en sauver dans &lt;a href=&quot;http://www.youtube.com/watch?v=73cWfFEKAfE&quot;&gt;Armageddon&lt;/a&gt;. Mais ici, le vaisseau &lt;em&gt;Delivrance&lt;/em&gt; explose en vol et nous voilà définitivement condamnés. Mort clinique d&apos;un spectateur en salle obscure.&lt;!--more--&gt;&lt;/p&gt;
&lt;h2&gt;La mort d&apos;un genre&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Hier sortait donc &lt;em&gt;Jusqu&apos;à ce que la fin du monde nous sépare&lt;/em&gt;. J&apos;y suis allé. J&apos;ai vu. Je n&apos;ai pas vaincu.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=0NPhBOWA2VI[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Les films sur la fin du monde, une grande histoire de non amour avec le cinéma sur les dernières décennies. &lt;em&gt;Le Jour où la Terre s&apos;arrêta&lt;/em&gt; (1951). &lt;em&gt;Le jour d&apos;après&lt;/em&gt; (1983). &lt;em&gt;Deep&lt;/em&gt; &lt;em&gt;Impact&lt;/em&gt; (1997). &lt;em&gt;Armageddon&lt;/em&gt; (1998). &lt;em&gt;Last Night&lt;/em&gt; (1999). &lt;em&gt;La fin des temps&lt;/em&gt; (1999). &lt;em&gt;Fusion&lt;/em&gt; (2001). &lt;em&gt;Le jour d&apos;après&lt;/em&gt; (2004). &lt;em&gt;La guerre des mondes&lt;/em&gt; (2005). &lt;em&gt;Melancholia&lt;/em&gt; (2007). &lt;em&gt;Sunshine&lt;/em&gt; (2007). &lt;em&gt;Le Jour où la Terre s&apos;arrêta&lt;/em&gt; (2008). &lt;em&gt;Phénomènes&lt;/em&gt; (2008). &lt;em&gt;2012&lt;/em&gt; (2009). &lt;em&gt;Prédictions&lt;/em&gt; (2009). Petite liste non exhaustive donc. Mais le genre tourne quelque peu en rond : astéroïde, cataclysme naturel ou extra-terrestres. Peu de changement aux scénarios. La mort d&apos;un genre. Ici on rejoue &lt;em&gt;Armageddon&lt;/em&gt; sous un autre angle.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Cette fois-ci, on la vie façon &lt;a href=&quot;http://www.youtube.com/watch?v=lnSgSe2GzDc&quot;&gt;Eternal sunshine in spotless mind&lt;/a&gt;. Le couple qui s&apos;y forme ne cherche pas désespérément à survivre mais simplement à finir sa vie ensemble. Dodge (&lt;a href=&quot;http://www.imdb.com/name/nm0136797/&quot;&gt;Steve Carell&lt;/a&gt;) a été largué par sa femme (la vraie femme de Steve dans la vie) suite à l&apos;annonce de l&apos;explosion de la navette Delivrance. Penny (&lt;a href=&quot;http://www.imdb.com/name/nm0461136/&quot;&gt;Keira Knightley&lt;/a&gt;) est une jeune fille perdue dans sa vie, hypersomniaque à ses moments perdus et amoureuse d&apos;un loser. Tous deux, voisins depuis quelques années mais pourtant inconnus, vont profiter de la situation pour faire connaissance et tenter de s&apos;entraider à réaliser leur dernier rêve. Revoir ses parents pour elle. Revoir son amour de jeunesse pour lui.&lt;/p&gt;
&lt;h2&gt;La mort du spectateur&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Alors qu&apos;une vraie osmose se sentait entre les héros d&apos;&lt;a href=&quot;http://www.youtube.com/watch?v=lnSgSe2GzDc&quot;&gt;Eternal sunshine in spotless mind&lt;/a&gt;, nos deux tourtereaux en devenir sont ici transparents l&apos;un pour l&apos;autre. Tout comme le jeu d&apos;acteur plat, le film enchaîne les platitudes de situations, les évidences dans les enchaînements. C&apos;est long. Les temps morts s&apos;enchaînent. Petit réconfort, le personnage de Penny aime le bon son et emmène ses vinyls. L&apos;occasion d&apos;avoir au moins une bonne chose dans ce film : de la bonne musique. Insuffisant.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Par deux fois, on nous envoie des électrochocs pour s&apos;assurer que nous ne sommes pas mort dans la salle obscure. Heureusement. Mais encore une fois insuffisant. Quinze personnes ont fuit la salle pour se préserver. Je suis mort sur mon siège.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt; &lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/08/Jusqua-ce-que-la-fin-du-monde-nous-separe-Affiche-France.jpg&quot;&gt;&lt;img class=&quot;alignnone size-medium wp-image-4877&quot; title=&quot;Jusqu&apos;à ce que la fin du monde nous sépare&quot; src=&quot;/assets/Jusqua-ce-que-la-fin-du-monde-nous-separe-Affiche-France-225x300.jpg&quot; alt=&quot;Jusqu&apos;à ce que la fin du monde nous sépare&quot; width=&quot;225&quot; height=&quot;300&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Petite revue du web du 8 août 2012</title>
      <link href="https://francois.aichelbaum.com/2012/08/08/petite-revue-du-web-du-8-aout-2012" />
      <updated>2012-08-08T15:13:16+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/08/petite-revue-du-web-du-8-aout-2012</id>
      <content type="html">&lt;p&gt;Mercredi, jour des enfants, sorties aux cinémas, … Revue du web en attendant l’heure de la sortie des classes !&lt;/p&gt;

&lt;h2 id=&quot;jukebox-humain-dans-la-grosse-pomme&quot;&gt;Jukebox humain dans la Grosse Pomme&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/thehumanjukebox-150x150.jpg&quot; alt=&quot;The Human Jukebox - CDZA&quot; class=&quot;left&quot; /&gt; En ce début d’après midi, le site web des &lt;a href=&quot;http://www.lesinrocks.com/inrocks.tv/un-jukebox-humain-dans-les-rues-de-new-york/&quot;&gt;InRocks&lt;/a&gt; nous propose de (re)découvrir les performances du groupe &lt;a href=&quot;http://www.cdzamusic.com/&quot;&gt;CDZA&lt;/a&gt;. Cette fois, c’est au travers d’un jeu de jukebox vivant dans les rues de New York City que le show se passe et on en redemande volontiers.
Profitez pour aller découvrir leurs autres &lt;em&gt;expériences musicales&lt;/em&gt;, cela vaut vraiment le détour.&lt;/p&gt;

&lt;h2 id=&quot;se-protéger-cest-bien-le-faire-bien-cest-mieux&quot;&gt;Se protéger c’est bien, le faire bien, c’est mieux&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/nginx_logo-150x150.gif&quot; alt=&quot;nginx&quot; class=&quot;left&quot; /&gt; Un peu de technique sur le web. Je viens de tomber sur un article du blog de &lt;a href=&quot;http://korben.info/auteur&quot;&gt;Korben&lt;/a&gt; : &lt;a href=&quot;http://korben.info/nginx-comment-bloquer-les-attaques-les-plus-courantes.html&quot;&gt;comment bloquer les attaques les plus courantes&lt;/a&gt;.
L’article est intéressant. L’idée louable. Mais je ne suis pas fan de Korben pour ses articles techniques et là encore ça se révèle incomplet. L’exercice qui vise à protéger un site perso est très complexe en soi. Le résumer à quelques lignes même pour se &lt;em&gt;protéger des attaques les plus courantes&lt;/em&gt;. La configuration proposée par Korben (repris d’un tutoriel de &lt;a href=&quot;http://www.howtoforge.com/nginx-how-to-block-exploits-sql-injections-file-injections-spam-user-agents-etc&quot;&gt;Howtoforge.com&lt;/a&gt;) est bien trop simpliste et réductrice. Par contre, proposer l’intégration d’un mod-security (&lt;strong&gt;bien configuré !&lt;/strong&gt;) sur un Apache ou dans le cas présent, d’un &lt;a href=&quot;http://code.google.com/p/naxsi/&quot;&gt;naxsi&lt;/a&gt; sur un nginx est bien plus intéressant et bien plus viable à terme. Contrairement à mod-security, naxsi fonctionne sur une liste blanche du “bon comportement du site” qu’on va lui faire apprendre au cours d’une session rapide. Donc oui, pendant les premières minutes/heures (selon l’affluence du site ou ce que l’on veut faire), le site n’est pas encore réellement protéger. Mais il ne l’était pas en amont. Au final, la protection est bien plus complète et plus fine, en autant de temps et avec moins de ligne de configuration.&lt;/p&gt;

&lt;h2 id=&quot;il-est-en-vie--en-vie-&quot;&gt;Il est en vie ! En vie !&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/wall-e-irl-mike-senna-150x150.jpg&quot; alt=&quot;Wall-E&quot; class=&quot;left&quot; /&gt; Petite news du web rapportée par Golem13 : un &lt;a href=&quot;http://golem13.fr/wall-e-irl-mike-senna/&quot;&gt;Wall-E&lt;/a&gt; construit par un lambda. Bon, le créateur n’est pas entièrement un anonyme puisqu’il avait déjà reproduit de la même manière un &lt;a href=&quot;http://sennasr2d2.blogspot.fr/&quot;&gt;R2-D2&lt;/a&gt; en 2003.
Travail magnifique au demeurant, qui me rappelle avec la larme à l’oeil l’oeuvre de Pixar. Seul point sombre selon moi ? Le robot n’est pas entièrement autonome.&lt;/p&gt;

&lt;h2 id=&quot;une-part-de-serpent&quot;&gt;Une part de serpent&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/450x305xsnakecake.jpg.pagespeed.ic_.TiMoGNyDZO-150x150.jpg&quot; alt=&quot;Serpent ou pas serpent ?&amp;quot;&quot; class=&quot;left&quot; /&gt; Pour ceux qui se prépare à goûter, c’est &lt;a href=&quot;http://www.gizmodo.fr/2012/08/08/croirez-jamais-pas-vrai-serpent.html&quot;&gt;Gizmodo France&lt;/a&gt; qui nous propose de découvrir un python sous un angle différent.
Alors on le regarde sous tous les angles, on comprend que c’est une réplique puis … on s’interroge. Personnellement, ca m’ouvre l’appétit pour changer. A vos fourchettes !&lt;/p&gt;

&lt;h2 id=&quot;il-était-une-fois-zelda-au-far-west&quot;&gt;Il était une fois Zelda au far-west&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/b8f64593-150x150.jpg&quot; alt=&quot;Link dans Zelda&quot; class=&quot;left&quot; /&gt; Je ne vous présente par Zelda, un des emblèmes du jeu vidéo &lt;em&gt;made in&lt;/em&gt; Nintendo. &lt;a href=&quot;http://www.journalgraphic.com/2012/08/03/legende-zelda-western/&quot;&gt;Le Journal Graphic&lt;/a&gt; nous présente un web-serie mélangeant l’univers de Zelda aux westerns spaghettis.
C’est disponible depuis le 7 août, ca divertit et le mélange n’est pas totalement rebutant.&lt;/p&gt;

&lt;h2 id=&quot;un-verre-de-wd-40-patron-&quot;&gt;Un verre de WD-40, patron !&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/wd-40-200ml-150x150.jpg&quot; alt=&quot;WD-40&quot; class=&quot;left&quot; /&gt; Les mécaniciens en herbe connaissent bien le WD-40. Mais pas sûr qu’ils le connaissent comme nous le présente &lt;a href=&quot;http://gizmodo.com/5932262/10-surprising-uses-for-wd+40-and-5-places-it-should-never-be-sprayed&quot;&gt;Gizmodo US&lt;/a&gt;.
Les 10 usages proposés par le site ne sont pas une excuse pour faire n’importe quoi. Il nous est donc rappelé/apporté quelques règles non négligeables.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>5 ans de réflexion : avec ou sans gâteau</title>
      <link href="https://francois.aichelbaum.com/2012/08/08/5-ans-de-reflexion-avec-ou-sans-gateau" />
      <updated>2012-08-08T11:39:42+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/08/5-ans-de-reflexion-avec-ou-sans-gateau</id>
      <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/5-ans-de-reflexion-2012-16697-963360868-150x150.jpg&quot; alt=&quot;Jason Segel&quot; /&gt;{.left} Le mariage, que de réflexion à avoir et de questions à se poser. Savoir si le partenaire est le bon. Choisir la date. Choisir le mariage religieux ou non. Si oui, de quelle(s) confession(s) la cérémonie doit être. Décider d’un cadre pour la cérémonie. Tester les restaurants. Se mettre d’accord sur la liste des invités. Résoudre les soucis de son couple avant … ou pas. Bref, Que de réflexion à avoir !&lt;/p&gt;

&lt;h2 id=&quot;5-minutes-de-réflexion-pour-se-dire-si-on-aime&quot;&gt;5 minutes de réflexion pour se dire si on aime&lt;/h2&gt;

&lt;p&gt;Hier j’ai donc choisi après une très rapide réflexion d’aller voir le film “5 ans de réflexion”, comédie avec &lt;a href=&quot;http://www.imdb.com/name/nm0781981/&quot;&gt;Jason Segel&lt;/a&gt; et &lt;a href=&quot;http://www.imdb.com/name/nm1289434/&quot;&gt;Emily Blunt&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Le film se présente donc comme une petite comédie romantique avec Jason Segel au scénario, pour un film sans prétention qui demande à se goûter. Donc gâteau de mariage ou donut de fast-food ? Simplement un donut de mariage.
Tom et Violet ont la vie qui leur réussi. Tom est chef dans un restaurant à la mode. L’avenir de Violet se profile dans une université de renom pour des recherches en psychologie sociale. Au delà de leurs CV, ils sont surtout amoureux et tous leurs proches les considèrent comme le couple parfait. Donc tant qu’à faire, autant se marier. Mais vient alors les questions à se poser. Et les déboires de la vie courante qui demande la réorganisation.
Et comme le bazar que va devenir leur vie pendant 5 ans le film est un gros n’importe quoi. Totalement sur joué. Des découpages parfois peu logique. Un couple qui ne fusionne jamais. Et de ce chaos nait une comédie irrésistible qui nous emporte pourtant. A ne pas comprendre. On se balade avec Tom &amp;amp; Violet, et attendont le Happy End évident avec la bave au coin des lèvres.
C’est rapide. Ca ne restera pas dans les mémoires. Mais ça s’apprécie clairement. Un très bon moment de relaxation.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/the-five-year-engagement-the-five-year-engagement-01-08-2012-1-g-220x300.jpg&quot; title=&quot;&quot; srcset=&quot; /assets/the-five-year-engagement-the-five-year-engagement-01-08-2012-1-g-220x300.jpg 220w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Ah les Parigots : carte de Paris</title>
      <link href="https://francois.aichelbaum.com/2012/08/08/ah-les-parigots-carte-de-paris" />
      <updated>2012-08-08T10:54:23+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/08/ah-les-parigots-carte-de-paris</id>
      <content type="html">&lt;p&gt;Je viens de recevoir ça par email, je suis plié et donc je partage … Cela vous occupera en attendant la revue de “5 ans de réflexion” qui arrive dans la journée.
Pour ceux qui n’ont pas été voir &lt;a href=&quot;/how-to-become-parisian-in-one-hour/&quot;&gt;Olivier Giraud&lt;/a&gt;, ca peut vous motiver à y aller.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/paris.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/paris.jpg 480w, /assets/paris.jpg 500w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>News du jour sur internet</title>
      <link href="https://francois.aichelbaum.com/2012/08/02/news-du-jour-sur-internet" />
      <updated>2012-08-02T12:04:52+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/08/02/news-du-jour-sur-internet</id>
      <content type="html">&lt;h2 id=&quot;ca-se-passe-sur-internet&quot;&gt;Ca se passe sur internet&lt;/h2&gt;

&lt;p&gt;Rien à critiquer ou à tester aujourd’hui. Pas d’argumentaire. Ca sent vraiment les vacances. Alors du coup, je vais faire un billet que je mettrais peut être à jour courant de la journée avec les conneries plus ou moins sérieuses que l’on peut trouver sur internet. Allez, commentons un peu l’actualité du jour.&lt;/p&gt;

&lt;h2 id=&quot;les-sales-gosses&quot;&gt;Les sales gosses&lt;/h2&gt;

&lt;p&gt;C’est le Parisien qui publie un article sur son site internet : &lt;a href=&quot;http://www.leparisien.fr/automobile/en-voiture-les-enfants-craquent-apres-30-minutes-02-08-2012-2111048.php&quot;&gt;le comportement des enfants en voiture&lt;/a&gt;. Personnellement, on me parle d’enfants en voiture, je repense à un trio infernal qui joue les sales gosses (Guillaume - Pauline - votre serviteur) avec leur “c’est quand qu’on arrive ?” et autre “pipi!”. Bref. L’article se focalise sur un fait bien connu : les enfants n’ont que peu de patience en voiture. Il faut donc savoir les occuper en les divertissant. Bon rappel. Par contre, la fée DVD est à déconseiller de mon point de vue. Les vacances sont faites pour décrocher du train-train habituel. Les enfants sont déjà trop accrochés à la TV, au PC ou à la console. Laissez la place aux jeux de société pour la voiture ou inventez des jeux !&lt;/p&gt;

&lt;h2 id=&quot;jurassic-park&quot;&gt;Jurassic Park&lt;/h2&gt;

&lt;p&gt;C’est l’histoire d’un milliardaire qui ne va jamais au cinéma. Du coup, il veut &lt;a href=&quot;http://www.gizmodo.fr/2012/08/02/milliardaire-veut-cloner-dinosaures.html&quot;&gt;cloner les dinosaures&lt;/a&gt;. Puis pourquoi s’arrêter en si bon chemin : il faut les mettre dans un parc. C’est le site internet français de Gizmodo qui nous le rapporte. Bref, il n’a pas vu la trilogie et il serait bon que quelqu’un la lui offre. Une leçon à tirer de cette news : aller au cinéma est bon pour apprendre à ne pas faire de bétises.&lt;/p&gt;

&lt;h2 id=&quot;il-est-sain-davoir-un-compte-facebook&quot;&gt;Il est sain d’avoir un compte Facebook&lt;/h2&gt;

&lt;p&gt;Et c’est même mieux. Ainsi se présente l’information rapportée par &lt;a href=&quot;http://techno.ca.msn.com/photos/nouvelles-du-jour-27-au-30-juillet-2012&quot;&gt;MSN Techno&lt;/a&gt;. Ne pas être présent sur les réseaux sociaux peut paraître suspect et détonerait même de trouble psychologique. Comment ça, il faut être parano pour ne vouloir aucune empreinte numérique sur internet ?&lt;/p&gt;

&lt;h2 id=&quot;la-guerre-des-robots-viendra&quot;&gt;La guerre des robots viendra&lt;/h2&gt;

&lt;p&gt;Même si Skynet est à la bourre de quelques années, la guerre des robots viendra. Avant ou après l’invasion zombie n’est pas le soucis. Par contre, savoir y survivre oui. &lt;a href=&quot;http://gizmodo.com/5931152/how-to-survive-a-robot-apocalypse&quot;&gt;Petit cours&lt;/a&gt; sur internet rapporté par Gizmodo US.&lt;/p&gt;

&lt;h2 id=&quot;les-super-héros-aussi-ont-une-vie&quot;&gt;Les super-héros aussi ont une vie&lt;/h2&gt;

&lt;p&gt;Un petit reportage photo est mis en ligne par &lt;a href=&quot;http://golem13.fr/chowkarhoo-supers-heros/&quot;&gt;Golem13&lt;/a&gt; sur la vie cachée des super-héros. Après tout, sont humains. Quoique …&lt;/p&gt;

&lt;h2 id=&quot;supprimer-des-axes-rapides-réduit-la-pollution-&quot;&gt;Supprimer des axes rapides réduit la pollution …&lt;/h2&gt;

&lt;p&gt;… dixit la Mairie de Paris. C’est la logique présentée pour justifier &lt;a href=&quot;http://www.leparisien.fr/transports/fermeture-des-voies-sur-berge-la-revolution-qui-attend-paris-02-08-2012-2110985.php&quot;&gt;la fermeture des quais&lt;/a&gt; rapporté par le Parisien. C’est sûr que rajouter des voitures à des axes déjà saturés, ca ne polluera pas plus. Comme le fait que les parisiens et banlieusards se reporteront sur des transports saturés. Que d’air dans le métro ou le RER. Que de plaisir à rester bloquer en bus à des carrefours saturés par les flots de voitures. Quel bonheur d’attendre dans les tunnels que les secours ramassent le hachis déposé sur les rails par un malheureux à qui son employeur vient d’annoncer qu’il était viré car il ne pouvait utiliser sa voiture et que les transports parisiens ne marchent pas. Et non le Vélib’ n’est pas une solution : vous ne savez pas faire du vélo et les chauffeurs (voiture, bus, camion) vous ignorent. Ah, le bon air pollué de Paris. Bientôt en plus forte dose.&lt;/p&gt;

&lt;h2 id=&quot;nettoyons-la-planète&quot;&gt;Nettoyons la planète&lt;/h2&gt;

&lt;p&gt;C’est une news d’Univers Freebox concernant la participation de &lt;a href=&quot;http://www.universfreebox.com/article17972.html&quot;&gt;Free au World Clean Up 2012&lt;/a&gt;. J’en avais déjà parler il y a peu sur les réseaux sociaux car l’affiche rapporte un autre participant de poids : la Fondation PSA (du groupe PSA). D’ailleurs, PSA a déjà commencé le nettoyage, mais par Aulnay.&lt;/p&gt;

&lt;h2 id=&quot;météo-et-politique-font-bon-ménage&quot;&gt;Météo et politique font bon ménage&lt;/h2&gt;

&lt;p&gt;Vous vous souvenez peut-être de mon billet sur le &lt;a href=&quot;/le-jour-dapres-hier/&quot;&gt;climat&lt;/a&gt;. Aujourd’hui c’est le site &lt;a href=&quot;http://www.slate.fr/story/60133/pluie-gauche-droite-meteo-hollande&quot;&gt;Slate&lt;/a&gt; qui se prête au jeu et marie la météo avec la politique. Le résultat est convaincant de comique.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Aux bons Amis : un couscous excellent et très bon marché</title>
      <link href="https://francois.aichelbaum.com/2012/07/30/aux-bons-amis-un-couscous-excellent-et-tres-bon-marche" />
      <updated>2012-07-30T19:27:45+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/07/30/aux-bons-amis-un-couscous-excellent-et-tres-bon-marche</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;Le couscous est un de ces plats facile à trouver, surtout dans les quartiers populaires de Pariset qui réunit les critères suivants :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;appétissant&lt;/li&gt;
&lt;li&gt;bon marché&lt;/li&gt;
&lt;li&gt;nourrissant&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;Petite revue rapide du Grenier mais surtout du restaurant &lt;em&gt;Aux Bons Amis&lt;/em&gt;.&lt;!--more--&gt;&lt;/div&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Il y a peu j&apos;avais pu découvrir &lt;em&gt;Le Grenier&lt;/em&gt; (&lt;a href=&quot;https://maps.google.fr/maps?f=q&amp;amp;source=s_q&amp;amp;hl=fr&amp;amp;geocode=&amp;amp;q=Le+Grenier,+Rue+Oberkampf,+Paris&amp;amp;aq=0&amp;amp;oq=LE+grenier,+rue+O&amp;amp;ie=UTF8&amp;amp;hq=Le+Grenier,+Rue+Oberkampf,+Paris&amp;amp;ll=48.867397,2.381544&amp;amp;spn=0.015922,0.038581&amp;amp;t=m&amp;amp;z=15&amp;amp;vpsrc=0&amp;amp;iwloc=A&amp;amp;cid=7090860540041199524&quot;&gt;rue Oberkampf à Paris&lt;/a&gt;). N&apos;y allez pas n&apos;importe quel jour, le bar ne sert le couscous que le vendredi et samedi soirs. La particularité ? Le couscous y est gratuit avec pour seule obligation de consommer. Les boissons étant aux prix classiques de Paris, le tarif est largement honnête. Donc couscous à volonté. Seulement des merguez pour viande. Semoule fine. Légumes bons mais sans plus. Vu le prix, rien à redire en fait et à noter pour tous les radins.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Par contre, hier j&apos;ai pu tester une autre catégorie : aux Bons Amis, dans le quartier de &lt;a href=&quot;https://maps.google.fr/maps?f=q&amp;amp;source=s_q&amp;amp;hl=fr&amp;amp;geocode=&amp;amp;q=Aux+bons+Amis,+paris&amp;amp;aq=&amp;amp;sll=46.22475,2.0517&amp;amp;sspn=17.151693,39.506836&amp;amp;vpsrc=0&amp;amp;ie=UTF8&amp;amp;hq=Aux+bons+Amis,&amp;amp;hnear=Paris,+%C3%8Ele-de-France&amp;amp;ll=48.877361,2.37545&amp;amp;spn=0.063674,0.154324&amp;amp;t=m&amp;amp;z=13&amp;amp;iwloc=A&amp;amp;cid=11710307045630742394&quot;&gt;Belleville&lt;/a&gt;, toujours à Paris. Cadre sympathique avec les poutres apparentes dans la première salle, patron timide mais sympa, à l&apos;ambiance de cantine lors du plein et reposant en cette période de ramadan. La spécialité de la maison ? Le couscous évidemment, les viandes grillées accessoirement.&lt;/p&gt;
&lt;h4 style=&quot;text-align: justify;&quot;&gt;On s&apos;est focalisé sur le plat pour faire simple. Pour deux, note à la sortie : 30€. A priori, tarif moyen, mais décomposons : 9€ par tête pour le couscous &quot;Maison&quot; (entre 6,5 et 11€ selon la recette choisie) et 12€ pour une bouteille de vin gris du Maroc.&lt;/h4&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le couscous &quot;Maison&quot; se présente en trois plats conviviaux : les viandes (mergez, keftas, brochettes d&apos;agneaux), les légumes et la semoule fine. Rien n&apos;est raté : la semoule est fine sans grumeaux, les légumes assaisonnés et cuits parfaitement, la viande est grillée comme il se doit. Les merguez sont parmi les meilleures que j&apos;ai pu manger, tout comme le kefta à l&apos;assaisonnement excellent. Les brochettes d&apos;agneaux offrent de beaux morceaux en taille et qualité. Une verrine d&apos;harissa maison est proposée pour relevé le tout. Pour le prix, une qualité parfaite. A tester les autres recettes ou grillades. Côté vin, rien de tel qu&apos;un vin gris pour l&apos;accompagnement : léger, sucré mais pas trop, il réhausse le goût global.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Pour faire simple : un couscous excellent et très bon marché. A refaire.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/07/DSCN0345.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-3658&quot; title=&quot;Le couscous aux bons amis&quot; src=&quot;/assets/DSCN0345-150x150.jpg&quot; alt=&quot;Le couscous aux bons amis&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/07/DSCN03441.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-3655&quot; title=&quot;Le critique gastronomique&quot; src=&quot;/assets/DSCN03441-150x150.jpg&quot; alt=&quot;Le critique gastronomique&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/07/DSCN0030.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-3652&quot; title=&quot;Aux bons Amis&quot; src=&quot;/assets/DSCN0030-150x150.jpg&quot; alt=&quot;Aux bons Amis&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>The Dark Knight rises : ou comment Batman chute</title>
      <link href="https://francois.aichelbaum.com/2012/07/30/the-dark-knight-rises-ou-comment-batman-chute" />
      <updated>2012-07-30T12:00:54+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/07/30/the-dark-knight-rises-ou-comment-batman-chute</id>
      <content type="html">&lt;p&gt;Mercredi dernier, Batman nous a livré le dernier chapitre de sa trilogie. &lt;a href=&quot;https://www.youtube.com/watch?v=vak9ZLfhGnQ&quot;&gt;Batman Begins&lt;/a&gt; avait marqué par son côté sombre et violent. &lt;a href=&quot;https://www.youtube.com/watch?v=yQ5U8suTUw0&quot;&gt;The Dark Knight&lt;/a&gt; nous avait offert une nouvelle référence pour le &lt;a href=&quot;https://www.youtube.com/watch?v=QehZjjwb7-I&quot;&gt;Joker&lt;/a&gt; (&lt;a href=&quot;http://www.imdb.com/name/nm0005132/&quot;&gt;Heath Ledger&lt;/a&gt;). The Dark Knight Rises nous offre juste une film à potentiel non converti. Trop long. Trop de (petits) ratés. Une Catwoman perfectible. Un Bane en demi teinte. Une Marion Cotillard qui devrait avoir honte. Une ouverture lors du final qui aurait pu ne pas être faite. Décryptage d’un loupé qui, cependant, divertit.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;h2 id=&quot;batman--une-trilogie-à-ne-pas-louper&quot;&gt;Batman : une trilogie à ne pas louper&lt;/h2&gt;

&lt;p&gt;On se souvient tous des films des années 90. Deux films gothiques du maître Tim Burton (&lt;a href=&quot;https://www.youtube.com/watch?v=VRqa47-jv0M&quot;&gt;1&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://www.youtube.com/watch?v=mnEEU3rcnw4&quot;&gt;2&lt;/a&gt;) qui mélangeait son univers à celui du héros masqué sans problème. Deux films de Joel Schumacher (&lt;a href=&quot;https://www.youtube.com/watch?v=iXsS1gLn8Gk&quot;&gt;3&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://www.youtube.com/watch?v=VK7wRdzg0MM&quot;&gt;4&lt;/a&gt;) qu’on espère oublier avec leurs délires psychotiques. &lt;a href=&quot;http://www.imdb.com/name/nm0634240/&quot;&gt;Christopher Nolan&lt;/a&gt; avait entamé sa version du chevalier sombre de manière magistrale et allant crescendo. Il nous avait annoncé une fin en apothéose et ne devait surtout pas se louper, tellement le rouleau compresseur médiatique nous en a fait bouffer pendant des semaines avant la sortie.
Avec &lt;a href=&quot;https://www.youtube.com/watch?v=vak9ZLfhGnQ&quot;&gt;Batman Begins&lt;/a&gt;, &lt;a href=&quot;http://www.imdb.com/name/nm0634240/&quot;&gt;Nolan&lt;/a&gt; et &lt;a href=&quot;http://www.imdb.com/name/nm0000288/&quot;&gt;Bale&lt;/a&gt; nous faisaient rentrer dans un univers sombre et torturé du chevalier. On lui découvrait des origines complémentaires absentes des versions précédentes (dont &lt;a href=&quot;http://fr.wikipedia.org/wiki/Ra&apos;s_al_Ghul&quot;&gt;Ra’s Al Ghul&lt;/a&gt;). Grosse surprise en sortie de salle qui a mis l’eau à la bouche de tous les fans en désespoir depuis les dernières adaptations. Malheureusement, l’&lt;a href=&quot;http://fr.wikipedia.org/wiki/%C3%89pouvantail_(DC_Comics)&quot;&gt;épouventail&lt;/a&gt; y avait été assez transparent.
Dans &lt;a href=&quot;https://www.youtube.com/watch?v=yQ5U8suTUw0&quot;&gt;The Dark Knight&lt;/a&gt;, nous y découvrions le némésis de la chauve-souris : le &lt;a href=&quot;http://fr.wikipedia.org/wiki/Joker_(comics)&quot;&gt;Joker&lt;/a&gt;. Campé par &lt;a href=&quot;http://www.imdb.com/name/nm0000197/&quot;&gt;Jack Nicholson&lt;/a&gt; précédemment, ce dernier avait défini de belles règles pour le rôle. Il était alors très dur d’arriver à sa hauteur. Mais le drogué &lt;a href=&quot;http://www.imdb.com/name/nm0005132/&quot;&gt;Heath Ledger&lt;/a&gt; avait de la ressource à vendre. Il n’a d’ailleurs pas démérité son Oscar posthume tant la performance était magnifique.&lt;/p&gt;

&lt;h2 id=&quot;un-batman-en-déchéance&quot;&gt;Un Batman en déchéance&lt;/h2&gt;

&lt;p&gt;Annoncé avec des personnages importants de l’univers de Batman (à savoir &lt;a href=&quot;http://fr.wikipedia.org/wiki/Catwoman&quot;&gt;Catwoman&lt;/a&gt; et &lt;a href=&quot;http://fr.wikipedia.org/wiki/Bane_(DC_Comics)&quot;&gt;Bane&lt;/a&gt;), ce Dark Knight Rises s’annonçait surpuissant. Et rien que pour eux, les loupés existent. Oui, Bane y est enfin intelligent comme il le devrait (et contrairement à la version de Schumacher), mais reste que le jeu d’acteur, la posture et l’expression orale montrent quelques restes de ce passé atardé. Dans le cas de Catwoman c’est plus compliqué. &lt;a href=&quot;https://www.youtube.com/watch?v=aVQAI4NdZR0&quot;&gt;Michelle Pfeiffer&lt;/a&gt; a donné au rôle ses titres de noblesse. &lt;a href=&quot;https://www.youtube.com/watch?v=8P5l36B8qPw&quot;&gt;Halle Berry&lt;/a&gt; a ruiné le personnage. Anne Hathaway résiste, est sexy dans son latex moulant mais reste totalement transparente tout au long du film. Décidément pas Miaou la chatte bien que sortant les griffes. Les clins d’oeil aux personnages précédents sont agréables … Il en manque cependant un pour le Joker qui a fait la renommée du second opus.
Ca c’est pour les personnages. Le film en lui-même enchaîne les ratés. Commençons par la durée : 2h45 en plein été, dans des salles où la climatisation n’est soit pas en état, soit pas suffisante, c’est du suicide ! On se croirait dans le RER, en heure d’affluence avec une panne.
Ensuite, la chronologie des évènements et la gestion du calendrier est digne d’un Harry Potter : on enchaîne les changements de jours (parfois mois) sans rien comprendre. C’est totalement décousu et mal expliqué. Comment perdre le spectateur. C’est sûr qu’en 2h45 de film, Nolan n’avait pas le temps de rendre la chose agréable et propre.
Pour le jeu des acteurs, autant faire une liste nomminative :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Catwoman/Selina Kyle : transparente&lt;/li&gt;
  &lt;li&gt;Alfred : fatigué émotionnellement, touchant, mais trop absent&lt;/li&gt;
  &lt;li&gt;Lucius Fox : les chevilles sont tros grosses et heureusement, il apparaît peu&lt;/li&gt;
  &lt;li&gt;Bane : c’est quoi cette tenue ?!&lt;/li&gt;
  &lt;li&gt;Mlle Tate : Marion Cotillard, vous faites honte au cinéma français et au montant du chèque perçu pour ce rôle ; depuis quand on sur-joue autant dans ce genre de film ?!&lt;/li&gt;
  &lt;li&gt;Batman : fatigué physiquement, limite grabataire ; oui, il doit clairement se relever&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On nous annonçait une trilogie, la fin ouvre sur une double possibilité (attention, ça &lt;em&gt;spoile&lt;/em&gt; donc passez au paragraphe suivant si vous ne voulez pas lire) :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;soit la création du Robin/Nightwing (bien qu’il ne soit pas question de Dick Grayson)&lt;/li&gt;
  &lt;li&gt;soit la création d’un nouveau Batman&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Accessoirement, pour votre information, John Blake existe dans les comics (il apparaît dans le #13 de 1942 et est le Robin de l’époque) : peu connu mais bon à savoir.
Ce qu’il reste donc au final à ce film ? Son gros spectacle, un scénario qui tient la route (pour les grandes lignes) et son côté sombre. Mais bon, comme disait &lt;a href=&quot;http://www.funnyordie.com/videos/fd747e8af8/every-3d-movie-is-the-same?playlist=featured_videos&quot;&gt;Funny or Die&lt;/a&gt; dans un de leurs derniers podcasts vidéos, quand on en a vu un, on les a tous vu. Pas convaincu qu’il vaille le coup d’aller s’étouffer au cinéma pour le voir.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/the_dark_knight_rises___poster_by_damovieman-d31tsnm-691x1024.png&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/the_dark_knight_rises___poster_by_damovieman-d31tsnm-691x1024.png 480w, /assets/the_dark_knight_rises___poster_by_damovieman-d31tsnm-691x1024.png 691w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Holy Motors : pour Oscar, ca tourne !</title>
      <link href="https://francois.aichelbaum.com/2012/07/26/holy-motors-pour-oscar-ca-tourne" />
      <updated>2012-07-26T22:34:38+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/07/26/holy-motors-pour-oscar-ca-tourne</id>
      <content type="html">&lt;h2 id=&quot;holy-motors--oscar-de-la-jeunesse-&quot;&gt;Holy Motors : Oscar de la Jeunesse ?&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/er8xdf4htd-150x150.jpg&quot; alt=&quot;M. Oscar&quot; /&gt;{.left} Présenté en compétition officielle du festival de Cannes 2012, Holy Motors est primé par un Oscar de la Jeunesse. Et là, je me dis que la jeunesse n’est pas une génération totalement perdue tant le film peut s’interpréter de manières diverses, voire rebuter si l’on ne prend pas le temps. Oscar est le nom de cet être étrange que nous suivons, alors qui’il vogue de vie en vie. Dix vies. Dix actes. Dix leçons. La première scène nous montre un public endormi au cinéma : allons-nous aussi nous endormir devant cet ovni ?&lt;/p&gt;

&lt;h2 id=&quot;une-ode-au-cinéma-et-au-théatre-ou-sujet-danthropologie-&quot;&gt;Une ode au cinéma et au théatre ou sujet d’anthropologie ?&lt;/h2&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Oscar est donc cet homme dont on ne voit jamais le vrai visage qui va prendre la vie d’un autre pendant quelques minutes ou heures. Tour à tour vieux banquier, vieille mendiante russe, monstre dans un cimetière, père de famille… Chaque scène, chaque rendez-vous, est orchestré à la seconde et nous propose un film à part entière. Sans lien, chaque scène est un acte de la pièce jouée par Oscar (&lt;a href=&quot;http://www.imdb.com/name/nm0491777/&quot;&gt;Denis Lavant&lt;/a&gt;) et accompagné par Céline (&lt;a href=&quot;http://www.imdb.com/name/nm0778568/&quot;&gt;Edith Scob&lt;/a&gt;) qui lui sert de chauffeur de limousine et d’assistante. La journée est chargée. Dix actes nous attendent.
On pourra passer de la vie peu passionnante du banquier aux trubliations d’un monstre du cimetière se la jouant Fantome de l’Opera et kidnappant une mannequin, campée par &lt;a href=&quot;http://www.imdb.com/name/nm0578949/&quot;&gt;Eva Mendes&lt;/a&gt;. Et là, l’un des points clés du film : la relation d’Oscar avec les femmes. Toutes veulent le manipuler à leur façon : l’assistance et la planification pour Céline, le calme et l’acceptation pour le mannequin, le mensonge par la petite fille, les souvenirs pour &lt;em&gt;sa collègue&lt;/em&gt; … Toutes prendront l’ascendant sur lui, le menant où elles désirent ou le faisant réfléchir à sa situation, à sa vie (absente).
Puis, comme au théatre, nous avons le droit à notre entracte. Ou simplement, le 6e rendez-vous d’Oscar. Un boeuf d’accordéons dans une église. Rafraîchissant et bien placé. A noter la présence de Bertrand Cantat pour manier l’harmonica. ”3 ! 12 ! Merde !”&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Puis c’est la descente aux enfers pour Oscar dont la fatigue de la journée se fait sentir. Le stress se ressent. On est essoufflé pour lui. Perdu dans ses dossiers comme lui. A ne plus savoir qui il a été, qui il est et qui il va être.
La rencontre de la &lt;a href=&quot;https://www.youtube.com/watch?v=YOcZon_R43g&quot;&gt;Fée Verte&lt;/a&gt;, &lt;a href=&quot;http://www.imdb.com/name/nm0001541/&quot;&gt;Kylie Minogue&lt;/a&gt;, apparaît comme une divine venue. Chantante (“&lt;a href=&quot;https://www.youtube.com/watch?v=S-1651-XCXo&quot;&gt;Who were we&lt;/a&gt;”), elle rappelle à Oscar son passé, leur passé. Ces êtres sans visages, sans vie propre, ces mannequins, nous font visiter les ruines de  &lt;a href=&quot;http://fr.wikipedia.org/wiki/La_Samaritaine&quot;&gt;la Samaritaine&lt;/a&gt;, le sol jonché de mannequins démembrés, en compagnie de ses êtres sans visage est oppressant. Mais le passé doit rester le passé. Le présent se charge de le lui rappeler de manière violente.
Céline dépose alors Oscar à son dernier rendez-vous avant de ramener la limousine au hangar d’Holy Motors. Alors qu’on ne voit jamais le vrai visage d’Oscar, Céline masque enfin le sien en nous quittant. S’engage alors un épilogue entre les âmes de ces vaissaux guidant les gens vers leurs derniers voyages, comme s’amuse à le dire &lt;a href=&quot;http://www.imdb.com/name/nm0136021/&quot;&gt;Leos Carax&lt;/a&gt;.
Ce film est déroutant : ce qui est réel semble irréel et inversement. Les standards sont bousculés. On ne comprend jamais vraiment le but à tout ceci. On se plait à repenser à &lt;a href=&quot;http://www.serieslive.com/serie/code-quantum/153/&quot;&gt;Code Quantum&lt;/a&gt; dans lequel Sam voyageait de vie en vie afin d’aider les autres, accompagné d’Al. Les choses sont ici bien plus rapides, brutales. Al est devenu une femme et Ziggy une limo. Une manière de marqué l’impulsivité et le mouvement, alors que la série prenait son temps.  Mais alors que tout va mal pour lui et que sa vie ne lui plait pas, pourquoi continuer ? Et nous, pourquoi continuer à regarder ce film qui semble décousu ? Comme le dit Oscar, on continue pour le spectacle. Et c’est pour cela qu’on va voir ce film. Profiter de l’esthétisme. Inspirer la méditation. Apprécier la vie. Arriver à sa conclusion, le cerveau bouillonne. La digestion est longue mais bénéfique.
A voir sans conteste.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/holy_motors.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/holy_motors.jpg 480w, /assets/holy_motors.jpg 500w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>La tontine : un penny bien placé</title>
      <link href="https://francois.aichelbaum.com/2012/07/18/la-tontine-un-penny-bien-place" />
      <updated>2012-07-18T12:02:45+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/07/18/la-tontine-un-penny-bien-place</id>
      <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/clauses-tontine-150x150.jpg&quot; alt=&quot;La tontine&quot; /&gt;{.left} La tontine : pensez à votre avenir, faites des projets, placez bien vos pennys, qu’ils disaient.
Ca fait quelques jours que je n’ai rien posté. Normal, rien de bien passionant ici bas. Hier, on m’a proposé une réunion Tupperware financier : me faire l’article sur les tontines. Alors qu’est-ce qu’une tontine ? Quels sont mes projets ? Ai-je signé un contrat ? On va voir tout ceci.&lt;/p&gt;

&lt;h2 id=&quot;késako-la-tontine-&quot;&gt;Késako la tontine ?&lt;/h2&gt;

&lt;p&gt;Déjà personnellement, me parler de tontine, de placement ou simplement de mettre des sous de côté, ça me fait tout de suite penser à Mary Poppins.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Ca, c’est fait, comme on dit. Mais késako une tontine, bande d’ignards ? Selon la page &lt;a href=&quot;http://fr.wikipedia.org/wiki/Tontine&quot;&gt;wikipedia&lt;/a&gt;, ça serait : &lt;em&gt;la tontine est un contrat aléatoire correspondant au financement collectif de l’achat d’un actif financier ou d’un bien dont la propriété revient à une partie seulement des souscripteurs&lt;/em&gt;. Voici pour la définition. Pour les curieux, je vous laisse lire le document pour l’histoire et les informations complémentaires. A l’habitude, c’est votre banquier ou un courtier en assurance qui vous contacte pour vous faire souscrire à une assurance vie ou un placement à long terme. Ca se passe en privé. Ici, &lt;a href=&quot;http://www.conservateur.fr/&quot;&gt;le Conservateur&lt;/a&gt; utilise la technique des réunions Tupperware pour faire sa pub et attirer les &lt;del&gt;clients&lt;/del&gt; mutualistes.&lt;/p&gt;

&lt;h2 id=&quot;indigestion--de-chiffres&quot;&gt;Indigestion … de chiffres&lt;/h2&gt;

&lt;p&gt;Après s’être fait mettre à l’aise par l’hôte de maison avec les classiques plateaux charcuteries/fromages/vins, le courtier commence son show. On va nous vendre l’histoire de la mutuelle non régie par un actionnariat et donc indépendante, vieille de près de 170 ans, oeuvrant toujours à l’intérêt de ses mutualistes, et toujours meilleure que la concurrence. Alors, oui, les chiffres annoncent beaucoup de choses, la revue de presse chante leur louange, mais bon il faut que ça interpèle.
Le but premier est de vous faire réaliser que le modèle de retraite partagée auquel on participe en France n’est pas à notre avantage et qu’on sera tous en faillite une fois arrivé à la retraite et qu’il y a aujourd’hui (selon les chiffres) un manque à gagner de 20% entre ce qu’on va toucher et ce dont on va avoir besoin. Enfin 20%, c’est pour les employés. Pour les cadres ou professions libérales, c’est bien pire et monte jusqu’à 45%. Mais la tontine est là pour réhausser le sacro-saint pouvoir d’achat&lt;/p&gt;

&lt;p&gt;Bref, des chiffres alarmistes pour vous dire une chose : faites des projets et mettez de l’argent de côté … dans une tontine par exemple. Alors, pour ma part, d’autres points me choquent : l’idée du projet qui sera respecté et l’argent mis de côté.&lt;/p&gt;

&lt;h2 id=&quot;cétait-mieux-avant&quot;&gt;C’était mieux avant&lt;/h2&gt;

&lt;p&gt;Le Conservateur s’appuie sur son expertise de 170 ans pour nous garantir qu’il sait ce qu’il dit et que le modèle mis en place en 1844 est toujours valable aujourd’hui. Reste que le monde a changé, les moeurs aussi, tout comme les habitudes liées à l’emploi. Et que dire de la capacité des jeunes couples à pouvoir faire des projets ? Oui en 1844 ou encore pour la génération du baby-boom, il était courant de rester fidèle à son employeur toute sa vie, comme le couple était fidèle l’un à l’autre. Mais aujourd’hui, les changements de boulot en cours de route sont réguliers avec une moyenne, en 2010, de 7 ans pour 58% des actifs et 3 ans pour 25%. On est loin du poste à vie de nos parents. Et de manière amusée, les durées de vie des couples sont assez proches, avec un nombre sans cesse croissant des divorces. Alors les projets … Et c’est bien sûr sans prendre en compte une vie qui semble tenir à un fil toujours plus fin.
La partie financière n’est pas en reste avec une succession de crises au XXe siècle et en ce début de XXIe siècle, des marchés financiers qui régissent toujours plus notre vie quotidienne et des conséquences pesant sur les moyens pécuniers des jeunes couples. Avec les frais quotidiens en perpetuelle augmentation et de manière bien plus rapide que l’inflation annoncée par l’insee et des salaires en régression, le niveau de vie de ces couples est loin d’être idyllique et mettre de côté des 200€ mensuels recommandés par le courtier s’avère un calvère financier. Et justement, cela empêche tout projet autre que la retraite et encore plus de se préserver de toute situation d’urgence.&lt;/p&gt;

&lt;h2 id=&quot;round-1--fight-&quot;&gt;Round 1 : fight !&lt;/h2&gt;

&lt;p&gt;Avec ces éléments et bien d’autres dans les manches de mon t-shirt, je titille le courtier qui se rebiffe tel un chihuahua dans le coin d’une pièce : ça montre les crocs, ça grogne pour démontrer que les chiffres ont raison. Tout ça dans le but de contrer les arguments et pouvoir rassurer le reste de l’assistance. Mais bon, il cherche mais n’y arrive point. Il n’est jamais bon de s’exciter pour se justifier et soutenir sa position. Et les chiffres, on leur faire dire ce qu’on veut. Maintenant, dans l’absolu, il a raison : il faut, tant que possible prendre les devants et prévoir notre vieillesse, comme il faut prévoir demain. La tontine permet à moindre coup de se composer un capital honnête. Le dernier exemple était d’ailleurs intéressant.&lt;/p&gt;

&lt;h2 id=&quot;round-2--ko&quot;&gt;Round 2 : K.O.&lt;/h2&gt;

&lt;p&gt;Un couple de jeunes de 25 ans commence à se pencher sur la question. Chacun va mettre mensuellement 100€ répartis en deux tontines par tête (pour des raisons fiscales). La tontine choisie est une tontine avec rente sur 20 ans. Donc arrivés à 45 ans, ils se retrouvent avec leur rente. Cette rente, vu qu’ils n’en ont pas besoin (bah oui, ils bossent encore), il la réinvestissent de nouveaux dans des tontines de 20 ans avec pour objectif un capital. Arrivés à la retraite (oui on espère qu’elle soit toujours à 65 ans), le capital se débloque avec un joli montant de 372.000 € pour 48.000€ investi. C’est magique. C’est le rêve. Sauf que l’évolution de notre civilisation montre qu’à 65 ans on ne sera toujours pas à la retraite. Qu’on vivra toujours plus vieux. Qu’on changera toujours plus de taff. Que mettre de côté 200€ à 25 ans, c’est déjà trop tard. Qu’on devrait mettre 800€ tous les mois à 45 ans pour compenser, chose qui ne se fera pas. Bref, les chiffres du courtier annoncent le miracle qui existerait si l’on vivait encore 30 ans plus tôt, ce qui n’est pas le cas.&lt;/p&gt;

&lt;h2 id=&quot;and-the-winner-is-&quot;&gt;And the winner is …&lt;/h2&gt;

&lt;p&gt;Le concept de reprendre les réunions Tupperware pour présenter des produits financiers fait son affaire puisque l’ambiance est plus détendue, et que l’échange avec le courtier est plus franc et plus intéressant. Une heure de show, c’est chaud. C’est épuisant pour lui, mais un régal pour une personne comme moi. On ne peut que réagir. On essaie alors d’imaginer, de prévoir. Mais la vie est faite de contre projets qui remettent toujours tout en question, de nos jours. Pour autant, rien n’empêche de tenter de sauver nos vieux jours. Pas de signature, mais un intérêt relevé.
Pour clore, juste un phrase qui peut prendre son importance ici : &lt;em&gt;faites que le rêve dévore votre vie, afin que la vie ne dévore pas votre rêve&lt;/em&gt;.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Rock Forever : Rock&amp;#039;n&amp;#039;Roll is all about love, Babe</title>
      <link href="https://francois.aichelbaum.com/2012/07/12/rocknroll-is-all-about-love-babe" />
      <updated>2012-07-12T00:18:25+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/07/12/rocknroll-is-all-about-love-babe</id>
      <content type="html">&lt;h2 id=&quot;et-dieu-créa-le-rock&quot;&gt;Et Dieu créa le Rock&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/rock-of-ages-150x150.jpg&quot; alt=&quot;Rock Forever (Rock of ages)&quot; /&gt;{.left}&lt;/p&gt;

&lt;p&gt;Vous savez tous ce que Dieu créa pendant les six premiers jours. Le septième, il ne s’est pas reposé : il a créé le Rock’n’Roll !
Combien de courants musicaux en sont nés ? Combien de destins s’y sont liés ? Combien d’enfants ont été conçus sur des banquettes arrières au son de ses rifts de guitare ? Le Rock est Vie. Le Rock est Amour.
Mais pour raconter cette partition de sentiments, Broadway créa la comédie musicale &lt;a href=&quot;https://www.youtube.com/watch?v=iKGvQ-HAezo&quot;&gt;Rock of Ages&lt;/a&gt; (Rock Forever). Hollywood en fit un film.&lt;/p&gt;

&lt;h2 id=&quot;branchez-les-guitares-moi-jaccorde-ma-basse&quot;&gt;Branchez les guitares. Moi j’accorde ma basse.&lt;/h2&gt;

&lt;p&gt;Pourquoi mettre ce billet dans trois catégories ? Tout simplement parce qu’un film se regarde mais le rock s’écoute et se ressent. J’ai choisi ce film avec la peur au ventre. Peur que la bande son ne soit pas à la hauteur avec autant de reprises. Peur de l’interprétation de Tom Cruise qui me désespère de plus en plus à chacune de ses apparitions.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Mais bon, le casting regroupe quand même quelques chanteurs : Julianne Hough et Diego Boneta (deux chanteurs de Country), Mary J. Blige (the Queen of Hip-Hop Soul). Ceci permet un niveau de chant agréable forçant les autres acteurs à travailler. Le playback se ressent un peu trop malheureusement et laisse supposer un gros travail en studio pour corriger les voix. Pour autant, la playlist est généreuse et agréable. Au niveau des acteurs, je remercie qui de droit de n’avoir pas donné une trop grande importance à l’écran à Tom Cruise : son &lt;del&gt;encombrance&lt;/del&gt; importance s’arrête à l’affiche du film.
Nous sommes projetés en 1987, excellente année pour le Rock sur le Sunset Boulevard de Los Angeles. La foule se déchire entre frigides coincés et amoureux &lt;em&gt;of the devil&lt;/em&gt;. Nous y suivons l’arrivée de Sherrie dans la cité des Anges avec ses rêves de gloire musicale. Elle débarque donc de son Tulsa natal (Oklahoma), sans un sous, les yeux rivés sur le Bourbon Room, le bar rock N°1. Sa (mal)chance la mettra sur la route de Drew, son Don Juan, et toute la fine équipe du bar. Stacee Jaxx (alias Tom Cruise), l’idole de ces jeunes, est un mix entre Jim Morrison, Axl Rose, Keith Richards et Iggy Pop. Mais comme toute rock star, Stacee se fait désirer et donc n’apparaît que peu à l’écran. Une chance pour nous qui permet presque de savourer une prestation honorable du scientologue. Personnellement, je l’ai trouvé relativement “plat” (comme à son habitude) jusqu’à un certain regard de sa part lors de sa deuxième venue au Bourbon Bar. J’ai alors retrouvé le Tom des années 80 pendant quelques brèves secondes.&lt;/p&gt;

&lt;h2 id=&quot;rock--rock--rocknroll-&quot;&gt;Rock ! Rock ! Rock’n’Roll !&lt;/h2&gt;

&lt;p&gt;Pour le plaisir, voici donc les chansons qui ont été reprises. Mais dans leurs versions originales. Une playlist YouTube est &lt;a href=&quot;https://www.youtube.com/playlist?list=PLDE02D747D9FBDECD&amp;amp;feature=view_all&quot;&gt;disponible&lt;/a&gt;.&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=z92bmlcmyq0&quot;&gt;Sister Christian&lt;/a&gt;” / “&lt;a href=&quot;https://www.youtube.com/watch?v=cI-BohBMeLk&quot;&gt;Just Like Paradise&lt;/a&gt;” / “&lt;a href=&quot;https://www.youtube.com/watch?v=nC9P8-B42cA&quot;&gt;Nothin’ but a Good Time&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=nx0guAlTsUg&quot;&gt;Juke Box Hero&lt;/a&gt;” / “&lt;a href=&quot;https://www.youtube.com/watch?v=u0ZicY7Oqmg&quot;&gt;I Love Rock ‘n’ Roll&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=0JRgHol94Xc&quot;&gt;Hit Me with Your Best Shot&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=rm9CyNZfAjQ&quot;&gt;Waiting for a Girl Like You&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=UrIiLvg58SY&quot;&gt;More Than Words&lt;/a&gt;” / “&lt;a href=&quot;https://www.youtube.com/watch?v=3eT464L1YRA&quot;&gt;Heaven (Warrant song)&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=SRvCvsRp5ho&quot;&gt;Wanted Dead or Alive (Bon Jovi song)&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=AYT7y6lFJtw&quot;&gt;I Want to Know What Love Is&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=SRwrg0db_zY&quot;&gt;I Wanna Rock&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=AQ4xwmZ6zi4&quot;&gt;Pour Some Sugar on Me&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=OqeKV2UYq1Q&quot;&gt;Harden My Heart&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=ZInRE-KryGA&quot;&gt;Get Nervous&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=DSlSaGcc0QM&quot;&gt;Here I Go Again&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=aCVx2jrKKXQ&quot;&gt;Can’t Fight This Feeling&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=atxUuldUcfI&quot;&gt;Any Way You Want It&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=-gm3FyeW7FM&quot;&gt;Undercover Love&lt;/a&gt;” (euh … euh … bouuuuuuuuuuuuuh !! Du - faux - Boys Band !!)&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=c56vEgA4fjU&quot;&gt;Every Rose Has Its Thorn&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;http://www.youtube.com/watch?v=nsdj9NRzqC4&quot;&gt;We Built This City&lt;/a&gt;” / “&lt;a href=&quot;https://www.youtube.com/watch?v=4xmckWVPRaI&quot;&gt;We’re Not Gonna Take It (Twisted Sister song)&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=N5wVZwdHmRY&quot;&gt;Don’t Stop Believin’&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=Rbm6GXllBiw&quot;&gt;Paradise City&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=sxdmw4tJJ1Y&quot;&gt;Rock You Like a Hurricane&lt;/a&gt;”&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;D’autres chansons arrosent nos oreilles de leurs notes, directement dans leurs versions d’origine. Une playlist YouTube est &lt;a href=&quot;https://www.youtube.com/playlist?list=PL651143A189F8FB0A&amp;amp;feature=view_all&quot;&gt;disponible&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=jO4Bb1xQHXw&quot;&gt;I Remember You (Skid Row song)&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=4bZmGtaqP68&quot;&gt;Everybody Wants Some!!&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=e1V8GtZjWFQ&quot;&gt;Rock of Ages (song)&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=Vt2Y78VgfNQ&quot;&gt;Bringin’ on the Heartbreak&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=xCChxBSRo1Y&quot;&gt;Talk Dirty to Me&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=3cc39bU4GZ0&quot;&gt;No One Like You&lt;/a&gt;”&lt;/li&gt;
  &lt;li&gt;“&lt;a href=&quot;https://www.youtube.com/watch?v=KW2J_UZ8lQU&quot;&gt;Cum on Feel the Noize&lt;/a&gt;”&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;a-voir--non-juste-à-écouter&quot;&gt;A voir ? Non juste à écouter&lt;/h2&gt;

&lt;p&gt;Au final, malgré un très bon son dans les oreilles, un bon casting et des moyens non négligeables, les rôles sont sur-joués, les émotions non transmises et le spectacle qui se voulait détonnant fait office de pétard mouillé. A voir … en vidéo chez soi si vous voulez la vidéo, sinon autant allez acheter la BO.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/Rock-of-ages.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/Rock-of-ages.jpg 480w, /assets/Rock-of-ages.jpg 509w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Starbuck : tiguidou !</title>
      <link href="https://francois.aichelbaum.com/2012/07/11/starbuck-tiguidou" />
      <updated>2012-07-11T11:37:46+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/07/11/starbuck-tiguidou</id>
      <content type="html">&lt;h2 id=&quot;viens-che-nous&quot;&gt;Viens che-nous&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/starbuck_movies-150x150.jpg&quot; alt=&quot;Starbuck&quot; /&gt;{.left} Nos cousins québécois, on les connait pour leurs expat’ musiciens. Mais leur joual s’exprime aussi au cinéma, plus rare dans nos contrées si ce n’est avec quelques acteurs. Place à Starbuck.
Cette fois, c’est un film de 2011 qui nous arrive au cinéma. Un sujet mêlant dans leur univers, sous titré pour les passages trop hardus à comprendre. Le titre laisse perplexe au début, mais la bande annonce impose d’aller voir le film.&lt;/p&gt;

&lt;h2 id=&quot;who-the-fuck-is-starbuck-&quot;&gt;Who the fuck is Starbuck ?&lt;/h2&gt;

&lt;p&gt;Comme quatre à cinq milliards d’humains le lendemain, on est tous à se poser cette question : mais, who the fuck is Starbuck ?&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;C’est El Masturbator. C’est l’histoire d’un jeune sans bidoux à la fin des années 80 qui vend sa semence à une banque de sperme plus de 600 fois. Un sperme d’une grande qualité puisqu’utilisé avec succès à 533 reprises. Ce jeune, 22 ans plus tard, la quarantaine approchant, se retrouve père géniteur de 533 enfants dont 142 veulent faire sa connaissance. Sauf qu’à 40 ans, David Wosniak est irresponsable, pire livreur de viandes au monde, incapable d’avoir une relation saine avec sa blonde et qui tente la culture hydroponique pour arrondir ses fins de mois.
Toute une descente d’un homme pour pouvoir mieux en rire. Et du rire, il y en a, malgré les différents sujets abordés : don de sperme, parents génétiques, droit à l’anonymat, homosexualité, handicap lourd, décallage, difficultés d’adaptation …  Une certaine profondeur d’histoire, racontée avec une certaine légèreté : on est au bord des lieux communs des relations familiales. Découvrir tous ces enfants avec toutes ces vies compliquées vont éveiller chez David tout un tas de sentiments qu’il n’espérait sûrement pas. Il va vibrer, espérer, croire. Et nous avec lui. Entre les zoulous des mange-canayes qui le pourchassent, les banques qui se la jouent pawnshop, sa famille qui le prend pour le mouton noir, sa copine en balloune mais qui ne veut plus de lui, rien n’est fait pour qu’il marque.
Sauf justement ses 142 enfants qui l’espèrent et à travers leurs vies croisées vont le motiver à s’enmieuter. Qu’il soit footballeur pro, chanteur dans le métro (&lt;a href=&quot;http://david-giguere.com/nouvelles.php&quot;&gt;David Giguère&lt;/a&gt;), acteur décrié, gamine y’é stone à mort et désabusée, ado goth ou encore son fils lourdement handicapé moteur, ses enfants ont tous une leçon à lui offrir de la même manière que lui peut devenir leur ange-gardien (et non leur super-héros en lycra).&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Et c’est là l’histoire d’une vie que nous offre David. C’est aussi la leçon qu’il nous apprend dans les larmes et les rires. Le film aurait pu basculé vers la banalité, mais s’en sort. Même la fin “conte de fée” où tout le monde il est heureux passe : pas d’autre choix pour appeler à l’ouverture d’esprit du public. A noter qu’on a pensé à vous autres qui ne connaissez pas le joual avec des sous-titres donc Pratique.. Pas de vrais temps-morts. A voir. A revoir. A respirer. A s’impreigner. A cogiter.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/starbuck.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/starbuck.jpg 480w, /assets/starbuck.jpg 520w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Affaire Goldorak : conjugaison du verbe larguer</title>
      <link href="https://francois.aichelbaum.com/2012/07/10/conjugaison-du-verbe-larguer" />
      <updated>2012-07-10T12:42:07+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/07/10/conjugaison-du-verbe-larguer</id>
      <content type="html">&lt;h1&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/07/12t46czt.jpg&quot;&gt;&lt;img class=&quot;size-thumbnail wp-image-1840 alignleft&quot; title=&quot;Goldorak&quot; src=&quot;/assets/12t46czt-150x150.jpg&quot; alt=&quot;Goldorak&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;L&apos;affaire du millénaire : l&apos;affaire Goldorak&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Non l&apos;affaire n&apos;est pas une histoire de coeur. Quoique, cela puisse devenir une histoire de coeur pour certains. Après tout, Actarus et son Goldorak ont bercé l&apos;enfance de nombre d&apos;entre nous.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Reste l&apos;un des plus grands mystères de nos vies : mais pourquoi donc Actarus fait-il deux demi-tours au moment de son transfert de la soucoupe vers le géant de fer ? Le débat a duré longtemps, les esprits se sont déchaînés mais la réponse était ailleurs. Ou ici.&lt;br /&gt;
&lt;!--more--&gt;&lt;/p&gt;
&lt;h1&gt;Transfert autolargue&lt;/h1&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Vous vous souvenez probablement tous de Goldorak. Pour les rares ignorants, vous avez loupé quelque chose. Mais rien n&apos;est perdu, il vous suffit de trouver un &quot;un peu plus vieux&quot; que vous pour tout vous dire sur le sujet. En attendant, le mystère a fait grand bruit et ce matin, la pause café m&apos;a imposé un billet sur le sujet : le transfert autolargue.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=gx8KtPZsP6o[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Bon d&apos;avance, je remercie l&apos;auteur d&apos;&lt;a href=&quot;http://www.autolargue.net/&quot;&gt;autolargue.net&lt;/a&gt; pour les informations complémentaires que j&apos;ai pu y glaner et mon frangibus à l&apos;origine de bien des idées de conspirations. Donc oui, mais pourquoi deux demi-tours lors du transfert ?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;A l&apos;inverse de son ancètre &lt;a href=&quot;http://en.wikipedia.org/wiki/Mazinger_Z&quot;&gt;Mazinger Z&lt;/a&gt;, le navette de pilotage n&apos;est pas un modèle réduit s&apos;imbriquant dans le robot pour le contrôler. Ici, elle sert de module de vol pour le robot et s&apos;en sépare pour les combats directs. De fait, il fallait permettre à son pilote de se transférer du vaisseau vers le robot. De là est né le transfert autolargue : une fois le pilote transféré, le robot est automatiquement largué.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Mais lors de son tranfert, le siège du pilote tourne sur lui en deux temps pour opérer deux demi-tours. Nombres d&apos;hypothèses ont été avancées et Go Nagai, créateurs des sagas de robots géants &lt;em&gt;Mazinger&lt;/em&gt; et &lt;em&gt;Grendizer&lt;/em&gt;, y a répondu d&apos;une langue de bois inavouable pour éluder la question et garder la réponse toujours aussi secrète. Selon l&apos;annonce officielle, Actarus est bien trop prudent et préfère se retourner.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Or, Actarus ne décide de rien dans l&apos;histoire. En effet, Goldorak est le Golgoth le plus puissant de l&apos;armée de Vega et Actarus n&apos;est qu&apos;un vil voleur ayant soustrait le robot à ses propriétaires. Il n&apos;est donc clairement pas le créateur du robot et n&apos;a donc pas décidé de son fonctionnement ou des rouages du transfert. La réponse officielle du créateur de l&apos;animé n&apos;est donc pas viable. Reste à décortiquer la vidéo du transfert, de se souvenir de nos heures de Mécano et Lego, pour aboutir à de bien meilleures spéculations.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Primo, l&apos;ensemble des commandes (dont celle du transfert) est intégré au siège/nacelle dans lequel est installé le pilote. La seule commande permettant le transfert est une poignée à tirer. Personnellement, je me souviens de mes jouets (&lt;a href=&quot;http://www.youtube.com/watch?v=ODKXsE1ZtKY&quot;&gt;Mask&lt;/a&gt; en tête par exemple) où une gachette (ou un bouton) dévérouillait le mécanisme complet de transformation. On en demande peu au pilote, c&apos;est prédéfini. Simple mécanisme. D&apos;ailleurs l&apos;animation ne montre aucune autre commande à manipuler pendant le transfert (surtout au moment des demi-tours). L&apos;intervention humaine, encore une fois est à réfuter pleinement.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Secundo, la vidéo montre un double point important : le moment des deux demi-tours. L&apos;un se produit une fois le siège arrivé dans le corps du robot, l&apos;autre avant l&apos;entrée du siège dans la tête qui sert de centre de commande. Un élément est absent de la vidéo et impose une supposition : le tunnel de transfert est intégré au vaisseau et au robot. Mais quelle partie du tunnel reste dans le robot après ? Personnellement je dirais que le coude reste avec la soucoupe et, le reste avec le robot. Ce qui aide à la démonstration.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Tercio, la partie audio montre des bruits bien différents lors des rotations, ce qui suppose des mécanismes différents mis en place. Cela vient appuyer une thèse que la rotation est liée à la mécanique du transfert.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Tout m&apos;oriente vers ce qu&apos;on peut voir sur les plateaux rotatifs pour chemin de fer ou encore les puzzles glissants.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/07/ROCO-42615.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-1843&quot; title=&quot;Plateau rotatif de voies ferrées&quot; src=&quot;/assets/ROCO-42615-150x150.jpg&quot; alt=&quot;Plateau rotatif de voies ferrées&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/07/image003.jpg&quot;&gt;&lt;img class=&quot;alignnone size-thumbnail wp-image-1846&quot; title=&quot;Puzzle glissant&quot; src=&quot;/assets/image003-150x150.jpg&quot; alt=&quot;Puzzle glissant&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;L&apos;idée est donc que le mécanisme nécessite un déblocage ou un dégoupillage pour passer d&apos;un état à un autre. Dans le cas présent, le siège doit se désolidariser du rail de la soucoupe puis se solidariser au rail du robot pour finir par occuper le centre de commande.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Ainsi, le siège, à la fin de la descente, arrive sur un butoire qui le force à se retourner, un nouveau rail le prenant alors en charge. Arrivé à l&apos;entrée de la tête, le même type de mécanisme se reproduit pour le placer dans le bon sens. CQFD.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;La mécanique est donc simpliste, la conspiration absente et la prudence innocente. La simplicité de la raison serait-elle la cause de la langue de bois de Go Nagai ?&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Le premier générique de 78 en prime (mon préféré)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=dOO3LgzXdYg[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Et la version de Noam&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;[video]http://www.youtube.com/watch?v=SvDsjWerRug&amp;amp;feature=related[/video]&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;PS : c&apos;est la faute à Henley.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Météo : le jour d&amp;#039;après hier</title>
      <link href="https://francois.aichelbaum.com/2012/07/09/le-jour-dapres-hier" />
      <updated>2012-07-09T15:51:09+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/07/09/le-jour-dapres-hier</id>
      <content type="html">&lt;h2 id=&quot;on-est-en-novembre&quot;&gt;On est en novembre&lt;/h2&gt;

&lt;p&gt;&lt;img src=&quot;/assets/soleil-dorage-150x150.jpg&quot; alt=&quot;Soleil d&apos;orage&quot; /&gt;{.left} L’un des principaux sujets de discussion, où que l’on soit ces derniers jours, c’est la météo. Il n’est pas rare d’entendre des “Mais c’est quoi ce temps de novembre ?” ou de lire des articles sur la mauvaise météo comme si le temps se déréglait. Où encore le titre du jour du parisien : “&lt;a href=&quot;http://www.leparisien.fr/societe/l-ete-seulement-dans-le-sud-09-07-2012-2083370.php&quot;&gt;L’été … seulement dans le sud&lt;/a&gt;”. En étant en &lt;a href=&quot;http://www.imdb.com/title/tt1190080/&quot;&gt;2012&lt;/a&gt;, on arrive sûrement à la fin du monde …&lt;/p&gt;

&lt;h2 id=&quot;cest-la-fin-du-monde&quot;&gt;C’est la fin du monde&lt;/h2&gt;

&lt;p&gt;Lorsque je vois la pluie des derniers jours, ca me fait immédiatement penser au &lt;a href=&quot;http://www.imdb.com/title/tt0319262/&quot;&gt;Jour d’après&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Certains y voient des prémisses de fin du monde. D’autres, la fatalité de l’industrialisation du monde. L’&lt;a href=&quot;http://fr.wikipedia.org/wiki/Agent_Smith&quot;&gt;agent Smith&lt;/a&gt; lui, y voit les conséquences de l’existence du parasite humain. Bref, les théories sont nombreuses, toutes valables pour peu que l’on soit ouvert, aucune démontrée, pour autant, tout le monde sort sa science.&lt;/p&gt;

&lt;h2 id=&quot;on-sort-notre-science&quot;&gt;On sort notre science&lt;/h2&gt;

&lt;p&gt;Bon déjà, on vire la théorie des Mayas. Pour faire court, c’est un romancier (Steve Alten) qui a voulu se faire mousser en s’auto proclamant expert et, à coup de promotion nous a vendu sa prophétie.
Ensuite, replaçons aussi nos chers présentateurs TV à leur rang : les présentateurs de la météo ne sont pas des météorologues. Tout est dans leur titre : PRE-SEN-TA-TEUR. Alors, nous ressortir des statistiques comme cela leur chante, au final, on en revient à la manipulation de masse par les médias, tant adorée par les conspirationnistes et qui ici prend toute sa forme. Bref, passons.&lt;/p&gt;

&lt;h2 id=&quot;un-peu-de-concret&quot;&gt;Un peu de concret&lt;/h2&gt;

&lt;p&gt;Notre galaxie bouge dans l’univers. Notre système solaire bouge dans notre galaxie. Notre planète bleue bouge dans notre système solaire. Ce mouvement est à la fois sur une rotation ovoïdale autour du Soleil, mais également une rotation sur un axe en mouvement (rotation et bascule), axe dont l’inclinaison varie. La Lune aussi bouge. Tout bouge. Mais chacun de ces corps a une incidence sur l’autre. Les plus classiques et visibles, sont la météo et les marées par exemple.
Tout ceci pour en venir justement à ce que nous disaient nos chers Mayas (et autres civilisations anciennes, pré-colombiennes en tête) : tout est cycle dans le monde vivant. Ce qui fut dans un sens, sera dans un autre et inversement. L’axe de la Terre a pivoté plus d’une fois. De nombreuses ères glacières se sont succédées. Les saisons s’enchaînent. Lors d’une marée haute d’un côté, la marée est basse ailleurs. Les rivières sous marines tournent.
Ok très bien. Tout évolue. Pour autant si l’on suit les médias, la météo semble se dégrader de manière continue et irrémédiable, et les saisons ne plus être ce qu’elles devraient. Oui, mais. Oui tout ceci est un fait, mais parce que nous n’avons aucun recul du fait d’être “la tête dans le trou”, nous ne voyons réellement le pourquoi du comment. Oui il est sûr que l’industrialisation humaine a joué sur la vitesse de réchauffement du climat. Comme le dégazage sauvage de la part des dinosaures pourrait avoir causé &lt;a href=&quot;http://www.sciencesetavenir.fr/archeo-paleo/20120509.OBS5196/les-dinosaures-des-usines-a-methane.html&quot;&gt;leur perte&lt;/a&gt;. Mais justement, parce que tout est cycle, le changement est lent et progressif. Après tout, on parle de millions d’années pour les périodes de vies des sauriens contre quelques millénaires pour l’humanité. Que de relativité. Alors que dire de la météo actuelle à notre échelle. Une simple averse dans la longue vie de la Terre.
Alors que se passe-t-il ? une accumulation de choses, plus ou moins naturelles, plus ou moins aidées par l’Homme. Voici une petite liste non exhaustive, crédibles ou non.&lt;/p&gt;

&lt;h3 id=&quot;les-rivières-sous-marines&quot;&gt;Les rivières sous-marines&lt;/h3&gt;

&lt;p&gt;Une idée avancée par Wallace Broecker consiste en l’étude de lents courants sous marins chauds s’étendant à travers les divers océans, et ayant des cycles de 1500 ans.
Ces courants influeraient sur la météorolgie globale du fait des écarts de température entre les eaux, de leur mouvement global (à distination des pôles) … Le géochimiste explique d’ailleurs dans sa thèse que le courant aurait ralenti de près du tiers de sa vitesse en un siècle, ce qui pourrait avoir de grave répercussion sur la météo (entre autres choses).&lt;/p&gt;

&lt;p&gt;### L’industrialisation&lt;/p&gt;

&lt;p&gt;Que cela soit l’industrialisation au sens premier depuis le XIXe siècle ou encore les théories bio-écologiques concernant la production de la viande. Que cela soit les modes d’agricultures, ou encore la génération de méthane par les bovins. Il faut dire ce qui est : les proportions des gaz constituant l’air terrestre ont drastiquement changé en deux siècles et impliquent des changements important au niveau de l’éco système. Ce point est indéniable mais n’explique pas tout à lui seul.&lt;/p&gt;

&lt;h3 id=&quot;le-cycle-de-la-météo&quot;&gt;Le cycle de la météo&lt;/h3&gt;
&lt;p&gt;Je disais donc que tout était cycle. Au niveau météo aussi. Certes il nous manque des données scientifiques pour de grandes périodes, mais certaines données sont suffisantes pour extrapoler une hypothèse valable. Arnaud Lemaistre le rapportait dans un document intitulé “&lt;a href=&quot;https://docs.google.com/viewer?a=v&amp;amp;q=cache:lqXGG2RCU10J:www.palais-decouverte.fr/fileadmin/fichiers/infos_sciences/terre_univers/textes/286_Lemaistre.pdf+&amp;amp;hl=fr&amp;amp;gl=fr&amp;amp;pid=bl&amp;amp;srcid=ADGEESjMKW9896keXhpSow2o7Dy1inrM1HvuFt5LrkjuJS3yengENMUAA6ZYztLrrTxsoL4o-qwT32iDqwHBBmxIsXrP4e4oUw0DR6B73SVZHaa6PPN-alCXEfXS6MFW2lyszrdZCpsK&amp;amp;sig=AHIEtbR5N_WM3492FzRzLVJvKFKEqJeOPA&amp;amp;pli=1&quot;&gt;Chronologie climatique du dernier millénaire en Europe&lt;/a&gt;”. Ainsi, généralement, la température était bien plus basse avec un temps plus sec. D’ailleurs les hivers étaient plus marqués avec des températures négatives sur toute la période. Mais il y a eu une petite exception d’une trentaine d’année entre 1710 et 1740 où les températures sur l’année étaient équivalentes à celles d’aujourd’hui avant un brusque refroidissement. Notre situation n’est donc pas exceptionnelle, et l’époque citée permet d’innocenter temporairement la présumé-coupable industrialisation. De plus, l’augmentation sur le siècle concerné était de +1,9° contre “seulement” 0.6° pour le siècle dernier. Intéressant.
Dans le même ordre d’idées, certains ouvrages concernant l’époque moyennageuse rapportent des hivers en été et des étés en hiver. Difficile d’avoir des données concrètes cependant. La période de glaciation se produisit principalement avant le Xe siècle, les trois siècles suivant offrant une période chaude, propices aux voyages de nos cousins Vikings, par ex.
Enfin les périodes glacières s’étalent sur des périodes de 100.000 ans avec des périodes chaudes dites inter-glacières de 10.000 à 20.000 ans.&lt;/p&gt;

&lt;p&gt;### Autres causes&lt;/p&gt;

&lt;p&gt;Rapidement, une liste non exhaustive d’autres causes qu’on peut lire à gauche à droite :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;le changement d’axe de rotation de la Terre&lt;/li&gt;
  &lt;li&gt;les nazis planqués sur la &lt;a href=&quot;http://www.ironsky.net/+&quot;&gt;face cachée de la Lune&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;les ondes radios (téléphones, wifi, radios, TV, …) qui perturbent le champs magnétique terrestre&lt;/li&gt;
  &lt;li&gt;l’autre (c’est toujours la faute de l’autre)&lt;/li&gt;
  &lt;li&gt;le serpent qui se mort la queue : il fait de plus en plus chaud, donc fonte des calottes polaires donc réchauffement&lt;/li&gt;
  &lt;li&gt;la crise socio-économique (rah les banques et les traders !)&lt;/li&gt;
  &lt;li&gt;pratiques agricoles pour nourrir la population globale (enfin surtout le “Nord”)&lt;/li&gt;
  &lt;li&gt;les chinois islamistes du FBI&lt;/li&gt;
  &lt;li&gt;les cycles de l’activité solaire&lt;/li&gt;
  &lt;li&gt;42&lt;/li&gt;
  &lt;li&gt;la famille et les potes de Roswell&lt;/li&gt;
  &lt;li&gt;les changements géologiques (naturels ou humains) : désertification, déforestation, …&lt;/li&gt;
  &lt;li&gt;Obi-Wan Kenobi&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Je vous laisse faire le tri selon vos croyances ou compétences.&lt;/p&gt;

&lt;h2 id=&quot;quoi-quon-fait-&quot;&gt;Quoi qu’on fait ?&lt;/h2&gt;

&lt;p&gt;Tout et rien. Oui, il faut intervenir sur l’industrialisation qui peut se révéler plus que néfaste, mais elle ne peut supporter l’entière responsabilité des changements qui se produisent. On ne peut que constater un cumul entre les actions de la nature, les cycles et bien sûr l’intervention humaine ayant pour conséquence le changement, sa vitesse et son ampleur. Est-ce définitif ? La météo du XVIIIe siècle nous montre que non.
Alors profitez simplement de la vie. Profitez du soleil. Profitez de la neige. Profitez de la pluie. Qu’est ce que cela change que l’on soit en juillet ou mars ou que sais-je ? Adaptez-vous et profitez !
Pour finir, petit point qui me fait rire sur les écolos critiquant l’industrialisation : pour modéliser les différentes théories, les chercheurs utilisent les ordinateurs privés à la façon des projets Seti ou des projets sur le cancer … Seulement 150.000 ordinateurs qu’ils disent. Question, on les alimente avec quoi ? (question valable pour le rechargement des voitures électriques).&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>The Amazing Spider-Man : j&amp;#039;ai une araignée au plafond</title>
      <link href="https://francois.aichelbaum.com/2012/07/05/jai-une-araignee-au-plafond" />
      <updated>2012-07-05T23:37:59+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/07/05/jai-une-araignee-au-plafond</id>
      <content type="html">&lt;h2 id=&quot;un-redémarrage-nécessité-&quot;&gt;Un redémarrage nécessité ?&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;/assets/spider-man-revele-identite-grd-150x150.jpg&quot; alt=&quot;Spider-Man révèle son identité&quot; /&gt;{.left} Alors qu’une première trilogie s’était affichée sur nos écrans entre 2002 et 2007 avec un &lt;a href=&quot;http://www.imdb.com/name/nm0001497/&quot;&gt;Tobey Maguire&lt;/a&gt; en guise de Peter Parker/Spiderman peu convaincant dans le costume, Sony Pictures remet le couvert avec un redémarrage complet de la license. Cette fois-ci, c’est &lt;a href=&quot;http://www.imdb.com/name/nm1940449/&quot;&gt;Andrew Garfield&lt;/a&gt; qui revêt la tenue rouge et bleue de l’homme araignée. Personnellement, vu les derniers comics, je pensais que Sony aurait suivi l’orientation de Marvel avec un &lt;a href=&quot;http://hoodedutilitarian.com/wp-content/uploads/2012/06/1.jpg&quot;&gt;Peter Parker afro-américain&lt;/a&gt;. Mais il faut croire que l’ouverture n’aurait pas aidé aux entrées en salles.   Sam Raimi avait accompli un superbe travail sur la précédente saga étalée sur la dernière décennie. Pas sûr qu’un redémarrage soit si nécessaire. Pour autant, quelques corrections étaient à apporter et la nouvelle saga en approche se propose de les corriger.&lt;/p&gt;

&lt;h2 id=&quot;du-gros-spectacle&quot;&gt;Du gros spectacle&lt;/h2&gt;

&lt;p&gt;Des erreurs corrigées, il y en a … Pourquoi Peter repliait seulement deux de ses doigts pour tisser sa toile ? Simplement pour déclencher un appareil de sa création qui la tisse ; non, ce n’est pas lui qui la “produit”. Mary-Jane ? Non ils ne se sont pas connus au lycée ; c’est Tante May qui voulait à tout pris le caser bien plus tard, son pauvre chéri au coeur brisé. Où accroche-t-il sa toile pour voler ? Simplement aux grues qu’on lui sert sur un plateau ; non ca ne tient pas dans le vide. Attention, on nous annonce non plus Spider-man mais The Amazing Spider-man et il va être époustouflant.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Cependant, ici aussi, quelques erreurs sont faites : cartographie de NYC, rencontre avec Curt Connors/The Lizard, absence d’Harry Osborn, … et surtout absence de LA phrase résumant la conscience de notre amical arachnide : “A grand pouvoir, grande responsabilité”. On a bien un simulacre de phrase pour nous la rappeler, mais le poids des mots n’y est pas. Dommage.
Dommage aussi la longue introduction, qui semble ramener le film à un teenage-movie lycéen. Mais, place au spectacle.
On commencera par apprécier le casting avec un très vieillissant Martin Sheen en Uncle Ben (non pas &lt;a href=&quot;https://www.youtube.com/watch?v=y_EiyNv2NS0&quot;&gt;Uncle Ben’s&lt;/a&gt;, ni &lt;a href=&quot;https://www.youtube.com/watch?v=C4XKNNl31Gc&quot;&gt;Ben l’Oncle Soul&lt;/a&gt;) - cela reste toujours un succès ; un charismatique &lt;a href=&quot;http://www.imdb.com/name/nm0406975/&quot;&gt;Rhys Ifans&lt;/a&gt; que l’on a pu voir récemment en James Hook dans &lt;a href=&quot;http://www.imdb.com/title/tt1720619/&quot;&gt;Neverland&lt;/a&gt; (mini série de Sy-Fy relatant la génèse de Peter Pan) ou en tant qu’un des sorciers dans &lt;a href=&quot;http://www.imdb.com/title/tt0926084/&quot;&gt;Harry Potter et les reliques de la Mort&lt;/a&gt; ; une sexy Emma Stone très appréciée dans &lt;a href=&quot;http://www.imdb.com/title/tt0926084/&quot;&gt;Zombieland&lt;/a&gt;.
Heureusement, le film ne se résume pas seulement à son casting ou à son introduction pubère à rallonge. Ses deux heures quinze se chargent de nous en mettre plein les mirettes pour nous faire oublier le travail de Sam Raimi. Et il faut dire que le spectacle est là, se déguste, le pop-corn disparaît bien trop vite et les acrobaties de l’araignée nous comble. Andrew nous fait d’ailleurs vite oublier un Tobey Maguire qui donnait une image niaise à Peter Parker.
La réal tient la route. Graphiquement, on en prend plein la vue. L’histoire est agencée dans une optique de saga à nous distiller longuement les secrets de l’univers. J’avais apprécié la précédente saga : je sens que je vais adoré la nouvelle saga qui s’amorce depuis hier dans les salles obscures.
Allez, pour la route, je vous laisse découvrir un &lt;a href=&quot;https://www.youtube.com/watch?v=tfeoz2QPhVU&quot;&gt;petit plaisir personnel du soir&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/the_amazing_spider-man.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/the_amazing_spider-man.jpg 480w,/assets/resized/800/the_amazing_spider-man.jpg 800w,/assets/resized/1400/the_amazing_spider-man.jpg 1400w, /assets/the_amazing_spider-man.jpg 1920w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Olala, pfff, je suis parisien !</title>
      <link href="https://francois.aichelbaum.com/2012/07/05/how-to-become-parisian-in-one-hour" />
      <updated>2012-07-05T11:29:34+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/07/05/how-to-become-parisian-in-one-hour</id>
      <content type="html">&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/2012/07/05/olala-pfff-je-suis-parisien/&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-1786&quot; title=&quot;How to become Parisian in one hour&quot; src=&quot;/assets/78304-flyer-htbp-tdn-150x150.jpg&quot; alt=&quot;How to become Parisian in one hour&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Vous vous souvenez certainement de ma revue de &lt;a href=&quot;http://francois.aichelbaum.com/2012/05/03/etre-parisien-cest-etre-un-eternel-incompris/&quot;&gt;How to become parisian in one hour&lt;/a&gt; d&apos;Olivier Giraud ? Après avoir fait salle comble pendant 3 ans au théatre de la Main d&apos;Or, il revient, dans une salle bien plus grand, le théatre des Nouveautés pour au moins un an. Il y fait encore le plein. On y rit encore et toujours pendant toute l&apos;heure. Je crois qu&apos;il faut que j&apos;y retourne encore pour un autre shooting. Petit reportage photo ...&lt;!--more--&gt;&lt;/p&gt;
&lt;p&gt;PS: Olivier, pour l&apos;exercice final, tu devrais faire monter un étranger pour jouer le parisien et un parisien pour jouer l&apos;étranger.&lt;/p&gt;
&lt;p&gt;[print_gllr id=1660]&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Les moines danseurs de Majuli</title>
      <link href="https://francois.aichelbaum.com/2012/07/03/les-moines-danseurs-de-majuli" />
      <updated>2012-07-03T19:55:36+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/07/03/les-moines-danseurs-de-majuli</id>
      <content type="html">&lt;h1&gt;&lt;strong&gt;Sattriya – danse sacrée (Assam, Inde du nord-est)&lt;/strong&gt;&lt;/h1&gt;
&lt;h2&gt;&lt;strong&gt;Spectacle conçu et dirigé par Bhabananda Barbayan&lt;/strong&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;&lt;a href=&quot;http://francois.aichelbaum.com/wp-content/uploads/2012/07/Flyer-Majuli-681x1024.jpg&quot;&gt;&lt;img class=&quot;alignleft size-thumbnail wp-image-1516&quot; title=&quot;Les moines danseurs de Majuli&quot; src=&quot;/assets/Flyer-Majuli-681x1024-150x150.jpg&quot; alt=&quot;Les moines danseurs de Majuli&quot; width=&quot;150&quot; height=&quot;150&quot; /&gt;&lt;/a&gt;Depuis dix ans, le sattriya fait officiellement partie des huit danses classiques principales de l’Inde. Sattriya vient du mot « sattra » qui désigne les monastères hindouistes de l’Assam (nord-est de l’Inde) fondés au XVème siècle par le maître Srimanta Sankardeva (1449-1568). La danse sattriya fut créée pour accompagner les Ankiya Naat, une forme locale de théâtre dévotionnel consacré aux épisodes de la vie de Krishna et Rama.&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot;&gt;Les moines danseurs de Majuli constituent aujourd’hui la meilleure troupe de sattriya de l’Assam. Artiste au charisme exceptionnel, Bhabananda Barbayan figure parmi les danseurs les plus primés dans sa discipline. Héritier d’une transmission ininterrompue depuis cinq siècles dans les monastères, il guide les moines danseurs de Majuli au-delà des frontières des sattras, de l’Assam et de l’Inde. De magnifiques lampas (lés de soie) de l’Assam datés des XVIème/XVIIIème siècles conservés au musée Guimet seront le fil conducteur de ce nouveau spectacle. Les lampas ont été conçus du vivant du fondateur du sattriya et nous en montrent l’exacte origine : la vie de Krishna, les avatars de Vishnu, Narasimha (homme-lion), les aventures de Ram, Sita, Hanuman (singe), Ravana (démon), etc. Souhaitant apporter un souffle nouveau à la tradition tout en préservant le style chorégraphique propre au sattriya, Bhabananda Barbayan a intégré ces soieries dans la scénographie. Il a notamment opéré d’importants changements dans la création des masques et des costumes, inchangés depuis des siècles. Le plaisir de découvrir le sattriya classique dans sa forme la plus pure se mêlera à la magie de voir les personnages des soieries anciennes prendre vie grâce à la danse, la musique, le chant, le jeu d’acteur et les masques.&lt;/p&gt;
&lt;p&gt;Plus d&apos;information sur leur tournée, sur &lt;a href=&quot;http://majulitour.com/&quot;&gt;Majitour&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;[print_gllr id=1513]&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Le texte provient du site du &lt;a title=&quot;Musée Guimet - Les moines danseurs de Majuli&quot; href=&quot;http://www.guimet.fr/fr/auditorium/spectacles/les-moines-danseurs-de-majuli&quot; target=&quot;_blank&quot;&gt;musée Guimet&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Okay café : crêpe à l&amp;#039;eau</title>
      <link href="https://francois.aichelbaum.com/2012/06/29/crepe-a-leau" />
      <updated>2012-06-29T18:43:35+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/06/29/crepe-a-leau</id>
      <content type="html">&lt;p&gt;Avec une météo mitigée qui nous rappelle la Bretagne, pourquoi ne pas manger une crêpe, mais les pieds dans l’eau ? C’est ce que nous propose l’&lt;a href=&quot;https://maps.google.fr/maps?f=q&amp;amp;source=s_q&amp;amp;hl=fr&amp;amp;geocode=&amp;amp;q=okay+caf%C3%A9,+paris&amp;amp;aq=&amp;amp;sll=46.75984,1.738281&amp;amp;sspn=14.426196,33.815918&amp;amp;vpsrc=0&amp;amp;ie=UTF8&amp;amp;hq=okay+caf%C3%A9,+paris&amp;amp;hnear=&amp;amp;radius=15000&amp;amp;t=m&amp;amp;z=13&amp;amp;iwloc=A&amp;amp;cid=2367635947479408110&quot;&gt;Okay Café&lt;/a&gt;, situé sur le canal de l’Ourcq à Paris.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/okay_cafe.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/okay_cafe.jpg 480w, /assets/okay_cafe.jpg 500w&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;ambiance&quot;&gt;Ambiance&lt;/h2&gt;

&lt;p&gt;Le cadre, extérieur comme intérieur, fait plaisir : le restaurant et sa terrasse sont posés sur les quais du canal avec une déco simple mais plaisante. On est vraiment les pieds dans l’eau et à part la pollution, on pourrait se croire à la mer (merci les mouettes parisiennes). Petit plus vu le volume disponible, un coin jeu pour les gamins est prévu à l’intérieur. De quoi ravir tout le monde. L’équipe quand à elle est disponible et vraiment agréable, bien que non bretonne : personne n’est parfait !&lt;/p&gt;

&lt;h2 id=&quot;nourriture-et-boisson&quot;&gt;Nourriture et boisson&lt;/h2&gt;
&lt;p&gt;Niveau prix, la carte annonce des tarifs dans la moyenne ce qui est agréable avec des crêpes entre 9 et 13€. Dans cette ligne directrice de la moyenne, le goût et la garniture des crêpes se développent : ni exceptionnel ni mauvais. A croire que le cadre devrait tout faire. Dommage car une garniture plus fournie ou des ingrédients aux goûts plus marqués auraient fait un énorme plus.
Par contre, le cidre fermier se boit très bien, et sa fraîcheur fait du bien avec les chaleurs (rares ?) des derniers jours.
Au final, une crêperie agréable au cadre parfait pour les petits restos d’été à Paris.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>The Dictator : Aladeen a dit : &amp;quot;Aladeen !&amp;quot;</title>
      <link href="https://francois.aichelbaum.com/2012/06/26/aladeen-a-dit-aladeen" />
      <updated>2012-06-26T11:06:32+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/06/26/aladeen-a-dit-aladeen</id>
      <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/aladeen-150x150.jpg&quot; alt=&quot;Aladeen&quot; /&gt;{.left} &lt;em&gt;Imaginez que l’Amérique soit une dictature. Vous pourriez laisser 1% des gens posséder toutes les richesses du payer. Vous pourriez laisser vos amis s’enrichir en baissant leurs impôts et combler leurs pertes. Vous pourriez interdire aux pauvres les remboursements de santé et l’éducation. Vos médias seraient entièrement libres mais aux mains d’une seule personne et sa famille. Vous pourriez torturer des prisonniers étrangers. Vous pourriez trafiquer les élections. Vous pourriez mentir sur les raisons d’aller en guerre. Vous pourriez remplir vos prisons avec un groupe particulier de personnes et personne ne s’en plaindrait. Vous pourriez utiliser les médias pour effrayer les gens pour qu’ils supportent une politique qui va à l’encontre de leurs intérêts.&lt;/em&gt;” … Oui, ne faisons qu’imaginer.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Après tout, Kim Jong-Il considère que ce film est de la bombe. Alors pouvons-nous être d’accord avec un dictateur ? Mis à part leur complexe de supériorité, leur délire psychotique, leur démesurée ridicule (je vous laisse comprendre), ce sont des hommes comme les autres … Nous sommes d’accord sur notre désaccord. Ce film est de la bombe. Mais les dictateurs ne sont pas comme vous et moi. Quoi qu’ils sont peut-être comme moi (concernant leur égo) : bah oui, ce n’est pas moi qui vais être comme eux !
Comment résister aux explosions de rire que nous confère le film tout au long de sa petite heure et demie. &lt;a href=&quot;http://www.imdb.com/name/nm0056187/&quot;&gt;Sacha Baron Cohen&lt;/a&gt; enfile le costume du dictateur Aladeen regroupant tous les stéréotypes médiatiques des dictateurs récemment tombés ou morts. Un dictateur inculte, champion de ses propres JO, acteur oscarisé à de multiples reprises à sa propre remise de prix pour ses propres films, aimé d’un pays &lt;em&gt;motivé&lt;/em&gt; à l’aimer, … Aladeen est parfait en tout point. Tout lui réussit s’il l’a décidé. Sinon … couic …
Reste que le pouvoir attire toujours la convoitise, surtout de ceux qui veulent en plus l’argent. Et là, c’est le drame. Le voyage politique à New York se transforme en putsch presque raté qui nous offre l’une des meilleures comédies de l’année, dans la droite ligne de ce que nous avait offert Borat et son voyage en Amérique profonde. Les stéréotypes sont amplifiés. La bien pensante amérique malmenée. La politique bénéfique ridiculisée. Et bien sûr, l’argent ne fait pas le bonheur mais achète tout le monde, les artites en tête de liste (&lt;a href=&quot;http://www.imdb.com/name/nm1083271/&quot;&gt;Megan Fox&lt;/a&gt;, &lt;a href=&quot;http://www.imdb.com/name/nm0001570/&quot;&gt;Edward Norton&lt;/a&gt;, …)
Aladeen nous offre donc un film Aladeen. Il est donc Aladeen d’aller le voir pour s’Aladeen de rire. Un avis Aladeen sans Aladeen. Juste Aladeen.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/the_dictator_2012.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/the_dictator_2012.jpg 480w, /assets/the_dictator_2012.jpg 560w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Dias de Gracia : Coup de sifflet final</title>
      <link href="https://francois.aichelbaum.com/2012/06/20/coup-de-sifflet-final" />
      <updated>2012-06-20T12:01:03+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/06/20/coup-de-sifflet-final</id>
      <content type="html">&lt;p&gt;Hier soir, le Mexique nous a offert un match de haut rang : le Mexique ensoleillé de la carte postale contre le Mexique violent de la réalité. Le match s’annonçait dur, sauvage, animé. Deux heures de spectacle où les aficionados des Coupes du Monde &lt;a href=&quot;http://fr.wikipedia.org/wiki/Coupe_du_monde_de_football_de_2002&quot;&gt;2002&lt;/a&gt;/&lt;a href=&quot;http://fr.wikipedia.org/wiki/Coupe_du_monde_de_football_de_2006&quot;&gt;2006&lt;/a&gt;/&lt;a href=&quot;http://fr.wikipedia.org/wiki/Coupe_du_monde_de_football_de_2010&quot;&gt;2010&lt;/a&gt; étaient les seuls à comprendre le rythme effréné. Ce fut un jour de grâce pour les joueurs. Ce fut leur &lt;a href=&quot;http://www.imdb.com/title/tt1450320/&quot;&gt;Dias de Gracia&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Destins croisés entre un jeune boxeur désabusé et perdu, un flic hyper motivé et très manichéen et un otage de la haute. Le tout narré au long de 8 ans, rythmé par les coupes du mondes qui servent de point de repère temporel. Autant dire qu’un néophyte en foot se perdra très vite. Le match s’averrant bien long avant le dénouement permettant de tout remettre à sa place.
Dans un pays qu’on dépeint souvent avec son soleil, sa téquilla ou son shivas, ses plages au Spring Break, nous découvrons un envers du décors bien plus violent ou la corruption est reine et fait partie, avec sa soeur &lt;em&gt;violence&lt;/em&gt;, du quotidien de tout à chacun. Qui sont les arbitres ? Y en a-t-il vraiment ? Qui contrôle quoi ? Quelle est la vraie vie de chacun ? Un grand médecin (&lt;a href=&quot;http://www.serieslive.com/serie/dr-house/386/&quot;&gt;Dr. House&lt;/a&gt; pour ne pas le citer) nous disait : “Tout le monde ment”. C’est bien là le soucis, dans ce pays totalement perdu où il est si facile de se perdre soi-même.
L’action est ultra nerveuse. La caméra affolée. L’ambiance sur-chauffée. On accroche très vite. Et pour moi, qui suis anti-foot et donc sans connaissances réelles sur les Coupes du Monde, j’ai quelque peu souffert de la chronologie décousue et rafistolée à coup d’annonces de match à la radio ou d’images rapides à la TV. Ca m’a presque gâché le plaisir. Le concept est là. La qualité aussi. On sent que le Mexique vit pour le foot par moment et c’est dommage pour certains d’entre nous. Pour autant, à voir et à subir. Coup de sifflet de fin.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/DiasdeGracia.jpg&quot; title=&quot;&quot; srcset=&quot; /assets/DiasdeGracia.jpg 450w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Blanche Neige et le chasseur : neige sombre et le miroir pas si enchanté</title>
      <link href="https://francois.aichelbaum.com/2012/06/19/snow-dark-et-le-miroir-pas-si-enchante" />
      <updated>2012-06-19T15:35:29+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/06/19/snow-dark-et-le-miroir-pas-si-enchante</id>
      <content type="html">&lt;p&gt;Il est bon de croire que cette année audio-visuelle (saison 2011-2012) est celle des reprises de contes. Après tout, la télévision nous a offert &lt;a href=&quot;https://www.youtube.com/watch?v=uar1rWVAJV0&quot;&gt;Grimm&lt;/a&gt; et &lt;a href=&quot;https://www.youtube.com/watch?v=15__iA1MTqc&quot;&gt;Once upon a time&lt;/a&gt;, deux séries prometteuses (et prolongées), alors que le cinéma nous offre deux versions de Blanche Neige en moins de deux mois (&lt;em&gt;&lt;a href=&quot;http://www.imdb.com/title/tt1667353/&quot;&gt;1&lt;/a&gt; et &lt;a href=&quot;http://www.imdb.com/title/tt1735898/&quot;&gt;2&lt;/a&gt;&lt;/em&gt;). Et ce, sans parler des adaptations distribuées directement en vidéo. Pour autant, chaque version apporte sa touche au conte. Cette fois-ci, on s’intéresse à la version sombre.&lt;!--more--&gt;&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;On a tous en tête au moins la version de &lt;a href=&quot;https://www.youtube.com/watch?v=eyjc8txuG44&quot;&gt;Disney&lt;/a&gt;. Coloré, (en)chantant, … Disons que les &lt;em&gt;Bisounours&lt;/em&gt; ont muri et se racontent trop d’histoire en étant beurrés. Ca devient sombre, glauque et presque sale. C’est un peu le même effet que la Marâtre opère sur son monde. De toutes les versions &lt;em&gt;live&lt;/em&gt; du conte qu’on ait pu voir à l’écran, il est une chose certaine, c’est que Charlize Theron est LA reine dont il faut se souvenir : magnifique, imposante, ensorcellante, puissante … Pour autant, sa beauté est une tragédie pour son monde.
A moins que sa &lt;em&gt;Dear, Dear Snow White&lt;/em&gt; puisse tous les sauver. Et là, c’est le drame. Blanche Neige est censée être belle, pleine de vie, souriante, chantante … Oui, le film nous dit qu’elle est la Vie et que la Nature l’aime. Mais, il y a un énorme hic. On nous impose la morne Kristen Stewart qui a bien du mal à sourire même pour les plus belles choses (rien que son sourire forcé du dernier écran est bien douloureux). Puis bon, on est dans une version “sombre”, alors il faut qu’elle devienne guerrière pour que ca saigne ! Là encore, c’est le drame : elle se veut meneuse d’hommes. Pour un conte anti féministe quelque part, où la femme ne vaut que pour sa beauté éphémère (voir la tirade de Charlize Theron à ce sujet), clairement le monde est peuplé de Simplet. Quelques battement de cils, et la pire harangue pour motiver les troupes de tous les temps suffit à tous les motiver à se faire trucider.
Bien sûr, le titre du film nous en prévient, elle est assistée du Chasseur. Pour camper le rôle, c’est Thor (Chris Hemsworth) qui s’y colle. A croire qu’il est séduit par les petites brunettes, le Viking… Alors attention, cette fois-ci, on ne lui demande pas d’être (juste) musclé, ni humaniste, mais aussi d’avoir un coeur d’artichaut. Il en est bien affaiblit le grand gaillard. Son jeu aussi.
&lt;em&gt;Mirror, Mirror on the wall&lt;/em&gt; est lui quasi transparent. On a beau le voir, planté là, imposant de son reflet d’or, pour autant … il aurait pu être ailleurs, ca n’aurait pas été bien grave. C’est comme le bon “Prince” qui n’est plus que simple fils de Duc et qui, à part vouloir jouer au docteur avec la Princesse, ne sert plus à grand chose. Par contre, les septs nains, et les acteurs choisis (Bob Hoskins, Ian McShane, Toby Jones, Eddy Marsan, Nick Frost, …), sont tout bonnement parfaits dans leurs rôles. Par contre, si vous vous mettez à siffloter en vous &lt;em&gt;remettant au boulot&lt;/em&gt; (&lt;em&gt;getting back to/from work&lt;/em&gt;), vous risquez de vous faire décapiter par Grincheux.
Au final, une affiche prometteuse pour nous oublier la version colorisée avec Julia Roberts, un casting qui serait parfait avec une autre Blanche Neige, de beaux écrans, une bande son bien sympa, des nains sur puissants … Ce film avait tout pour être un bon. Mais l’actrice et l’adaptation en lui même du rôle de Blanche Neige font tâche et pourraient gâcher le film. Heureusement, la reine Ravenna nous permet de passer un bon moment et compense ce raté.
Au passage, pour ceux que ca intéresse, un peu de culture, ca ne fait pas de mal donc on demande à notre ami &lt;a href=&quot;http://fr.wikipedia.org/wiki/Blanche-Neige&quot;&gt;Wikipedia&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/SnowWhiteHuntsman.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/SnowWhiteHuntsman.jpg 480w, /assets/SnowWhiteHuntsman.jpg 640w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>21 Jump Street : l&amp;#039;abus de drogue est dangereux pour la santé</title>
      <link href="https://francois.aichelbaum.com/2012/06/15/labus-de-drogue-est-dangereux-pour-la-sante" />
      <updated>2012-06-15T14:07:49+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/06/15/labus-de-drogue-est-dangereux-pour-la-sante</id>
      <content type="html">&lt;p&gt;Il y aura un avant et un après 6 juin 2012. La sortie d’un film a scindé le monde en deux catégories : les vieux et les jeunes. Les vieux, ce sont ce qui regardait la TV le samedi matin dans les années 80/90 pour regarder les exploits de jeunes flics infiltrant les lycées pour démenteler des réseaux de drogues ou attraper des violeurs. Les jeunes, ce sont ces gens de la génération Z, qui n’ont pas connu tout ca. Après ce 6 juin 2012, les premiers se drogueront pour oublier, les derniers continueront à se droguer.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Ce film c’est l’adaptation ciné de &lt;a href=&quot;http://www.imdb.com/title/tt1232829/&quot;&gt;21 Jump Street&lt;/a&gt; (&lt;a href=&quot;http://www.imdb.com/title/tt0092312/&quot;&gt;rappel de la série d’origine&lt;/a&gt;). A la base, la bande annonce m’avait décidé à fuir le film. Au final, Henley confirmant que j’avais raison de le faire a titillé ma curiosité : il est bien connu que j’ai toujours raison mais de là à avoir raison sans savoir … Il fallait que je juge sur pièce.
Pour moi, &lt;em&gt;21 Jump Street&lt;/em&gt;. ce sont les aventures d’&lt;a href=&quot;http://www.imdb.com/name/nm0005372/&quot;&gt;Hoffs&lt;/a&gt;, &lt;a href=&quot;http://www.imdb.com/name/nm0629006/&quot;&gt;Ioki&lt;/a&gt;, &lt;a href=&quot;http://www.imdb.com/name/nm0217938/&quot;&gt;Penhall&lt;/a&gt; et bien sûr &lt;a href=&quot;http://www.imdb.com/name/nm0000136/&quot;&gt;Hanson&lt;/a&gt;, le tout orchestré par le &lt;a href=&quot;http://www.imdb.com/name/nm0931736/&quot;&gt;Capitaine Fuller&lt;/a&gt;, ces jeunes officiers s’infiltrant dans les écoles pour parler de choses sérieuses sur un ton sérieux limite sombre et moralisateur, dans une amérique en délabrement. Mais aujourd’hui le sérieux n’est pas vendeur. Par contre des &lt;em&gt;teenage movies&lt;/em&gt; à la &lt;a href=&quot;http://www.imdb.com/title/tt1636826/&quot;&gt;Project X&lt;/a&gt;, ca c’est vendeur. Pour le reste, c’est le Deputy Chief Hardy qui nous l’explique.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Nous réactivons un ancien service d’infiltrations policières mis sur pieds dans les années 80 et nous le mettons à l’heure d’aujourd’hui.
Voyez vous, les gens chargés de ces services n’ont aucune créativité et sont totalement à court d’idées alors tout ce qu’ils savent faire c’est recycler de vieux trucs du passé et espérer que personne ne re-marquera rien.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Voilà tout est dit : une license à succès existe et il y a surement moyen de s’en mettre plein les poches 20 ans après l’arrêt de la série. Ca sent la parodie à plein nez, le teenage movie sur joué (et mal joué), l’ambiance &lt;em&gt;m’as-tu vu&lt;/em&gt; des banlieues chics, l’absence complète de caractère … Et une fois qu’on a passé le quart d’heure d’intro en se forçant à supporter le film, on prend notre rail pour voir un ce navet qu’il faudrait renier. D’ailleurs, je me demande comment les acteurs de la série ont pu accepter d’y participer (Peter DeLuise, Holly Robinson et surtout Johnny Depp) ! D’ailleurs, la chapelle n’est plus la même … Et on se coltine un Christ Coréen, &lt;em&gt;qui n’a pas le temps de s’ocupper de vos conneries, il a déjà bien à faire avec ses merdes coréennes&lt;/em&gt;.
L’usage de la license n’est qu’un prétexte éhonté pour une sur-enchère devenue habituelle sur grand écran, où rien n’est fait pour être sérieux. D’ailleurs, plus d’une fois, j’avais l’impression de revoir &lt;a href=&quot;https://www.youtube.com/watch?v=Q6hwjSXUUv8&quot;&gt;News Kids Turbo&lt;/a&gt;. On pourrait se dire que la méthode est là pour faire assimiler à la génération Z certains concepts quant à l’utilisation de la drogue. Mais même là, c’est loupé et la morale échappe à tout contrôle. Décevant en tout point. Et dire qu’ils se sont laissé une porte ouverte à une suite.
Les rares bons points selon moi de ce film ?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;la voiture&lt;/li&gt;
  &lt;li&gt;la présence des anciens (encore une fois, le duo Penhall/Hanson est à savourer)&lt;/li&gt;
  &lt;li&gt;le générique de fin&lt;/li&gt;
&lt;/ul&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Vous voulez aller le voir ? si vous êtes “vieux”, droguez-vous, sinon, droguez vous.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/21jump.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/21jump.jpg 480w, /assets/21jump.jpg 674w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Les filles ne comptent pas pour des pêches</title>
      <link href="https://francois.aichelbaum.com/2012/06/11/les-filles-ne-comptent-pas-pour-des-peches" />
      <updated>2012-06-11T11:22:25+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/06/11/les-filles-ne-comptent-pas-pour-des-peches</id>
      <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/peche-150x150.jpg&quot; alt=&quot;peche&quot; /&gt;{.left} Ah, la cérémonie du mariage : les sourires (faux-culs ?), la boisson, les histoires, … les demoiselles d’honneur qui détestent toutes la mariée …
C’est ainsi que nous faisons la connaissance de cinq demoiselles d’honneur, au fil de la pièce d’Alan Ball, &lt;a href=&quot;http://www.billetreduc.com/66954/evt.htm&quot;&gt;5 filles couleur pêche&lt;/a&gt;. Entre alcool et joints, déboires amoureux, vies sexuelles &lt;em&gt;compliquées mais débridées&lt;/em&gt;, relations avec la mariée, hommes à femmes, … elles nous font vivre leurs sentiments et ressentiments. Tous les sujets y passent, même les plus sérieux, déclenchant l’hilarité du public.&lt;!--more--&gt;
Comment garder son sérieux quand on les voit toutes plus folles les unes que les autres, rêvant de leurs ébats dans les poubelles ou utilisant la religion comme excuse à tout et surtout à la niaiserie. On ne peut que se rompre de rire de leurs extravagances et leurs folies.
Personnellement, la seule critique que je ne me suis pas gêné de dire aux filles : c’est trop court, on avait encore le temps !
Il ne vous reste qu’une seule et unique représentation parisienne, le 24 juin. C’est au &lt;a href=&quot;https://maps.google.fr/maps?f=q&amp;amp;source=s_q&amp;amp;hl=fr&amp;amp;geocode=&amp;amp;q=sonart,+paris&amp;amp;aq=&amp;amp;sll=46.75984,1.738281&amp;amp;sspn=14.426196,33.815918&amp;amp;vpsrc=0&amp;amp;ie=UTF8&amp;amp;hq=sonart,&amp;amp;hnear=Paris,+%C3%8Ele-de-France&amp;amp;ll=48.871151,2.356396&amp;amp;spn=0.054084,0.132093&amp;amp;t=m&amp;amp;z=14&amp;amp;iwloc=A&amp;amp;cid=2439162054154969027&quot;&gt;Sonar(t)&lt;/a&gt; à Pigalle, c’est gratuit (enfin boisson obligatoire et chapeau pour les filles). A voir. Sinon, vous pourrez les suivre à Avignon cet été !&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/5filles.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/5filles.jpg 480w, /assets/5filles.jpg 700w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Prometheus : promettez nous de ne pas crier dans l&amp;#039;espace</title>
      <link href="https://francois.aichelbaum.com/2012/06/10/promettez-nous-de-ne-pas-crier-dans-lespace" />
      <updated>2012-06-10T13:26:44+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/06/10/promettez-nous-de-ne-pas-crier-dans-lespace</id>
      <content type="html">&lt;p&gt;A la question “qui sont nos créateurs ?”, il est maintenant dans la culture populaire de croire que nos anciennes civilisations avait la réponse : nos dieux-créateurs étaient des extraterrestres. Dans ces conditions, si vous trouvez la route pour aller leur passer un petit coucou, pourquoi ne pas le faire ? C’est ce que nous propose &lt;a href=&quot;http://www.imdb.fr/name/nm0000631/&quot;&gt;Ridley Scott&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Comment parler de la polémique du film sans spoiler ou sans critique les cinéphiles du dimanche ? Tout simplement en une phrase : “si ca en a le goût, si ca y ressemble, si ca a la consistance et si ca vient de la même bestiole, c’est que c’en est”. Ca c’est dit. Passons.
L’intro du film, j’ai mis 24 heures a réellement en comprendre tout le sens et franchement, c’est abusé. On nous la balance à la figure, on s’attend à quelque chose, puis d’un revers de main on passe à autre chose qui n’a aucun lien. Ridley, si tu me lis, c’est la première fois que tu me déboussoles et me perds ainsi : je suis surpris mais surtout déçu.
Quoiqu’il en soit, l’art visuel est là : l’image est belle, l’action net, les couleurs dépaysantes, la bande son ennivrante. Mais est-ce suffisant pour nous empêcher de crier ? Pas sûr.
Vingt cinq ans avant les mésaventures du Nostromo, le Prometheus part à la rencontre de nos créateurs et ne trouvera que notre fin. Découvrir ce monde de création et de destruction offre tellement de possibilité de terreur que les sentiments autres n’y trouve pas leur place. D’ailleurs, c’est le capitaine qui nous le fait remarquer : “Etes-vous humaine ?” On explore donc cette planète, les poils hérissés pour certains, les mains crispées pour d’autres, les doigts pleines du caramel des popcorns pour les derniers. Le voyage promis est là.
Une jolie carte postale d’horreur spatiale que l’on se plait à voir.
Mais souvenez-vous :&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Dans l’espace, personne ne vous entendra crier.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Bon pour le spoil : non ce n’est pas un clin d’oeil, &lt;strong&gt;bande d’ignards&lt;/strong&gt; !&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/Prometheus.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/Prometheus.jpg 480w, /assets/Prometheus.jpg 800w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Blend : Le burger se fait gourmet</title>
      <link href="https://francois.aichelbaum.com/2012/06/10/le-burger-se-fait-gourmet" />
      <updated>2012-06-10T13:04:59+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/06/10/le-burger-se-fait-gourmet</id>
      <content type="html">&lt;p&gt;La France a eu sa mode du restaurant chinois, puis celle du japonais. Aujourd’hui c’est le burger. Combien de restaurant ouvrent avec pour seule carte des variations sur le burger ? J’avais déjà eu l’occasion de tester &lt;a href=&quot;https://maps.google.fr/maps?f=q&amp;amp;source=s_q&amp;amp;hl=fr&amp;amp;geocode=&amp;amp;q=hand,+paris&amp;amp;aq=&amp;amp;sll=46.75984,1.738281&amp;amp;sspn=20.889338,47.878418&amp;amp;vpsrc=0&amp;amp;ie=UTF8&amp;amp;hq=hand,&amp;amp;hnear=Paris,+%C3%8Ele-de-France&amp;amp;t=m&amp;amp;z=15&amp;amp;iwloc=A&amp;amp;cid=5647606194305929415&quot;&gt;HAND&lt;/a&gt; (d’ailleurs il faudra le rester pour vous gratifier d’un billet), mais je n’avais pas encore fait dans le burger gourmet. C’est la proposition de &lt;a href=&quot;https://maps.google.fr/maps?f=q&amp;amp;source=s_q&amp;amp;hl=fr&amp;amp;geocode=&amp;amp;q=blend+paris&amp;amp;aq=&amp;amp;sll=48.865724,2.336706&amp;amp;sspn=0.039156,0.093513&amp;amp;vpsrc=0&amp;amp;ie=UTF8&amp;amp;hq=blend&amp;amp;hnear=Paris,+%C3%8Ele-de-France&amp;amp;ll=48.859605,2.351074&amp;amp;spn=0.039161,0.093513&amp;amp;t=m&amp;amp;z=15&amp;amp;iwloc=A&amp;amp;cid=2983489397591399632&quot;&gt;Blend&lt;/a&gt; dans le quartier de Montorgueil. Goutons.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/Blend.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/Blend.jpg 480w,/assets/resized/800/Blend.jpg 800w, /assets/Blend.jpg 944w&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;ambiance&quot;&gt;Ambiance&lt;/h2&gt;

&lt;p&gt;L’ambiance est épurée, design, relativement sobre et simple. Cependant tout est fait pour aller vite. On se tassera à plusieurs couples différents par table si l’on est pas venu en groupe de quatre, on s’assiera sur de simples mais lourds tabourets en bois, on lira la carte sur un simple bout de papier glissé dans une fente en milieu de table. Au passage, concernant la carte, petite erreur de leur part, la carte affichée en grand à l’entrée du restaurant ne correspond pas à celle proposée à table. Inutile de réfléchir à l’avance pour occuper les 30 à 45 minutes d’attentes aux heures de pointe. Le personnel bien que sympathique vous fera comprendre qu’il faut aller vite. On fait dans le gourmet, pas dans la discussion ici !&lt;/p&gt;

&lt;h2 id=&quot;nourriture-et-boisson&quot;&gt;Nourriture et boisson&lt;/h2&gt;
&lt;p&gt;Cinq burgers, aux noms sobres mais aux compositions très classieuses, émoustillent nos papilles d’avance et nous posent de sérieux dilème quant au choix à faire pour le diner. Venir nombreux aide à résoudre : chacun en prendra un différent pour partager et faire goûter aux autres.
Que cela soit la viande cuite de manière parfaite, le steak de mozarella qui vous en offre une bonne portion d’un goût esquit, ou encore les frites maisons aux patates douces, que de ravissement pour le palet. Et que dire du pain brioché maison ? Le tout servi dans une petite barquette métale simplicime.
Bien sûr, un bon repas s’accompagne d’une bonne boisson. On nous propose ici des bières assez exotiques (la Bellerose ou encore la californienne Sierra Nevada) qui s’accomoderont idéaliement aux burgers.
On achève cet exercice culinaire par le dessert. Le choix du jour s’est porté sur le cupcake chocolat : je dirais très bien, mais pas excellent. Le moelleux au chocolat servant de base peut s’améliorer.
Reste que cette adresse est à recommander et à tester, plusieurs fois, pour confirmer la qualité. Non je ne suis pas gourmand ! D’ailleurs, avec un repas “normalement humain”, pour une fois, j’ai été rassasié. A noter.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>La classe : on ne parle pas en classe</title>
      <link href="https://francois.aichelbaum.com/2012/06/10/on-ne-parle-pas-en-classe" />
      <updated>2012-06-10T12:15:00+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/06/10/on-ne-parle-pas-en-classe</id>
      <content type="html">&lt;p&gt;Une ambiance de classe comme nous avons pu en avoir que l’on soit trentenaire ou plus, une carte prometteuse, voilà ce que nous offre la &lt;a href=&quot;https://maps.google.fr/maps?f=q&amp;amp;source=s_q&amp;amp;hl=fr&amp;amp;geocode=&amp;amp;q=La+Classe,+Rue+de+Maubeuge,+Paris&amp;amp;aq=0&amp;amp;oq=la+classe,+&amp;amp;sll=46.75984,1.738281&amp;amp;sspn=20.889338,47.878418&amp;amp;vpsrc=0&amp;amp;ie=UTF8&amp;amp;hq=La+Classe,&amp;amp;hnear=Rue+de+Maubeuge,+Paris,+%C3%8Ele-de-France&amp;amp;t=m&amp;amp;z=17&amp;amp;cid=2519009725032060842&amp;amp;iwloc=A&quot;&gt;Classe&lt;/a&gt; (Paris 9e).&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/LaClasse.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/LaClasse.jpg 480w, /assets/LaClasse.jpg 750w&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;ambiance&quot;&gt;Ambiance&lt;/h2&gt;

&lt;p&gt;Les tables sont de tailles adultes mais impossible de ne pas se souvenir à quel point les nôtres pouvaient être petites pour des adultes : la table pour deux, avec la double barre au milieu pour relier les chaises, les casiers en bois ou métal pour ranger les affaires, le trou pour l’encre, la rainure pour poser les stylos ; les cartes de France, d’Europe et du Monde avec leur typo très simplifiée ; les rayonnages de livres vieillis et jaunis ; … Ah, l’école primaire de notre enfance, que de souvenir ….! Tout y est pour nous transporter dans nos souvenirs. Le personnel très sympathique nous apporte alors la carte des vins pour l’apéro dans une couverture de cahier. Vraiment, tout y est.
Comme à la cantine, l’eau est servie dans les bons vieux verres Duralex ronds.&lt;/p&gt;

&lt;h2 id=&quot;nourriture-et-boisson&quot;&gt;Nourriture et boisson&lt;/h2&gt;

&lt;p&gt;Une carte des vins à rallonge qui nous offre un large choix selon les goûts de chacun, selon les bouteilles, servis au verre ou non. On déguste tranquillement notre petit rouge ou notre petit blanc. Mais vu que nous y sommes aller pour l’apéro plutôt que pour le dîner, il faut bien “éponger” un peu l’alcool consommé pour profiter du reste de la soirée. Pour celà, il suffit de demander une planche charcuterie/fromage. Et là, servis accompagné d’une baguette à l’ancienne bien chaude, l’apéro prend une dimension magique. Tout y est bon. Tout y est fin. Tout y a du goût. On en redemanderait presque.
Le prix est légèrement élevé par rapport au petit balto du coin mais vu la qualité des produits et l’ambiance, chaque centime dépensé nous offre du plaisir et nous le fait oublier.
A y faire l’apéro et à l’y refaire. A tester aussi un repas car celà sent prometteur !&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Hot-dog : et un clébard chaud !</title>
      <link href="https://francois.aichelbaum.com/2012/06/07/clebard-chaud" />
      <updated>2012-06-07T12:20:53+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/06/07/clebard-chaud</id>
      <content type="html">&lt;p&gt;L’autre jour, se faisant faim et désirant changer un peu de cantine, mais aussi des plats habituels, on a voulu se faire un hot-dog. Aux Halles, en surface, se trouve le &lt;a href=&quot;https://maps.google.fr/maps?f=q&amp;amp;source=s_q&amp;amp;hl=fr&amp;amp;geocode=&amp;amp;q=dog&apos;s+caf%C3%A9,+paris&amp;amp;aq=&amp;amp;sll=46.75984,1.738281&amp;amp;sspn=14.426196,33.815918&amp;amp;vpsrc=0&amp;amp;ie=UTF8&amp;amp;hq=dog&apos;s+caf%C3%A9,&amp;amp;hnear=Paris,+%C3%8Ele-de-France&amp;amp;ll=48.85184,2.322063&amp;amp;spn=0.054105,0.132093&amp;amp;t=m&amp;amp;z=14&amp;amp;iwloc=A&amp;amp;cid=3452158383687327772&quot;&gt;Dog’s Café&lt;/a&gt;, qui se targue d’être le &lt;em&gt;meilleur chien chaud en ville&lt;/em&gt;. Ambiance et digestion.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/DogsCafe.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/DogsCafe.jpg 480w, /assets/DogsCafe.jpg 533w&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;ambiance&quot;&gt;Ambiance&lt;/h2&gt;

&lt;p&gt;Franchement, rien à redire. On est vraiment emmené dans un diner avec ses grandes baies vitrées, son zinc à rallonge sur lequel on va pouvoir diner, installé sur de hautes chaises. Le cadre est là. Le service aussi, la serveuse est disponible, agréable et souriante. Le cuistot agréable et également disponible. On apprécie et on demanderait presque du jus de chaussette &lt;em&gt;à discrétion&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;repas&quot;&gt;Repas&lt;/h2&gt;

&lt;p&gt;La carte est prometteuse : entre le hot-dog newyorkais au choux, le hot-dog Miller à l’oignon frit et ce chili con carne, on espère se régaler, et le choix entre une saucisse au porc ou au poulet. Malheureusement, la qualité n’est pas à la hauteur de l’annonce. En bref ?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;pain trop sec : un pain grillé à la plancha et n’offre plus le moelleux d’un bon pain pour hot-dog et trop petit pour se manger à la main si l’on prend deux saucisses&lt;/li&gt;
  &lt;li&gt;une saucisse générique, juste bonne&lt;/li&gt;
  &lt;li&gt;un fromage à revoir : le supplément fromage offre une vulgaire petite tranche de cheddar fondu, que le burger soit à une ou deux saucisses … copie à revoir&lt;/li&gt;
  &lt;li&gt;des pommes de terres sautés un poil trop grasses&lt;/li&gt;
  &lt;li&gt;pas d’oignon frais&lt;/li&gt;
  &lt;li&gt;la présentation en assiette est dommage : des barquettes auraient été plus dans le &lt;em&gt;trip dinner&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;le choix dans les bières est plutôt restreint mais la Bud et la Coronna permettent de rester dans l’ambiance&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Au final, pour un prix honnête on s’en sort avec une qualité en deçà de la moyenne alors que le cadre est vendeur et l’annonce prometteuse … On peut attaquer pour publicité mensongère ?&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Perfect Sense : le 6e sens</title>
      <link href="https://francois.aichelbaum.com/2012/06/07/6e-sens" />
      <updated>2012-06-07T11:46:17+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/06/07/6e-sens</id>
      <content type="html">&lt;p&gt;Deux mois après, je réalise qu’il me manque une revue : celle de &lt;a href=&quot;http://www.imdb.fr/title/tt1439572/&quot;&gt;Perfect Sense&lt;/a&gt;. A croire que justement, j’ai également perdu mes sens puis ma mémoire …&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;On suit Susan, Michael et un monde malade. Susan est une épidémiologiste désabusée par son histoire amoureuse et ses problèmes de santé. Michael est chef cuisiner et charmeur à ses heures perdues, incapacité à s’attacher. Le monde, lui, est malade et se dépérit. C’est l’occasion qui permettra à nos deux tourtereaux de se rencontrer, de flasher et de découvrir l’Amour.
La maladie du monde n’a pas de nom, n’a pas d’origine, n’a pas de patient zéro, n’a pas de remède. Rien de connu. Juste la perte d’un sens à la fois, dans le même ordre pour tout le monde, accompagné de symptômes plutôt expressif qui font ressortir l’instinct animal de l’Homme.
Mais au final, quel est le sens le plus important à ne pas perdre ? Comment vivre sans nos sens ? Le film aurait pu virer à l’étude psychologique de masse mais nous offre l’un des couples les plus fusionnels qu’on ait pu voir sur grand écran pour nous glisser cette réflexion à mener. Chacun ira de sa conclusion, mais la vraie question ne serait-elle pas plutôt de savoir ce qui fait que la vie vaut le coup d’être vécue, quelqu’en soit le coût ?
Reste que ce que nous fait ressortir le couple Eva/Ewan est tellement fort qu’on aime et souffre avec eux. A ressentir.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/PerfectSense.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/PerfectSense.jpg 480w, /assets/PerfectSense.jpg 680w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Moonrise Kingdom : scout toujours prêt !</title>
      <link href="https://francois.aichelbaum.com/2012/06/07/scout-toujours-pret" />
      <updated>2012-06-07T11:12:22+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/06/07/scout-toujours-pret</id>
      <content type="html">&lt;p&gt;S’il y a des films qu’on a plaisir de voir et revoir, ce sont les petites comédies infantiles qui nous ramènent à nos souvenirs, à notre propre histoire de gamin. Après tout, nous restons d’éternels enfants. Personnellement, c’est l’effet que me font les films du type &lt;a href=&quot;http://www.imdb.fr/title/tt0054949/&quot;&gt;la guerre des boutons&lt;/a&gt;, &lt;a href=&quot;http://www.imdb.fr/title/tt0099669/&quot;&gt;la gloire de mon père&lt;/a&gt;, &lt;a href=&quot;http://www.imdb.fr/title/tt0099266/&quot;&gt;le chateau de ma mère&lt;/a&gt; et autres … Ce WE, j’ai pu en rajouté un autre à la liste : &lt;a href=&quot;http://www.imdb.fr/title/tt1748122/&quot;&gt;Moonrise Kingdom&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Une bande annonce qui interpelle par sa bizarrerie et sa fraîcheur, un casting imposant, impossible de ne pas aller voir cet &lt;em&gt;OVNI&lt;/em&gt; (Object Visuel Non Identifié). Au final, en regardant de plus près, c’est un peu la période pour ce genre de films (&lt;a href=&quot;/2012/05/19/mon-baluchon-pour-linde-est-pret/&quot;&gt;Indian Palace&lt;/a&gt;, &lt;a href=&quot;/2012/06/07/6e-sens/&quot;&gt;Perfect Sense&lt;/a&gt;, &lt;a href=&quot;http://www.imdb.fr/title/tt1441952/&quot;&gt;Des saumons dans le désert&lt;/a&gt; …). C’est franchement rafraichissant en ces temps …
On suit donc la fugue de deux gamins (déjà) désabusés mais amoureux. Un roadtrip dans les bois à la découverte des sentiments, des liens qui peuvent se forger entre les gens, sentiments contre raison, …
Une balade en plein ouragan naissant, une chasse à l’homme version scout se prenant pour les &lt;a href=&quot;http://www.imdb.fr/title/tt0361748/&quot;&gt;Inglorious Basterds&lt;/a&gt;, des adultes vraiment pas sain(t)s ni adultes et un cours sur la musique classique (profitez du générique de fin d’ailleurs). Une recette implacable pour des rires tout du long. On ne voit pas le temps passer et on veut y retourner.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/MoonriseKingdom.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/MoonriseKingdom.jpg 480w, /assets/MoonriseKingdom.jpg 620w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Men in Black 3 : j&amp;#039;ai la classe avec un costard</title>
      <link href="https://francois.aichelbaum.com/2012/06/06/jai-la-classe-avec-un-costard" />
      <updated>2012-06-06T11:38:55+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/06/06/jai-la-classe-avec-un-costard</id>
      <content type="html">&lt;p&gt;Etonnamment, personne dans mes contacts n’avait organisé de soirée en costume pour aller voir &lt;a href=&quot;http://www.imdb.fr/title/tt1409024/&quot;&gt;Men in Black 3&lt;/a&gt; : pour le coup, vous me décevez les gens ! J’y suis donc aller avec mon Viking. Pour une fois qu’il était sur Paris …&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Pour se préparer, je m’étais fais une projection privée des deux premiers en numérique … puis grâce à &lt;a href=&quot;http://www.paniccinema.com/&quot;&gt;Panic Cinéma!&lt;/a&gt;, une version en salle avec une bobine originale qui saute bien. Et déjà, je peux vous dire que sur les trois, hormis le pourquoi du comment du gros vilain méchant extraterrestre, ce sont les mêmes films, avec les mêmes scènes, dans le même ordre. A une exception : cette fois-ci, &lt;em&gt;K&lt;/em&gt; est la demoiselle en détresse.
Fil conducteur de l’épisode ? le voyage dans le temps et le paradoxe du grand père revisité. C’est &lt;a href=&quot;https://www.youtube.com/watch?v=KJRh-37H4fA&quot;&gt;Doc Brown&lt;/a&gt; qui aurait apprécié. &lt;em&gt;J&lt;/em&gt; doit donc remonter de 40 ans dans le passé pour sauver &lt;em&gt;K&lt;/em&gt; tué par le destructeur de planètes, &lt;em&gt;Boris l’Animal&lt;/em&gt; (pardon, “&lt;em&gt;Juste, Boris !&lt;/em&gt;”). Et pour remplacer le ténébreux Tommy Lee Jones âgé de “&lt;em&gt;110 ou 111 ans&lt;/em&gt;”, on nous offre un Josh Brolin tout propre. Celui-ci a du mérite de reprendre le rôle et nous offre là une composition qui nous donne toute l’illusion d’avoir Tommy Lee Jones bien plus jeune (enfin avec un peu de kilométrage quand même pour quelqu’un âgé de 29 ans).
A côté de ce jeu, le voyage temporel nous offre une autre vision des extraterrestres :  on passe ainsi des modernes numériques aux comédiens grimés façon &lt;em&gt;Star Trek - the original series&lt;/em&gt; … Quel plaisir ! Visuellement on se dénote bien les différences avec toutes les références aux vieux films et aux vieilles séries des &lt;em&gt;seventies&lt;/em&gt;.
Franchement, non ce n’est pas le meilleur des films de la saga car il ne crée pas la surprise du premier, mais il est dans la logique globale de la license et de ce qu’a pu nous offrir le second : un bon spectacle avec de l’action (moins qu’avant, on est trop vieux pour ces conneries), des clins d’oeil, de l’humour et une histoire sympatoche. Juste un bon moment au ciné donc.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/MenInBlack3.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/MenInBlack3.jpg 480w, /assets/MenInBlack3.jpg 754w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>C&amp;#039;est Barbie qui a perdu la clé</title>
      <link href="https://francois.aichelbaum.com/2012/05/29/cest-barbie-qui-a-perdu-la-cle" />
      <updated>2012-05-29T21:39:59+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/29/cest-barbie-qui-a-perdu-la-cle</id>
      <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/Barbie-150x150.jpg&quot; alt=&quot;Barbie&quot; /&gt;{.left} Ce soir après un taff sous une chaleur assez épuisante, la fraicheur d’une salle obscure avait un air salvateur. Bon par contre, les neurones étaient tous bien grillés donc le choix de genre était tout à fait d’actualité : un gros nanard sous testostérone. C’est donc &lt;a href=&quot;http://www.imdb.fr/title/tt1592525/&quot;&gt;Lockout&lt;/a&gt; qui était tout désigné.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;C’est donc l’histoire de Barbie, dite la &lt;em&gt;First Daughter&lt;/em&gt; grâce au poste de Président des USA qu’occupe M. Papa Warnock, qui part dans une prison spaciale pour faire dans l’humanitaire. Et là tout dérape…&lt;/p&gt;

&lt;h2 id=&quot;linterrogatoire-musclé&quot;&gt;L’interrogatoire musclé&lt;/h2&gt;

&lt;p&gt;Pourquoi l’humanitaire ? Parce Papa est méchant.
Pourquoi mettre les prisonniers sur orbite ? les cellules les congèlent puis au pire, ca sera l’espace.
Pourquoi alors qu’une vitre sépare Barbie du méchant violeur un agent des services secrets est à côté du violeur ? Parce que sinon il ne pourrait pas lui permettre de trouver une arme interdite puis ca flinguerait toute l’intrigue.
Pourquoi prendre un gars qu’on considère comme un paria, qui ne fait pas partie de l’armée quand on pourrait aller prendre le meilleur des meilleurs des meilleurs, Sir ? Parce que sinon ce n’est pas drôle, il n’aurait pas la même réthorique.&lt;/p&gt;

&lt;h2 id=&quot;cest-en-frappant-quon-devient-forgeron&quot;&gt;C’est en frappant qu’on devient forgeron&lt;/h2&gt;
&lt;p&gt;Demandez donc à Rupert à quel point ca fait plaisir de taper sur Snow ! Il n’y a pas de petit plaisir.
Puis il en va de même entre les mutins de prisonniers : pourquoi se limiter aux pauvres gardes sans défense quand on peut se taper sur la gueule non stop … c’est tellement bon toute cette activité physique. Bien sûr, tout ceci est dans le futur, donc appuyé d’effets graphiques dont les Gobelins auraient honte par moment.
Et que dire alors de la logique des scénaristes : ils n’ont pas assez regardé les infos je crois : une bombe en collier ca ne décapite par un mec aussi proprement qu’une hache … tout en la désintégrant …
Mais bon, c’est ma poussée de testostérone qui me fait mal voir.&lt;/p&gt;

&lt;h2 id=&quot;femme-qui-rit-femme-à-moitié-au-lit&quot;&gt;Femme qui rit, femme à moitié au lit&lt;/h2&gt;
&lt;p&gt;Snow, c’est un peu prendre tous nos acteurs fétiches de films d’action des années 80/90, avec une pincée de mec torturé en primaire, et les passer au mixeur. On obtient une savoureuse réthorique cachée par des muscles.
Mais le numéro de charme fonctionne. Après tout, c’est ca la recette des vieux films d’actions : un gentil costaud un peu mal béché qui cognent les gros et moches méchants pour libérer la belle Barbie. Mais aujourd’hui ca passe mieux en projection privée ou en vidéo.
En tout cas, si l’on vous demande ce qu’il s’est passé dans cette chambre d’hôtel, demander plutôt à votre femme !&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/Lockout_Poster2partial.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/Lockout_Poster2partial.jpg 480w, /assets/Lockout_Poster2partial.jpg 610w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Sans issue : c&amp;#039;est pas moi, c&amp;#039;est lui !</title>
      <link href="https://francois.aichelbaum.com/2012/05/22/cest-pas-moi-cest-lui" />
      <updated>2012-05-22T23:34:35+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/22/cest-pas-moi-cest-lui</id>
      <content type="html">&lt;p&gt;Ce soir, je continue sur ma lancée du choix du film à l’aveugle : je fonce au cinéma et je prends le premier film qui démarre. C’est ainsi que je me retrouve à m’installer dans la salle pour voir &lt;a href=&quot;http://www.imdb.fr/name/nm0000244/&quot;&gt;Sans issue&lt;/a&gt;, avec entre autres &lt;a href=&quot;http://www.imdb.fr/name/nm0000244/&quot;&gt;Sigourney Weaver&lt;/a&gt; et &lt;a href=&quot;http://www.imdb.fr/name/nm0000246/&quot;&gt;Bruce Willis&lt;/a&gt; pour les pointures américaines mais aussi &lt;a href=&quot;http://www.imdb.fr/name/nm0147147/&quot;&gt;Henry Cavill&lt;/a&gt;, plutôt prometteur, et un gars de chez nous, de la cité d’à côté (puisqu’originaire de &lt;a href=&quot;http://maps.google.fr/maps/place?ftid=0x47e66f45c618b431:0x950c4e920d76f175&amp;amp;q=Gennevilliers&amp;amp;hl=fr&amp;amp;ved=0CA0Q-gswAA&amp;amp;sa=X&amp;amp;ei=6AG8T8fbBdCLOq-_8MQB&quot;&gt;Gennevilliers&lt;/a&gt;), &lt;a href=&quot;http://www.imdb.fr/name/nm0954704/&quot;&gt;Roschdy Zem&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Bon avant de rentrer plus dans le vif du sujet, je vais pousser une gueulante : ils ont un soucis les distributeurs français avec les traductions de titres anglais ?! Non mais sérieusement : est-ce que l’un de vous peut m’expliquer comment &lt;em&gt;The Cold Light of Day&lt;/em&gt; a pu donner en traduction &lt;em&gt;Sans issue&lt;/em&gt; ? Surtout que l’expression anglaise se rapproche plus d’un “voir les choses sous leur vrai jour” … On ne doit vraiment pas parler la même langue.
Quoiqu’il en soit, je n’avais rien vu concernant ce film si ce n’est son affiche dans quelques rares salles. A croire que la promo est aussi efficace que la traduction. Du coup, salle quasi vide. Mais bon, je suis d’autant plus libre de vivre le film tranquillement sans parasitage.
Pour la faire courte, Will Shaw (joué par Henry Cavill) se retrouve au milieu d’une affaire de contre espionnage américano-israélien pendant des vacances avec sa famille en Espagne. L’enlèvement de celle-ci donnera l’occasion à Will de découvrir les sombres secrets de sa famille.
Au passage, on peut noter que Bruce Willis fait de plus en plus d’apparitions courtes dans les films alors que Sigourney Weaver semble se trouver une passion pour les espions (c.f. &lt;a href=&quot;http://www.imdb.fr/title/tt1600195/&quot;&gt;Identité secrète&lt;/a&gt;). Pourquoi pas. Leur jeu reste efficace et la dynamique du film est là sans nous offrir une exagération que l’on a dans la sage de &lt;a href=&quot;http://www.imdb.fr/character/ch0002110/&quot;&gt;Jason Bourne&lt;/a&gt; ou justement &lt;a href=&quot;http://www.imdb.fr/title/tt1600195/&quot;&gt;Identité secrète&lt;/a&gt;. On apprécie l’avancée, les retournements plus ou moins prévisibles et le côté Pierre Richard de l’&lt;em&gt;espion malgré lui&lt;/em&gt;.
Au final, un thriller d’action comme on dit, sans grandes prétentions, mais efficace si on le prend pour ce qu’il est : un divertissement de type &lt;em&gt;fast food&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/Sans-Issue-The-Cold-Light-of-Day-Affiche-US.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/Sans-Issue-The-Cold-Light-of-Day-Affiche-US.jpg 480w, /assets/Sans-Issue-The-Cold-Light-of-Day-Affiche-US.jpg 620w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Oh une bâche !</title>
      <link href="https://francois.aichelbaum.com/2012/05/20/oh-une-bache" />
      <updated>2012-05-20T22:16:38+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/20/oh-une-bache</id>
      <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/bache-150x150.jpg&quot; alt=&quot;Bâche&quot; /&gt;{.left} Il y a des jours où on ne sait pas se décider pour un film : entre les horaires qui ne vont pas, la salle qui ne va pas … Dans ce cas, ma solution : partir à l’aventure. De bien grands mots vous me dites ? Mais non ! Il suffit de vous faire une bonne balade à pattes dans Paris, pour arriver à votre salle favorite, et choisir le premier film qui démarre (en évitant un film déjà vu). Le sort m’a sélectionné &lt;a href=&quot;http://www.imdb.fr/title/tt1524137/&quot;&gt;Contrebande&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Jusqu’à ce soir, je n’avais vu que le titre dans les horaires affichés sur &lt;a href=&quot;http://www.allocine.fr&quot;&gt;Allociné&lt;/a&gt; mais cela ne m’avait pas interpellé. Il est donc clair, que sans connaître le synopsis ni avoir vu la bande annonce, je m’engageais sur ce film sans aucun a priori.
On suit donc un contrebandier repenti obligé de reprendre les affaires pour sauver sa famille. Son aventure le conduira au Panama. Hasard ou coïncidence, le matin même je me documentais un peu sur le &lt;a href=&quot;http://fr.wikipedia.org/wiki/Canal_de_Panama&quot;&gt;Canal de Panama&lt;/a&gt; … Personnellement, cela m’a bien fait rire !
Pour en revenir au film, c’est du déjà vu à maintes reprises. Le premier titre qui me vient en tête, c’est &lt;a href=&quot;http://www.imdb.fr/title/tt0187078/&quot;&gt;60 secondes chrono&lt;/a&gt;. Mais j’y retrouve un peu l’ambiance d’un &lt;a href=&quot;http://www.imdb.fr/title/tt0840361/&quot;&gt;The Town&lt;/a&gt;. Rien de bien novateur, les habitués décoderont l’intrigue dans les premières minutes du film. Reste quelques scènes sympa et surtout voir les idées pour planquer la marchandise (cf la fin du film).
Cependant, je pense qu’un élément du film, démontrant le niveau des douaniers et du capitaine du navire, nous résume assez bien la qualité du film : “Oh une bâche !” Le film se regardant facilement en vidéo ou avec une carte illimité, je vous laisse le soin de replacer cette citation dans son contexte.
Sur ce, je retourne programmé ma prochaine contrebande à faire circuler entre la cuisine et le salon.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/Contrebande.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/Contrebande.jpg 480w, /assets/Contrebande.jpg 510w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Indian Palace : mon baluchon pour l&amp;#039;Inde est prêt</title>
      <link href="https://francois.aichelbaum.com/2012/05/19/mon-baluchon-pour-linde-est-pret" />
      <updated>2012-05-19T21:59:40+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/19/mon-baluchon-pour-linde-est-pret</id>
      <content type="html">&lt;p&gt;Il y a des films comme celui-ci, qui vous offrent deux sentiments à la sortie de la salle de cinéma :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;préparer votre voyage pour ledit pays le plus vite possible&lt;/li&gt;
  &lt;li&gt;qu’il manque quand même l’odorama au cinéma pour ce genre de films&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ce film ? &lt;a href=&quot;http://www.imdb.fr/title/tt1412386/&quot;&gt;Indian Palace&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Je ne savais pas trop à quoi m’attendre avec ce film après avoir vu la bande annonce. Une comédie de et pour vieux de la vieille ? Un mix entre &lt;a href=&quot;http://www.imdb.fr/title/tt0879870/&quot;&gt;Mange, Prie, Aime&lt;/a&gt; et &lt;a href=&quot;http://www.imdb.fr/title/tt0335266/&quot;&gt;Lost in Translation&lt;/a&gt; ? Un déballage de platitudes évidentes ? Un concentré de stéréotypes ?
Tout ceci et rien en même temps. Après une rapide présentation de nos retraités, nous partons avec eux pour découvrir l’Inde. Et là, soit votre imagination est assez forte à la vu des couleurs et sons pour vous laisser supposer les odeurs, soit vous regretter l’absence de l’odorama. On découvre le pays, un peu comme on l’a pu faire avec &lt;a href=&quot;https://www.youtube.com/watch?v=JrQiIpWq-_s&quot;&gt;Pékin Express&lt;/a&gt;, il y a quelques années (Saison 2 - La route de l’Himalaya - 2007) au travers de nos “jeunes et beaux retraités”. Ainsi, chacun vivra un mini voyage initiatique, pour confirmer qui il est, ce qu’il a perdu, ou ce qu’il a raté. Et il faut dire que &lt;a href=&quot;http://www.imdb.fr/name/nm0006960/&quot;&gt;John Madden&lt;/a&gt; sait nous impliquer dans ses histoires.
On vivre avec eux. On prie. On espère. On découvre. On se réjouit. On finit par rentrer pour préparer notre bagage et voir le prochain avion.
Si vous me cherchez, je suis sûrement au &lt;em&gt;Best Exotic Marigold Hotel&lt;/em&gt; pour une durée indéterminée !&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/IndianPalace.jpg&quot; title=&quot;&quot; srcset=&quot; /assets/IndianPalace.jpg 450w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Bankrupt !</title>
      <link href="https://francois.aichelbaum.com/2012/05/18/bankrupt" />
      <updated>2012-05-18T22:24:25+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/18/bankrupt</id>
      <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/bankrupt-150x150.jpg&quot; alt=&quot;Bankrupt&quot; /&gt;{.left} Aujourd’hui, je ne metterais point de musique : ce n’est pas que je n’ai aucun artiste à vous proposer, au contraire, mais je prépare un petit truc qui devrait sortir ce WE. Et comme on dit, l’attente augmente le plaisir !
°Par contre, c’est vendredi, donc jour de cinéma. Et quoi de mieux qu’un jour où presque personne ne travaille que de faire bosser nos neurones ? Pour ça, un film est parfait : &lt;a href=&quot;http://www.imdb.fr/title/tt1615147/&quot;&gt;Margin Call&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Une plétore d’acteurs de cinéma ou de séries TV vont donc s’efforcer de nous montrer une facette de l’origine de la &lt;a href=&quot;http://fr.wikipedia.org/wiki/Crise_bancaire_et_financi%C3%A8re_de_l&apos;automne_2008&quot;&gt;crise de 2008&lt;/a&gt;. Malheureusement, le monde de la finance est un domaine bien peu passionnant, même avec des acteurs de renom…
Et s’enchaînent alors les images stéréotypées d’&lt;a href=&quot;http://fr.wikipedia.org/wiki/Op%C3%A9rateur_de_march%C3%A9&quot;&gt;Opérateur de marché&lt;/a&gt; flambant leur argent, tous dans ce monde par l’appât du gain, peu importe leur formation d’origine, quand ils ne se font pas virer avec tous les égards qui leur sont dus. Il est toujours bon aussi de se faire rappeler qu’il y a toujours un chef au dessus du chef qui, lui, saura prendre &lt;em&gt;la bonne décision&lt;/em&gt; en ces temps difficiles.
Au final, une phrase très juste du grand patron de la &lt;a href=&quot;http://www.imdb.fr/title/tt0106918/&quot;&gt;La Firme&lt;/a&gt;, John Tuld (&lt;a href=&quot;http://www.imdb.fr/name/nm0000460/&quot;&gt;Jeremy Irons&lt;/a&gt;) : “Il est possible de se faire énormément d’argent avec cette crise”. Et Hollywood nous le montre une fois de plus : peu importe l’état de leurs finances (&lt;a href=&quot;http://www.scientificamerican.com/article.cfm?id=does-digital-piracy-really&quot;&gt;avec le piratage&lt;/a&gt;), il y a toujours un sujet, même anodin pour sortir un film plat qui rapporte potentiellement de gros sous grâce à ses acteurs ou son réalisateur.
Là est peut-être la clé de ce film : nous montrer qu’il n’y a pas un sujet qu’on ne puisse traiter pour s’en mettre plain les poches. En un mot comme en cent pour résumer ce film : &lt;strong&gt;arnaque&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/margincall.jpg&quot; title=&quot;&quot; srcset=&quot; /assets/margincall.jpg 408w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Chanson pour le printemps</title>
      <link href="https://francois.aichelbaum.com/2012/05/16/chanson-pour-le-printemps" />
      <updated>2012-05-16T11:04:34+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/16/chanson-pour-le-printemps</id>
      <content type="html">&lt;p&gt;Il faut beau, les oiseaux chantent, le printemps se montre pour quelque jour. On va le fêter en musique avec &lt;a href=&quot;http://www.mymajorcompany.com/users/nadim&quot;&gt;Nad!m&lt;/a&gt; et sa chanson &lt;em&gt;Elle me prend la main&lt;/em&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Encore un artiste MMC que j’adore. Si c’est également votre cas, n’hésitez pas à le soutenir !&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Ouh un WE sans rien dire</title>
      <link href="https://francois.aichelbaum.com/2012/05/14/ouh-un-we-sans-rien-dire" />
      <updated>2012-05-14T08:38:03+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/14/ouh-un-we-sans-rien-dire</id>
      <content type="html">&lt;p&gt;Certains vont me faire la tête à force … Aucun morceau matinal … On corrige ca de suite alors. C’est une nouvelle semaine, donc un nouveau départ avec &lt;a href=&quot;http://www.mymajorcompany.com/#!/milachka17/barbara-green&quot;&gt;Barbara Green&lt;/a&gt; et son &lt;em&gt;Repars à zéro&lt;/em&gt; :&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Vous pouvez soutenir et produire Barbara sur MMC. D’ailleurs changement de règles sur MMC qui impose qu’un artiste arrive à se faire produire en six mois sinon la porte de sortie lui sera présentée. Très expéditif comme méthode.
D’ailleurs petit lot de critique pour MMC :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;nouvelles règles qui font partir nombre d’artistes&lt;/li&gt;
  &lt;li&gt;nouvelles règles qui font fuir bon nombre de potentiels inscrits&lt;/li&gt;
  &lt;li&gt;les remises à cause de ces départs forcés n’inclus pas la remise des frais empochés par MMC (et il faut donc les repayer)&lt;/li&gt;
  &lt;li&gt;MMC considère qu’un artiste, avant d’arriver sur son site doit avoir des enregistrements audio et vidéo de bonne qualité et de bons moyens de comm (donc avoir fait une partie de la prod)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bref MMC, c’est de pire en pire … Et les artistes en patissent. Dommage.
Bon nouvelle semaine, je râle sur MMC mais il ne faut pas croire, je suis de très bonne humeur. Je prépare une bonne petite radio pour les artistes que je suis.
Ah, pi aussi, accessoirement, spéciale dédicace à son interprête pour le remercier de son concert de vendredi soir, à savoir &lt;a href=&quot;http://www.mymajorcompany.com/#!/fabienbourguet&quot;&gt;Fabien Bourguet&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Semaine courte mais super chargée au programme. Courage les gens !&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Trêve de plaisanterie</title>
      <link href="https://francois.aichelbaum.com/2012/05/11/treve-de-plasanterie" />
      <updated>2012-05-11T08:35:35+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/11/treve-de-plasanterie</id>
      <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/fabien_bourguet-150x150.jpg&quot; alt=&quot;Fabien Bourguet&quot; /&gt;{.left} Ce matin, j’ai choisi une chanson qui me touche. C’est celle de &lt;a href=&quot;http://www.mymajorcompany.com/#!/fabienbourguet/fabien-bourguet&quot;&gt;Fabien Bourguet&lt;/a&gt;, &lt;em&gt;un jour de trêve&lt;/em&gt;.
[video]http://www.youtube.com/watch?v=cdyK3IQ-v8Y[/video] Si ses chansons vous plaisent, soutenez-le sur MMC.
Au passage, pour les parisiens, il se produit ce soir 11 mai 2012 au Caveau des Artistes à 20h45. L’entrée est à 10€. Bon concert !&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Dark Shadows : soyez psyché, vous serez cool</title>
      <link href="https://francois.aichelbaum.com/2012/05/10/soyez-psyche-vous-serez-cool" />
      <updated>2012-05-10T08:52:22+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/10/soyez-psyche-vous-serez-cool</id>
      <content type="html">&lt;p&gt;Ce matin j’ai voulu faire un double billet, mélangeant le film du jour, enfin … d’hier, et la chanson du jour. Bon, c’est sûr, trouver du psychédélique ou du Alice Cooper dans mes perles de MMC, malheureusement, ce n’est pas gagné. Par contre, trouver quelque chose de cool et qui collera au thème du film … Suffit de chercher &lt;a href=&quot;http://www.mymajorcompany.com/morphe-morphe&quot;&gt;Morphé&lt;/a&gt; et &lt;em&gt;Rose promise&lt;/em&gt; :&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Comme à l’habitude maintenant, Morphé est à produire sur MMC. Belle introduction à l’amour que cette chanson, non ? Et bien c’est aussi le thème de fond du dernier Tim Burton, &lt;em&gt;Dark Shadows&lt;/em&gt; :&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Certes ce n’est pas un univers entièrement sorti de l’imagination de Timmy, mais il faut avouer qu’il a particulièrement bien revu la &lt;a href=&quot;https://www.youtube.com/watch?v=aFgGywbxeRw&amp;amp;feature=results_video&amp;amp;playnext=1&amp;amp;list=PL37B0F4C0CB9D67EC&quot;&gt;série télévisée des années 60&lt;/a&gt;. Le psychédélique et torturé Tim Burton nous fait donc ressucité Barnabas Collins en 1972, en pleine guerre du Vietnam, avec ses mouvements Hippies et ses couleurs d’opposition.
Commandés par Tim Burton, ses acteurs fétiches, Helena Bonham Carter et Johnny Depp sont soutenus par Michelle Pfeiffer, qui me rappelle sans cesse l’une des sorcières de &lt;a href=&quot;https://www.youtube.com/watch?v=kldLBWaSuKU&quot;&gt;Stardust&lt;/a&gt; et Eva Green, pour les têtes d’affiche. Et, il faut dire, que ces dernières se sont toutes les deux plus que bien adaptées au style de la maison.
On rigole, on frissone, on dévore le popcorn bien trop vite avec ce mélange de &lt;a href=&quot;https://www.youtube.com/watch?v=v5Umz8UWTqk&quot;&gt;Famille Addams&lt;/a&gt; (de Barry Sonnenfeld) et &lt;a href=&quot;https://www.youtube.com/watch?v=xjZihSC42HI&quot;&gt;Charlie et la Chocolaterie&lt;/a&gt;, sauce Scooby, dépeignant cette réunion de famille sur thème de la malédiction amoureuse. Ah, l’Amour …
Ce film s’est fait attendre, surtout avec tout le buzz orchestré sur les médias sociaux. Dans ces conditions, il arrive trop souvent que l’on soit déçu (non je ne vise aucune super production américaine de ces dernières années offrant un nombre de suite trop important), mais pour le coup, le ravissement est là … et m’impose d’y retourner ASAP ! Après tout, c’est du Tim Burton, et il ne déçoit jamais (précision : sur un film de son cru … suivez mon regard …).
Pour terminer, en se faisant plaisir avec un Alice Cooper de 1972, ca sera le petit cadeau du matin :&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;A se demander si ce n’est pas un vampire immortel d’ailleurs …&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/darkshadows.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/darkshadows.jpg 480w, /assets/darkshadows.jpg 500w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>Petit réveil en douceur</title>
      <link href="https://francois.aichelbaum.com/2012/05/09/petit-reveil-en-douceur" />
      <updated>2012-05-09T07:42:01+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/09/petit-reveil-en-douceur</id>
      <content type="html">&lt;p&gt;Ce matin, c’est &lt;a href=&quot;http://www.mymajorcompany.com/luke-greenwald-1&quot;&gt;Luke Greenwald&lt;/a&gt; qui se charge de votre réveil avec &lt;em&gt;Tired and Wasted&lt;/em&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Comme à l’habitude, si vous appréciez, soutenez le sur MyMajorCompany.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Journée du souvenir en musique</title>
      <link href="https://francois.aichelbaum.com/2012/05/08/journee-du-souvenir-en-musique" />
      <updated>2012-05-08T10:47:14+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/08/journee-du-souvenir-en-musique</id>
      <content type="html">&lt;p&gt;C’est une journée du souvenir pour pas mal d’entre vous. Autant le faire avec un bon son pop-rock de chez nous. Voici donc &lt;a href=&quot;http://www.mymajorcompany.com/#!/mathyl5&quot;&gt;Mathyl&lt;/a&gt; avec &lt;em&gt;Rappelle-toi&lt;/em&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Si ses chansons vous plaisent, produisez-la sur MyMajorCompany.
NB: j’ai profité dans la semaine pour rajouter l’authentification via Facebook et Twitter pour ceux qui veulent commenter le blog.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>American Pie 4 : j&amp;#039;ai trop mangé de tartes</title>
      <link href="https://francois.aichelbaum.com/2012/05/07/jai-trop-mange-de-tartes" />
      <updated>2012-05-07T21:03:37+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/07/jai-trop-mange-de-tartes</id>
      <content type="html">&lt;p&gt;Ceux qui me connaissent vont se dire qu’il y a un énorme soucis : comme ai-je pu trop mangé de tartes, moi, l’estomac sur pattes, l’héritier de Gargantua ?! La faute aux &lt;em&gt;American Pies&lt;/em&gt;. Tout le monde connait les trois premiers volets sortis au cinéma entre 1999 et 2003. Entre 2005 et 2009, quatre autres nous ont nourris directement en vidéo, pour notre plus grand damne, pour ceux qui ont voulus garder un esprit adolescent.
Et bien cette année, 13 ans après le premier, l’équipe d’ados en rute revient sévire, à croire que leurs comptes en banque sont vide.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Impossible de se mettre dans le même état d’esprit qu’à l’époque. Le film reprend pourtant la même sauce, un peu plus osé (plus de nudité), un peu plus adultes (ils ont tous une vie maintenant) pour autant, la tarte ne cuit pas correctement.
Je ne dis pas que je n’ai pas laissé échappé quelques pouffements… C’est sûr, je ne m’égosillait pas comme le mec à deux places de moi. Mes neurones ne doivent pas se percuter de la même manière, je crois.
Quoi qu’il en soit, on est à une époque où la créativité d’Hollywood se borne à beaucoup de suite, remake, … mais là c’est trop. La nostalgie n’opère pas, le charme est absent, le déluré, lui, est radin. Un Projet X proposera bien meilleur spectacle. Même les trois premiers que je me suis refais avant la séance m’apporte plus de plaisir.
Donc non clairement le film de trop et une tarte mal préparée. Même le ton moralisateur des jeunes &lt;em&gt;gens&lt;/em&gt; maintenant mûrs qui aurait pu ressortir est partie voir un autre film.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Sauvons le jour</title>
      <link href="https://francois.aichelbaum.com/2012/05/07/sauvons-le-jour" />
      <updated>2012-05-07T15:01:08+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/07/sauvons-le-jour</id>
      <content type="html">&lt;p&gt;Journée plaisante pour certains. Journée morne pour d’autres.
Journée vivante pour les uns. Journée soporifique pour les autres.
Dans tous les cas, un peu de bon rock fait du bien, donc place à &lt;a href=&quot;http://www.mymajorcompany.com/annsom&quot;&gt;Ann’So M&lt;/a&gt; avec &lt;em&gt;Save the Day&lt;/em&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Vous aimez ? Parrainez-la sur MyMajorCompany !&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Et une deuxième brochette</title>
      <link href="https://francois.aichelbaum.com/2012/05/05/et-une-deuxieme-brochette" />
      <updated>2012-05-05T12:56:52+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/05/et-une-deuxieme-brochette</id>
      <content type="html">&lt;p&gt;Hier je vous ai présenté mes petites perles :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.mymajorcompany.com/annsom&quot;&gt;Ann’So M&lt;/a&gt;&lt;/strong&gt; (pop/rock)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.mymajorcompany.com/luke-greenwald-1&quot;&gt;Luke Greenwald&lt;/a&gt;&lt;/strong&gt; (reggae/rock)&lt;/li&gt;
  &lt;li&gt;**&lt;a href=&quot;http://www.mymajorcompany.com/devon-graves&quot;&gt;Devon Graves&lt;/a&gt; (pop/folk) - &lt;a href=&quot;http://www.mymajorcompany.com/morphe-morphe&quot;&gt;Morphé&lt;/a&gt; à la guitare&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Aujourd’hui je vous présente la légion :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;**&lt;a href=&quot;http://www.mymajorcompany.com/#!/remyash&quot;&gt;Ash of Sound&lt;/a&gt; (pop/rock)&lt;/li&gt;
&lt;/ul&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.mymajorcompany.com/#!/mathyl5&quot;&gt;Mathyl&lt;/a&gt;&lt;/strong&gt; (pop/rock)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vers &lt;a href=&quot;http://www.noomiz.com/Mathyl&quot;&gt;Noomiz&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.mymajorcompany.com/#!/jessieryanmusic/jessie-ryan-music&quot;&gt;Jessie Ryan&lt;/a&gt;&lt;/strong&gt; (pop/rock)&lt;/li&gt;
&lt;/ul&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.mymajorcompany.com/#!/songsofmaryjane/songs-of-maryjane&quot;&gt;Maryjane&lt;/a&gt;&lt;/strong&gt; (pop/folk)&lt;/li&gt;
&lt;/ul&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.mymajorcompany.com/#!/milachka17/barbara-green&quot;&gt;Barbara Green&lt;/a&gt;&lt;/strong&gt; (pop/rock)&lt;/li&gt;
&lt;/ul&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.mymajorcompany.com/#!/monsieur-plume/monsieur-plume&quot;&gt;Monsieur Plume&lt;/a&gt;&lt;/strong&gt; (chanson française)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Vers &lt;a href=&quot;http://www.zicmeup.com/artiste/florentvergnes/sons#&quot;&gt;Zic Me Up&lt;/a&gt; (écoutez “&lt;em&gt;Le Sage&lt;/em&gt;”)&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Mon premier, une petite brochette de chanteurs dont j&amp;#039;espère beaucoup</title>
      <link href="https://francois.aichelbaum.com/2012/05/04/mon-premier-une-petite-brochette-de-chanteurs-dont-jespere-beaucoup" />
      <updated>2012-05-04T16:54:41+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/04/mon-premier-une-petite-brochette-de-chanteurs-dont-jespere-beaucoup</id>
      <content type="html">&lt;p&gt;Plutôt que de rédiger un long billet, je vous laisse apprécier les chanteurs (pas la qualité de l’enregistrement, bande de râleurs).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.mymajorcompany.com/annsom&quot;&gt;Ann’So M&lt;/a&gt;&lt;/strong&gt; (pop/rock)&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;** &lt;a href=&quot;http://www.mymajorcompany.com/devon-graves&quot;&gt;Devon Graves&lt;/a&gt;** (pop/folk) - &lt;a href=&quot;http://www.mymajorcompany.com/morphe-morphe&quot;&gt;Morphé&lt;/a&gt; à la guitare&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;** &lt;a href=&quot;http://www.mymajorcompany.com/luke-greenwald-1&quot;&gt;Luke Greenwald&lt;/a&gt;** (reggae/rock)&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>Etre Parisien, c&amp;#039;est être un éternel incompris</title>
      <link href="https://francois.aichelbaum.com/2012/05/03/etre-parisien-cest-etre-un-eternel-incompris" />
      <updated>2012-05-03T01:05:11+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/05/03/etre-parisien-cest-etre-un-eternel-incompris</id>
      <content type="html">&lt;p&gt;Ce soir, pour changer, direction le théatre (de la Main d’Or). Au programme, un cours pour anglophone (ou pas) pour devenir parisien.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/howtobecomeparisian.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/howtobecomeparisian.jpg 480w, /assets/howtobecomeparisian.jpg 499w&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Bon, ok la représentation est entièrement en anglais et ce qui rébutera plus d’une personne (j’en ai une en tête, tiens, mais je n’ai pas dit mon dernier mot) sous le prétexte de la barrière de la langue : et bien c’est une erreur magistrale car Olivier Giraud est tellement vivant sur scène, que tout se comprend, peu importe la langue.
Alors, oui, tout de suite, vous allez me rétorquer, que nous, pauvres Parisiens que nous sommes (enfin pour ceux qui le sont, pour les autres, désolé mais tout le monde ne peut pas être parfait et on l’est déjà pour vous) allons être stéréotypés à outrance et dénigrés au possible … Et bien, oui nous sommes stéréotypés de nos caractères véridiques. A aucun moment, je n’ai pu réfuter que nous étions tel que présentés. Mais c’est tellement bon de rire de soit même et Olivier (bien que Bordelais, lui aussi ne peut pas être parfait…) gère ca avec brio. On se délecte de notre mauvais caractère ou nos mauvaises habitudes. Mais bon, le Parisien est un être à part et il n’y a pas meilleur spectacle pour le décrire.
Un cours magistral en huit chapitre, une interro à la fin, un plaisir sans fin et oui, je te confirme Olivier, je vais me souvenir encore de ton spectacle un moment. Par contre, au moment du sexe, là, désolé pour ton égo, mais je penserais à quelqu’un d’autre, car t’es trop peu mon genre.
Bon, je profite pour tirer mon chapeau :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;un soir de débat électoral, alors que les cafés/restos se plaignent de la faible clientèle, le théatre fait le plein&lt;/li&gt;
  &lt;li&gt;Olivier a cru en son projet et l’a mené au bout … et c’est un succès&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Reste à trouver ceux que j’emmènera et je fais le serment qu’ils y seront et que je les accompagnerais avec le même plaisir.
Encore plus fier d’être Parisien après ce soir. Merci Olivier !&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Je me vengerais !</title>
      <link href="https://francois.aichelbaum.com/2012/04/29/je-me-vengerais" />
      <updated>2012-04-29T01:08:27+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/04/29/je-me-vengerais</id>
      <content type="html">&lt;p&gt;Ce soir, le film, parce que c’est le week, parce que c’est du Marvel, parce que c’est du super Box Office américain, parce que j’aime, parce que c’était avec des fanas de comics … c’était ca :&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/46527.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/46527.jpg 480w, /assets/46527.jpg 620w&quot; /&gt;&lt;/p&gt;

&lt;iframe width=&quot;640&quot; height=&quot;360&quot; src=&quot;https://www.dailymotion.com/video/1vfwp_&quot; frameborder=&quot;0&quot; webkitallowfullscreen=&quot;&quot; mozallowfullscreen=&quot;&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;Bon ok, celui là je l’ai vu un paquet de fois sur la 6 et il était à Panic Cinéma il y a deux semaines. J’étais voir le survitaminé, le génétiquement modifié, le body buildé, le déique, le sexy, le comique, le précis, l’amateur The Avengers, lancé par les Studios Marvel :&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Bon, on reprend certains personnages sous des traits connus (Iron Man, Captain America, Thor, Loki) et quelques nouveaux ou certains qui change à chaque nouvelle affiche cinématographique (suivez mon regard vers le géant vert). Pour autant, j’ai l’impression depuis l’été dernier, que personne n’a remarqué que Captain America est aussi la Torche Humaine (un des &lt;a href=&quot;https://www.youtube.com/watch?v=3V0h28qYPqQ&quot;&gt;4 Fantastiques&lt;/a&gt;) ou que l’Agent Hill est &lt;a href=&quot;https://www.youtube.com/watch?v=U01hsTwtc-c&quot;&gt;canadienne&lt;/a&gt; à ses heures perdues. Bon le premier me choque le plus vu que c’est la même license (&lt;em&gt;Marvel&lt;/em&gt;). C’est un peu comme Ryan Reynolds qui campe Green Lantern chez &lt;em&gt;DC&lt;/em&gt; et Deadpool chez &lt;em&gt;Marvel&lt;/em&gt;… Mais bon, ca ne change pas grand chose au spectacle.
Pour en revenir à nos vengeurs, il est de ces films qui nous rappellent pourquoi on aime aller au cinéma : pour y voir du spectacle, rire, frissoner, dévorer le popcorn trop vite tellement on est plongé dans l’action à tendre la main mécaniquement entre le paquet et la bouche … Et clairement, &lt;em&gt;Avengers&lt;/em&gt; est de ce genre de film. Oui, bien sûr, comme tout film où la 3D a été rajoutée en post-prod, on rumine de gâcher une part du plaisir là dedans. Reste que c’est beau, l’action claire en permanence, dynamique, un ton comique lié aux relations entre les différents protagoniste (que ca soir Tony Stark qui passe ton temps à titiller Bruce Banner, Captain America qui veut jouer son rôle de capitaine, Black Widow qui est une faible femme aussi mortelle que sexy et bien sûr le tandem entre le Viking et le Troll à savoir Thor/Hulk).
En résumé, un régal de divertissement, car il ne se raconte pas mais se vit …
Pour terminer, je résume pourquoi vous aller foncer au ciné :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;une phrase : “Hulk … Smash !”&lt;/li&gt;
&lt;/ul&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;ul&gt;
  &lt;li&gt;une vidéo (&lt;strong&gt;ATTENTION&lt;/strong&gt; : énorme spoil donc cliquez à vos risques et péril) :&lt;/li&gt;
&lt;/ul&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>Bons crus</title>
      <link href="https://francois.aichelbaum.com/2012/04/27/bons-crus" />
      <updated>2012-04-27T01:41:31+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/04/27/bons-crus</id>
      <content type="html">&lt;p&gt;Pour une fois, ce soir, je parle de vins. J’ai passé ma deuxième soirée découverte d’une cave très agréable sur Paris :&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/Logo_rvb_gris_72.jpg&quot; alt=&quot;Crus&quot; /&gt;&lt;/p&gt;

&lt;p&gt;C’est dans le 1er arrondissement à proximité de Châtelet. Un cadre plein de charme, un patron passionné et très agréable, une experte en vins passionnée et charmante, une plétore de bouteilles, un ravissement pour les papilles, un cours permanent pour les curieux, …
Au delà de la vente au détail, ils se font aussi grossistes mais également meneurs de soirées découvertes (publiques ou privées) : l’occasion de (re)découvrir les vins, de manière générale ou d’un producteur (ce soir, du Chablis). On déguste, on s’instruit … Un vrai plaisir sans nom ou se mélange les adjectifs et les plaisirs olfactifs et gustatifs tels un torrent d’émotions … le tout accompagné de plateaux de charcuteries et fromages aussi raffinés que les boissons servies.
A découvrir, à recommander, à partager et à profiter. Au passage, mon côté nerd adore le moteur de recherche “logique” de leur site, assez rare pour le remarquer.
Pour le plaisir :&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;A la vôtre !&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>2 days in New York : perdu dans la traduction</title>
      <link href="https://francois.aichelbaum.com/2012/04/25/perdu-dans-la-traduction" />
      <updated>2012-04-25T22:23:05+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/04/25/perdu-dans-la-traduction</id>
      <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/perdu-150x150.jpg&quot; alt=&quot;Perdu&quot; /&gt;{.left} Mieux vaut tard que jamais comme on dit ? Cela fait un mois que &lt;em&gt;2 days in New York&lt;/em&gt; est sorti dans les salles obscures françaises, deux semaines que je soutiens que j’irais le voir mais que mon planning est sans cesse modifié mais cette fois c’est fait ! J’ai fui lâchement l’inactivité lassive du soir pour me réfugier au chaud de la salle de projection pour le voir.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Quelques uns me parlaient d’un bon film, sans plus, on rigole “mais” … mais quoi ? Je ne sais pas. A force, j’ai cru finir devant un &lt;a href=&quot;https://www.youtube.com/watch?v=yYAS92XPvIM&quot;&gt;Lost in Translation&lt;/a&gt; familial et français. Mais ces critiques ne m’atteignent pas : j’adore la productive et vivante Julie Delpy et la piplette déconcertante qu’est Chris Rock …
Ah … les français, leurs râleries, leurs hypocrisies, leurs ignorances … c’est ainsi que la famille de &lt;em&gt;Marion&lt;/em&gt; (Julie Delpy) nous représente, comme les américains comme &lt;em&gt;Mingus&lt;/em&gt; (Chris Rock) nous dépeindraient avec nos saucissons et reblochons à faire passer tels de la contrebande. Mais au delà, sont surtout mis en exergue les a prioris, le brassage culturel, la vie de chacun, l’effet de la loi de Murphy et bien sûr … l’inexistence même des coïncidences ! Une nana disjonctée, un vrai &lt;em&gt;new yorker&lt;/em&gt;, une soeur psychotique/nympho/exhib, un boulet de service, un père qui ne débite pas un mot d’anglais, un fils un peu perdu et une fille qui finira comme la première Goth Black … Un bon groupe comme on les aime.
Tout est raconté à la légère, tel les mensonges que l’on raconte à un voisin chiant dans l’ascenceur pour s’en débarasser. Rien n’est pris au sérieux si ce n’est notre propre désespoir et justement que chacun se retrouve à un moment … perdu dans sa propre réalité. Chaque drame a son happy end.
Après tout, nous français, nous délectons avec plaisir et humour du malheur de nos congénaires, alors faisons-le avec panache et légèreté ! Julie Delpy nous offre une comédie à déguster à n’importe quelle heure.
Je cherche encore à comprendre la tentative de comparaison de &lt;em&gt;certains&lt;/em&gt; avec du &lt;em&gt;Woody Allen&lt;/em&gt;, à croire qu’il faut toujours comparé à certains dinosaures américains pour apprécier la fraicheur et légèreté de la nouvelle vague francaise…&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Ian égorge la magie</title>
      <link href="https://francois.aichelbaum.com/2012/04/24/ian-magie-gore" />
      <updated>2012-04-24T08:29:34+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/04/24/ian-magie-gore</id>
      <content type="html">&lt;p&gt;Roh c’est mal … je deviens un poisson rouge (et non un poisson clown, bande de mauvaises langues) : je vais voir un spectacle et j’oublie d’en parler. Pour le coup, c’est tout les lundis (me concernant c’était la semaine dernière), à la &lt;a href=&quot;http://cantada.net/&quot;&gt;Cantada&lt;/a&gt;, c’est gratuit et c’est :&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/ian.jpg&quot; alt=&quot;Ian Magie Gore&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Bon, tant qu’à faire, on est à la Cantada, donc on profite de la carte : absinthes, hypocras, charcuterie … Ca c’est moins gratuit mais pas trop cher et c’est bon !
Puis on descend voir le spectacle à la cave, on s’installe et on attend. Ian aussi attend : “parce que c’est à 20h30”. Pas 20h28. Pas 20h31. Non … 20h30 … faut pas louper l’heure de début ! Alors Ian et sa magie gore c’est quoi ? Voici son résumé sur &lt;a href=&quot;http://www.billetreduc.com/64090/evt.htm&quot;&gt;Billetreduc&lt;/a&gt; :&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Vous ne connaissez pas le cinema gore ?
Vous ne comprenez rien à la prestidigitation ?
Vous croyez que le mentaliste est un blondinet rebelle qui joue avec le cerveau des gens ?
Vous imaginez qu’un blockbuster est un film de chasseur de fantômes ?
Les tours de magies ne dérapent jamais ?
Je vous expliquerez tout pour devenir de vrais geeks !
Une soirée sang pour sang interactive!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Le ton ? la déconnade, le foirage, le kitch … puis viendra les &lt;em&gt;eurk&lt;/em&gt;, les &lt;em&gt;aie&lt;/em&gt;, les &lt;em&gt;ouch&lt;/em&gt;, les &lt;em&gt;oups&lt;/em&gt; … Quelques suprises qui ne sont ni de la magie ni du gore mais qui a priori donnent plus de frissons aux demoiselles à rassurer après coup !
Bref, une heure de show mélangeant tous les styles : ça tâche, c’est drôle, ça donne des frissons, ça titille la curiosité … A faire (et à refaire).
Bon petite astuce pour ceux qui ne s’encombrent pas de choses inutiles : il faut emmener un magnétoscope VHS Pal/Secam, une péritel, une multi-prise et une petite TV compatible. Là, votre soirée sera unique !
Accessoirement, un guest permanent : Cloclo était, est et sera là !
Si &lt;em&gt;Nils&lt;/em&gt; m’envoie enfin des photos, je les publierais ;)&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Ne paniquez pas au cinéma !</title>
      <link href="https://francois.aichelbaum.com/2012/04/22/ne-paniquez-pas-au-cinema" />
      <updated>2012-04-22T01:33:29+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/04/22/ne-paniquez-pas-au-cinema</id>
      <content type="html">&lt;p&gt;Ce soir, j’ai découvert &lt;a href=&quot;http://www.paniccinema.com/&quot;&gt;Panic! Cinema&lt;/a&gt; : c’est un rendez-vous hebdomadaire pour les cinéphiles et les non-cinéphiles, pour voir des films de genre. Le rendez-vous se passe à la Nouvelle Latina, rue du Temple, cadre extrêmement sympa.
Quand on voit la liste des films, on se dit que ca peut être sympa. Quand on voit que c’est 5€ en tarif unique, on se dit que ca devient intéressant. Quand on apprend que c’est compatible avec les cartes illmités UGC et Pass, on sait qu’on va sûrement y aller. Et là, on nous souffle que la bière est offre dans ce cadre super agréable avec des gens plus que sympas : plus aucune raison de fuir !
On arrive, on papote, on lève le coude … Puis on descend voir la pré-séance. La semaine passé, le film &lt;em&gt;aurait du être&lt;/em&gt; La revanche de Hulk : les organisateurs s’excusent d’avoir présenté &lt;em&gt;son mariage&lt;/em&gt; et se propose de corriger le tir en diffusant le bon film … en une minute. C’est … suffisant. S’ensuit une chanson de vampire “&lt;a href=&quot;https://www.youtube.com/watch?v=yGLwqtOF_XY&quot;&gt;First Date&lt;/a&gt;”, la bande annonce d’un nouveau film sur les vampires, “&lt;a href=&quot;https://www.youtube.com/watch?v=0IblzBerSFk&quot;&gt;Jesus VS les vampires&lt;/a&gt;”, &lt;a href=&quot;https://www.youtube.com/watch?v=f6QmgTQpLWU&quot;&gt;Blade Trinity en 5 secondes&lt;/a&gt;, puis bien sûr une fin alternative en dessin animé pour … &lt;a href=&quot;http://bcove.me/ss4kiz0j&quot;&gt;Twilight&lt;/a&gt; … Comment dire … On est lancé !
J’ai eu le plaisir d’y faire mon baptême avec le film Higanjima, film de vampires japonais, tiré d’un manga éponyme.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/higanjima-aff.jpg&quot; alt=&quot;Higanjima&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Pour avoir déjà goûter aux vampires sauce Yakitori avec &lt;a href=&quot;https://www.youtube.com/watch?v=tYnciEGup9k&quot;&gt;Blood&lt;/a&gt; (version anime), je n’ai pas franchement été dépaysé sur l’ambiance et le style graphique. Le film respecte les règles &lt;em&gt;du genre&lt;/em&gt; : un lieu reclu (une des 7000 îles japonaises), un vampire libéré de sa prison, un héros torturé, des gamins pleins d’espoirs désillusionés, du sang en surdosage, une nana sexy, …
Le film est rythmé, comique, sanglant, … parfois aberrant. Et c’est là que son charme s’opère. On apprécie son côté décallé qui reste sur les rails &lt;em&gt;de son genre&lt;/em&gt;.
Bref, une soirée parisienne gratuite et super plaisante, à refaire régulièrement : ca tombe bien, c’est toutes les semaines !&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>Twixt, deux doigts coupent fin ...</title>
      <link href="https://francois.aichelbaum.com/2012/04/12/twixt-deux-doigts-coupent-fin" />
      <updated>2012-04-12T21:52:25+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/04/12/twixt-deux-doigts-coupent-fin</id>
      <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/twix-150x150.gif&quot; alt=&quot;Twix&quot; /&gt;{.left} Le dernier Coppola que je me suis fait au ciné, c’était un film de la fille du &lt;em&gt;Maître&lt;/em&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=sU0oZsqeG_s&quot;&gt;Lost in Translation&lt;/a&gt; - Sofia Coppola, 2003). Le sentiment qui me revient à chaque fois que je pense à ce film ? “Hein ? Quoi ? Je suis où ? Il s’est passé quoi ?” … Bref, perdu … Je crois qu’en fait, c’est génétique chez eux. En tout cas, je suis dans le même état après Twixt.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;On suit donc un écrivain raté, un Stephen King de seconde classe, dominé par la mort de sa fille, guidé par Edgar Allan Poe, dans un univers présentant les traits d’un livre d’&lt;a href=&quot;https://www.youtube.com/watch?v=auw3_z9EyRg&quot;&gt;Alan Wake&lt;/a&gt; en plus … épuisé par l’alcool.
Tous les clichés sont donc réunis : un écrivain atteind du mal de la page blanche, à qui l’ont colle une étiquette de genre qu’il n’aime pas, torturé par la mort de sa fille dont il se culpabilisé, agressé en permanence par sa &lt;del&gt;sorcière&lt;/del&gt; femme, défoncé au mauvais alcool (et parfois un bon whisky onirique) et aux somnifères ; un bled paumé dans l’amérique profonde, traumatisé par un massacre ; des &lt;del&gt;bouseux&lt;/del&gt; autochtones rares et … bizarres ; un shérif qui rêve de son quart d’heure américain ; un agent qui ne pense qu’à son argent ; …
Bon c’est sûr, avec un environnement pareil, un synopsis qui tiens sur une carte de visite et un Val Kilmer toujours plus gros (il continue d’imiter son mentor, Marlon Brando), on part tout de suite sur de mauvaises bases avec ce film. Puis, on se rappelle que c’est le Maître à la baguette, que tous les détails comptent.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Twixt ? selon le wikipedia, c’est de l’&lt;em&gt;anglais archaïque&lt;/em&gt; pour dire “entre (deux choses)” ; on passe notre temps à hésiter : entre deux émotions (mal-être et agacement), entre deux mondes (monde vivant et monde onirique), entre deux films (un thriller et un film d’horreur)&lt;/li&gt;
  &lt;li&gt;Val Kilmer ? Un acteur qui avait un potentiel et qui l’a gâché (comme son personnage)&lt;/li&gt;
  &lt;li&gt;Le beffroi ? Sept cadrans, sept heures différentes, sept séquences, sept coups de cloche à sept reprise, sept cadavre d’enfants alors qu’il devrait y en avoir douze, on ne connait qu’un seul jour, le dimanche, le 7e … sept … toujours sept … à la manière du “Nevermore” du corbeau d’Egdar Poe … (au passage, le budget est de … 7 millions de dollars)&lt;/li&gt;
  &lt;li&gt;tout est intemporel : on ne sait plus l’heure à cause du beffroi, on ne sait plus la date avec les personnages qui sont présents à toutes les époques et dans les deux univers, …&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Au final, l’impression d’être perdu est clairement une manipulation voulue. On nous perd dans le fouilli ambiant, pour nous rattraper par des messages chocs, des images plus qu’expressive et toujours d’actualité, peu importe le pays. Assez perturbant car on ne sait jamais sur quel pied danser avec le film, et encore moins quoi ressentir après coup.&lt;/p&gt;

&lt;p&gt;Par contre, je n’avais pas vu autant de sang (dans la scène finale) depuis que Freddy Krueger avait tué &lt;a href=&quot;https://www.youtube.com/watch?v=p0rbyIMXBJA&quot;&gt;Johnny Depp&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Bon allez, pour la route, je ne pouvais pas ne pas la sortir :&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Perturbé, je suis incapable, même après ce billet, de dire si j’ai apprécié ou non ce film ; je suis clairement perdu avec … Mais Coppola reste le &lt;a href=&quot;https://www.youtube.com/watch?v=WaVZmo8CsGQ&quot;&gt;Maître&lt;/a&gt;. A voir si vous voulez arrêter l’alcool ou la drogue.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/twixt.jpg&quot; title=&quot;&quot; srcset=&quot; /assets/twixt.jpg 300w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>La croisière s&amp;#039;amuse ...</title>
      <link href="https://francois.aichelbaum.com/2012/04/11/la-croisiere-samuse" />
      <updated>2012-04-11T22:57:59+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/04/11/la-croisiere-samuse</id>
      <content type="html">&lt;p&gt;Ce soir j’ai &lt;em&gt;re&lt;/em&gt;découvert un monument de l’art audiovisuel cinématographique :&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Bon alors attention, le cast est super long, super non exhaustif et super pas dans l’ordre :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=3kzBwxQ39mM&quot;&gt;Olive et Tom&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=6Rf55GTEZ_E&quot;&gt;John Carter&lt;/a&gt; quand il s’est pas vu quand il a bu&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=AABvc7Y9hpE&quot;&gt;Mr Bean&lt;/a&gt; qui se la joue &lt;a href=&quot;https://www.youtube.com/watch?v=kT552wBkiuE&quot;&gt;Panthère Rose&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;les &lt;a href=&quot;https://www.youtube.com/watch?v=5SrpxsaMFQw&quot;&gt;Cowboys&lt;/a&gt; de l’espace revus par les &lt;a href=&quot;https://www.youtube.com/watch?v=InBXu-iY7cw&quot;&gt;Village People&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;un réal qui croit être le fils de &lt;a href=&quot;https://www.youtube.com/watch?v=NZZvtQtdbzM&quot;&gt;Rolland Emmerich&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;une BO bien rock’n’roll avec un magistral &lt;a href=&quot;https://www.youtube.com/watch?v=o018byLnMFM&quot;&gt;Thunderstruck&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;un &lt;a href=&quot;https://www.youtube.com/watch?v=snr3ajCFR9Y&quot;&gt;Qui Gon Jinn&lt;/a&gt; au regard de feu mais je me demande s’il ne porte pas déjà des couches&lt;/li&gt;
  &lt;li&gt;des &lt;a href=&quot;https://www.youtube.com/watch?v=oEYH28o3aOw&quot;&gt;jouets&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;une &lt;a href=&quot;https://www.youtube.com/watch?v=DE0jyoMggGQ&quot;&gt;chanteuse&lt;/a&gt; &lt;del&gt;pulpeuse mais fragile&lt;/del&gt; sur-tatouée, comme un vrai marines !&lt;/li&gt;
  &lt;li&gt;une &lt;a href=&quot;https://www.youtube.com/watch?v=qwpjSpc3loQ&quot;&gt;Barbie&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;une &lt;a href=&quot;https://www.youtube.com/watch?v=wBAfpjf5z2U&quot;&gt;bataille navale pour de faux&lt;/a&gt; parce que sinon ca fait bobo&lt;/li&gt;
  &lt;li&gt;des aliens sortis de &lt;a href=&quot;https://www.youtube.com/watch?v=ElxWObVu8GY&quot;&gt;Mass Effect&lt;/a&gt; armés par &lt;a href=&quot;https://www.youtube.com/watch?v=4nPReFao19g&quot;&gt;Lost Planet&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;le tout à bord du &lt;a href=&quot;https://www.youtube.com/watch?v=m_wFEB4Oxlo&quot;&gt;Pacific Princess&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;pour mettre en valeur le patriotisme et le sacrifice de &lt;a href=&quot;https://www.youtube.com/watch?v=NIyksk8uiEo&quot;&gt;Pearl Harbor&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;sans oublié, la référence à &lt;a href=&quot;https://www.youtube.com/watch?v=u_Mx1kA3irk&quot;&gt;Touche pas mon périscope&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;un survivor qui n’a pas oublié ses classes de &lt;a href=&quot;https://www.youtube.com/watch?v=DnN_ElUIW78&quot;&gt;Foot US&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;un &lt;a href=&quot;https://www.youtube.com/watch?v=nXCXw7R9pWc&quot;&gt;intello&lt;/a&gt;, ca a des lunettes, les chocottes et c’est pas doué&lt;/li&gt;
  &lt;li&gt;du &lt;a href=&quot;https://www.youtube.com/watch?v=xZ96tl5MrfU&quot;&gt;Fast and Furious &lt;del&gt;Hawaï&lt;/del&gt; Tokyo Drift&lt;/a&gt; à la mer&lt;/li&gt;
  &lt;li&gt;la séquence émotion des &lt;a href=&quot;https://www.youtube.com/watch?v=wLlmymHRNZg&quot;&gt;Rasta Rocket&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;l’autre séquence émotion perdue entre l’&lt;a href=&quot;https://www.youtube.com/watch?v=dJ3kwMq18-8&quot;&gt;entraide&lt;/a&gt; et la &lt;a href=&quot;https://www.youtube.com/watch?v=t8NR6n1nRMI&quot;&gt;douleur&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=g1-9vw8cUi8&quot;&gt;‘Ti Biscuit&lt;/a&gt; en patron de la Défense US&lt;/li&gt;
  &lt;li&gt;un &lt;a href=&quot;https://www.youtube.com/watch?v=PQaNxnXh68s&quot;&gt;burrito&lt;/a&gt; au poulet&lt;/li&gt;
  &lt;li&gt;c’est l’histoire de &lt;a href=&quot;https://www.youtube.com/watch?v=TRE7gINaS5o&quot;&gt;Dumb and Dumber&lt;/a&gt; qui ont un fils, comme s’appelle-t-il ?&lt;/li&gt;
  &lt;li&gt;l’armée ca vous &lt;a href=&quot;https://www.youtube.com/watch?v=V7SgZ2kbENg&quot;&gt;forme&lt;/a&gt; votre jeunesse dépravée&lt;/li&gt;
  &lt;li&gt;de &lt;a href=&quot;https://www.youtube.com/watch?v=STp1UtMrKR4&quot;&gt;beaux dialogues&lt;/a&gt; parce que ca motive (réf à un certain Mr J.)&lt;/li&gt;
  &lt;li&gt;au moins autant d’invités, de clins d’oeils involontaires (ou pas ?), de référence qu’il y a de séquences …&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ca donne&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;D’ailleurs, UGC le résume tout aussi bien en une image dans son mensuel :&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/ugc.png&quot; alt=&quot;UGC - Mensuel 04/12 - Battleship&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Je suis à jeun. Par contre, avec un budget annoncé de 200 millions de dollars pour transformé le jeu de la bataille navale en film, je pense que la Prod et la Réa ont bien profité pour se démonter le cerveau.
J’ai rarement vu une salle aussi hilare du début à la fin. C’est gros. C’est baveux. C’est énorme. C’est LA référence des super-grosses productions américaines pour les décennies à venir. C’est LE nanard du siècle.
Ok je partais avec l’idée d’aller voir un navet vu que le ruhbe m’empêche de connecter tous les neurones. Au final, j’en sors, je suis soigné, et me souviens de tout … Ils mettent des choses dans les clim’ des UGC ? Bref, c’est tout simplement énorme dans le n’importe quoi. Pas une séquence sans me rappeler un film, une série, un DA, un personnage, une chanson, … Et dès la première séquence, on vous fait comprendre que ce n’est pas votre cerveau qui déraille mais bien le film qui sera comme ca.
C’est Battlleship. C’est inclassable. C’est sorti aujourd’hui. C’est sain pour votre santé. Et moi, je pars me chercher un burrito au Jumbo … pardon, au poulet.&lt;/p&gt;

&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;/assets/battleship.jpg&quot; title=&quot;&quot; srcset=&quot;/assets/resized/480/battleship.jpg 480w, /assets/battleship.jpg 600w&quot; /&gt;&lt;/p&gt;

</content>
    </entry>
  
    <entry>
      <title>A l&amp;#039;oeil d&amp;#039;aucun</title>
      <link href="https://francois.aichelbaum.com/2012/04/04/a-loeil-daucun" />
      <updated>2012-04-04T21:07:29+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/04/04/a-loeil-daucun</id>
      <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/oeil-150x150.jpg&quot; alt=&quot;oeil&quot; /&gt;{.left} Alors ce soir au dîner, je vous propose la recette suivante :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;une base de &lt;a href=&quot;http://www.allocine.fr/series/ficheserie_gen_cserie=58.html&quot;&gt;24H Chrono&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;une bidasse bien française&lt;/li&gt;
  &lt;li&gt;un soupçon d’&lt;a href=&quot;http://fr.wikipedia.org/wiki/Anonymous_(collectif)&quot;&gt;Anonymous&lt;/a&gt; pour être à la mode&lt;/li&gt;
  &lt;li&gt;de la crème électorale&lt;/li&gt;
  &lt;li&gt;saupoudré d’un enregistrement rappelant par moment du &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=57410.html&quot;&gt;Saw&lt;/a&gt; …&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Et on obtient … &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=191181.html&quot;&gt;Aux yeux de tous&lt;/a&gt;. Bon, c’est sûr, j’y suis allé avec un méchant &lt;em&gt;a priori&lt;/em&gt; sur le film et principalement la partie “hacking”. Faut être réaliste, nous remettre un coup d’&lt;em&gt;Anonymous&lt;/em&gt; pour faire passer la pillule c’était un peu trop à mon goût (mais c’est un autre débat).&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Le film démarre et je subis clairement les premières minutes, tant que notre cher Martin, le pirate, ne fait qu’être spectateur. Entre l’environnement permettant tout et n’importe quoi, la beauté dans la bascule des écrans, le tout accessoirisé par &lt;a href=&quot;http://www.microsoft.com/hardware/fr-fr&quot;&gt;Microsoft&lt;/a&gt; … et j’en passe des meilleurs … Quoi que non je ne passe pas …
La caméra passera rapidement et furtivement sur les écrans pour nous montrer des pseudos lignes de commande ou de code … et s’attardera parfois sur des écrans de toute beauté pour les connaisseurs. Un exemple ?
Dans le film :&lt;/p&gt;

&lt;p&gt;~~~~ {.shell .numberLines startFrom=1}
$ pstree -l 13278&lt;/p&gt;
&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;rouge-gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
6
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;rouge-code&quot;&gt;&lt;pre&gt;
(on s&apos;en fout du nombre ...) donne en résultat ... une recherche sur la présence d&apos;une nana dans tous les hopitaux parisiens ... C&apos;est magique.
Dans la réalité, [pstree](http://manpagesfr.free.fr/man/man1/pstree.1.html) affiche un arbre des processus d&apos;un système Linux (un arbre permettant de savoir de quel programme un autre programme dérive, pour faire simple).

~~~~ {.shell .numberLines startFrom=1}
$ pstree
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;renvoie par exemple&lt;/p&gt;

&lt;p&gt;~~~~ {.shell .numberLines startFrom=1}
init─┬─atop
     ├─cron
     ├─6&lt;em&gt;[getty]
     ├─master─┬─anvil
     │ ├─pickup
     │ └─qmgr
     ├─mysqld_safe─┬─logger
     │ └─mysqld───19&lt;/em&gt;[{mysqld}]
     ├─openvpn
     ├─pdns_server─┬─pdns_server───11&lt;em&gt;[{pdns_server}]
     │ └─{pdns_server}
     ├─postgrey
     ├─snmpd
     ├─sshd───sshd───sshd───bash───sudo───su───bash───pstree
     ├─syslog-ng───syslog-ng
     └─udevd───2&lt;/em&gt;[udevd]
~~~~&lt;/p&gt;

&lt;p&gt;Le “-l” ? Il permet un affichage dit “long” donc avec plus d’infos. Le nombre ? De démarrer à un certain niveau directement.&lt;/p&gt;

&lt;p&gt;Bref on est à des années lumières d’une recherche sur des bases d’hôpitaux.
On continue ? Les caméras : peu importe que cela soit des caméras de sécurités, des globes de banque, de boutiques, etc etc … Toutes ont du son : c’est tout simplement parfait pour espionner.
On pourrait continuer longtemps sur les incohérences … Donc autant en faire abstraction sinon on sort direct de la salle de cinéma.
Passé un bon gros 20/30 minutes, le film se dynamise un peu et nous rappelle qu’on est au cinéma pour se divertir … L’histoire sur l’attentat suit son cours puis vient nous rappeler que n’importe quel média peut être manipuler … parfois (?) par les politiques. On pourrait se dire que le film tombe bien ? Peut être trop …
Quoi qu’il en soit, le film me laisse un goût amer, mélangeant les questions qu’on est en droit de se poser sur l’actualité de ces dernières semaines, à une mauvaise réalisation qui rend l’ensemble assez indigeste. Pour faire simple : le potentiel du film est clairement gâcher.
Ok le budget du film minime, sa sortie en salle assez confidentielle, mais bon :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;la réalisation ferait échouer le candidat aux épreuves universitaires&lt;/li&gt;
  &lt;li&gt;le hacking nous rappelle à quel point notre “science” ressemble à du chinois (d’ailleurs ils auraient mis des caractères à la &lt;a href=&quot;https://www.youtube.com/watch?v=8ze54ymmi1A&quot;&gt;Matrix&lt;/a&gt; j’aurais préféré …)&lt;/li&gt;
  &lt;li&gt;les effets visuels (l’explosion de l’attentat en tête de file) ne sont même pas au niveau des &lt;a href=&quot;http://www.gobelins.fr/&quot;&gt;Gobelins&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dommage : le synopsis était sympa, le parti pris de n’avoir que des images “de webcam/cam de sécurité/…” audacieux … mais le reste échoue lamentablement.
Bref, à voir si vous vous posez encore des questions sur ce que vous voyez dans les médias ou que vous voulez rire des &lt;em&gt;Script Kiddies&lt;/em&gt; membre des &lt;em&gt;Anonymous&lt;/em&gt; et dans tous les autres cas … A FUIR !&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Hop hop on garde le rythme</title>
      <link href="https://francois.aichelbaum.com/2012/03/29/hop-hop-on-garde-le-rythme" />
      <updated>2012-03-29T21:26:16+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/03/29/hop-hop-on-garde-le-rythme</id>
      <content type="html">&lt;p&gt;Bon aujourd’hui c’est un billet “&lt;a href=&quot;/category/feelings/&quot;&gt;Fellings&lt;/a&gt;” car je ne sais pas trop de quoi parler … Ah si, on peut lister ces deux derniers jours !&lt;/p&gt;

&lt;h2 id=&quot;cinéma--chronicle--the-wrath-of-the-titans&quot;&gt;Cinéma : Chronicle &amp;amp; the Wrath of the Titans&lt;/h2&gt;

&lt;p&gt;Alors Chronicle on va le résumé ainsi : un mix entre du &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=20268.html&quot;&gt;Projet Blairwitch&lt;/a&gt; pour l’ambiance visuel et le concept et du &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=6429.html&quot;&gt;Akira&lt;/a&gt; pour les mecs qui gagnent des pouvoirs et potentiellement pêtent un câble.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;On passe un bon moment même si l’on se doute dès le début de comment tout ca va finir … Mais on regarde … On regarde la nature humaine s’exprimer de deux manières différentes. Après tout : à de grands pouvoirs, de grandes responsabilités. On apprécie que la vidéo ne soit pas fouillie (ni trop quand elle doit l’être) contrairement à certains films à effets spéciaux récents… Pas grand chose à dire : juste à le prendre pour ce qu’il est : une vue de la nature humaine, une bonne ambiance, un bon trip, un bon moment.&lt;/p&gt;

&lt;p&gt;Par contre, la Colère des Titans… Alors ok, on fait tout de suite abstraction de la mythologie (de ce qu’on s’en souvient ou non) et on reste focalisée sur l’adaptation plus que libre faite par &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=127950.html&quot;&gt;le Choc des Titans&lt;/a&gt; version 2010 …&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Bon dès lors, on s’attend simplement à un gros spectacle en 3D … On en a presque pour son argent : l’action est là, les graphismes sont propres, la 3D … absente … Bon, si vous avez conservé vos lunettes UGC … on s’en fout presque …
Ce que je regrette ? La BO présente du &lt;a href=&quot;https://www.youtube.com/watch?v=m6VojYGrnpg%26ob%3Dav2n&quot;&gt;Marilyn Manson&lt;/a&gt; en bande son … Et bah non, on reste sur de la pure musique de film presque sans vie … Dommage, ca aurait pu donner un énorme plus d’avoir une OST avec ce genre de dynamisme … Mais bon …
Après, on rigolera clairement du jeu de certains acteurs vraiment pas convaincant (Liam Neeson &amp;amp; Ralph Fiennes en tête …) surtout que ce ne sont plus de jeunes premiers.
Bref, gros spectacle mais qui loupe clairement le coche de se démarquer sur “le reste” (3D, bande originale, jeu des acteurs…) puisqu’il est très clairement annoncé pour nous en mettre plein la vue … Dommage, il y avait de quoi en faire un vrai blockbuster avec ces petits plus … A ranger en nanard à gros budget qui se fera vite oublier … Jusqu’à la prochaine suite …&lt;/p&gt;

&lt;h2 id=&quot;au-taff--le-salon-cloud&quot;&gt;Au taff : le salon Cloud&lt;/h2&gt;

&lt;p&gt;Plus petit que par le passé. Moins animé que par le passé. Plus de presta (SSII et VRP) que par le passé (qui viennent vous démarcher, sans stand). Plus fouilli. Plus éreintant.
Et juste “Cloud”… Dommage, la partie Datacenter est presque oubliée, et le Green IT, passé de mode.
Pourtant, cela ramenait du meilleur monde et donnait beaucoup plus de matière à parler … Du coup, tout le monde vend la même chose, de la même manière, … Après, il y a quelques exceptions :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.iliad-entreprises.fr/&quot;&gt;nous&lt;/a&gt; déjà : normal j’y suis … je ne suis pas objectif (mais si on a quelque chose en plus quand même)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.outscale.com&quot;&gt;Outscale&lt;/a&gt; : qui a choisit un mode de fonctionnement très différent de la concurrence, des outils différents, puis bon, l’affectif joue puisque j’ai fait mes classes en infogérance avec ses fondateurs (David Gillard et Laurent Seror) et certains membres (Fred Jolliton en tête)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.cloudbees.com/&quot;&gt;CloudBees&lt;/a&gt; : même si je suis allergique au Java, leur approche et leur produit m’a interpelé au milieu du reste&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bon prochain coup, faut prévoir les masseuses par contre (pour moi) et mes pitbulls pour qu’on n’est pas à jeter le “spam” humain comme on finit par le faire à la fin de la journée …&lt;/p&gt;

&lt;h2 id=&quot;feelings-&quot;&gt;Feelings ?&lt;/h2&gt;

&lt;p&gt;Bon si je ne dis rien sur ce point, on va me dire que je ne communique pas, que je garde trop pour moi, que j’inquiète les gens, etc etc …
Donc je me retrouve, je suis positif … Juste que tout ces chamboulements dans ma vie perso font que j’ai envie d’autre chose niveau pro … Recommencer, pour tourner totalement la page sur ce passé.
Et quelque part, revoir d’anciens patrons/collègues chez qui j’ai fait mes classes d’infogérant et pour qui j’ai énormément de respect … fait que le côté nostalgie rappuie sur ce point …
Rajouté aux rêves et souvenirs que j’ai en ce moment …
Enfin bon, maître-mot du moment PO-SI-TIF !&lt;/p&gt;

&lt;p&gt;Bon et la vidéo qui me donne le sourire aujourd’hui ?&lt;/p&gt;
&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content>
    </entry>
  
    <entry>
      <title>Ce matin, revue de films</title>
      <link href="https://francois.aichelbaum.com/2012/03/27/ce-matin-revue-de-films" />
      <updated>2012-03-27T09:11:09+02:00</updated>
      <id>https://francois.aichelbaum.com/2012/03/27/ce-matin-revue-de-films</id>
      <content type="html">&lt;p&gt;Vu que je dois m’occuper au maximum l’esprit et me forcer à sortir, ma solution de facilité : profiter de ma carte UGC.
Du coup, en quatre jours, quatre films : &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=137263.html&quot;&gt;John Carter&lt;/a&gt;, &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=178074.html&quot;&gt;Target&lt;/a&gt;, &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=183556.html&quot;&gt;la Dame en Noir&lt;/a&gt; et &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=145083.html&quot;&gt;Hunger Games&lt;/a&gt;. Allons-y dans l’ordre.&lt;/p&gt;

&lt;h2 id=&quot;john-carter&quot;&gt;John Carter&lt;/h2&gt;

&lt;p&gt;On est vendredi soir, je déprime un peu beaucoup, je dois me changer FORTEMENT les idées : direction le ciné avec un film que je crois être un super nanard : &lt;em&gt;John Carter&lt;/em&gt;.
Pour ceux qui auraient la flemme de cliquer, il s’agit d’un film mélangeant action, aventure et science fiction, produit par Disney, réalisé par Andrew Stanton (un habitué de chez Pixar ayant déjà réalisé &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=126123.html&quot;&gt;Toy Story 3&lt;/a&gt;, &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=130368.html&quot;&gt;Là-Haut&lt;/a&gt;, &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=123734.html&quot;&gt;Wall-E&lt;/a&gt; et &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=46211.html&quot;&gt;Ratatouille&lt;/a&gt;) basé sur le premier volume du &lt;em&gt;Cycle de Mars&lt;/em&gt; d’Edgar Rice Burroughs (1917).
On résume ? une maison de production avec des moyens assez énorme, pour rester gentil, un réalisateur de films magnifiques, et un livre des premières heures de la SF donc avec la naïveté et les bases de l’époque (la rédaction du livre a commencé a priori en 1911 donc l’histoire est centenaire !). A la base, il y a de quoi promettre.
Puis on se souvient que Disney commet souvent des impairs : où sera-t-il aujourd’hui ? Dans toute la promo …&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Résultat, le film est prometteur, mais la promo a tout gâché et donc pas assez d’entrée … Qu’en est-il vraiment ? Et bien il en ressort un excellent divertissement à la qualité graphique Pixar ! Action rapide (et nette), un peu de romance légère façon macho début du XXe siècle, une épopée de gladiateur, … J’ai vu un mélange de &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=20754.html&quot;&gt;Star Wars - la Menace Fantôme&lt;/a&gt; (pour les graphismes), de &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=12811.html&quot;&gt;Flash Gordon&lt;/a&gt; (pour l’ambiance mélangeant les style et d’une autre époque) et tous les bons vieux péplum avec Charlton Heston ou Kirk Douglas !
Et pour ceux comme &lt;a href=&quot;http://odieuxconnard.wordpress.com/2012/03/22/john-cratere/&quot;&gt;Odieux Connard&lt;/a&gt;, qui vont voir le film sous LSD en s’arrêtant à la promo faite (oui je sais, faut le prendre au 50.000e degré son blog) : allez voir les &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=180509.html&quot;&gt;Chroniques de Mars&lt;/a&gt; et on reparle de &lt;em&gt;John Carter&lt;/em&gt; ! Bref, faites abstraction de la partie “Disney”, de toutes les affiches sur les abri-bus et dans le métro et profitez de ce film pour ce qu’il est : un énorme spectacle pour toute la famille reposant sur les origines de la SF un chevalier sans maître, une princesse, une guerre, un dragon/sorcier) avec de faux airs de nanard. Perso, je suis fan.&lt;/p&gt;

&lt;h2 id=&quot;target&quot;&gt;Target&lt;/h2&gt;

&lt;p&gt;Samedi je me suis dit, tant qu’à faire, autant prendre le rythme d’un film quotidien. Cogitant pas mal sur les histoires de triangle amoureux, je me rabas sur celui que je ne devrais pas : &lt;em&gt;Target&lt;/em&gt;. Réalisé par McG, j’ai confiance pour un bon spectacle. J’ai découvert McG via des séries et quelques adaptations : &lt;a href=&quot;http://www.serieslive.com/serie/chuck/1087/&quot;&gt;Chuck&lt;/a&gt;, &lt;a href=&quot;http://www.serieslive.com/serie/supernatural/628/&quot;&gt;Supernatural&lt;/a&gt;, &lt;a href=&quot;http://www.serieslive.com/serie/human-target-la-cible/2006/&quot;&gt;Human Target&lt;/a&gt; ou encore &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=57405.html&quot;&gt;Terminator Renaissance&lt;/a&gt; et les deux &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=27119.html&quot;&gt;Charlie’s Angels&lt;/a&gt;.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;C’est rythmé. C’est explosif. C’est sur-joué. C’est une relation amoureuse sous testostérone. Une fois qu’on a dit ca, le film est résumé. Une pointe d’humour quand même sinon ca serait fade… Mais oui, voilà tout le film. C’est le genre qu’on regarde et qu’on oublie quelques minutes après, même en ayant passé un bon moment. Je ne regrette pas, mais je n’irais pas le revoir volontairement.
L’histoire tient du sitcom. Le naturel des espions est artificiel. L’action présente est télescopée. Reste Reese que j’adore et la réalisation dynamique de McG pour sauver le film. J’en suis sorti avec un avis mitigé : peu digeste du fait des à peu près, diverti quand même, mais déçu de l’histoire et de la manière de la mener. Dommage.&lt;/p&gt;

&lt;h2 id=&quot;la-dame-en-noir&quot;&gt;La Dame en noir&lt;/h2&gt;

&lt;p&gt;Dimanche midi, il fait beau, on peut aller se cacher dans une salle obscure pour se faire peur : ca sera &lt;em&gt;la Dame en noir&lt;/em&gt;. Bon on connait Daniel Radcliffe pour l’avoir vu grandir à travers son rôle d’&lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=29276.html&quot;&gt;Harry Potter&lt;/a&gt;. Peut-être trop d’ailleurs ce qui fait que toute la promo a tourné autour de lui en nous laissant parfois apercevir un lien non désiré entre tout ca …&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;Heureusement, aucun lien si ce n’est l’étiquette collée au visage de Daniel. Il va vraiment avoir du mal à s’en défaire. Pour autant, le film, adapation du livre éponyme est vraiment agréable a regarder. Tant qu’on n’a pas des wanabe-racaillettes en train de piailler à la moindre image … Bref …
Mon premier sentiment pendant le film : le même sentiment que lorsque j’ai vu &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=863.html&quot;&gt;Shining&lt;/a&gt; pour la première fois : curieux, en attente, sursautant sur mon siège même lorsque c’est prévisible … Le jeu des acteurs est convaincant, la réalisation propre, la photo un peu trop flou sur certaines scène, mais l’ambiance est clairement là et on apprécie le film.
Oui l’histoire est plus que prévisible, et on en arrive vite à se poser deux fins possibles et, comme tout impatient, attendre la fin pour savoir si l’on s’est trompé ou non. Mais on nous la fait déguster, apprécier, morceau par morceau, et on finit plus horrifié par la cause que par les conséquences. Pour ceux qui cherche une autre vision de l’épouvante, celle qui fait cogiter et non celle qui cherche à nous faire boire des litres de sang accompagnés de lambeaux de chair humaine.&lt;/p&gt;

&lt;h2 id=&quot;hunger-games&quot;&gt;Hunger Games&lt;/h2&gt;

&lt;p&gt;Alors là, j’étais le voir par curiosité avec un avis très mitigé. On est lundi soir, je suis crevé après une journée assez bizarre et j’ai lu deux/trois choses sur &lt;em&gt;Hunger Games&lt;/em&gt; mais surtout vu l’affiche. Pour la petite histoire, &lt;em&gt;Hunger Games&lt;/em&gt;, c’est avant tout une trilogie littéraire récente, primée, vendue à foison… On se dit tout de suite : il y a matière, surtout après avoir lu le synopsis ! Puis c’est un film. La première approche d’un film ? Son affiche et là, je remarque le détail, qui personnellement me refroidit : la position de la main de &lt;em&gt;Katniss&lt;/em&gt; pour tenir son arc : elle va avoir sacrément mal en décochant sa flèche ; donc soit ils ont oublié les conseillers dans la partie budget de la super production, soit il y a quelque chose. Réponse ? Il y a quelque chose et ca s’appelle l’incompétence de celui qui a sélectionner la photo car le conseiller ou la formation à l’archerie est bien présent.&lt;/p&gt;

&lt;style&gt;.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } .embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }&lt;/style&gt;

&lt;div class=&quot;embed-container&quot;&gt;    &lt;iframe title=&quot;YouTube video player&quot; width=&quot;640&quot; height=&quot;390&quot; src=&quot;//www.youtube.com/embed/&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;On se retrouve donc dans un monde post-rebellion où les Etats Unis ne sont plus (ça nous change déjà) et remplacé par un Etat divisé en secteurs. L’ambiance qui ressort de la gouvernance telle qu’elle nous ait présentée ? un mélange de &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=32224.html&quot;&gt;Running Man&lt;/a&gt;, &lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=253.html&quot;&gt;New York 1997&lt;/a&gt; (rah … Snake !) et d’&lt;a href=&quot;http://www.allocine.fr/film/fichefilm_gen_cfilm=132663.html&quot;&gt;Alice au Pays des Merveilles&lt;/a&gt; (j’hésite sur la version…). On se demande où on n’est au début … puis on commence à apprécier. A voir les volumes suivants.
Mais avant de pouvoir apprécier l’ambiance, on doit déjà arriver à digérer la réalisation caméra au poing qui donne plus le mal au crâne qu’autre chose : l’action générale est floue, on est perdu … Vu le réalisateur, pas étonnant dans le rendu, mais plus étonnant dans le choix. A croire qu’il s’est fait un film de guerre juste avant et qu’il s’est dit que ca serait bon pour dynamiser l’action. Monumentale erreur !
On pourra cependant apprécié &lt;em&gt;Lenny Kravitz&lt;/em&gt; même s’il a peu de scène. Remarque, on a toujours la sensatin qu’il a eu des coupures nets dans l’histoire et l’enchaînement des scènes, à croire que certains ont oublié qu’adaptation ne signifiait pas prendre un livre et sortir la hache …
Mais bon, on reste assez, on ignore le mouvement de caméra et les coupures, puis on commence à apprécier le film pour son potentiel et non pour son rendu. Dommage.
Autre point que je regrette ? la bande originale “&lt;a href=&quot;http://www.amazon.fr/Hunger-Games-District-digital-booklet/dp/B007GHW76U&quot;&gt;The Hunger Games : songs from District 12 and beyond&lt;/a&gt;” n’inclut AUCUNE chanson de Lenny … Roh !!!
Bon, vous allez vous dire que le film est nul, que je regrette … franchement, non. Oui je n’ai clairement pas apprécié la réalisation et certains choix fait, pour autant, le film me donne envie de découvrir les livres mais me fait aussi attendre avec impatience les deux prochains volets. J’ai passé deux très bonnes heures et si on me demandait d’accompagner quelqu’un et de me le refaire, j’accepterais.&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Autoconfiguration des mails</title>
      <link href="https://francois.aichelbaum.com/2012/03/23/autoconfiguration-des-mails" />
      <updated>2012-03-23T08:27:48+01:00</updated>
      <id>https://francois.aichelbaum.com/2012/03/23/autoconfiguration-des-mails</id>
      <content type="html">&lt;p&gt;Aujourd’hui j’ai retrouvé une motivation longtemps disparue pour bosser. Je me suis intéressé à des histoires de DNS et d’emails.
J’avais eu une remontée de quelques “soucis” lors de la configuration des comptes mails par certains hébergés (membres/clients) de l’association (&lt;a href=&quot;http://www.heimdall.net&quot;&gt;Heimdall.net&lt;/a&gt;). Je viens de mettre différentes choses en place.&lt;/p&gt;

&lt;h2 id=&quot;mise-à-jour-des-entrées-dns&quot;&gt;Mise à jour des entrées DNS&lt;/h2&gt;

&lt;p&gt;Il manquait quelques entrées DNS “classiques” : j’ai donc remis les CNAME correspondants pour les smtp.&lt;em&gt;, imap.&lt;/em&gt; et pop.*. De plus, leur absence pertubait certains hébergés donc d’une pierre deux coups.
J’ai aussi corrigé l’accès au webmail pour qu’on puisse à nouveau l’utiliser en &lt;a href=&quot;http://webmail.heimdall.net&quot;&gt;webmail.*&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;autoconfiguration-globale&quot;&gt;Autoconfiguration globale&lt;/h2&gt;

&lt;p&gt;Il y a une &lt;a href=&quot;http://tools.ietf.org/html/rfc6186&quot;&gt;RFC&lt;/a&gt; concernant l’utilisation des enregistrements DNS type SRV pour l’accès et l’envoi des emails. Les champs sont bien renseignés pour la zone heimdall.net :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-console&quot; data-lang=&quot;console&quot;&gt;&lt;span class=&quot;gp&quot;&gt;$&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;for &lt;/span&gt;proto &lt;span class=&quot;k&quot;&gt;in &lt;/span&gt;smtp imap pop3 submission&lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do &lt;/span&gt;dig srv _&lt;span class=&quot;nv&quot;&gt;$proto&lt;/span&gt;._tcp.heimdall.net | &lt;span class=&quot;nb&quot;&gt;grep &lt;/span&gt;SRV | &lt;span class=&quot;nb&quot;&gt;tail&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-1&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;done&lt;/span&gt;
&lt;span class=&quot;go&quot;&gt;_smtp._tcp.heimdall.net. 79 IN SRV 0 1 25 mail.heimdall.net.
_imap._tcp.heimdall.net. 151 IN SRV 0 1 143 mail.heimdall.net.
_pop3._tcp.heimdall.net. 300 IN SRV 0 1 110 mail.heimdall.net.
_submission._tcp.heimdall.net. 300 IN SRV 0 1 587 mail.heimdall.net.&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Par contre pour tester plus, vu que ce qui suit est déjà en place …&lt;/p&gt;

&lt;h2 id=&quot;autoconfiguration-pourthunderbird&quot;&gt;Autoconfiguration pour Thunderbird&lt;/h2&gt;

&lt;p&gt;J’ai également trouvé un moyen qui permet à &lt;a href=&quot;http://www.mozilla.org/fr/thunderbird/&quot;&gt;Thunderbird&lt;/a&gt; de se configuration automatiquement avec un simple fichier &lt;a href=&quot;http://autoconfig.heimdall.net/mail/config-v1.1.xml&quot;&gt;XML&lt;/a&gt;. A voir ce qu’on peut y rajouter, mais le résultat est assez bluffant déjà de base : on donne son adresse mail et son mot de passe à &lt;a href=&quot;http://www.mozilla.org/fr/thunderbird/&quot;&gt;Thunderbird&lt;/a&gt;, il fait le reste … j’adore !&lt;/p&gt;

&lt;h2 id=&quot;autoconfiguration-pour-outlook-2010&quot;&gt;Autoconfiguration pour Outlook 2010&lt;/h2&gt;

&lt;p&gt;Dans le même esprit que pour &lt;a href=&quot;http://www.mozilla.org/fr/thunderbird/&quot;&gt;Thunderbird&lt;/a&gt;, il existe un format &lt;a href=&quot;http://autodiscover.heimdall.net/autodiscover/autodiscover.xml&quot;&gt;XML&lt;/a&gt; pour la configuration automatique d’Outlook 2010. Plus qu’à trouver les outils MS pour tester …&lt;/p&gt;
</content>
    </entry>
  
    <entry>
      <title>Il faut bien un début !</title>
      <link href="https://francois.aichelbaum.com/2012/03/21/il-faut-bien-un-debut" />
      <updated>2012-03-21T19:06:19+01:00</updated>
      <id>https://francois.aichelbaum.com/2012/03/21/il-faut-bien-un-debut</id>
      <content type="html">&lt;p&gt;Un blog et tellement de questions.
Pourquoi un blog ? Pourquoi maintenant ? Que pourrais-je y écrire ? J’ai ré-ouvert ce domaine il y a quelques jours, et installé le wordpress peu après … Puis plus rien. Pour une raison très simple : ma vie actuelle est compliquée et douloureuse. Ceci a eu pour effet un isolement de ma part avec des pensées bien trop noires.
Mais bon, ma nature double fait que j’ai ouvert les yeux sur certaines choses ce matin. J’ai besoin de retrouver la solitude liée à mon côté loup pour pouvoir méditer, me retrouver avec moi-même et faire ce que j’ai à faire pour reprendre ma place en haut de la pyramide.
Cela ne va pas se faire en quelques secondes, et contrairement à ce que beaucoup pensent, certains d’entre nous n’ont pas besoin de se faire entourer car justement, l’étouffement lié peut être bien plus destructeur qu’autre chose.
Ce besoin de solitude vient aussi de mon sentiment de trahison d’une personne très proche, qui, même dans la situation actuelle, avec la guerre sans nom qu’elle m’a lancé avec son oubli volontaire, reste ma Lili. On pourrait considérer que c’est une énorme bétise de penser encore et toujours à elle mais bon, l’instinct est et restera supérieur ! Suffit de faire appel au reptilien pour éviter la souffrance.
Tout ceci pour justifier le délais de réflexion avant de déposer mes premiers mots. Les autres questions ? Le temps y fournira les réponses, comme à toute chose. Mais je ne prévois pas de restreindre ce blog à un seul et unique type de messages.
Aujourd’hui, j’entame un parcours initiatique pour parachever ma traversée du désert. Ma seule certitude ? Que je peux faire confiance à mon instinct, quoi qu’il arrive.&lt;/p&gt;
</content>
    </entry>
  
</feed>
