{
  "version": "https://jsonfeed.org/version/1",
  "title": "Matthieu Oger",
  "description": "I am a product manager, developer and designer from France. Co-founder of Pixelnest Studio.",
  "icon": "https://matthieuoger.com/feed.png",
  "favicon": "https://matthieuoger.com/favicon.ico",
  "home_page_url": "https://matthieuoger.com",
  "feed_url": "https://matthieuoger.com/feed.json",
  "items": [
    {
      "id": "https://matthieuoger.com/2023/06/date-formats/",
      "url": "https://matthieuoger.com/2023/06/date-formats/",
      "title": "Formatting Dates, the Correct Way",
      "content_html": "<p><em><small>I'm French and I don't have a lot of experience translating an app in Chinese or Arabic, for example, so take the following tips with a grain of salt in this kind of context. Feel free to contact me if necessary!</small></em><br /><br /></p>\n<p>Displaying a date is extremely common in digital products, but using a <em>clear format</em> requires a few more considerations.</p>\n<p>Here are just a few examples of what is possible:</p>\n<ul>\n<li>\n<p><code class=\"language-text\">DD-MM-YYYY</code> → \"06-04-2022\"</p>\n<ul>\n<li>Format commonly used in European countries (or its variant <code class=\"language-text\">DD/MM/YYYY</code>)</li>\n</ul>\n</li>\n<li>\n<p><code class=\"language-text\">MM-DD-YYYY</code> → \"04-06-2022\"</p>\n<ul>\n<li>Format used by the US, which puts the month first, while the European version puts it second 😵‍💫</li>\n</ul>\n</li>\n<li>\n<p><code class=\"language-text\">YYYY-MM-DD</code> → \"2022-04-06\"</p>\n<ul>\n<li>As defined in the <a href=\"https://en.wikipedia.org/wiki/ISO_8601\">ISO 8601</a> standard</li>\n</ul>\n</li>\n<li>\n<p><code class=\"language-text\">DD Month YYYY</code> → \"06 April 2022\"</p>\n<ul>\n<li>Display the month in text</li>\n</ul>\n</li>\n<li>\n<p><code class=\"language-text\">DD Mon YYYY</code> → \"06 Apr 2022\"</p>\n<ul>\n<li>Shorter variant of the previous example</li>\n</ul>\n</li>\n<li><a href=\"https://docs.oracle.com/cd/E41183_01/DR/Date_Format_Types.html\">And many, many, many more…</a></li>\n</ul>\n<p>Almost any programming language has a <a href=\"https://date-fns.org/v2.29.3/docs/format\">powerful API</a> to format a date however its developer wants.</p>\n<p>Thus, it's easy to use a dozen different formats in a single app if you don't set strict standards and conventions. Moreover, some formats work for some countries but not in others.</p>\n<p><strong>To simplify and clarify things, I highly recommend to only use two formats in the applications I work on.</strong></p>\n<h1>Data-first: YYYY-MM-DD</h1>\n<p>For technical, compact and/or dense data, I use the ISO 8601 version: <code class=\"language-text\">YYYY-MM-DD</code> → \"2022-04-06\".</p>\n<p>Why?</p>\n<ul>\n<li>This is the only format that can be sorted alphabetically, which is handy for file explorers or data tables</li>\n<li>\n<p>There is <strong>only one way</strong> to read it: the year first, then the month and finally the day</p>\n<ul>\n<li>When using the most common alternatives <code class=\"language-text\">DD-MM-YYYY</code> or <code class=\"language-text\">MM-DD-YYYY</code>, you cannot tell if the month or the day is first, except by looking at the current language of the app (and you can still be wrong if you cannot distinguish if it's British or American English)</li>\n</ul>\n</li>\n<li>The <code class=\"language-text\">-</code> symbol works everywhere, while <code class=\"language-text\">/</code> can be refused by some (old) filesystems</li>\n</ul>\n<p><strong>Note:</strong> I always advise to prefix single-digit months and days by <code class=\"language-text\">0</code> so the format keeps an equivalent visual weight and is easier to parse: <code class=\"language-text\">2022-01-01</code> instead of <code class=\"language-text\">2022-1-1</code></p>\n<h1>Human-first: DD Month YYYY</h1>\n<p>For dates supposed to be quickly read by humans (in an article or a blog for example), I prefer to use <code class=\"language-text\">DD Month YYYY</code> → \"06 April 2022\" (with the full name of the month and not a shorter form).</p>\n<p>Why?</p>\n<ul>\n<li>There is <strong>no confusion</strong> with this format (the day is two numbers, the month is written in plain text, <em>et voilà</em>)</li>\n<li>It's extremely clear and quick to read: you don't have to convert the month number to its actual month name</li>\n<li>It works in all countries</li>\n<li>It's easily translatable</li>\n</ul>\n<hr>\n<p>Finally, if you only want to display a month (in a dropdown for example), I recommend to always show both the month number <strong>AND</strong> the month name: <code class=\"language-text\">01 - January</code> instead of <code class=\"language-text\">January</code> or <code class=\"language-text\">01</code>.</p>\n<p>That way, you can visually search for or type the month name or number, and match any input you have at hand (eg. a credit card's expiration date).</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2023-06-09T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2023/02/social-start/",
      "url": "https://matthieuoger.com/2023/02/social-start/",
      "title": "On Instagram's Start",
      "content_html": "<p><a href=\"https://www.nytimes.com/2023/02/03/podcasts/hard-fork-tiktok-openai-artifact.html?showTranscript=1\">Kevin Systrom</a>:</p>\n<blockquote class=\"transcript\">\n<p>[…] I want to point out that when we launched Instagram, it was a filter app first for everyone. Most people didn’t even know that there was a network behind it. It was a filter app. <em>My intention was always for it to be a social app, and I was bummed when everyone talked about it as a filter app.</em></p>\n<p>But <mark>what I realized in there is that the best networks are first to utility, and then they piggyback on that utility, and they become a network</mark>. I think Facebook’s actually a great example of this. It may not be so clear, but <em>it was clearly just a directory at the beginning</em>. It was about finding people, communicating with them. And then it became the social network that it became once they added the news feed and all this other stuff.</p>\n<p>So Instagram and Facebook are actually not that different in their evolution. [We decided] when we talked about launch, that <em>we were just going to focus on the utility part of it first</em> and be really good at that <strong>because starting a social network from scratch, I think, is the wrong order.</strong></p>\n<p>You see a lot of people launching things today that are social networks first and then utility is questionable. And it’s because <mark>the utility in the social network only makes sense when you’re at scale</mark>, when you have <em>a lot of people</em>. And it’s very hard to bootstrap that.</p>\n</blockquote>\n<p><small>(Emphasis mine)</small></p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2023-02-17T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2023/02/alpha-value-css-color-properties/",
      "url": "https://matthieuoger.com/2023/02/alpha-value-css-color-properties/",
      "title": "Alpha Value in CSS Color Properties",
      "content_html": "<p>Today<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup>, I <a href=\"http://developer.mozilla.org/en-US/docs/Web/CSS/color_value\">learned</a> <a href=\"http://developer.mozilla.org/en-US/docs/Web/CSS/color_value/hsl\">that</a> that you could use a <code class=\"language-text\">/ alpha</code> value in CSS color property functions (<code class=\"language-text\">hsl</code>, <code class=\"language-text\">rgb</code>, etc.).<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup></p>\n<p>It looks like this:</p>\n<div class=\"gatsby-highlight\" data-language=\"css\"><pre class=\"language-css\"><code class=\"language-css\"><span class=\"token property\">color</span><span class=\"token punctuation\">:</span> <span class=\"token function\">hsl</span><span class=\"token punctuation\">(</span>0 0% 0% / 0.5<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token property\">color</span><span class=\"token punctuation\">:</span> <span class=\"token function\">rgb</span><span class=\"token punctuation\">(</span>0 0 0 / 0.5<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p>Where the <code class=\"language-text\">alpha</code> value is a number between <code class=\"language-text\">0</code> (full opacity) and <code class=\"language-text\">1</code> (no opacity).</p>\n<p>Previously, you had to use a function variant to change the alpha:<sup id=\"fnref-3\"><a href=\"#fn-3\" class=\"footnote-ref\">3</a></sup></p>\n<div class=\"gatsby-highlight\" data-language=\"css\"><pre class=\"language-css\"><code class=\"language-css\"><span class=\"token property\">color</span><span class=\"token punctuation\">:</span> <span class=\"token function\">hsla</span><span class=\"token punctuation\">(</span>0<span class=\"token punctuation\">,</span> 0%<span class=\"token punctuation\">,</span> 0%<span class=\"token punctuation\">,</span> 0.5<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token property\">color</span><span class=\"token punctuation\">:</span> <span class=\"token function\">rgba</span><span class=\"token punctuation\">(</span>0<span class=\"token punctuation\">,</span> 0<span class=\"token punctuation\">,</span> 0<span class=\"token punctuation\">,</span> 0.5<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span></code></pre></div>\n<p><small>(Note the <code class=\"language-text\">a</code> at the end of each function, ie. <code class=\"language-text\">rgb</code> → <code class=\"language-text\">rgba</code>.)</small></p>\n<p>This is really handy, because you can change the content of the function without changing the function name itself. Which is more practical when using React and CSS-in-JS libraries. I know I would have use that a few times already if I was aware of this small spec change.</p>\n<p>The <a href=\"https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/hsl#browser_compatibility\">support</a> <a href=\"https://caniuse.com/?search=hsl%20alpha\">is pretty good</a> (more than 92%), so it's mostly safe to use on modern websites.</p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>It's not really new anymore, but I don't code that much nowadays. That was a small nice surprise. ;)</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>I (and <a href=\"https://www.sarasoueidan.com/blog/hex-rgb-to-hsl/\">others</a>) still recommend to use the <code class=\"language-text\">hsl</code> function instead of <code class=\"language-text\">rgb</code> or hex values. It's more powerful and as soon as you grasp how the model works, it's easier and quicker to manipulate. Especially for variables and theming purposes.</p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-3\">\n<p>The old notation still works, but it's considered legacy.</p>\n<p>  The <em>commas are also optional</em> now (and considered legacy as well).</p>\n<p>  AND there is another syntax using commas <strong>and</strong> an alpha value (<code class=\"language-text\">hsl(0, 0%, 0%, 0.5)</code> / <code class=\"language-text\">hsla(0, 0%, 0%, 0.5)</code>) or an alpha percentage (<code class=\"language-text\">hsl(0, 0%, 0%, 50%)</code> / <code class=\"language-text\">hsla(0, 0%, 0%, 50%)</code>).</p>\n<p>  Basically, you can do anything you want, but using the <code class=\"language-text\">/ alpha</code> syntax without commas and <code class=\"language-text\">a</code> suffix in the function name is the proper and preferred way. 🥴</p>\n<a href=\"#fnref-3\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2023-02-07T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2022/08/playbooks/",
      "url": "https://matthieuoger.com/2022/08/playbooks/",
      "title": "Playbooks",
      "content_html": "<p>Gabriel Weatherhead in “<a href=\"https://www.macdrifter.com/2021/11/playbooks-before-automation.html\">Playbooks Before Automation</a>”:</p>\n<blockquote>\n<p>I’m not a professional engineer but this is something I naturally do <em>for anything that takes more than a half dozen steps</em>. […] While I was toiling away in [Excel] I wrote down what I was doing in a note.</p>\n<p>By the time I was done I had repeatable instructions for myself. <strong>Clear steps make automation easier and a lot more fun.</strong></p>\n</blockquote>\n<p><small>(Emphasis mine)</small></p>\n<p>I think <strong>Playbook</strong> is a really good word to describe this habit.</p>\n<p>I tended to use \"<a href=\"https://matthieuoger.com/2020/04/systemic-actions-automation/\">Checklist</a>\" instead, but I do think <strong>Playbook</strong> encapsulates this concept way better. You are not writing tasks to perform mindlessly, but you are also giving context<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup>, warnings and <em>the story</em>.<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup></p>\n<hr>\n<p>Gabriel is also quoting <a href=\"https://jacobian.org/2021/oct/20/simple-pm-tricks/\">another excellent article</a>, by Jacob Kaplan-Moss:</p>\n<blockquote>\n<p><strong>Write playbooks before automation</strong> […]</p>\n<p>We <em>know</em> that writing some code to automate a process isn’t necessarily as easy as we’d like it to be; but we also <em>know</em> that the process is complex, error-prone, messy, or otherwise not great to leave as a manual process.</p>\n<p><strong><em>Playbooks</em> are the middle ground I reach for in these circumstances</strong>. When I see a process like this, instead of either doing nothing or just diving in and writing some code, I’ll first write a playbook. A playbook is nothing more than a set of instructions for performing the task – a “recipe” if you will. The key is to be as specific as possible. If this is some sort of task that involves code, you can even include bits of code or shell commands that someone following the playbook could copy and paste.</p>\n<p><strong>This gets a few steps closer to the goals of automation – consistency, repeatability, reliability – at a fraction of the effort</strong>. And, if you later decide that automation is worth the effort, the playbook serves as a detailed specification for your code.</p>\n</blockquote>\n<p><small>(Emphasis mine)</small></p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>Context.</p>\n<p>  It might be one of the words I use the most nowadays. <em>\"Always give the context\", \"Start with context\", \"Can you give me the context again?\".</em></p>\n<p>  Why? Because not having the context is like shooting in the dark. You can perform your task, but it will likely be wrong because you don't understand everything around it. If you are interested, <a href=\"https://www.amazon.fr/Art-Action-Leaders-between-Actions/dp/1857885597\">this book is an illuminating read</a> on this topic.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>When I explain why I do this, I often say \"I'm helping <em>Matthieu-du-futur</em>\". It takes only a few very short seconds now, and saves hours of frustration and guesswork later.</p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2022-08-03T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2022/06/crypto-fire/",
      "url": "https://matthieuoger.com/2022/06/crypto-fire/",
      "title": "The Blockchain, a Decade Later",
      "content_html": "<p>Amidst the current crypto-crisis/downfall, I found this excellent interview of Nicholas Weaver by Nathan J. Robinson. The article is called “<a href=\"https://www.currentaffairs.org/2022/05/why-this-computer-scientist-says-all-cryptocurrency-should-die-in-a-fire/\">Why This Computer Scientist Says All Cryptocurrency Should “Die in a Fire”</a>”, and, as you can guess, is not really gentle with cryptocurrencies and the blockchain in general.</p>\n<p>The interview talks about many topics and is really interesting. Here's a few passages I enjoyed.</p>\n<hr>\n<p>Starting with Nicholas Weaver, in 2018:</p>\n<blockquote>\n<p>Cryptocurrencies, although a seemingly interesting idea, are simply not fit for purpose. <strong>They do not work as currencies, they are grossly inefficient, and they are not meaningfully distributed in terms of trust.</strong> Risks involving cryptocurrencies occur in four major areas: technical risks to participants, economic risks to participants, systemic risks to the cryptocurrency ecosystem, and societal risks.</p>\n</blockquote>\n<p>Briefly quoted in the article, Jackson Palmer, creator of Dogecoin:</p>\n<blockquote>\n<p>After years of studying it, I believe that cryptocurrency is an inherently right-wing, hyper-capitalistic technology built primarily to amplify the wealth of its proponents through a combination of tax avoidance, diminished regulatory oversight, and artificially enforced scarcity.</p>\n</blockquote>\n<p>In an exchange later in the article:</p>\n<blockquote>\n<p><strong>Robinson</strong>: “I am sure you have heard people say things like “Well, blockchain technology itself has lots of potential applications, it’s really interesting, offers lots of possible solutions to problems.” But one thing you point out in your lecture is that often, they are pretty vague about what these uses are, and usually when you get down to the facts, there’s a much simpler solution to whatever problem it is that wouldn’t use blockchain.”</p>\n<p><strong>Weaver</strong>: “The thing is, the idea behind a blockchain is actually a 30-plus-year-old idea. It’s called a hash chain. And we’ve known how to build these for longer than most of my students have lived. But people who spout “Blockchain!” don’t understand the technology. […] <strong>When somebody says you can solve X with blockchain, they don’t understand X, and you can ignore them.</strong>”</p>\n</blockquote>\n<p>Illustrated in this illuminating example:</p>\n<blockquote>\n<p>So, this was an example given by a purported expert in a blockchain class at Berkeley: “Okay, we have the cold chain problem. Vaccines, you need to ship cold, and if they ever get out of temperature spec, you have a ruined batch. And we can solve this with blockchain.”</p>\n<p>And my reaction is: “No”. The problem is you need to know when it got out of spec, and know that the receiver can know that it had gotten out of spec. And there’s an easy solution. It’s called a $1 ShockWatch label. So the ShockWatch group makes these temperature labels. You stick them on the package. And if it ever gets too warm, the color changes. No blockchain necessary.</p>\n<p><em>The fact that somebody was purporting this to be a real-world application meant they had not even thought about the problem for five seconds.</em></p>\n</blockquote>\n<p>In another exchange:</p>\n<blockquote>\n<p><strong>Robinson</strong>: “One of the things you’ve said, if I recall, is that the cryptocurrency space is “speed-running 500 years of financial history.” By which I take you to mean that all of the financial disasters of centuries past are playing out in short order, and then they have to rediscover the solutions that were put in place for those things not to happen.”</p>\n<p><strong>Weaver</strong>: “Yeah. […] The thing is, though, the cryptocurrency space itself has the object permanence of a horny mayfly. <em>They simply don’t remember their own scams.</em>”</p>\n</blockquote>\n<p>Finally, Nicholas Weaver, concluding the interview:</p>\n<blockquote>\n<p>That’s the problem, and that’s why I’ve actually changed my view over the past decade. Back in 2013, I thought it was amusing and silly, and I could get cool papers out of it. In 2018, I thought it was amusing, but pretty bad. [In 2022], it’s time to really think about burning it down. Now I just want to take the entire cryptocurrency space and throw it into the sun. I know astronomers will tell you it’s easier to throw something into the void of space than to throw it into the sun. But it’s worth the extra energy to make sure some alien doesn’t find this mental virus.</p>\n</blockquote>\n<p><small>(Emphasis mine)</small></p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2022-06-30T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2022/04/iterative-loop/",
      "url": "https://matthieuoger.com/2022/04/iterative-loop/",
      "title": "Iterative Loop",
      "content_html": "<p><a href=\"https://woodlandwarmachine.podbean.com/e/episode-21-root-past-present-and-future-featuring-cole-wehrle/\">Cole Wehrle</a>:</p>\n<blockquote class=\"transcript\">\n<p>To make games, <strong>you have to walk through something called the iterative loop.</strong></p>\n<ol>\n<li>You have to have an idea,</li>\n<li>And you have to figure out <strong>how to build it into something testable</strong></li>\n<li>And then you have to test it,</li>\n<li>And then you have to reflect upon it,</li>\n<li>And then you have to adjust your idea.</li>\n</ol>\n<p>Then you complete the iterative loop, <em>and you do it again.</em></p>\n<p>Any designer will have to run around this iterative loop thousand of times before a game is completed.</p>\n<p>[…] <strong>Figure out ways to move, to make that loop smaller.</strong> And to run though it more efficiently. Or you'll burn yourself out.</p>\n</blockquote>\n<p><small>(Slightly edited for readability)</small></p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2022-04-27T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2022/03/rotation-videos/",
      "url": "https://matthieuoger.com/2022/03/rotation-videos/",
      "title": "Pseudo-Intelligent Rotation Lock for Videos on iOS",
      "content_html": "<p>iOS is missing one major, albeit a very small one in size, feature.</p>\n<p>You can use a rotation lock for your device, which restricts its ability to change orientation. By default, an iPhone senses when it is in landscape or portrait. This was one of the key features during the iPhone introduction (using an accelerometer). It looks very cool, but in reality, it's almost useless on a phone.</p>\n<p>Most users are just using the portrait mode all the time, and the landscape orientation is often toggled by accident while in bed or couch.</p>\n<p>That's why many users are activating the rotation lock permanently (I'm in this category). This is how it looks like:</p>\n<p><img src=\"/images/posts/2022-03-15-lock.jpg\" style=\"width: 300px;\" title=\"Rotation lock\" alt=\"Rotation lock\" /></p>\n<p>When it's active (like in the screenshot above), your device will never rotate automagically. You can stay in portrait orientation forever.</p>\n<p><strong>This is perfect, except for one thing: videos</strong>. Videos are the only thing you want to see in landscape, not portrait.<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup></p>\n<p>Since tons of videos are consumed through YouTube, the problem is particularly egregious there. Fortunately, YouTube added a way to switch a video to landscape, even when in portrait orientation (by using the fullscreen button), locked or not.</p>\n<p>It's not as practical as <em>physically</em> rotating the phone though.</p>\n<hr>\n<p>A few years ago, iOS' built-in <a href=\"https://apps.apple.com/us/app/shortcuts/id915249334\">Shortcuts</a><sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup> app added \"Automation\" triggers.</p>\n<p>With this, you can program an action when something happens on your phone. For example, if you open a certain app, you can automatically trigger something… <strong>like enabling or disabling the orientation lock!</strong> You can see where we are going…</p>\n<ol>\n<li>Open <a href=\"shortcuts://\">Shortcuts</a> <small>(it should be installed by default now)</small></li>\n<li>Go to the Automation tab</li>\n<li>\n<p>Create 2 automations:</p>\n<ol>\n<li>The first one is for when some apps are opened (<strong>disabling</strong> the rotation lock)</li>\n<li>The second does the reverse, when the same apps are closed (<strong>enabling</strong> the rotation lock again)</li>\n</ol>\n</li>\n<li>Obviously, set it to YouTube (and any other app necessary)</li>\n</ol>\n<p>You should have this by the end:</p>\n<p><img src=\"/images/posts/2022-03-15-automation.jpg\" title=\"Automations\" alt=\"Automations\" /></p>\n<p>Thanks to this automation, I keep the rotation lock activated all the time, but still physically rotate my device to play videos in landscape.</p>\n<p><em>This trick is not new at all.</em> It was feasible since iOS 13 or 14, so why am I talking about this? Until now, everytime the trigger would activate, iOS would throw an annoying notification:</p>\n<p><img src=\"/images/posts/2022-03-15-notification.jpg\" style=\"width: 300px;\" title=\"Notification\" alt=\"Notification\" /></p>\n<p>Because of that, I could never recommend this tip to anyone. However, today <a href=\"https://www.macstories.net/stories/ios-and-ipados-15-4-hands-on-with-universal-control-face-id-with-a-mask-and-more/\">Apple released iOS 15.4</a>, which finally <strong>allows an automation to hide its notification</strong>.</p>\n<p><br />Now, let's hope for a real “<a href=\"https://twitter.com/laughingquoll/status/1107930149645742080\">Lock orientation except when playing videos</a>” setting.</p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>Well, portrait videos are becoming a thing thanks to TikTok and modern social networks, but that's another matter.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>Shortcuts, previously Workflow, was bought by Apple and integrated into the system as its native automation app for power users. It's great.</p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2022-03-15T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2021/03/build-right-swiftly/",
      "url": "https://matthieuoger.com/2021/03/build-right-swiftly/",
      "title": "Building the Right Product, Swiftly",
      "content_html": "<p>I was recently listening to <a href=\"https://www.inc.com/christine-lagorio/phil-libin-evernote-what-i-know-podcast.html\">an interview of Phil Libin</a>, co-founder of Evernote. <a href=\"https://tonsky.me/blog/phil-libin/\">Tonsky wrote a recap</a> covering the best parts (notably about the startup model, culture and diversity issues), that I recommend.</p>\n<p>In addition, focusing on the product management side of the interview, I wanted to highlight a few paragraphs.<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup></p>\n<h2>Iterations</h2>\n<blockquote class=\"transcript\">\n<p>We kind of figured out what really felt like a cheat code. […]</p>\n<p>Let's say it takes 10.000 iterations to make a product great. You have to keep polishing, to keep refining and it takes around 10.000 iterations. <strong>The whole point is: how fast can you do each iteration?</strong></p>\n<p>At my previous company [dealing with security software, bank, government, etc.] <em>it would literally take a year and a half to do an iteration</em>. [You were making] some software, [sell it to an entity], deploy it, [deal with pilots], have a formal feedback. If it's gonna take a year and a half to make improvements to the product and you need to make 10.000 iterations, it's <strong>fifteen thousand years</strong> to make a great product. You just don't have this kind of time.</p>\n<p>At Evernote […] an iteration was twenty minutes, because we would just make something — and then, if we were honest with ourselves —, we could say \"does this feel better or worse than it did twenty minutes ago?\". And so, by having this really fast, really tight iteration loops […] we could just move really really quickly. <strong>We could make a product pretty good faster than I ever thought possible before.</strong></p>\n</blockquote>\n<p>And, as a consequence, the time to make a product <em>great</em> (not just \"pretty good\") is also reduced.</p>\n<p>One note though: we need to be careful not to confuse \"speed of iteration\" with \"velocity\".</p>\n<p>\"Iteration\" is your ability to experiment and refine a feature. You can iterate a lot but just release a very few impactful features (which is good). To the contrary, you can iterate slowly and output a lof of very low value, unpolished and mediocre features.<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup></p>\n<p>Speed of iteration is important.<sup id=\"fnref-3\"><a href=\"#fn-3\" class=\"footnote-ref\">3</a></sup> Meaningless velocity is not. It's more debt, it's harder to maintain, and it results in more complex products for users.</p>\n<p>See “<a href=\"https://itamargilad.com/velocity-vs-impact/\">Stop Obsessing Over Development Velocity, Focus on This Instead</a>” for a good \"factual\" overview.</p>\n<h2>User feedback</h2>\n<blockquote class=\"transcript\">\n<p>It isn't so much that we didn't listen to our users. We listened to our users very carefully but in a very specific way. We listened to how they were reacting to what we were putting in front of them. We <strong>weren't</strong> asking them about what they wanted. […]</p>\n<p>If you ask users what they want, they are not gonna tell you what they want because they don't know. <strong>Very few people can articulate and have the power of imagination to envision what they actually want.</strong></p>\n<p>If you ask customers or prospective customers what they want, they'll tell you the stuff that they expect… and <em>very rarely will that actually be what they want</em>. [Then, he quotes Henry Ford famous line: “If I had asked people what they wanted, they would have said faster horses.”]. We don't ask customers what they want, we ask customers to respond to what we are giving them. Because then, it's much more useful: you can tell when people are confused, when they are happy, when they are satisfied and then we can decide who to ignore, which opinion to take seriously, etc.</p>\n</blockquote>\n<p>This is one of the topics I'm coming back to frequently in my job.</p>\n<p>How can you gather as much feedback as possible, while not becoming crushed by its weight or clients' expectations?</p>\n<p>Moreover, collecting the feedback is only one side of the coin (and the easy one). The second side is <em>how to digest it properly</em>. There, you discover that the product manager's toolkit is, unfortunately, very empty.<sup id=\"fnref-4\"><a href=\"#fn-4\" class=\"footnote-ref\">4</a></sup></p>\n<p>Users feedback are <em>critically important insights</em>, but it should be seen as an additional knowledge base for future decisions and hypotheses. Not as something you must respond to — or worse, act on — constantly.<sup id=\"fnref-5\"><a href=\"#fn-5\" class=\"footnote-ref\">5</a></sup></p>\n<p>See also “<a href=\"https://linear.app/method/build-with-users\">Build with users</a>” from the Linear method.</p>\n<h2>Building the right set of functionalities</h2>\n<blockquote class=\"transcript\">\n<p>[About Evernote] I think we just did too much stuff. There's always this balance of “what's the right amount of focus?”.</p>\n<p>It's hard to know in the moment… you can only do that in hindsight — if you succeed, you had the right amount of focus. If you don't, then you are either doing too much stuff, and you didn't have that focus, or not enough stuff, and you weren't thinking big enough or whatever.</p>\n<p>We always struggle with that balance. What is too much to build and what is just the right amount? How do we know? […] In hindsight, I would have worked for longer on some specific things before moving on to introduce [new features].</p>\n</blockquote>\n<p>This reminds me of a comment made by a candidate during an interview: <em>“One crucial part of a product manager's job is not about which features should be included, but which one should be removed or ignored”</em> (paraphrasing).</p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>I slightly edited Phil Libin's speech to make it more readable in a written form. Emphasis is also mine.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>Unfortunately, most agile teams using Scrum are optimised toward extreme-velocity instead of their ability to experiment and iterate quickly. Which is not what agile was about initially. I blame consulting firms.</p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-3\">\n<p>It's why we need to be able to deploy often, quickly, automatically, and confidently. It's also why the <a href=\"https://www.youtube.com/watch?v=PUv66718DII\"><em>development pipeline loop</em></a> should be as short as possible, between typing the code and observing the results.</p>\n<a href=\"#fnref-3\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-4\">\n<p>I've searched for many, <em>many</em> tools to handle feedback. I didn't find one that was 100% satisfying. At this point, I'm considering there is no \"right\" solution to this problem.</p>\n<p>  The most adequate tool is probably a generic data-visualisation or log processing platform like Kibana or Datadog. Tools that were not conceived for this problem specifically, but instead to digest, process, present and search raw data in quantity. Which is what user feedback is: information logs, but provided by users instead of machines.</p>\n<p>  See it similarly to an analytics tool: you would consult the platform everyday to have an overview of your users, how they feel about your product, and what they expect. Use that as additional data for experiments and ideas. When you look at analytics, you don't act immediately, and you cannot answer questions there. You use this trove of data to refine your hypotheses. Feedback should be seen the same way.</p>\n<p>  Using this approach would also remove the emotion from the equation. It would allow the product manager to take a step back and look at all this knowledge objectively… like analytics.</p>\n<p>  And for qualitative measures? Just run some real-life user tests and sessions.</p>\n<a href=\"#fnref-4\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-5\">\n<p>I think there's something profoundly wrong in the B2B (less so in B2C) world, where clients expect to have answers to everything they ask or want.</p>\n<a href=\"#fnref-5\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2021-03-24T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2020/12/do-this-once/",
      "url": "https://matthieuoger.com/2020/12/do-this-once/",
      "title": "I Only Have To Do This Once",
      "content_html": "<p><a href=\"https://www.oreilly.com/library/view/the-art-of/9781492045687/\">Michael Lopp</a>:</p>\n<blockquote>\n<p>I’ve heard my favorite engineers claim the reason they are productive is because they are lazy. It’s a humblebrag. These humans don’t have a lazy bone in their bodies. What they appreciate is efficiency. <em>I want to design this system so I only have to do this once.</em></p>\n<p>Setting up the initial conditions and letting the work just happen.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2020-12-14T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2020/08/the-experience/",
      "url": "https://matthieuoger.com/2020/08/the-experience/",
      "title": "It's the Experience",
      "content_html": "<p><a href=\"https://builtformars.co.uk/how-signing-up-to-notion-works/\">Peter Ramsey</a>:</p>\n<blockquote>\n<p>I see stuff like this every day. Companies 'trust the analytics'.</p>\n<p><em>\"99% of users complete the page, so it's not a problem\".</em></p>\n<p>But the issue isn't the completion rate, it's the <em>experience</em>.</p>\n<p>This example might only be a small confusion, that most people would overcome on their own, but it makes the experience less enjoyable.</p>\n<p>The more enjoyable an experience, the more we want our friends to do it.</p>\n</blockquote>\n<p>It's a problem I see in many products and videogames. A videogame can have a fantastic retention score, but it does not make it <em>fun</em>.</p>\n<p>I'm not against analytics (quite the contrary, if done respectfully), but it should not be your main driver. It should be a source of advices and confirmation to qualitative analysis, insights and/or gut feelings. <strong>It should be secondary to the experience itself.</strong></p>\n<p>Sometimes, you should do something because it makes your product <a href=\"https://matthieuoger.com/2016/03/delight/\">better and more pleasant</a>, not because it checks another item on an imaginary features checklist or because it pleases one specific client.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2020-08-31T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2020/05/abstract-digital-product-design/",
      "url": "https://matthieuoger.com/2020/05/abstract-digital-product-design/",
      "title": "Digital Product Design",
      "content_html": "<p>I watched the first season of <a href=\"https://www.netflix.com/title/80057883\">Abstract</a> on Netflix a few years ago when it was first released. It's a really fascinating series about design — in its broad definition — illustration, digital, industrial, photography, painting, etc.</p>\n<p>A second season was recently released, and I'm slowly watching the new episodes.</p>\n<p>The one about “Digital Product Design” is, obviously, particularly interesting to me. I've extracted a few highlights below.</p>\n<hr>\n<p>Ian Spalter in “<a href=\"https://www.imdb.com/title/tt10984548/\">Digital Product Design</a>”:</p>\n<blockquote>\n<p>When I start a new project, the first thing I do is to define the problem, to understand the “why” of what we're trying to do and what is the thing we're trying to solve for?</p>\n</blockquote>\n<p><br />See also this article entitled “<a href=\"https://www.intercom.com/blog/great-product-managers-dont-spend-time-on-solutions/\">Great PMs don’t spend their time on solutions</a>” by Intercom, and this quote by <a href=\"https://twitter.com/cagan\">Marty Cagan</a>:</p>\n<blockquote>\n<p><strong>Fall in love with the problem, not with the solution.</strong> […] It's far too easy to fall in love with your particular approach and lock yourself in prematurely.</p>\n</blockquote>\n<hr>\n<p>Ian Spalter:</p>\n<blockquote>\n<p>Your stove has a UI.</p>\n<p>So what conventions are out there in the world that you should take advantage of? You don't want someone to think too much about heating a pan. But then, sometimes there are opportunities to improve things.</p>\n<p>Maybe it's about adding options that make sense.</p>\n<p>So, I have a toaster that has a button that says “A bit more” on it. It literally says, “A bit more.”. Totally get why you would need that, right? 'Cause that's… that's part of the user experience of making toast.</p>\n<p>[…]</p>\n<p>Now, as a designer, there are costs to that, because now you added a new button. Is it worth it? Is it actually valuable? Is it something that people use, or is it just sort of superfluous, you know, and just, like, maybe sell some toasters.</p>\n<p>That's all part of the experience, thinking about the conditions and the context. And then, how do you work within those constraints to make that task as easy and pleasurable as possible?</p>\n</blockquote>\n<hr>\n<p>Ian Spalter:</p>\n<blockquote>\n<p>That idea of creativity being born through constraints is a powerful one.</p>\n</blockquote>\n<hr>\n<p>Robbie Gonzalez:</p>\n<blockquote>\n<p>If you've ever been scrolling through your Twitter feed or your Instagram feed, you've noticed you don't hit the bottom. That's a relatively new feature, called bottomless scroll.</p>\n</blockquote>\n<p>Aza Raskin:</p>\n<blockquote>\n<p>Which I feel like I have to forever atone for. When I was thinking about infinite scroll, like, the thought was… I, as a designer, have failed if I ask the user to make a choice they don't care about.</p>\n<p>So, scrolling already means “I haven't seen what I want, show me more.”</p>\n<p>So, why bother having little buttons at the bottom that you click to show — show more?</p>\n<p>I as an individual designer doing human–computer interaction will happily make an infinite scroll.</p>\n<p>But if I'm thinking at this higher level, I would have known that that would remove the stopping cues, just like when I'm drinking a glass of wine. I stop drinking when I finish my glass, and I think “Do I want more?”. Here, we're not giving people the stopping cue.</p>\n<p>And so it's literally wasted hundreds of millions of human hours.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2020-05-17T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2020/05/the-component/",
      "url": "https://matthieuoger.com/2020/05/the-component/",
      "title": "The Component",
      "content_html": "<p>Guillermo Rauch in the “<a href=\"https://rauchg.com/2020/vercel\">Vercel</a>” announcement (previously <em>Zeit</em>):</p>\n<blockquote>\n<p>Today the most interesting new opportunities for modernization have shifted to the frontend. […]</p>\n<p><strong>Components Are the Right Primitive for the Frontend</strong></p>\n<p>As the demand for richer frontend experiences has grown, the pressure is for teams to deliver component and design systems - coherent frontend experiences across every platform. […]</p>\n<p>Not too long ago, people weren’t talking about components, they were talking about selector engines and the DOM. Then React […] introduced this primitive of the component. Other frameworks allow you to define components, but the movement that really pioneered this trend was React.</p>\n<p>Years ago, [we] created Next.js because of our belief that React was so powerful it could become the full engine for the frontend. We started Next.js to provide some critical new functionality to make React consumable for everyone who wanted to do <strong>everything</strong> with React, instead of just one specific component. We saw a demand for the component-based React approach to drive the full frontend experience.</p>\n</blockquote>\n<p>I really love small, hyper-optimized websites with just the necessary bits (<a href=\"https://macwright.org/2016/05/03/the-featherweight-website.html\">I really enjoy reading people</a> <a href=\"https://paulstamatiou.com/about-this-website/\">writing about this topic</a>). I did that for years. This is how I taugh students.</p>\n<p>But using React made me reevaluate my tradeoffs slightly<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup>.</p>\n<p><strong>Components</strong> and <a href=\"https://en.wikipedia.org/wiki/Declarative_programming\"><strong>declarative coding</strong></a> are such a better <em>programming model</em>. React <em>nailed that</em>. It's far from perfect, and some stuffs are way too complicated, but the basis is <em>right</em>. The foundations are <em>correct</em>.</p>\n<hr>\n<p>Tom MacWright in “<a href=\"https://macwright.org/2020/05/10/spa-fatigue.html\">Second-guessing the modern web</a>”:</p>\n<blockquote>\n<p>The emerging norm for web development is to build a React single-page application, with server rendering. The two key elements of this architecture are something like:</p>\n<ol>\n<li>The main UI is built &#x26; updated in JavaScript using React or something similar.</li>\n<li>The backend is an API that that application makes requests against.</li>\n</ol>\n<p>[…] There is a sweet spot of React: in moderately interactive interfaces. […] The high performance parts aren’t React. […] The low performance parts don’t need to be React. […]</p>\n</blockquote>\n<p><br />Later:</p>\n<blockquote>\n<p>Don’t read this as anti-React. I still think React is pretty great, and for a particular scope of use cases it’s the best tool you can find. […]</p>\n<p>But I’m at the point where you look at where the field is and what the alternatives are – taking a second look at unloved, unpopular, uncool things […] – and think <em>what the heck is happening</em>. We’re layering optimizations upon optimizations in order to get the SPA-like pattern to fit every use case, and I’m not sure that it is, well, worth it. […]</p>\n<p>Frameworks should lure people into the <a href=\"https://blog.codinghorror.com/falling-into-the-pit-of-success/\">pit of success</a>, where following the normal rules and using normal techniques is the winning approach. […] I don’t think that React, in this context, really is that pit of success. A naïvely implemented React SPA isn’t stable, or efficient, and it doesn’t naturally scale to significant complexity.</p>\n</blockquote>\n<p>Very true, unfortunately.</p>\n<p><br />After:</p>\n<blockquote>\n<p>I can, for example, guarantee that this blog is faster than any Gatsby blog (and much love to the Gatsby team) because there is nothing that a React static site can do that will make it faster than a non-React static site.</p>\n</blockquote>\n<p>This is undeniable. But perceptually, it's not necessarily the case nor that simple.<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup></p>\n<p><br />Finally:</p>\n<blockquote>\n<p>I don’t think that everyone’s using the SPA pattern for no reason. For large corporations, it allows teams to work independently: the “frontend engineers” can “consume” “APIs” from teams that probably work in a different language and can only communicate through the hierarchy. For heavily interactive applications, it has real benefits in modularity, performance, and structure.</p>\n</blockquote>\n<p>If I chose to build my new websites with Next.js or Gatsby, it's because working with styled-components and React is so much better, fun and faster. And the result can be great for the users too, <em>if done well</em>.<sup id=\"fnref-3\"><a href=\"#fn-3\" class=\"footnote-ref\">3</a></sup></p>\n<p>In the end, there's no good answer here. There are just many tradeoffs (accessibility, customer experience, speed, team collaboration, developer experience, bandwith, performances, etc.). And, as always in computing, there's no <em>“ideal solution”</em>.</p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>Not coding in my day-to-day job also changes my priorities. Creating websites is a hobby now (and was not the main focus of Pixelnest anyways), so I value my time and enjoyment much more.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>For example, this website (Gatbsy, React, SPA) is heavier, but feels faster than <a href=\"https://pixelnest.io/\">Pixelnest</a>'s (Jekyll, no-JS). It's slower on first and initial uncached load, but after, it becomes faster — almost instant.</p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-3\">\n<p>Just imagining having to write BEM classes, put everything in big files, or repeat so much HTML would feel like going back ten years ago.</p>\n<p>  I actually did that recently, and it was <strong>not</strong> horrible. But it becomes a mess much more quickly, especially if you are working with more junior developers. You need even more discipline and rigor. It's possible for a one-man website, but it can break quickly as you add more people on a project if the experience level differs a lot.</p>\n<a href=\"#fnref-3\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2020-05-11T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2020/05/the-100ms-rule/",
      "url": "https://matthieuoger.com/2020/05/the-100ms-rule/",
      "title": "The 100ms Rule",
      "content_html": "<p>Superhuman in “<a href=\"https://superhuman.com\">Blazingly Fast, The 100ms Rule</a>”:</p>\n<blockquote>\n<p>The creator of Gmail, Paul Buchheit, had a rule: every interaction should be faster than 100ms.</p>\n<p>Why? <mark>Because 100ms is the threshold where interactions feel instantaneous.</mark></p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2020-05-06T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2020/05/in-search-of-software-magic/",
      "url": "https://matthieuoger.com/2020/05/in-search-of-software-magic/",
      "title": "In Search of (Software) Magic",
      "content_html": "<p>From Linear's README, “<a href=\"https://linear.app/readme\">In Search of Magic</a>”:</p>\n<blockquote>\n<p><strong>Software used to be magical. We were excited about the new possibilities it opened up.</strong></p>\n<p>As the decades went by, software became more common. It became a larger part of our lives and an important part of how the world operates.</p>\n<p>Today software is everywhere, but it’s become increasingly rare to encounter truly great software. Computers are faster but apps work slower. Corners are cut with each release. Product decisions are driven by A/B tests.</p>\n<p>We’ve lost the magic along the way. And the result is software that’s frustrating and boring to use.</p>\n<p>We want to bring that magic back.</p>\n</blockquote>\n<p>Then:</p>\n<blockquote>\n<p><strong>Linear was born out of our own frustrations in building software projects in successful high-growth companies. We saw the effects of subpar tools and practices in our teams, so we decided to build something better.</strong></p>\n<p>[…] We’re creating software for teams who want to create impact. We think the software you use every day to work should be of the highest quality. It should feel exciting and enticing. It should be fast. And you should feel empowered when using it. Professional tools should have professional quality.</p>\n<p>We truly believe that the tools teams use directly impact the outcome of their work. Bad tools encourage bad habits. Good tools encourage good habits.</p>\n<p>The tools we use should make us more powerful and help us to accomplish our goals. […]</p>\n</blockquote>\n<p>Finally:</p>\n<blockquote>\n<p><strong>We believe that the quality of software is driven both by the talent of its creators and how they feel while they’re crafting it. Teams that are excited, engaged and proud of their work build better software.</strong></p>\n</blockquote>\n<p>I've rarely read a company's vision <em>this</em> good and exciting. And, damn, their website looks <em>so nice</em>.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2020-05-05T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2020/04/outcome-successful-strategy/",
      "url": "https://matthieuoger.com/2020/04/outcome-successful-strategy/",
      "title": "The Outcome of a Successful Strategy",
      "content_html": "<p>Vjeux in “<a href=\"https://blog.vjeux.com/2020/analysis/make-the-game-easy.html\">Make the game easy</a>”:</p>\n<blockquote>\n<p>[About building software] When I see people <strong>doing very visible and consequential actions</strong>, I find myself thinking that they are doing a “hero shot” and it must mean that they <strong>got “out of position” for the past few shots</strong> and now the <strong>only option that they have left is unsatisfying</strong> but there’s no other choice.</p>\n<p>On the other hand, I see people appearing to somehow <strong>always be in easy projects</strong> where everything just works out fine and they deliver a lot of impact. I used to think that they were lucky, now I think that they are pro players and are able to plan multiple shots in advance and <strong>able to execute on their strategy</strong>.</p>\n</blockquote>\n<p>It's like the \"sysadmin paradox\".<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup></p>\n<p>A great sysadmin is someone who seems to do almost nothing: the stack is functioning as expected, there's no outage (or really short ones), the software is updated, developers are autonomous, and all the processes and deployements are automated and painless<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup>. This sysadmin is never too busy, answers quickly and acts fast. There's nothing extraordinary happening: it just… works. Almost too easy?</p>\n<p>A bad sysadmin will always be on the rush. Though… they do <em>look</em> busy.<sup id=\"fnref-3\"><a href=\"#fn-3\" class=\"footnote-ref\">3</a></sup></p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>Actually, this applies to many jobs, but I find it egregiously visible on support ones.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p><a href=\"https://matthieuoger.com/2020/02/tools-as-superpowers/\">Tools</a>, <a href=\"https://matthieuoger.com/2018/12/tools/\">tools</a>, and <a href=\"https://matthieuoger.com/2020/04/systemic-actions-automation/\">tools</a>!</p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-3\">\n<p>Don't get me wrong — they are some times and/or jobs where you have no other choice than working a lot. <em>It's the attitude that matters.</em></p>\n<a href=\"#fnref-3\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2020-04-30T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2020/04/systemic-actions-automation/",
      "url": "https://matthieuoger.com/2020/04/systemic-actions-automation/",
      "title": "Systemic Actions through Automation",
      "content_html": "<p>Brett Terpstra in “<a href=\"https://brettterpstra.com/2020/03/16/judging-the-value-of-automation/\">Judging the value of automation</a>”:</p>\n<blockquote>\n<p>I enjoy the process of building automations in myriad contexts, using myriad tools. […]</p>\n<p>I often think about the benefits of automation in the context of time savings. It makes things more efficient, removes drudgery. But I’ve realized over time that the <em>real</em> benefit of automation is avoiding mistakes.</p>\n<p>When I automate something (anything), I’m defining the steps that need to be included to complete the task. I’m no longer relying on my memory to ensure that every step is complete or the specific ways in which a step should be completed. This is especially useful if it’s something I don’t do very often […] if it helps me do the exact same thing one time a year later, that’s often worth as much as any amount of total time saved in my life.</p>\n</blockquote>\n<p><strong>Exactly!</strong> Avoiding mistakes is much more important than any time-saving<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup>. Automation removes the need to remember what you need to do, and simplify the sharing of knowledge. It's basically a <em>self-fulfilling <a href=\"http://atulgawande.com/book/the-checklist-manifesto/\">checklist</a></em> that can be triggered by anybody.</p>\n<hr>\n<p>When I was developing a new website for <a href=\"https://pixelnest.io/\">Pixelnest Studio</a>, the first step was setuping the project, and automating the deployment, so that I could come back 6 months later and still be able to deploy easily without reading the README or the code.</p>\n<p>For <a href=\"http://steredenn.pixelnest.io\">Steredenn</a>, I created a lot of scripts to automate the release pipeline (building the game, packaging it, creating the different changelogs for the multiple platforms, etc.). This took me a non-negligible amount of time, but when I needed to do a new release after a long hiatus, it was a breeze and such a relief. Bonus: my associate could also do it in case I was not here, without having to dive in the code or knowing the full process.<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup> In the game itself, <a href=\"https://dmayance.com/\">Damien</a> spent time creating little tools and helpers to go to a specific part of the game easily, so we could test different configurations and situations at will. <em>The result? A better, more stable game. Less mistakes. More time.</em></p>\n<p>I maintain a personal repository with <a href=\"https://github.com/solarsailer/dotfiles/\">most of my non-app scripts</a> on GitHub, and one of my most treasured part is a procedure to boostrap a new macOS installation in a semi-automated fashion. I don't do that often, but I know that I can confidently reproduce a new environment (in case of loss or theft) without a lot of struggle.</p>\n<p>I tried to put most of the settings of my apps (Alfred, iTerm2, Dash, etc.) on a cloud provider, so that I can share them between computers and have a backup (it's actually one of my selection criteria when I try a new tool — \"can I sync the settings easily?\"). The tools are tailored to my use, and I don't have to customize them again.</p>\n<p>I automated and documented our servers installation so that I could nuke and reinstantiate them easily. I'm not an experienced sysadmin at all, so having this ability to restart from scratch was a godsend to me.</p>\n<p>It's not pure automation, but it falls in the same ballpark for me. <strong>It's emptying your brain so that you can focus on what you care.</strong> <em>And, bonus, it's fun to do!</em></p>\n<hr>\n<p>As a different example: I scan and store all my documents online (pro or perso). When I'm asked for something (passport? last phone bill?), I take my phone, get the document and send it or print it directly.</p>\n<p>It's a really simple process: when I receive a paper, I quickly look at the document, <em>decide if I keep it or not</em> (if not, it's direct in the trash), then launch Scanbot, OCR it and boom it's stored in the right place. It has just become automatic for me now. It takes me literally 10s. And this has saved me so. much. time, as well as prevented the loss of important stuffs. <em>It would have been easier to just put that doc on a shelf and never care about it anymore</em>, sure. But then, when you search for a new flat, and need to find those twenty docs, you will thank yourself.</p>\n<p>It was <strong>always more effort initially</strong>, and we, humans, don't like effort. <em>But being a good slacker is not about doing nothing, it's actually doing more at the beginning, so you can do less later.</em> And that's what computers are good at too!</p>\n<hr>\n<p>That's also a reason why I love checklists so much. <strong>Checklists are the manual version of automation</strong>: you write it, you duplicate it, you cross it, and you forget it.</p>\n<p>Checklists are <em>also cheap and easy-to-write documentation</em> — for you, your family, your friends, your coworkers.<sup id=\"fnref-3\"><a href=\"#fn-3\" class=\"footnote-ref\">3</a></sup></p>\n<hr>\n<p>In computing (and life in general), there are a few principles that I consider extremely important and I'm trying to apply as much as possible:</p>\n<ul>\n<li><strong>Repeatability</strong>: repeat a task in a predictable manner and efficiently without dreading it;</li>\n<li><strong>Robustness</strong>: ensure you are doing the right steps and actions all the time, constantly. Backup. Use version control and history systematically;</li>\n<li><strong>Shareability</strong>: share information painlessly with other people, and more importantly, your future-self;<sup id=\"fnref-4\"><a href=\"#fn-4\" class=\"footnote-ref\">4</a></sup></li>\n<li><strong>Mastery</strong>: learn your tools, the shortcuts, and the customization points. Dive in the menus, try everything. This is physical automation: you train your body to repeat stuffs quickly without thinking about it.<sup id=\"fnref-5\"><a href=\"#fn-5\" class=\"footnote-ref\">5</a></sup> You save time, you reduce mistakes, you get better;</li>\n<li><strong>Documentability</strong>: enrich your knowledge base constantly - that is vitally important. Document what you do and why.<sup id=\"fnref-6\"><a href=\"#fn-6\" class=\"footnote-ref\">6</a></sup> Take notes, create a task in your todo apps to not forget something important. Offload your mind and find any information in no time.<sup id=\"fnref-7\"><a href=\"#fn-7\" class=\"footnote-ref\">7</a></sup></li>\n</ul>\n<p>That's automation, although at a bigger scope than just plain computer automation and scripting. That's why I like to be organized and to create systems<sup id=\"fnref-8\"><a href=\"#fn-8\" class=\"footnote-ref\">8</a></sup> in my life<sup id=\"fnref-9\"><a href=\"#fn-9\" class=\"footnote-ref\">9</a></sup> (and not only on my computers). It's a way for me to be consistent, coherent, efficient and meticulous. To care about what I do without putting more charge on me.</p>\n<p><em>And to be able to <strong>lose my time</strong> on the areas where it provides me joy.</em></p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>Which is still a really nice perk — we shouldn't diminish that property.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>Don't get me wrong: it was not perfect. Some steps were still manual and I could have automated them, but there's a point where a good ol' checklist is enough and automating becomes a burden. However, if it's manual, <strong>it needs to be documented</strong>. Hence, generally, a checklist.</p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-3\">\n<p>You go on a trip? Write your packing checklist. Quickly scan it before leaving a place — you won't lose anything.</p>\n<a href=\"#fnref-3\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-4\">\n<p>That can be a script, a documentation, or a process. That's why, when I find an important information, I store it ASAP in my Dropbox so I can come back to it later. That's also why I'm blogging: to keep the relevant articles I found right at my fingertips. That's, finally, why I love scripting: I don't want to memorize how I need to execute an action — without scripts, it's more mistakes later, and less predictability. There's also a nice side-effect: it's an additional (and versioned) source of examples.</p>\n<a href=\"#fnref-4\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-5\">\n<p>That's why automation-freaks enjoy <a href=\"https://textexpander.com/\">text expansion</a> so much. But it can also be optimizing your commute route, or always putting stuffs at the same place in your flat so you don't have to think to locate them.</p>\n<a href=\"#fnref-5\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-6\">\n<p>This article showed that I like anecdotes. Here's another: when you have a company in France, you need to do something called \"l'approbation des comptes\" every year. It's boring, complex, and prone to mistakes. The first time I did it, I noted all the steps I needed to do while I was learning to do it. The next year, it — obviously — happened again, and I didn't have any clue about what I did. I remembered taking the notes, look at them, and in almost no time, was able to do it again. I could have learned once more, but this would have been a big waste a time, and a big chore. Instead, it was just a minor annoyance.</p>\n<a href=\"#fnref-6\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-7\">\n<p>If I hear someone talking about a thing they like, I note it. Later, when I need to find a gift, I can look at the list and pick there. It is not always useful, nor something you can do rightaway… but people are so happy when you give them something they actually truly wanted. It's also less waste.</p>\n<a href=\"#fnref-7\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-8\">\n<p><a href=\"https://youtu.be/lIW5jBrrsS0?t=857\">Tim Urban</a>:</p>\n<blockquote>\n<p>This also just speaks to the power of habits, because, changing a habit is like overwriting your current software, and if you do it enough time, what's cool about your brain is, it rewrites it to accommodate the new behaviour. You're saying \"oh, I guess we are doing this everyday now?\".</p>\n</blockquote>\n<a href=\"#fnref-8\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-9\">\n<p>Or as someone said: \"have a reset button for my apartment\". Everything has a spot, and in the mornings, when you wake up, you put everything back to its rightful place. It's always the same, it's easy to clean, it's easy to find if something's missing. <strong>It does not preclude change, but change should be desired and aware, not the byproduct of chaos.</strong></p>\n<a href=\"#fnref-9\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2020-04-27T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2020/04/tech-waste/",
      "url": "https://matthieuoger.com/2020/04/tech-waste/",
      "title": "Tech Waste",
      "content_html": "<p>Marty Cagan in “<a href=\"https://svpg.com/epic-waste/\">Epic Waste</a>”:</p>\n<blockquote>\n<p>[…] What I believe is the largest source of waste in technology, and that’s waste in large companies. I’m not talking about large technology companies like Apple and Amazon and Google [but] about the thousands of large banks, insurance companies, airlines, auto manufacturers, telcos, retailers, health care providers, and entertainment companies, that spend shocking amounts of money on technology every year for such paltry results.</p>\n<p>[Visited multiple companies] from each of these industries and with precious few exceptions, I find these large “IT” organizations, usually run by CIO’s or CFO’s, and operating with horribly inefficient and ineffective methods. They are typically using stakeholder-driven roadmaps, project-based funding and staffing, heavy use of contractors and outsourcing, waterfall processes (even when they claim they’re Agile), no effective product role, and minimal if any UX design. […]</p>\n<p>The amount of waste at these companies is staggering. The irony is that they often believe they’re actually saving money. […] They don’t understand that their model is requiring much larger teams, and more importantly, they are not able to operate at the speed of innovation […] Because these leaders don’t understand technology, they make short-sighted decisions and then struggle to connect the dots between their choices and the poor results.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2020-04-23T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2020/02/tools-as-superpowers/",
      "url": "https://matthieuoger.com/2020/02/tools-as-superpowers/",
      "title": "Tools as Superpowers",
      "content_html": "<p><a href=\"https://medium.com/@djo/service-client-et-outils-de-productivit%C3%A9-lalignement-des-passions-a4a59216d6a7\">Jonathan Lefèvre</a> (loosely translated from French<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup>):</p>\n<blockquote class=\"transcript\">\n<p>The topic of <em>scale</em> is as inevitable as it is hard, and seems so at odds with the human customer service idea, difficult to automate just by its own definition. Even the enterprises for which customer service is not a priority can find themselves confronted to the exact same problem. All of them must think about the best organization possible to handle efficiently the endless influx of requests and questions.</p>\n<p>[…] But this has mostly allowed me to realize what was truly making the strength of the customer service at Capitaine Train: its operational efficiency. In the end, if we could manage 2 millions of customers with a small team of 15 people, it was because we were extremely well equipped.</p>\n<p>Nothing was left to chance in the hunt for the lesser and useless click. And if this constant quest for the optimization of the processes is a topic that interests many entrepreneurs, I think that it manifests itself in an even more glaring way when you do customer service management of a start-up in hyper growth. […] When you spend days fighting the steamroller of client requests, you inevitably finish to devote a cult to any tool able to make you gain the smallest second of productivity.</p>\n<p>[…] So, I imagined naively that any customer service in the world would use the best tools in the market to work more efficiently. I was far from the mark. Numerous were those that didn't have a good system to manage notes and documentation, the basic and elementary reflexes to minimize interruptions, or just a sane way of handling emails.</p>\n</blockquote>\n<p>In general, adding <em>more</em> people and asking them to work <em>more</em> is not the right way to solve a problem — I would even say it will create the opposite effect in the long-run.</p>\n<p>I really like this article because it shares perfectly my vision for productivity and tooling. <a href=\"/2018/12/tools/\">Tools are humans' superpowers</a>. We need to harness them — and give tedious jobs to machines. Humans are good at creativity and thinking, but particularly bad at doing constant and repetitive tasks.</p>\n<p>Though, and <a href=\"https://jonathanlefevre.com/outils/mot-productivite/\">like the author</a>, when I say \"productivity\", it's not as a synonym for pushing people to always work more and to exhaust themselves (which is unsustainable and <em>not right</em>), but the contrary: doing more things, with less <strong>effort and time</strong>. The end-goal is to work less (or not all), enjoy the present, improve quality of life for everyone, while still being able to deliver great services and products for an healthier society. In that sense, computers are the great enabler of this vision.<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup></p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>Original version:</p>\n<blockquote>\n<p>Le sujet du <em>scale</em> est aussi inéluctable que difficile, tant il semble peu compatible avec la notion même de service client humain, compliqué à automatiser par définition. Même les entreprises pour qui le service client n’est pas une priorité se retrouvent forcément confrontées à ce problème. Toutes doivent réfléchir à la meilleure organisation possible pour gérer efficacement ce flux incessant de demandes.</p>\n<p>[…] Mais elle m’a surtout permis de prendre conscience de ce qui faisait véritablement la force du service client de Capitaine Train : son efficacité opérationnelle. Au fond, si nous arrivions à gérer 2 millions de clients avec une petite équipe de 15 personnes, c’est parce que nous étions très bien outillés.</p>\n<p>Rien n’était laissé au hasard dans la chasse au moindre clic inutile. Et si cette constante quête d’optimisation des processus est un sujet qui intéresse beaucoup d’entrepreneurs, je crois qu’elle se manifeste d’une manière encore plus criante lorsqu’on fait du service client dans une start-up en pleine croissance. […] Quand on passe ses journées à affronter le rouleau compresseur des tickets clients, on finit par vouer un culte à chaque outil capable de nous faire gagner la moindre seconde de productivité.</p>\n<p>[…] Du coup, j’imaginais naïvement que tous les services clients du monde utilisaient les meilleurs outils du marché pour travailler plus efficacement. J’étais pourtant loin du compte. Nombreux sont ceux qui n’ont pas encore un bon système de prise de notes, les réflexes élémentaires pour minimiser les interruptions, ou encore une gestion saine de leurs e-mails.</p>\n</blockquote>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>It's probably utopian, I know.</p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2020-02-16T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2020/02/choices/",
      "url": "https://matthieuoger.com/2020/02/choices/",
      "title": "Easy Choices, Hard Life — Hard Choices, Easy Life",
      "content_html": "<p>We were waiting in a rented car while being in a small town in the East of France. A town without charm. We had to stay here for one more hour before going to the wedding we were attending.</p>\n<p>Bored, with nothing special to do now that we had visited the city, I browsed a bit on YouTube. I fell on a <a href=\"https://www.ted.com/talks/tim_ferriss_why_you_should_define_your_fears_instead_of_your_goals/transcript?language=en\">video by Tim Ferriss which looked kinda okay</a> — I didn't know the guy that much, except that he was the host of a famous podcast which never interested me particularly.</p>\n<p>It was about \"defining fears instead of goals\". The video was around 15min, so I launched it. It started weirdly. The guy was talking about a suicide attempt, and the tone was dark, and at the same time, he was also joking.</p>\n<p>My girlfriend was next to me and I heard a \"what are you watching?!\" with a dubitative look. I continued.</p>\n<p>Surprisingly, I still think about this talk regularly, even 7 months later. This is what I kept in mind:</p>\n<blockquote>\n<p>In the Greco-Roman world, people used stoicism as a comprehensive system for doing many, many things. But for our purposes, chief among them was training yourself to separate what you can control from what you cannot control, and then doing exercises to focus exclusively on the former. This decreases emotional reactivity, which can be a superpower.</p>\n<p> […] And I did find a quote that made a big difference in my life, which was, \"We suffer more often in imagination than in reality,\" by Seneca the Younger, who was a famous Stoic writer.</p>\n<p>[…] \"The Cost of Inaction.\" Humans are very good at considering what might go wrong if we try something new, say, ask for a raise. What we don't often consider is the atrocious cost of the status quo -- not changing anything.</p>\n<p>[…] And the last was his mantra, which he applies to everything, and you can apply to everything:</p>\n<p><strong>\"Easy choices, hard life. Hard choices, easy life.\"</strong></p>\n<p>The hard choices -- what we most fear doing, asking, saying -- these are very often exactly what we most need to do. And the biggest challenges and problems we face will never be solved with comfortable conversations, whether it's in your own head or with other people.</p>\n</blockquote>\n<p>Initially, we were not sure what to think of this. Then, we discussed a bit. This sounded so logical, so simple, <em>so obvious</em>. But yet, thinking in these terms was really eye-opening.</p>\n<p>This talk is weird, disconcerting, with a strange tone and discourse. A bit pompous, especially with the business references distilled inside some really horrible anecdotes. But I would still recommend to <a href=\"https://www.ted.com/talks/tim_ferriss_why_you_should_define_your_fears_instead_of_your_goals/transcript?language=en\">watch it</a>.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2020-02-09T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2020/01/japan-pizza-culture/",
      "url": "https://matthieuoger.com/2020/01/japan-pizza-culture/",
      "title": "Japan Pizza Culture",
      "content_html": "<p>Matt Goulding in “<a href=\"https://medium.com/airbnbmag/slice-of-tokyo-how-japan-became-a-pizza-hotspot-f734d834168\">Slice of Tokyo: How Japan Became a Pizza Hotspot</a>”:</p>\n<blockquote>\n<p>After passing my final exam before a panel of Naples’ old guard of pizzamakers, I asked the judges who else, besides the Italians, were making good pizzas. Most just smirked and ignored the question, as if it had no reasonable answer. But one of the older gentlemen waited until the conversation moved on before waving me in close:</p>\n<p>“Don’t tell anyone I told you this, but the Japanese are making better pizzas than we are.”</p>\n</blockquote>\n<p>I had, indeed, a wonderful Margherita at Seirinkan while I was in Tokyo three years ago.</p>\n<hr>\n<p>Related, from one of my favorite essays by Craig Mod on the same subject, “<a href=\"https://www.eater.com/2017/2/21/14670944/best-pizza-tokyo-guide\">Tokyo Neapolitan: The New Wave of Japanese Pizza</a>”:</p>\n<blockquote>\n<p>“Pizza shops are not quite like bakeries, not quite like restaurants — everything comes together in a single moment; 60 seconds determine the success or failure of a meal.”</p>\n<p>[…]</p>\n<p>It turns out the decision to pre-cut a pizza comes with its own philosophical underpinnings</p>\n<p>Inoue believes that because a pizza is not perfectly symmetrical in terms of ingredient distribution, each slice is inevitably a little different; there's no way to cut a pizza in a way that  perfectly captures its entire essence in a single slice. His ideal is for one person to eat an entire pie on their own, ensuring they experience the full spectrum of flavors.</p>\n</blockquote>\n<hr>\n<p>And also slightly related, a more recent one by the same Craig Mod: “<a href=\"https://www.eater.com/2019/12/16/21003452/japan-kissaten-traditional-cafes-pizza-toast-travel\">I Walked 600 Miles Across Japan for Pizza Toast</a>”.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2020-01-22T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2019/11/speaking-interface/",
      "url": "https://matthieuoger.com/2019/11/speaking-interface/",
      "title": "Speaking Interface",
      "content_html": "<p><a href=\"https://learnui.design/blog/4-rules-intuitive-ux.html\">Erik D. Kennedy</a>:</p>\n<blockquote>\n<p>Now, my clients weren’t <em>this</em> bad, but look  —  you don’t need to be Bret Victor to understand that if you can only select ONE thing from a list, you need RADIO BUTTONS, not checkboxes. To understand <em>that</em>, you just need to be able to <em><strong>speak interface</strong></em>. And that’s the craziest thing to me. Interface fluency is something <em>anyone</em> can achieve. You don’t need college, you don’t need Lambda school, yadda yadda.</p>\n<p>Frankly, you just need the <strong>presence of mind</strong> to (A) pause every single time you’re confused or frustrated by some app, (B) verbalize <em>what</em> about the interface makes you confused/frustrated/etc., and then (C) figure out how you could avoid that specific snafu in your own designs.</p>\n</blockquote>\n<p>A million times, <strong>yes</strong>.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2019-11-15T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2019/11/singapore/",
      "url": "https://matthieuoger.com/2019/11/singapore/",
      "title": "Singapore",
      "content_html": "<p>I had the chance to go to Singapore twice recently. The first time was in June for one week, and the second time in the last two weeks. It was for work, but all in all, I still had almost 3 full week-ends to discover the city properly.</p>\n<p><strong>Singapore is really incredible</strong>. It's full of surprises, with gigantic skyscrapers, mind-blowing structures and some ancient places hidden inside the districts (although not as frequently as what you can find in Japan, for example).</p>\n<p>It mixes many asian cultures. The official language is English, but many others are spoken everywhere (chinese, indian, malay, indonesian, etc.). Food is available in abundance and diversity<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup>. The city is really busy during the day (a lot less at night in my opinion), and everything seems to change quite often (eg. governement and companies are not afraid to tear down a building to build another one 10 years later). Men presence is omnipresent: new lands are created on the sea, and nature is tightly contained. It's fascinating, even though the country is an environmental aberration (overuse of air conditioning, for example).</p>\n<p>There's no season, and it's always the same weather: 28-32°C (probably around 40°C felt), warm, <em>extremely humid</em>, and cloudy with occasional rains or thunderstorms. Even at night (which starts around 19:30), it will still be warm (just 2-3°C cooler if you are lucky). You could be in short and t-shirt all year, and if you stay 30 min outside, you'll inevitably sweat.</p>\n<p>There are tunnels and malls everywhere, so if you want to avoid the heat, you just have to go inside a building to cool down<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup>, \"thanks to\" the overabondance of AC<sup id=\"fnref-3\"><a href=\"#fn-3\" class=\"footnote-ref\">3</a></sup>.</p>\n<p>Finally, Singapore is really, <strong>really</strong>, safe. As a man, I don't feel unsafe most of the time, but still, you can feel the difference there. It can be 3:00 at night and you'll never feel threatened. You can forget something and go back one day later and find it again. It's when you go back home that you can really grasp how nice it is to walk so peacefully.</p>\n<h2>Tips</h2>\n<ul>\n<li>Foodcourts (gathering of stalls serving a few different meals each) are everywhere. Some of them can be a bit dodgy — you will have a rating on each stall, from C to A. From what I've understood, even a A is not necessarily clean. However, I never got sick (but I never tried a C either).</li>\n<li>Grab a tourist SIM at the airport (you'll need your passport as a foreigner). For a cheap 12 SGD (~8 EUR), you'll get 100GB of data for 7 days. <a href=\"https://www.m1.com.sg/Mobile/prepaid-plans/tourist-sim\">I recommend the M1 plans</a> - for iPhone users, you can also get one as an eSim.</li>\n<li>You can manage without cash, but still, I would recommend to withdraw 20-40 SGD for a week to eat in the cheap foodcourts (many of them don't accept credit cards). As a Singaporean, I don't think it's as necessary thanks to other types of payments (like <a href=\"https://www.nets.com.sg\">Nets</a>), but for a tourist, you'll find yourself blocked if you don't have a little bit of cash. This is a surprise, because there are <strong>so many</strong> payment methods available everywhere.</li>\n<li>You don't need to buy city transport tickets (subway or bus). Just use your contactless credit card at the entries and exits, and you'll be debited at the end of the month (or week, I don't really know) automatically. This is so handy.</li>\n<li>Taxis are cheap. Going from the airport to the city center is like 20 SGD (14 EUR). In some places, you'll find one really easily, but it's not always the case at certain moments of the day. There are some applications to do that, but it seemed a bit of a pain to use as a foreigner.</li>\n<li>Restaurants don't show the final prices in the menus. You'll have to add some taxes at the end (I would say around 15%-20%). I'm not sure it's everywhere, but it happens often.</li>\n<li>I never tipped for anything. I didn't feel like I was supposed to. Which is nice<sup id=\"fnref-4\"><a href=\"#fn-4\" class=\"footnote-ref\">4</a></sup>.</li>\n<li>Meals can vary a lot in price. In the foodcourts, you can usually find something around 4 SGD (2.5 EUR). In \"normal\" restaurants, it's more around 15-25 SGD. But it can also be way higher.</li>\n<li>The Singaporean Dollar is very interesting for us Europeans (1 SGD is around 0.66 EUR). It reduces the costs significantly at the time of this writing. Life is not cheap in Singapore, so this helps.</li>\n<li>Buy some Tiger Balms. You can find the white and red for 3-5 SGD (2-3 EUR) each. Which is 4-5 times cheaper than in France.</li>\n</ul>\n<h2>Places</h2>\n<p>Some places I went to:</p>\n<ul>\n<li><strong>Marina Bay Sands</strong>: the 3-towers skyscraper with a \"boat\" at the top, and probably the most famous building in Singapore. I went to \"Cé La Vi\" rooftop, which has a nice view on Gardens By The Bay. Go to the mall nearby (The Shoppe at Marina Bay Sands) to climb to the Skydeck and watch the light show during the evening. The ArtScience Museum is a pretty building too.</li>\n<li><strong>Buddha Tooth Relic Temple</strong>: a brand new Buddhist temple that does not look new. The interior is really nice, and there's an interesting museum inside.</li>\n<li><strong>Chinatown</strong>: very nice neighbourhood with lots of restaurants, close to the previous temple.</li>\n<li><strong>Thian Hock Keng Temple</strong>: this temple is surrounded by skyscrapers in a moody district to walk in.</li>\n<li><strong>Gardens By The Bay</strong>: a park near the CBD, with artificial supertrees (the skyway at the top of the tree gives a nice view around) and two domes to visit. I really love this place. It's unique. There's also a great foodcourt in the park called \"Satay By The Bay\".</li>\n<li><strong>Jewel</strong>: it's an artificial park in the center of the airport. They built a huge fountain coming from the ceiling… it's crazy and superb at the same time.</li>\n<li><strong>Zoo</strong>: I wouldn't recommend this. My trip and safaris in Tanzania have probably destroyed any interest I could have in a zoo.</li>\n<li><strong>Haw Par Villa</strong>: it's a bit outside the city center. It was designed by the family who invented the Tiger Balm onguent. Creepy as hell<sup id=\"fnref-5\"><a href=\"#fn-5\" class=\"footnote-ref\">5</a></sup>, but worth a visit.</li>\n<li><strong>Botanic Gardens</strong>: a big park loved by Singopereans and families. It's ok.</li>\n<li><strong>Southern Ridges</strong>: a long walk in the south of the city. I started from Kent Ridges until the Harbourfront MRT station. The section between Kent Ridges to Alexandra Arch is boring. The part after Henderson Waves (to the MRT station) is not interesting either. <em>But from Alexandra Arch (included) and Henderson Waves (included), it's really great.</em></li>\n<li><strong>CBD</strong> and <strong>Lau Pau Sat</strong>: a famous foodcourt in the CBD (Central Business District), surrounded by high towers and business(wo)men.</li>\n<li><strong>1-Altitude</strong>: one of the highest tower with a rooftop. Panoramic view of Singapore.</li>\n</ul>\n<p>There are many other places I still need to do (Little India, Pulau Ubin, a few temples, MacRichie, etc.). And I still didn't try a Kaya toast breakfast… That will be for another time!</p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>Just try a Chicken Rice or black or white Chai Tow Kway (Carrot Cake) if you want something \"typical\".</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>In an interesting way, I would compare the city to Montréal during the winter - you can navigate almost exclusively in man-built structure to avoid the harsh weather, but in Singapore, it will be from the heat, not the cold and snow. And all year, not just the winter.</p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-3\">\n<p>It often happens that it will be <strong>too</strong> cold inside buildings.</p>\n<p>  It's also <a href=\"https://www.vox.com/2015/3/23/8278085/singapore-lee-kuan-yew-air-conditioning\">probably one of the reasons</a> behind the economical success of the country:</p>\n<blockquote>\n<p><strong>ITV</strong>: Anything else besides multicultural tolerance that enabled Singapore's success?</p>\n<p><strong>Lee Kuan Yew</strong>: Air conditioning. Air conditioning was a most important invention for us, perhaps one of the signal inventions of history. It changed the nature of civilization by making development possible in the tropics.</p>\n<p>Without air conditioning you can work only in the cool early-morning hours or at dusk. The first thing I did upon becoming prime minister was to install air conditioners in buildings where the civil service worked. This was key to public efficiency.</p>\n</blockquote>\n<a href=\"#fnref-3\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-4\">\n<p>Tipping is such a stupid custom. The sole purpose is to not pay the employees correctly by default. Include the cost of the salaries in the f* price, and boom, done. Period.</p>\n<a href=\"#fnref-4\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-5\">\n<p>There's actually a Hell Museum inside, btw.</p>\n<a href=\"#fnref-5\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2019-11-06T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2019/10/nice-clear-and-secure/",
      "url": "https://matthieuoger.com/2019/10/nice-clear-and-secure/",
      "title": "Nice, Clear and… Secure",
      "content_html": "<p><a href=\"https://www.relay.fm/connected/264/\">Federico Viticci</a>:</p>\n<blockquote class=\"transcript\">\n<p>So security, obviously, and authentication, these are complicated topics, and they are complicated to engineer, they are complicated to explain. But I think, for security to be effective, and maybe this sounds a little too simplistic but bear with me.</p>\n<p><strong>For security to be effective, it needs to be used, and for good security practices to be used, they need to be nice, they need to be elegant, they need to be clear.</strong></p>\n<p>[…]</p>\n<p>If you are a security engineer, you are gonna say \"who cares about being nice, it needs to be secure\", yes! <em>It also needs to be nice!</em> […] You need to understand that being nice is just as important as being secure, because if it's not a nice experience, people are just not gonna care and they are not gonna use it, and they are just gonna click \"OK\" and they are not gonna know what it means. So, is it really more secure… if it's not nice?</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2019-10-13T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2019/09/software-disenchantment/",
      "url": "https://matthieuoger.com/2019/09/software-disenchantment/",
      "title": "Software Disenchantment",
      "content_html": "<p>Nikita in “<a href=\"https://tonsky.me/blog/disenchantment/\">Software disenchantment</a>”:</p>\n<blockquote>\n<p>So everything is just a pile of barely working code added on top of previously written barely working code. It keeps growing in size and complexity, diminishing any chance for a change.</p>\n<p>To have a healthy ecosystem you <em>need</em> to go back and revisit. You <em>need</em> to occasionally throw stuff away and replace it with better stuff.</p>\n</blockquote>\n<p><small>See also: “<a href=\"https://matthieuoger.com/2015/10/sad-state-web-deployment/\">The Sad State Of Web App Deployment</a>” and “<a href=\"https://matthieuoger.com/2015/01/something-slightly-less-terrible/\">Something Slightly Less Terrible</a>”.</small></p>\n<hr>\n<p>I think the article is a bit short-sighted, and even wrong on some points: there's a difference between today's software and the one from 10 or 15 years ago — we <strong>do</strong> have progress. <em>But the overall sentiment is fundamentally correct.</em></p>\n<p>Something is broken, and that's probably because we are <a href=\"https://matthieuoger.com/2019/09/what-will-happen-to-code/\">still using code to build software</a>.</p>\n<p>There's also a slight contradiction when he says we need to delete code, but still need to be able to run things from twenty years ago. If we were more thoughtful with what we build, it could be possible, but to keep a sane and manageable codebase in our current world, we need to accept that we will lose compatibility and devices over time.<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup></p>\n<hr>\n<blockquote>\n<p>That is not engineering. That’s just lazy programming. Engineering is understanding performance, structure, limits of what you build, deeply. Combining poorly written stuff with more poorly written stuff goes strictly against that. To progress, we need to understand what and why are we doing.</p>\n</blockquote>\n<p>I'm also guilty of that. Look, this website uses <a href=\"https://www.gatsbyjs.org\">Gatsby</a> to generate a few static pages, and this requires 242M of dependencies to build it (not run it, hopefully).</p>\n<p>However, the result is extremely fast and satisfying for the user, and the developer experience is top-notch, at the expense of an increase in size of the exported bundle on initial (and uncached) load. Is this a reasonable tradeoff?</p>\n<hr>\n<p>At the end:</p>\n<blockquote>\n<p>Business won’t care. Neither will users. They are only learned to expect what we can provide. We (engineers) say every Android app takes 350 MB? Ok, they’ll live with that. We say we can’t give them smooth scrolling? Ok, they’ll live with a phone that stutter. We say “if it doesn’t work, reboot”? They’ll reboot. After all, they have no choice.</p>\n<p>There’s no competition either. Everybody is building the same slow, bloated, unreliable products. Occasional jump forward in quality does bring competitive advantage (iPhone/iOS vs other smartphones, Chrome vs other browsers) and forces everybody to regroup, but not for long.</p>\n<p>So it’s our mission as engineers to show the world what’s possible with today’s computers in terms of performance, reliability, quality, usability. If we care, people will learn. And there’s nobody but us to show them that it’s very much possible. If only we care.</p>\n</blockquote>\n<p>On this, I don't completely agree. Yes, in general, people are mostly stuck with what we provide, but users are way too forgiving, and most of the time, don't even see the quality problem<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup> — only a fraction perceives it.<sup id=\"fnref-3\"><a href=\"#fn-3\" class=\"footnote-ref\">3</a></sup> Even engineers working on products don't necessarily see that something's wrong. How many engineers don't care about design, visual consistency, coherence, and speed, for example?<sup id=\"fnref-4\"><a href=\"#fn-4\" class=\"footnote-ref\">4</a></sup> How many don't see that their users are struggling?</p>\n<p>But there's a choice to be made by users: choose carefully, invest and learn, accept to spend a bit more on something better and more durable, change less often, and don't restrict yourself to the most ugly and cheap solution all the time, just because that was the first and easy choice.</p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>That's a shame and such a waste, though. I don't know if we can do better with our current tools.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>Case in point: Windows is still a complete mess — the average bar of software quality on this platform is abysmal, and most people are completely okay with that — they don't even care. The only thing that raised the bar on Windows is Electron apps, and these came with their own set of tradeoffs, and are almost universally considered as subpar and second-tier citizens on other OSes. <em>It's a vicious cycle: if the platform owner doesn't care, the developers won't care, thus the users too.</em></p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-3\">\n<p>This, though, poses another question: should we care about high quality if it doesn't matter for 80% of the users? I do think we should and I'm happy we still have craftsmanship in this world, but maybe it's only us, designers and nerds, that spend too much time pondering about that.</p>\n<a href=\"#fnref-3\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-4\">\n<p>And it's a bit easy to say this without knowing the business constraints. Our society pushes for fast at the expense of doing things right and correctly — by <em>taking the time</em>. This gives us progress at an incredible and ruthless pace, but also a ton of waste.</p>\n<a href=\"#fnref-4\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2019-09-29T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2019/09/passing-of-time-in-a-photo/",
      "url": "https://matthieuoger.com/2019/09/passing-of-time-in-a-photo/",
      "title": "The Passing of Time, Caught in a Single Photo",
      "content_html": "<p>Stephen Wilkes in “<a href=\"https://youtu.be/afev0ZjAhUA\">The Passing of Time, Caught in a Single Photo</a>”:</p>\n<blockquote class=\"transcript\">\n<p>Einstein described time as a fabric. Think of the surface of a trampoline: it warps and stretches with gravity.</p>\n<p>I see time as a fabric as well, except I take that fabric and flatten it, compress it into a single plane. One of the unique aspects of this work is also, if you look at all my pictures, the time vector changes: sometimes I'll go left to right, sometimes front to back, up or down, even diagonally. I am exploring the space-time continuum within a two-dimensional still photograph.</p>\n<p>[…] I build a photograph based on time. […]</p>\n<p>I'm compressing the day and night as I saw it, creating a unique harmony between these two very discordant worlds.</p>\n<p>[…] Time is this extraordinary thing that we never can really wrap our heads around. But in a very unique and special way, I believe these photographs begin to put a face on time. They embody a new metaphysical visual reality. […]</p>\n<p><strong>I realised that Day to Night is really a new way of seeing.</strong></p>\n</blockquote>\n<hr>\n<blockquote class=\"transcript\">\n<p>I watched over 15 hours all these people not even look at Sacré-Coeur. They were more interested in using it as a backdrop. They would walk up, take a picture, and then walk away. And I found this to be an absolutely extraordinary example, a powerful disconnect between what we think the human experience is versus what the human experience is evolving into. <em>The act of sharing has suddenly become more important than the experience itself.</em></p>\n</blockquote>\n<hr>\n<blockquote class=\"transcript\">\n<p>[Near a watering hole in the Serengeti National Park in Tanzania] What I witnessed was unimaginable. Frankly, it was biblical. We saw, for 26 hours, all these competitive species share a single resource called water. The same resource that humanity is supposed to have wars over during the next 50 years. The animals never even grunted at each other. <em>They seem to understand something that we humans don't.</em> That this precious resource called water is something we all have <strong>to share</strong>.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2019-09-23T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2019/09/what-will-happen-to-code/",
      "url": "https://matthieuoger.com/2019/09/what-will-happen-to-code/",
      "title": "What Will Happen to Code?",
      "content_html": "<p>Pieter Levels in “<a href=\"https://levels.io/no-code/\">No Code</a>”:</p>\n<blockquote>\n<p>In the future writing actual code will be like using a pro DSLR camera, and no code will be like using a smartphone camera. Some pros will keep doing work with DSLRs (and need them), but most basic apps will be built with no code.</p>\n<p>[…]</p>\n<p>I think we'll see coding go in two directions:</p>\n<ol>\n<li>towards simplicity with no code, for 95-99% of apps</li>\n<li>towards complexity with custom high-level engineered code, for the 1-5% of apps</li>\n</ol>\n<p>The engineers working on (2) will be high paid, in the millions/year, because custom code.</p>\n</blockquote>\n<p>This is my theory as well. I'm pretty confident that in 20, maybe 40 years, nobody will write actual code for most use cases. We will still have craftsmen, that will build low-level libraries, OSes and computing bricks, then integrated by platforms that everybody will use. Gluing, mixing and combining APIs, UIs, sensors and any other tool will be as simple as piping commands in a shell for a developer today.</p>\n<p>Nowadays' coding is too dangerous, brittle, slow and painful to continue like that forever. It's still baffle me that forgetting brackets around a <code class=\"language-text\">if</code> statement can produce an extremely serious vulnerability issue, that can potentially impact everyone on earth.</p>\n<p>As long as we write code like we did 50 years ago, this will continue to be true. We will continue to make the same mistakes, we will continue to create bugs just by calling an API or rendering a few graphical elements on a screen. It's no wonder that the average quality of softwares is so low right now: <a href=\"https://matthieuoger.com/2015/01/something-slightly-less-terrible/\">considering the number of layers you have to take into account</a>, the pace of the industry, the requirements and the variety of environments, it's already impressive that humanity was able to go this far with such a primitive tooling — it's a giant effort and a long struggle to be able to create something of quality in the software virtual world.</p>\n<p>Surprisingly, and maybe hopefully, programmers are probably the only one that are actually eagerly trying to create the next-generation of tools that will replace them.</p>\n<p>It's been a long time that I've formed this opinion in my head, and these are the reasons that I choose to not focus entirely on programming for the last years, but instead on the products at a higher level.</p>\n<p>Software engineers will probably become like blacksmiths (or similar professions): a few are highly valued for <a href=\"https://youtu.be/TD2XGwmRJi8\">the quality of their work, and the dedication to their craft</a>, but the other 99% have vanished or been replaced by low-wage jobs.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2019-09-08T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2019/08/art-of-lists/",
      "url": "https://matthieuoger.com/2019/08/art-of-lists/",
      "title": "Art of Lists",
      "content_html": "<p><a href=\"https://allenpike.com/2019/making-a-list-bold\">Allen Pike</a>:</p>\n<blockquote>\n<p>Occasionally we need to write something that must be understood, absorbed, and acted on. The more important it is that readers understand and act, the more time you should spend refining the writing.</p>\n<p>There are a lot of things you can do to make an email, blog post, proposal, or process document clearer. For example you can keep it short, make it engaging, or have a colleague refine it before sending it out. These can all help a lot.</p>\n<p>However, if it’s critical to you that your writing is read – especially by busy people – you need to make it skimmable.</p>\n<p>[…] There is one core approach though, one workhorse of the skimmable document, that is worth mastering: lists. […] I’d like to share one weird trick to quickly writing a clear and useful list: <a href=\"https://allenpike.com/2019/making-a-list-bold#the-bolding-trick\">The Bolding Trick</a>.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2019-08-26T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2019/08/fast/",
      "url": "https://matthieuoger.com/2019/08/fast/",
      "title": "Fast",
      "content_html": "<p>Craig Mod in “<a href=\"https://craigmod.com/essays/fast_software/\">Fast Software, the Best Software</a>”:</p>\n<blockquote>\n<p>I <em>love</em> fast software. That is, software speedy both in function and interface. Software with minimal to no lag between wanting to activate or manipulate something and the thing happening. Lightness.</p>\n<p>Software that’s speedy usually means it’s focused. Like a good tool, it often means that it’s simple, but that’s not necessarily true. Speed in software is probably the most valuable, least valued asset. To me, speedy software is the difference between an application smoothly integrating into your life, and one called upon with great reluctance.</p>\n<p>[…] Because — it’s not <em>quite</em> as fast. We’re talking milliseconds, but it’s enough that you <em>feel</em> the difference.</p>\n<p>[…] Still, the slowness feels indicative of unseen rot on the inside of the machine. The slowness is like an off smell. I don’t trust the application as much as I would if it didn’t slow down […]</p>\n<p>Speed and reliability are often intuited hand-in-hand. Speed can be a good proxy for general engineering quality. If an application slows down on simple tasks, then it can mean the engineers aren’t obsessive detail sticklers. Not always, but it can mean disastrous other issues lurk. I want all my craftspeople to stickle.</p>\n<p>[…] I love software that does this: Software that unbloats over time. This should be the goal of all software. The longer it’s around, the more elegant it should become. Smooth over like a river stone.</p>\n<p>[…] But why is slow bad? Fast software is not always good software, but slow software is rarely able to rise to greatness. Fast software gives the user a chance to “meld” with its toolset. That is, not break flow.</p>\n<p>[…] It feels — intuitively — that software (beyond core functionality) should aim for speed. Speed as a proxy for efficiency. […]</p>\n<p><em>Ultimately, to be fast is to be light.</em></p>\n</blockquote>\n<p>He's talking about software — where it's most perceptible —, but I think this could also be easily applied to physical objects.</p>\n<hr>\n<p>As an aparté, but similarly, Craig also wrote this sentence that I like a lot in his <a href=\"https://craigmod.com/roden/028/\">latest Roden newsletter</a>:</p>\n<blockquote>\n<p>Part of me wishes there was more of a trend in the startup world to build sustainably small, single-serving, hyper-focused, <em>culturally-impactful</em> businesses.</p>\n</blockquote>\n<hr>\n<h2>Update <span class=\"more\">28 August 2019</span></h2>\n<p>Related to this topic, <a href=\"https://overcast.fm/+R7DVyEUt0/1:37:42\">John Siracusa</a> in <a href=\"https://atp.fm/episodes/337\">episode #337 of ATP</a>:</p>\n<blockquote class=\"transcript\">\n<p>That's what I want. I don't want to be waiting for the computer for things that I shouldn't have to be waiting for the computer for. For small interactive things. That involves, like, it's not saying \"oh yes, eliminate animations because it takes too long\". I just want everything to be interactive… all the time.</p>\n<p>I want it to be responsive to my input.</p>\n</blockquote>\n<p>This really is the crux of the problem. As soon as you start your actions and you have to stop because the software is not able to follow you, it's over (exhibit A: Jira, or as <a href=\"/sounds/posts/2019-08-01-fast/jira.mp3\">John's co-host says…</a>).</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2019-08-01T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2019/07/book-basecamp/",
      "url": "https://matthieuoger.com/2019/07/book-basecamp/",
      "title": "It Doesn't Have to Be Crazy at Work",
      "content_html": "<p>Random highlights taken from the book “<a href=\"https://basecamp.com/books/calm\">It Doesn't Have to Be Crazy at Work</a>” by <a href=\"https://basecamp.com\">Basecamp</a>.</p>\n<hr>\n<p>Page 176:</p>\n<blockquote>\n<p>Later is where excuses live. Later is where good intentions go to die. Later is a broken back and a bent spirit. Later says “all-nighters are temporary until we’ve got this figured out.” Unlikely. Make the change now.</p>\n</blockquote>\n<p>Page 185:</p>\n<blockquote>\n<p>Being clear about what demands excellence and what’s perfectly okay just being adequate is a great way to bring a sense of calm into your work. You’ll worry less, you’ll accept more. “That’s fine” is such a wonderfully relaxing way to work most of the time. Save the occasional scrutiny for the differentiating details that truly matter.</p>\n</blockquote>\n<p>Page 182:</p>\n<blockquote>\n<p>We’ve been practicing disagree and commit since the beginning, but it took Bezos’s letter to name the practice. Now we even use that exact term in our discussions. “I disagree, but let’s commit” is something you’ll hear at Basecamp after heated debates about specific products or strategy decisions.</p>\n<p>Companies waste an enormous amount of time and energy trying to convince everyone to agree before moving forward on something. What they’ll often get is reluctant acceptance that masks secret resentment.</p>\n</blockquote>\n<p>Page 252:</p>\n<blockquote>\n<p>Jean-Louis Gassée, who used to run Apple France, describes this situation as the choice between two tokens. When you deal with people who have trouble, you can either choose to take the token that says “It’s no big deal” or the token that says “It’s the end of the world.” Whichever token you pick, they’ll take the other.</p>\n</blockquote>\n<p>Page 20:</p>\n<blockquote>\n<p>It begins with this idea: <em>your company is a product</em>.</p>\n<p>Yes, the things you make are products (or services), but your company is the thing that makes those things. That’s why your company should be your best product. […] That, like product development, progress is achieved through iteration. If you want to make a product better, you have to keep tweaking, revising, and iterating. The same thing is true with a company.</p>\n<p>[…]</p>\n<p>But when you think of the company as a product, you ask different questions: Do people who work here know how to use the company? Is it simple? Complex? Is it obvious how it works? What’s fast about it? What’s slow about it? Are there bugs? What’s broken that we can fix quickly and what’s going to take a long time?</p>\n<p>A company is like software. It has to be usable, it has to be useful. And it probably also has bugs, places where the company crashes because of bad organizational design or cultural oversights.</p>\n<p>When you start to think about your company as a product, all sorts of new possibilities for improvement emerge. When you realize the way you work is malleable, you can start molding something new, something better.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2019-07-30T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2019/07/withhold-the-fun/",
      "url": "https://matthieuoger.com/2019/07/withhold-the-fun/",
      "title": "Withhold the Fun",
      "content_html": "<p><a href=\"https://atp.fm/episodes/335\">John Siracusa</a>, in episode 335 of <a href=\"https://atp.fm\">ATP</a>:</p>\n<blockquote class=\"transcript\">\n<p>\"We are trying to win on quality\". And if you try to win on quality in the enterprise, that is not a winning strategy, because, we established before the definition of enterprise software, <mark>the people who pay for the software and select it are not the people who use it so your software being more desirable for users means almost nothing in the enterprise.</mark></p>\n<p>All that matters is: does it do the thing that I needed to do, does it check all the checkboxes for compliance and <em>blablabla</em> and how much does it cost?</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2019-07-29T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2019/04/a-real-dial/",
      "url": "https://matthieuoger.com/2019/04/a-real-dial/",
      "title": "A Real Dial",
      "content_html": "<p>From “<a href=\"https://blog.halide.cam/a-spectre-retrospective-part-2-design-708c2faf801b\">A Spectre Retrospective</a>”:</p>\n<blockquote>\n<p>Remember how I talked about the exposure duration dial, and how I really wanted it to feel like a tactile control like the one you have on a camera? The delightful clickiness of it, its precision, the appearance of etched metal… Delicious. How could we possibly translate this to a digital user interface? You’d just be tapping on glass.</p>\n<p>[…] The only issue was that my big silly thumb would totally obscure the control. […]</p>\n<p>But we didn’t have to also emulate the limitations of the physical world along with its wonderful tactile qualities: this is the digital world. We can make tiny phones fly. We can use a machine brain to pick the right settings for you.</p>\n<p>We can make the dial expand gracefully as you select an exposure time.</p>\n</blockquote>\n<p>Thus:</p>\n<blockquote>\n<p>This is probably my favorite part of the interface. Everything about it feels and looks perfect; Ben’s custom spring physics, my visual design iterations, and Jelmar’s completely custom typeface we use for the numerals. Three people worked hard on this little doodad — and most users probably wouldn’t even notice the work we put into it!</p>\n<p>I would argue that’s how you know that you’ve made something well.</p>\n<p><mark>When you come across an article set in a superb typeface for reading, some excellent airport signage or a well designed door handle, you don’t think about it or even notice it. If anything you might just notice being happier, or simply not frustrated. That’s how you know a design is great: it <em>disappears</em>.</mark></p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2019-04-13T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2018/12/better-meetups-conferences/",
      "url": "https://matthieuoger.com/2018/12/better-meetups-conferences/",
      "title": "Better Meetups and Conferences",
      "content_html": "<p>I was watching <a href=\"https://youtu.be/_9D6ZIEQalc\">this talk</a> by <a href=\"https://twitter.com/jessiechar\">Jessie Char</a> and it reminded me of some thoughts I have each time I attend a meetup or conference.</p>\n<p>I think we could improve these events with some little tweaks that would make the experience of every attendee better.</p>\n<ul>\n<li><strong>Manage the noise level</strong>. This is <em>the most important</em> thing. Noise must be low during the \"networking phase\", which means that the venue should not produce too much sound acoustically (and if it's not possible, simply reduce the number of people attending your event). People should be able to talk to each other at more than 20cm away after a talk. I can't count the number of times I approached a group, finding that I couldn't hear one single word because the room was too loud.</li>\n<li><strong>Get 3 mics</strong> at least. One for the moderator, one for the speaker (or group of speakers), and one for the audience. The audience also wants to listen to the questions. The speaker or moderator should repeat the question after hearing it anyways, but this common practice is often forgotten, unfortunately.</li>\n<li><strong>Fresh air access</strong>. This is more for conferences, since meetups are usually shorter. There's nothing worse than not being able to go outside for a few minutes every hour. Headaches and odors await otherwise.</li>\n<li><strong>Find ways to nudge people to talk to each other</strong>. There will be groups of people that know each other, so the task is, by default, harder for strangers. Give them help, find ways to make interaction more natural. It's not that hard, I think (but it depends on the venue and what your event is about). For conferences, what I like is when other activities are offered (games for examples) — it's good to have breaks. And many times you can meet new people more easily in a different setup.</li>\n<li><strong>Reduce</strong>. <strong>The</strong>. <strong>Number</strong>. <strong>Of</strong>. <strong>Attendees</strong>. I get it that organizers don't want a small number of people at their meetups or conferences. It's not as profitable and it's not as good for the press/reputation, but participants will thank you. 1) It helps people talking to each other after a talk. 2) It reduces noise. 3) It creates intimacy and makes people ask more questions to the speakers. 4) And, in fact, it reduces your cost and makes everything more manageable.</li>\n</ul>\n<p>There're many other things to do, but these are my main frustrations. For the rest, the talk linked above is excellent! :)</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2018-12-13T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2018/12/tools/",
      "url": "https://matthieuoger.com/2018/12/tools/",
      "title": "Tools",
      "content_html": "<p>From “<a href=\"https://www.goodreads.com/book/show/34376766-blood-sweat-and-pixels\">Blood, Sweat and Pixels</a>” (written by <a href=\"https://twitter.com/jasonschreier\">Jason Schreier</a>):</p>\n<blockquote>\n<p>The biggest differentiator between a studio that creates a really high-quality [product] and a studio that doesn't isn't the quality of the team.</p>\n<p><mark>It's their dev tools.</mark></p>\n<p>If you can take fifty shots on goal, and you're a pretty shitty hockey player, and I can only take three shots on goal and I'm Wayne Gretzky, you're probably going to do better.</p>\n<p><mark>That's what tool are. It's how fast can you iterate</mark>, how stable are they, how robust are they, how easy it is as a nontechnical artist to move a thing.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2018-12-05T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2018/11/flank-it/",
      "url": "https://matthieuoger.com/2018/11/flank-it/",
      "title": "Flank It",
      "content_html": "<p><a href=\"https://medium.com/@steve.yegge/jeff-bezos-jack-ma-and-the-quest-to-kill-ebay-bb4992dc5020\">Steve Yegge</a>:</p>\n<blockquote>\n<p>[This] one is pretty goddamn important: Don’t try to beat a network by making a clone with improvements. It ain’t gonna work. There is too much gravitational inertia in the original network; nobody is incentivized to leave it.</p>\n<p>There are some approaches that will work […]. Both approaches require you to get into an entirely different market and build a network there. You can’t beat a strong network head-on, but you can flank it.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2018-11-26T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2018/11/bad-design/",
      "url": "https://matthieuoger.com/2018/11/bad-design/",
      "title": "The Cost of Bad Design and the “Ghetto of Inattention”",
      "content_html": "<p>From the “<a href=\"https://creative.gimletmedia.com/shows/wireframe/\">Wireframe</a>” podcast, “<a href=\"https://creative.gimletmedia.com/show/wireframe/episodes/good-design-human-centric/\">Good Design is Human</a>”:</p>\n<blockquote>\n<p>KHOI: […] It’s the idea that design should make tech comfortable for people. It should put people at ease. So you have all these little cues that make people feel like they can explore the tech, they don’t have to worry about being caught in a trap or inadvertently triggering a nuclear meltdown.</p>\n<p>AMY: But while human-centered design had permeated the world of consumer technology, not every industry has been as quick to adopt it.</p>\n<p>[…]</p>\n<p>AMY: In January 2018, an employee at The Hawaii Emergency Management Agency mistakenly issued a state-wide alert that went straight to residents’ cell phones. “Ballistic Missile Threat inbound to Hawaii,” it read. “Seek immediate Shelter. This is not a drill.”</p>\n<p>[…] This was supposed to be a safety drill. But the guy at the controls clicked on the wrong link. And you kind of can’t blame him… when you see the screen that he was looking at.</p>\n</blockquote>\n<hr>\n<blockquote>\n<p>KHOI: I mean, on the one hand, technology that consumers interact with has gotten so much better. We don’t have manuals anymore. Everything is much, much more intuitive. And so, design has really come a long way in that respect. But there’s this whole other sector of technology – the stuff that you and I don’t get to interact with everyday. The stuff that–  power plants or emergency centers. That stuff still is pretty rough still.</p>\n<p>CLIFF: The stuff that really needs to be redesigned is not apps and things like that. It’s the gnarly ugly enterprise software out there that sort of has escaped real scrutiny right? So, let’s say some piece of software for managing a trucking fleet.</p>\n<p>AMY: Too many of these kinds of tools still aren’t streamlined and friendly and easy-to-use the way our smart phones and laptops are. They have not yet, in other words, received the benefit of human-centered design.</p>\n<p>CLIFF: All these things actually, they exist almost in this kind of like “ghetto of inattention”. The greatest opportunities are within those things, this like gnarly machinery of everyday commerce that really powers the world we live in, but that has escaped notice.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2018-11-14T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2018/10/give-it-five-minutes/",
      "url": "https://matthieuoger.com/2018/10/give-it-five-minutes/",
      "title": "“Give It Five Minutes”",
      "content_html": "<p><a href=\"https://signalvnoise.com/posts/3124-give-it-five-minutes\">Jason Fried</a>:</p>\n<blockquote>\n<p>[Richard Saul Wurman] said “Man, give it five minutes.” I asked him what he meant by that? He said, it’s fine to disagree, it’s fine to push back, it’s great to have strong opinions and beliefs, but give my ideas some time to set in before you’re sure you want to argue against them. “Five minutes” represented “think”, not react. He was totally right.</p>\n<p>[…]</p>\n<p>[He] has spent his career thinking about these problems. He’s given it 30 years. And I gave it just a few minutes. Now, certainly he can be wrong and I could be right, but it’s better to think deeply about something first before being so certain you’re right.</p>\n</blockquote>\n<hr>\n<p>This comes to my mind every time I face new ideas, laws, structures, products, redesigns, or just a change in my life.</p>\n<p>When we talk about politics, for example, it's really easy to dismiss what someone is doing and say \"it's so stupid and I would do <em>this</em> instead of <em>that</em>, of course!\". Without understanding the big picture, or the <a href=\"https://www.youtube.com/watch?v=rStL7niR7gs\">keys</a> behind a problem, yeah, for sure we would do differently. This is not a justification for world destruction or horrible legislations, but a mental framework to acquire knowledge about why <em>it's</em> like that and how <em>it</em> could be really improved.</p>\n<p><strong>It's hard</strong>, and we all fell for it, but each time I try to understand the motivation or the <em>why</em> behind something I would push against, it always makes more sense, whether I liked it or not. Then, I get a better grasp on the problem. And sometimes, it can even change my mind.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2018-10-31T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2018/10/unity-iphone-x-home-indicator/",
      "url": "https://matthieuoger.com/2018/10/unity-iphone-x-home-indicator/",
      "title": "Unity and iPhone X's Home Indicator",
      "content_html": "<blockquote class=\"tldr\">\n<p>Check the <code class=\"language-text\">Bottom</code> option for \"Defer system gestures on edges\" in the <code class=\"language-text\">Edit → Project Settings → Player</code> menu of Unity to make the iPhone X's home indicator less visible and obtrusive in your project.</p>\n<p>Don't use \"Hide home button on iPhone X\". This is not what you want for a game.</p>\n</blockquote>\n<hr>\n<p>We are porting <a href=\"http://steredenn.pixelnest.io/\">Steredenn: Binary Stars</a> to iOS right now, and with the port comes the support for the iPhone X new form factor (yes, it's a bit late, I know…).</p>\n<p>When trying the game on an iPhone X, I was not happy with the way the home indicator was always visible, distracting the user while playing Steredenn. I looked at other games and saw that it was possible to change its behavior.</p>\n<p>However, it was not really clear how to do that with Unity, so I hope this will help others.</p>\n<h2>Home indicator?</h2>\n<p>Since the iPhone X, the mechanism to go back to the home screen has changed on iOS. You have to swipe from the bottom of the screen, which puts the app back inside its icon.</p>\n<p>By default, at the bottom (where the chin was), the home indicator is <strong>always visible</strong> in an app. It's the black bar you can see on this screenshot:</p>\n<p><img src=\"/images/posts/2018-10-18/home-indicator.jpg\" alt=\"Home indicator default state\"></p>\n<p>For the moment, it's a permanent indicator if the app does not specify a different behavior.<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup></p>\n<p>See what it does in action:</p>\n<figure>\n  <video src=\"/images/posts/2018-10-18/action.mp4\" width=\"221.5\" height=\"480\" controls muted loop>\n    Your browser doesn't support videos. You can download it below.\n  </video>\n  <figcaption>\n    Using the home indicator (<a href=\"/images/posts/2018-10-18/action.mp4\">download video</a>).\n  </figcaption>\n</figure>\n<p>It's a thoughtful UI that follows the finger precisely. With the haptic feedback, it's actually very nice to play with.</p>\n<h2>Changing the behavior in Unity</h2>\n<p>However, this (default) behavior is not great for games. It's too bright and it hides a small portion of the bottom part of the screen. Which can be confusing in games like Steredenn, where many things are displayed at the same time.</p>\n<p><img src=\"/images/posts/2018-10-18/steredenn.jpg\" alt=\"Home indicator in Steredenn\"></p>\n<p>Fortunately, Unity (well, technically, it's iOS) provides 2 ways to change the home indicator. Obviously with Unity, the correct one is not the one you would expect.</p>\n<p>You can find these settings by following this procedure:</p>\n<ol>\n<li>Go to <code class=\"language-text\">Edit → Project Settings → Player</code>.</li>\n</ol>\n<p><img src=\"/images/posts/2018-10-18/unity-01.jpg\" alt=\"Open the Player&#x27;s settings\"></p>\n<ol start=\"2\">\n<li>Then, click on the iOS tab, and find the \"Other Settings\" area.</li>\n</ol>\n<p><img src=\"/images/posts/2018-10-18/unity-02.jpg\" alt=\"Find &#x22;Other Settings&#x22;\"></p>\n<ol start=\"3\">\n<li>Finally, we are interested in 2 settings: \"Hide home button on iPhone X\" and \"Defer system gestures on edges\".</li>\n</ol>\n<p><img src=\"/images/posts/2018-10-18/unity-03.jpg\" alt=\"&#x22;Hide home button on iPhone X&#x22; and &#x22;Defer system gestures on edges&#x22;\"></p>\n<h2>\"Hide home button on iPhone X\"</h2>\n<p>\"Hide home button on iPhone X\", the one that looks like what we want, is, of course, the <em>wrong one</em>.</p>\n<p>This setting hides the home indicator after a certain inactivity delay. If the user taps on the screen, the home indicator appears again in its full bright glory. In a game, where you will tap all the time, it's the same as showing the indicator permanently.</p>\n<p>Note that this setting can be useful sometimes. For example, if you are doing a video player, or a game that does not require user inputs often, this is what you want. I think there is ways to toggle this behavior when needed.</p>\n<p>This is what YouTube does, for example (it's hard to see cos' the home indicator is black here, but look at the bottom):</p>\n<figure>\n  <video src=\"/images/posts/2018-10-18/hide.mp4\" controls muted loop>\n    Your browser doesn't support videos. You can download it below.\n  </video>\n  <figcaption>\n    \"Hide home button on iPhone X\" (<a href=\"/images/posts/2018-10-18/hide.mp4\">download video</a>).\n  </figcaption>\n</figure>\n<h2>\"Defer system gestures on edges\"</h2>\n<p>As you have guessed now, this is the setting we need.</p>\n<p>It does two things:</p>\n<ul>\n<li>The home indicator opacity is reduced, which makes it less bright. Perfect.</li>\n<li>To go back to the home screen, you have to do the gesture twice. This is also nice, since it prevents accidental gestures.</li>\n</ul>\n<p>The \"bottom\" checkbox is enough if you only want to change the home indicator behavior. The other checkboxes can be used for Control Center and other gestures on iPad, I think.</p>\n<p>This is what Alto's Adventure does, as well as Steredenn:</p>\n<figure>\n  <video src=\"/images/posts/2018-10-18/defer.mp4\" controls muted loop>\n    Your browser doesn't support videos. You can download it below.\n  </video>\n  <figcaption>\n    \"Defer system gestures on edges\" (<a href=\"/images/posts/2018-10-18/defer.mp4\">download video</a>).\n  </figcaption>\n</figure>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>I think it will be hidden or removed in a future version of iOS when the behavior will be accepted by most people. Currently, it's a nice affordance and the space it takes is necessary while the users are getting used to it.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2018-10-18T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2018/09/glory-to-rome/",
      "url": "https://matthieuoger.com/2018/09/glory-to-rome/",
      "title": "The Story of Glory to Rome",
      "content_html": "<p><a href=\"https://arstechnica.com/gaming/2018/09/how-a-ceo-fiddled-while-beloved-board-game-glory-to-rome-crashed-and-burned/?comments=1\">Cyrus Farivar at Ars Technica</a>:</p>\n<blockquote>\n<p>But [Glory To Rome] (GTR) felt different. First, I noticed the packaging. Unlike the high-quality large-format cardboard boxes with soft colors and thoughtful art, GTR came in a compact, cheap, plastic tub that wasn’t much bigger than a large paperback book. Second, and more jarring, was the game's art. It had a bright color palette and cartoonish characters that seemed like they belonged in a children’s clip art computer game.</p>\n<p>[He] started unpacking the game and patiently explaining the rules. What immediately struck me was the mechanic allowing the player to choose what type any given card would be—one of a few choices that would automatically exclude the others. GTR appeared to be full of intrigue and strategy, and there were multiple ways to win. […]</p>\n<p>In less than a decade, how could a game whose ranking still remains relatively high (150) on Board Game Geek — just a few places above Magic: The Gathering and a few places lower than Carcassonne — have totally disappeared? What happened? […]</p>\n<p>\"It’s one of those games, you just recognize the genius of the design of it,\" Lozito told Ars. \"This is one of the quintessential big games in a small box. Every time you sit down to play it it plays differently, the cards are all crazy. I looked at the game and I have no idea how his brain could come up with such a complex game out of 125 cards or whatever.\" […]</p>\n<p>As GTR continued to gather critical and cult-classic steam, word started getting back to [co-creator Carter] that one of the game’s primary problems was its awful production—those nausea-inducing colors and a cheap plastic box. […]</p>\n<p>[After the Kickstarter's success], this should have been the moment that Carter seized game-design glory. With a successful production, he could have taken the game from indie cult favorite to something much bigger. But according to Rao, this influx of cash instead represented the beginning of the end.</p>\n</blockquote>\n<p>Here's a description from Ed Carter, one of the \"co-creators\":</p>\n<blockquote>\n<p>Early on, Glory To Rome was often called \"San Juan on Steroids,\" but it would probably be more accurate to call it \"San Juan meets Magic The Gathering.\" There are 40 different cards in Glory To Rome and each one has a unique ability. Only four of them are sensible \"Improve your X by Y\" abilities—the rest are ridiculous, convoluted powers like \"Incomplete MARBLE structures provide function.\" That generates 760 different two-card combinations and many thousands of three-card ones. I've played hundreds of games of GTR over the years so I've thought about a lot of these combinations, but certainly not all of them.</p>\n<p>Also, while most games are balanced using a stable equilibrium with the aim that no card should be so overpowering that it breaks the game, Glory To Rome is balanced using astable equilibrium—our aim was that in the right combinations, virtually every card would be able to contribute to a runaway victory.</p>\n</blockquote>\n<p>I was never aware that the game was unavailable. I got a copy of the French version (by Filosofia) a few years ago when it was in store almost anywhere in France, in a reprinted and decent version, so this story is all news to me. It's funny to think that the game was \"everywhere\" here, but unavailable in its home-country.</p>\n<p>It's a shame though, since the game is really, <em>really</em> great.</p>\n<p><em>Side note: the work by <a href=\"https://www.boardgamegeek.com/thread/643046/poll-would-you-buy-re-design-glory-rome\">Heiko Günther</a> is beautiful too. I think that the French version is clearer in an actual game, but wow this is pretty.</em></p>\n<hr>\n<p>This article makes me think that many boardgames disappear each year, going unnoticed and forgotten forever.</p>\n<p>I wrote about <a href=\"https://matthieuoger.com/2015/09/quantum-post-mortem/\">Quantum</a> before, one of my favorite boardgames, which is out of stock too. I looked for a new copy a few months ago, and to my surprise, wasn't able to find one. I looked today, and the game is not even listed on most sites anymore.</p>\n<p>Each year<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup>, an increasing number of new games is released, and each year, an even bigger number is retired. The disturbing thing, however, is that most of these games are, actually, great games.</p>\n<p>Only a small and highly-successful portion of all the boardgames will be kept forever (Catan, Race for the Galaxy, Carcassonne, Monopoly, 7 Wonders, etc.). Are those the very best of the best? Or just the most successful ones?</p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>Like videogames, the number of boardgames produced a year keeps getting bigger. I don't have the numbers, but I've read that the production of the last few years alone might be higher than the whole combined number of games created a few decades before.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2018-09-16T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2018/07/reboot/",
      "url": "https://matthieuoger.com/2018/07/reboot/",
      "title": "Reboot",
      "content_html": "<p>It's been a long time since my last post (more than two years, in fact). And the reason is absurd.</p>\n<p><strong>tl;dr</strong>: I have redesigned Solar Sailer, making the <a href=\"/\">home page</a> the most important one and refocusing this site as a way to find me on Internet. The blog is relegated to a secondary part of the website. I still plan to publish articles, but the focus of Solar Sailer is to quickly know who I am, what I've done and where you can find me.</p>\n<p>The rest is a bonus. However, I'm still planning to expand this website in new ways — adding a portfolio and a resume, most notably.</p>\n<p><a href=\"/\"> <img src=\"/images/posts/2018-07-20-reboot.jpg\" alt=\"New redesign and home page\"> </a></p>\n<p>If you want to read more about why it took so long, continue. Otherwise, you know everything. 😉</p>\n<hr>\n<p>I was using <a href=\"http://jekyllrb.com\">Jekyll</a> to generate this blog and hosting it with <a href=\"https://pages.github.com\">GitHub Pages</a> (Jekyll is maintained by GitHub, so the workflow to publish a Jekyll site on GitHub is dead simple if you accept their dependencies and constraints). Then, one day, GitHub said that they were deprecating the Markdown engine that I was using, affecting a few posts I wrote.</p>\n<p>I wanted to redesign this site for a long time, so instead of just updating the posts, I decided to rewrite the whole blog (like every developer do each time they have a small change to do — it's our curse).</p>\n<p>I experimented. I designed 6 or 8 layouts. I was never happy, and I never gave me the time to finish it properly. When I started to implement a new design, I let it wither for a few months. And when I came back, I just ditched it all. Again. And again. And again.</p>\n<p>I moved the blog to <a href=\"https://gohugo.io\">Hugo</a>. Then I came back to Jekyll once more. I modernized everything. Then I was fed up with Jekyll again, so I tried <a href=\"https://www.gatsbyjs.org\">Gatsby</a>. And I did other things, abandoning the redesign once again. Meanwhile, and even if I had dozens of drafts, I couldn't update the old blog with new articles. So it languished there, in its infamous uglyness (something I was not proud of, calling myself a <em>designer</em>).</p>\n<p>And finally, I retried Gatsby recently and completed a new design. It's not perfect. It's not well tested on older browsers. But it works, in a good enough way for me — I have already spent too much time on it.</p>\n<p>I've also cut the dependency I had on GitHub Pages. I'm still using GitHub to host this website, but the workflow is separated and I'm free to use what I want.</p>\n<p><strong>It's time to ship.</strong></p>\n<hr>\n<p>More than just a simple redesign, I wanted to reboot the site to add a <strong>portfolio</strong>, a <strong>resume</strong>, a <strong>documentation·codex·tutorials</strong>, as well as a <strong>photo</strong> and <strong>automation</strong> sections. Of course, if I wanted to do it all, I would never have finished anything, so I just focused on a simple redesign at the time being, keeping in mind that the site would be expanded later.</p>\n<p>The goal, in the end, is to do all that — if I'm motivated enough. A good start would be to publish new articles with a regular schedule.</p>\n<hr>\n<p>Another thing that was ticking for this website was the \"deprecation\" of <a href=\"https://security.googleblog.com/2018/02/a-secure-web-is-here-to-stay.html\">HTTP by Chrome in an upcoming update</a>. By deprecation, I mean that Chrome will show an \"Unsecure\" flag on non-HTTPS websites. HTTP will always work, but it will be relegated to a legacy protocol that nobody should continue to use.</p>\n<p>I was in a hurry to complete this reboot before this update. I soft-launched the new site a few weeks ago, and tweaked it since. And now it's official.</p>\n<hr>\n<p>To be a little bit exhaustive:</p>\n<ul>\n<li>I have 6 designs in Sketch files, plus a few more that I did directly in the browser.</li>\n<li>I did more than 50 logos. And I'm still not satisfied by the one I use now (it's not the best that I did, but I think it fits better with the layout and what I wanted to do). It's so hard to capture the essence of something personal. It's a blank canvas without any constraints.</li>\n<li>I tried 4 or 5 blog engines (<a href=\"http://jekyllrb.com\">Jekyll</a>, <a href=\"http://www.metalsmith.io\">Metalsmith</a>, <a href=\"https://www.gatsbyjs.org\">Gatsby</a>, <a href=\"https://gohugo.io\">Hugo</a> and others). I even toyed with the idea of creating my own.</li>\n</ul>\n<p>I'm so exhausted by this whole process and that's mainly why I'm so long to end this blog post. 😇</p>\n<hr>\n<p>I hope you'll like it.</p>\n<h2>Update <span class=\"more\">18 October 2018</span></h2>\n<p>I've renamed the site to simply \"Matthieu Oger\". The \"brand\" I was trying to create with the \"Solar Sailer\" name was not working at all. It's better to just drop it and use my name as of now. If you encounter a broken link somewhere, please <a href=\"/about/\">contact me</a>.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2018-07-20T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2016/04/dwarf-fortress-systems/",
      "url": "https://matthieuoger.com/2016/04/dwarf-fortress-systems/",
      "title": "Cats, Taverns and Cleaning Systems",
      "content_html": "<p><a href=\"http://www.pcgamer.com/dwarf-fortress-creator-on-how-hes-42-towards-simulating-existence/\">Tarn Adams</a>:</p>\n<blockquote>\n<p>It’s funny how I have popular bugs, right? You shouldn’t have popular bugs. […] I added taverns to fortress mode, so the dwarves will go to a proper establishment, get mugs, and make orders, and they’ll drink in the mug. And, you know, things happen, mugs get spilled, there’s some alcohol on the ground.</p>\n<p>Now, the cats would walk into the taverns, right, and because of the old blood footprint code from, like, eight years ago or something, they would get alcohol on their feet. It was originally so people could pad blood around, but now any liquid, right, so they get alcohol on their feet. And then I wanted to add cleaning stuff so when people were bathing, or I even made eyelids work for no reason, because I do random things sometimes. So cats will lick and clean themselves, and on a lark, when I made them clean themselves I’m like, ‘Well, it’s a cat. When you do lick cleaning, you actually ingest the thing that you’re cleaning off, right? They make hairballs, so they must swallow something, right?' And so the cats, when they cleaned the alcohol off their feet, they all got drunk. Because they were drinking.</p>\n<p>But the numbers were off on that. I had never thought about, you know, activating inebriation syndromes back when I was adding the cleaning stuff. I was just like, ‘Well, they ingest it and they get a full dose,’ but a full dose is a whole mug of alcohol for a cat-sized creature, and it does all the blood alcohol size-based calculations, so the cats would get sick and vomit all over the tavern.</p>\n<p>The original bug report is, ‘There’s cat vomit all over my tavern, and there’s a few dead cats,’ or whatever, and they’re like, ‘Why? This is broken.’</p>\n<p>People helped me with this. We were all looking and figuring out, ‘What the heck is going on here?’, and that was the chain of events. It’s like doing the detective work to figure out that entire chain of events is what happened. You can see how adding just a tavern that gave the opportunity for spilling alcohol, which was really uncommon before, now all the spilled alcohol starts to, form in one location where something could start to happen. You activate bugs and little parts of code from eight, six years ago where you just didn’t balance the numbers because it didn’t matter. […]</p>\n<p><strong>PC Gamer: So the cats’ inebriation system was just based on any organism would have the potential to get drunk.</strong></p>\n<p>Yeah, right now it’s any creature that has blood, and that includes, like, an octopus. I don’t know if an octopus can get drunk or not.</p>\n</blockquote>\n<p>The way the different systems are all interacting together is so fascinating. Especially when the outcome becomes something like this. :)</p>\n<hr>\n<blockquote>\n<p>I don’t even use version control. If you don’t know what that is then you’re not gonna yell at me. If you even know what version control is you’re gonna be like, ‘You don’t use version control? You don’t use source control? What is wrong with you? How can you even work?’</p>\n</blockquote>\n<p>I'm still baffled to know that many game developers (or other developers) work without version control. It seems so dangerous, but… well.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2016-04-01T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2016/03/delight/",
      "url": "https://matthieuoger.com/2016/03/delight/",
      "title": "Delight",
      "content_html": "<p><a href=\"http://craigmod.com/sputnik/leica_q/\">Craig Mod in his beautiful essay about the Leica Q</a>:</p>\n<blockquote>\n<p>And what <em>is</em> delight? For me, delight is born from a tool’s intuitiveness. Things just working without much thought or fiddling. Delight is a simple menu system you almost never have to use. Delight is a well-balanced weight on the shoulder, in the hand. Delight is the just-right tension on the aperture ring between stops. Delight is a single battery lasting all day. Delight is being able to knock out a 10,000 iso image and know it'll be usable. Delight is extracting gorgeous details from the cloak of shadows. Delight is firing off a number of shots without having to wait for the buffer to catch up. Delight is constraints, joyfully embraced.</p>\n</blockquote>\n<p>Bonus:</p>\n<blockquote>\n<p>It should not exist. It is one of those unicorn-like consumer products that so nails nearly every aspect of its being — from industrial to software design, from interface to output — that you can’t help but wonder how it clawed its way from the R&#x26;D lab. Out of the meetings. Away from the committees. How did it manage to maintain such clarity in its point of view?</p>\n</blockquote>\n<p>And:</p>\n<blockquote>\n<p>The Q — like most recent Leicas — is engraved with the softly geometric, proprietary LG 1050 typeface. It feels so, totally, completely at home, stamped into the camera body in all caps. It's highly legible and precisely designed. Minimal, functional, but with a bit of quirky character. Like the Q itself. This is the perfect camera typeface used in the perfect way. Mic dropped. Case closed.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2016-03-19T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2016/03/java/",
      "url": "https://matthieuoger.com/2016/03/java/",
      "title": "Why Do Many Software Engineers Hate Java?",
      "content_html": "<p><a href=\"https://www.quora.com/Why-do-many-software-engineers-not-like-Java/answer/Michael-O-Church\">Michael O. Church</a>:</p>\n<blockquote>\n<p>First, let's cover the technical issues. It's verbose, combines the worst of both worlds between static and dynamic typing by having a hobbled but extremely clunky type system, and mandates running on a virtual machine (VM) that has a macroscopic startup time (not an issue for long-running servers, but painful for command-line applications). […]</p>\n<p>The VM itself has a lot to recommend it. It offers concurrency and garbage collection at a level of quality that, until recently, wasn't found anywhere else. […] Much important software in the early 2000s was written in Java because, at the time, it was the best choice, even taking the mediocrity of the language itself into account. It had Unicode (albeit, UTF-16) from the start and a strong concurrency story, and it was a notch above C++ in terms of user experience. […]</p>\n<p>If you put Java on a technical trial, it doesn't do so bad. The <em>language</em> sucks, the platform is pretty good for most purposes. I do hate the dominant interpretation of \"object-oriented programming\" with a passion, because it objectively sucks. […]</p>\n<p>So let's talk about the political and cultural issues. First, the dominant Java culture is one of mediocrity and bad taste, with MetaModelVibratorVisitorFactory classes dominating. I've heard a number of experts on \"the Java issue\" argue that Java's biggest problem is the community, and that comes directly from the fact that good programmers don't want to deal with the bastardization of OOP that has entrenched itself in mainstream corporate development. You have a lot of people who trained up as \"Java programmers\", haven't seen a command line ever, and have no clue how the computer actually works. Most of them have never actually written a program; they just write classes and some Senior Chief Architect (who makes $246,001 per year and hasn't written a line of code since the 1990s) figures out how to stitch them together, and then tells some other clueless junior how to implement the glue in the gutshot hope that one will actually have the talent to make an actual working program out of the mess.</p>\n<p>This isn't inherent to the JVM, because Clojure (currently hosted on the JVM, although its endgame seems to be language-agnosticism) has a radically different (and better) community. Scala's community is more mixed, but the top Scala engineers (the ones making tools like Spark and Kestrel) are really fucking good.</p>\n<p>[…]</p>\n<p>So, the short answer is: it's mostly not about the underlying platform (which is generally of high quality) and its only partly about the language (which is mediocre but can't be blamed directly for community problems). It goes a lot deeper than that, and not all of it is Java's fault. However, Java takes its share of the blame for its clear favoritism toward large programs (technically, established by its long startup time) and by its support of a very ugly (and counterproductive) variety of object-oriented programming.</p>\n</blockquote>\n<p><a href=\"https://www.quora.com/Why-do-many-software-engineers-not-like-Java/answer/Stanley-Idesis\">Stanley Idesis</a>:</p>\n<blockquote>\n<p>I’ve read the popular answers and will claim no contest to a majority of the complaints I found. […] However, here’s why I <em>love</em> it. […]</p>\n<p>In the Android world, developers use Java because they <em>have</em> to. However, much creativity has sprung from that limitation. People have written many excellent OS libraries in Java for Android. The platform continues to be a hotbed of Java activity which developers contribute to from all over the world. […]</p>\n<p>Android’s open nature, wide distribution, and powerful support from Google are almost enough to make Java hip again. […] Sure, some may argue that other runtimes and languages can enable the same capabilities of the device, but for whatever reason, Android chose Java.</p>\n<p>Until Google changes its mind, Java will remain relevant and the source of fascinating developments in the software community as long as Android remains popular.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2016-03-17T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2016/03/virtual-reality/",
      "url": "https://matthieuoger.com/2016/03/virtual-reality/",
      "title": "VR Is Not The Future",
      "content_html": "<small>\n  <em>This is a prediction. I may (must?) be completely wrong—after all, I hold an unpopular opinion and many tech companies seem to think otherwise. We'll see.</em>‍ 🤷\n  <br><br>\n</small>\n<p><a href=\"https://en.wikipedia.org/wiki/Virtual_reality\">Virtual Reality</a> (or VR) is a fantasy that many geeks love. It's in books, in movies, in games. In our collective mind, virtual reality is like flying cars: it's a dream that we always envisioned for our future as an high tech society.</p>\n<p>Well, we all remember that we didn't get flying cars for the new millenium.</p>\n<p>Incredible technologies portrayed in science-fiction books or movies are generally not really that relevant in reality. Or they are so hard to build that we can't even fathom to create them now. In our history, the way our society evolved was often very different to how we imagined it in our fictions. When you confront with the reality, many dreams are just what they are: dreams. I would need to dig up some sociology courses that I had—but I remember that this is a recurrent theme in our evolution.</p>\n<p>For VR, it's a bit different: we (almost) have the technology. However, I do think that it's just a fad. A fad that excites many marketers or entrepreneurs. <em>Real-world applications are so narrow.</em></p>\n<hr>\n<p>VR is a cool demo. VR is impressive. Even with our primitive VR technologies, it's still incredible to try.<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup></p>\n<p>VR is also making people sick—yes, many people suffer from motion sickness.</p>\n<p>VR is pretty boring for games, its main application right now. Yes, the immersion is better. Nop, the controls are worse. You can't move in a game without hitting a wall. You can't use your hands without complex gloves or other utensils. The possibility are not that huge: okay, it might be great for some first-person games where you don't move. But that's just a small subset of all the games we can create.</p>\n<p>VR is ugly. VR is cumbersome. VR is like Google Glass (remember that?) in so many ways.</p>\n<figure>\n  <img\n    src=\"/images/posts/2016-03-17-virtual-reality.png\"\n    alt=\"Men and women sitting with a VR headset, Mark Zuckerberg marching among them.\"\n    title=\"The future?\"\n  >\n  <figcaption>The future? Really?</figcaption>\n</figure>\n<p>If you're at home, it might be fine, although that wearing another thing on your head is not that comfy. I already wear glasses, I really don't want to add something more on my head, I assure you. Especially if it means that I might hit a wall someway.<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup></p>\n<p>Outside? At work? We are going to need many years to be okay with that.</p>\n<p>The day we'll be able to have VR headsets the size of a regular pair of glasses is far. We might be already destroying our eyes by viewing screens all day—I can't wait to wear VR headsets a few centimeters from my retinas all the time!</p>\n<hr>\n<p>VR is not completely useless. There's some fields where virtual reality might be useful. Want to visit a new flat in a town far far away? You're a future surgeon and you need to practice during your school years? There's a myriad of applications outside of gaming and home uses.</p>\n<p>Unfortunately, right now, people imagine that VR will be used to handle and manipulate softwares, computers or playing games. That's absurd.</p>\n<blockquote class=\"twitter-tweet\" data-lang=\"en\"><p lang=\"en\" dir=\"ltr\">Using VR to work on scenes in the Unity Editor: <a href=\"https://twitter.com/timoni\">@timoni</a>&#39;s demo on-stage at <a href=\"https://twitter.com/hashtag/GDC16?src=hash\">#GDC16</a>: <a href=\"https://t.co/tbUmVAemBU\">https://t.co/tbUmVAemBU</a> <a href=\"https://twitter.com/hashtag/unity3d?src=hash\">#unity3d</a> <a href=\"https://t.co/T1EH8MsLWb\">pic.twitter.com/T1EH8MsLWb</a></p>&mdash; Ben Pitt (@robotduck) <a href=\"https://twitter.com/robotduck/status/709810463886934016\">March 15, 2016</a></blockquote>\n<p>Seriously? Who would do that? What the point? Who in their right mind thought it was a good idea!?</p>\n<p>When I say that VR is not the future, I don't mean that VR will disappear completely. But we need to take a step back and really think about it. We need to stop to try to put VR everywhere—it's just a waste of time.</p>\n<p>The only application that will make VR a general use product might be porn. Honestly, except for that, I don't see a future where VR is ubiquitous. That just doesn't make any sense.</p>\n<hr>\n<p>Virtual reality is a fad. And right now, journalists and tech companies are all buzzing and craving for that. When the first officially released headsets will be available, I expect a massive flop. As soon as the novelty wears off, people will just forget it. <strong>Because outside of some narrow use cases, it's just not practical or invisible enough.</strong></p>\n<p><a href=\"https://twitter.com/hyperisland/status/710052291315965953\">F*** it, I give up.</a></p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>VR is the new <a href=\"https://en.wikipedia.org/wiki/Augmented_reality\">AR</a>? I'm still inclined to think there's a slight chance that AR might come back in a way or another and be pertinent.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>It's like 3D glasses in theaters, but worse. And 3D glasses are already an aberration, we all agree, right?</p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2016-03-17T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2016/03/doing-a-ted-talk/",
      "url": "https://matthieuoger.com/2016/03/doing-a-ted-talk/",
      "title": "Inside the Mind of a Master Procrastinator",
      "content_html": "<p><a href=\"http://waitbutwhy.com/2016/03/doing-a-ted-talk-the-full-story.html\">Tim Urban about rehearsing for his TED Talk</a>:</p>\n<blockquote>\n<p> I’ve mentioned before that we all have this problem where we’re weirdly obsessed with what other people think of us, so it makes sense that public speaking should be our collective phobia.</p>\n<p>But then we also live in a world where public speaking can happen to any of us at any time. […]</p>\n<p>\"Hey TED Staff,</p>\n<p>I've decided to do my talk on procrastination. It's the thing I'm best at.</p>\n<p>Best,</p>\n<p>November Tim\"</p>\n<p>[…]</p>\n<p>[My rehearsal] was three days before my talk—and it was pretty rough, confirming to me and everyone present that I was officially not a fraud when it came to my topic. The irony of a guy rehearsing his TED Talk about how he’s a bad procrastinator, and being clearly underprepared while doing so, was not lost on anyone.</p>\n</blockquote>\n<p><strong>UPDATE</strong>: and <a href=\"http://www.ted.com/talks/tim_urban_inside_the_mind_of_a_master_procrastinator\">the talk is up on TED</a>. No surprise: it's great.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2016-03-15T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2016/02/invention-center/",
      "url": "https://matthieuoger.com/2016/02/invention-center/",
      "title": "Invention Centers",
      "content_html": "<p><a href=\"http://www.fastcodesign.com/3046437/5-steps-to-recreate-xerox-parcs-design-magic-from-the-guy-who-helped-make-it\">Alan Kay</a>:</p>\n<blockquote>\n<p>Invention centers are 20 to 40 people doing odd things. Innovation is the process of taking something that’s already been invented and packaging it nicer.</p>\n<p>Problem-finding is about how to get something out of almost nothing in some new area. You're by definition not doing something incremental. There’s a lot of playful stuff going on. The probability of a good idea is pretty low. Most of the ideation that happens [in an invention center] are things that get rejected, which is normal in this line of work. Very few people understand that.</p>\n</blockquote>\n<p>Later:</p>\n<blockquote>\n<p>The shortest lived group at Xerox PARC was \"Office of the Future,\" because Xerox executives would not leave them alone.</p>\n<p>I chose the most innocuous name for my own group, the Learning Research Group. Nobody knew what it meant, so they left us alone to invent-object oriented programming and the GUI.</p>\n</blockquote>\n<p>So weird that something like CDG is backed by SAP.</p>\n<p>(via <a href=\"http://us1.campaign-archive2.com/?u=53a12bfed319e2ce36b906532&#x26;id=49acf1cd18\">Avdi Grimm</a>)</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2016-02-16T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2015/10/sad-state-web-deployment/",
      "url": "https://matthieuoger.com/2015/10/sad-state-web-deployment/",
      "title": "The Sad State of Web App Deployment",
      "content_html": "<p><a href=\"http://eev.ee/blog/2015/09/17/the-sad-state-of-web-app-deployment/\">Eevee on Fuzzy Notepad</a>:</p>\n<blockquote>\n<p>We’ve been doing this for 20 years. We should have this by now. It should work, it should be pluggable and agnostic, and it should do everything right. […]</p>\n<p>Instead, we stack layer after layer of additional convoluted crap on top of what we’ve already got because we don’t know how to fix it. Instead, we flit constantly from Thin to Mongrel to Passenger to Heroku to Bitnami to Docker to whatever new way to deploy trivial apps came out yesterday. Instead, we obsess over adding better Sass integration to our frameworks.</p>\n<p>And I’m really not picking on Ruby, or Rails, or this particular app. I hate deploying my own web software, because there are so many parts all over the system that only barely know about each other, but if any of them fail then the whole shebang stops working.</p>\n</blockquote>\n<p>See also: <a href=\"https://matthieuoger.com/2015/01/something-slightly-less-terrible/\">Something Slightly Less Terrible</a>.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2015-10-13T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2015/09/semicolon-comma-programming/",
      "url": "https://matthieuoger.com/2015/09/semicolon-comma-programming/",
      "title": "Compilation by a Thousand Semicolons and Commas",
      "content_html": "<p>Something I like in most modern programming languages is that they tend to ditch semicolons completely.</p>\n<p>Semicolons are a nuisance, a waste of time, a source of (easily fixable) errors, ugly and unnecessary.</p>\n<p>Compilers can easily work without them. Keeping them in old languages is, most of the time, simply a question of backward-compatibility.</p>\n<p>And that's fine, after all. In modern languages though, this is something that must be avoided. It's wrong and useless.</p>\n<p>Consider this snippet of Swift:</p>\n<div class=\"gatsby-highlight\" data-language=\"swift\"><pre class=\"language-swift\"><code class=\"language-swift\"><span class=\"token keyword\">var</span> greeting <span class=\"token operator\">=</span> <span class=\"token string\">\"Hello!\"</span>\n\n<span class=\"token keyword\">if</span> <span class=\"token keyword\">let</span> name <span class=\"token operator\">=</span> optionalName <span class=\"token punctuation\">{</span>\n    greeting <span class=\"token operator\">=</span> <span class=\"token string\">\"Hello, <span class=\"token interpolation\"><span class=\"token delimiter variable\">\\(</span>name<span class=\"token delimiter variable\">)</span></span>\"</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p><strong>No semicolon.</strong> Great. Now, consider a similar snippet of Go:</p>\n<div class=\"gatsby-highlight\" data-language=\"go\"><pre class=\"language-go\"><code class=\"language-go\"><span class=\"token keyword\">func</span> <span class=\"token function\">sqrt</span><span class=\"token punctuation\">(</span>x <span class=\"token builtin\">float64</span><span class=\"token punctuation\">)</span> <span class=\"token builtin\">string</span> <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">if</span> x <span class=\"token operator\">&lt;</span> <span class=\"token number\">0</span> <span class=\"token punctuation\">{</span>\n\t\t<span class=\"token keyword\">return</span> <span class=\"token function\">sqrt</span><span class=\"token punctuation\">(</span><span class=\"token operator\">-</span>x<span class=\"token punctuation\">)</span> <span class=\"token operator\">+</span> <span class=\"token string\">\"i\"</span>\n\t<span class=\"token punctuation\">}</span>\n\n\t<span class=\"token keyword\">return</span> fmt<span class=\"token punctuation\">.</span><span class=\"token function\">Sprint</span><span class=\"token punctuation\">(</span>math<span class=\"token punctuation\">.</span><span class=\"token function\">Sqrt</span><span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>It's pretty nice, isn't it?</p>\n<p>Go <strong>does</strong> use semicolons in its grammar. However, it's the lexer's role to add them, not the developer. <a href=\"http://zachholman.com/posts/shit-work/\">Let the machines do the shit work.</a></p>\n<p>Here's the extract from <a href=\"https://golang.org/doc/effective_go.html#semicolons\">Effective Go</a>:</p>\n<blockquote>\n<p>Like C, Go's formal grammar uses semicolons to terminate statements, but unlike in C, those semicolons do not appear in the source. Instead the lexer uses a simple rule to insert semicolons automatically as it scans, so the input text is mostly free of them.</p>\n</blockquote>\n<p>And unlike in an extremely <a href=\"http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leaders-regarding\">popular</a> <a href=\"http://mislav.uniqpath.com/2010/05/semicolons/\">language</a>, Go imposes some formatting rules to its programmers and nobody has a problem with <a href=\"http://inimino.org/~inimino/blog/javascript_semicolons\">ASI</a>.</p>\n<p>However, there's still one perfectly valid case where semicolons are not optional:</p>\n<div class=\"gatsby-highlight\" data-language=\"go\"><pre class=\"language-go\"><code class=\"language-go\"><span class=\"token keyword\">if</span> v <span class=\"token operator\">:=</span> math<span class=\"token punctuation\">.</span><span class=\"token function\">Pow</span><span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">,</span> n<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span> v <span class=\"token operator\">&lt;</span> limit <span class=\"token punctuation\">{</span>\n\t<span class=\"token keyword\">return</span> v\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>Between <code class=\"language-text\">math.Pow(x, n)</code> and <code class=\"language-text\">v &lt; limit</code>, you will find a semicolon. Because the two statements are on the same line, the compiler needs a semicolon to know where to end a statement and start the next one.</p>\n<p>Basically, the rule is simple:</p>\n<ul>\n<li>Do not use a semicolon when a statement ends with a newline.</li>\n<li>Use a semicolon when a statement is followed by another statement on the same line.</li>\n</ul>\n<p>That's the basic consensus in new languages.</p>\n<hr>\n<p>So, here's my question: <strong>why don't we do the same thing with commas?!</strong></p>\n<p>Let's look at the following snippet of Swift:</p>\n<div class=\"gatsby-highlight\" data-language=\"swift\"><pre class=\"language-swift\"><code class=\"language-swift\"><span class=\"token keyword\">var</span> test <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span><span class=\"token string\">\"a\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"b\"</span><span class=\"token punctuation\">,</span> <span class=\"token string\">\"c\"</span><span class=\"token punctuation\">]</span></code></pre></div>\n<p>As you can see, each value of the array is separated by a comma. Same rule as the semicolons: if you are on the same line, use a separator. <em>In this case, it's a comma instead of the semicolon because the semantic is different.</em> Fine.</p>\n<p>Now, let's look at the same snippet with a multi-lines notation — this example might seem contrived, but this kind of notation is clearer when the values are more complex and/or numerous:</p>\n<div class=\"gatsby-highlight\" data-language=\"swift\"><pre class=\"language-swift\"><code class=\"language-swift\"><span class=\"token keyword\">var</span> example <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>\n  <span class=\"token string\">\"a\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">\"b\"</span><span class=\"token punctuation\">,</span>\n  <span class=\"token string\">\"c\"</span>\n<span class=\"token punctuation\">]</span></code></pre></div>\n<p>Wait. What. <strong>It's exactly like in the one-line declaration just above.</strong> Which is not surprising, because almost any language will do that.</p>\n<p>That's inconsistent though. For semicolons, we omit them when there's a newline, but here, for a comma, we do not.</p>\n<p>The correct syntax should be:</p>\n<div class=\"gatsby-highlight\" data-language=\"swift\"><pre class=\"language-swift\"><code class=\"language-swift\"><span class=\"token keyword\">var</span> test <span class=\"token operator\">=</span> <span class=\"token punctuation\">[</span>\n  <span class=\"token string\">\"a\"</span>\n  <span class=\"token string\">\"b\"</span>\n  <span class=\"token string\">\"c\"</span>\n<span class=\"token punctuation\">]</span></code></pre></div>\n<p>Simpler, prettier. And it gives a few bonuses beyond the cosmetic aspect:</p>\n<ol>\n<li>It's less error-prone.</li>\n<li>\n<p>It's more practical for versioning tool's diffs:</p>\n<p><img src=\"/images/posts/2015-09-27-diff.png\" alt=\"Diff\"></p>\n</li>\n<li>It's consistent with the semicolon behavior.</li>\n</ol>\n<p>I would apply the same rule to functions definition, maps or anything which needs commas, like I wrote in this example:</p>\n<div class=\"gatsby-highlight\" data-language=\"swift\"><pre class=\"language-swift\"><code class=\"language-swift\"><span class=\"token comment\">// One-line, comma.</span>\n<span class=\"token keyword\">func</span> <span class=\"token function\">test</span><span class=\"token punctuation\">(</span>x<span class=\"token punctuation\">:</span> <span class=\"token builtin\">Int</span><span class=\"token punctuation\">,</span> y<span class=\"token punctuation\">:</span> <span class=\"token builtin\">Int</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span><span class=\"token punctuation\">}</span>\n\n<span class=\"token comment\">// Or:</span>\n\n<span class=\"token comment\">// Multi-lines, no comma.</span>\n<span class=\"token keyword\">func</span> <span class=\"token function\">test</span><span class=\"token punctuation\">(</span>\n  x<span class=\"token punctuation\">:</span> <span class=\"token builtin\">Int</span>\n  y<span class=\"token punctuation\">:</span> <span class=\"token builtin\">Int</span>\n<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p>In Go, those notations are not frequent because the formatting rules are stricter. However, in a struct definition, you must write this:</p>\n<div class=\"gatsby-highlight\" data-language=\"go\"><pre class=\"language-go\"><code class=\"language-go\"><span class=\"token keyword\">type</span> Point <span class=\"token keyword\">struct</span> <span class=\"token punctuation\">{</span>\n  X <span class=\"token builtin\">int</span><span class=\"token punctuation\">,</span>\n  Y <span class=\"token builtin\">int</span><span class=\"token punctuation\">,</span>\n<span class=\"token punctuation\">}</span></code></pre></div>\n<p><em>(Note the trailing comma on the last line.)</em></p>\n<p>It's better than what Swift does (at least, diffs are not impacted and you don't have to think to add or remove a comma — you just have to).</p>\n<p>But why did they choose to keep the commas? No comma at all would have been way better AND coherent with the semicolon rule.</p>\n<p>And you know what is even more inconsistent? This, which is perfectly valid Go code:</p>\n<div class=\"gatsby-highlight\" data-language=\"go\"><pre class=\"language-go\"><code class=\"language-go\"><span class=\"token keyword\">var</span> <span class=\"token punctuation\">(</span>\n  x <span class=\"token operator\">=</span> <span class=\"token number\">1</span>\n  y <span class=\"token operator\">=</span> <span class=\"token number\">2</span>\n  z <span class=\"token operator\">=</span> <span class=\"token number\">3</span>\n<span class=\"token punctuation\">)</span></code></pre></div>\n<p>Yep, this time, there is nothing at all.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2015-09-27T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2015/09/what-makes-indie-hit/",
      "url": "https://matthieuoger.com/2015/09/what-makes-indie-hit/",
      "title": "What Makes an Indie Hit?",
      "content_html": "<p>“<a href=\"http://www.gamasutra.com/blogs/RyanClark/20150917/253842/What_Makes_an_Indie_Hit_How_to_Choose_the_Right_Design.php\">What Makes an Indie Hit?: How to Choose the Right Design</a>” by Ryan Clark (of <a href=\"http://necrodancer.com/\">Crypt of the NecroDancer</a>) is an interesting read:</p>\n<blockquote>\n<p>In this industry it's difficult to go far without learning from others. But from whom should we learn? I think it is wisest to study developers who have been repeatedly successful. Each time a developer creates another successful game, it becomes less and less likely that their repeated successes have been due to luck. Only a minuscule fraction of indie games break even, so what are the odds of developers like Jamie Cheng, Edmund McMillen, and Cliff Harris stringing together a number of successful games? The odds are low. There must be something other than luck at work! So perhaps these folks (and many others like them!) are the ones you should be studying and listening to.</p>\n</blockquote>\n<p>I generally agree with the article (read it!), but there is one point that bothers me.</p>\n<blockquote>\n<p>If you want people to remember your game, to talk about your game, to write articles about your game, etc, it needs to have a hook. Preferably multiple hooks!</p>\n</blockquote>\n<p>Ok. This is spot on. However, and while I think that innovative games are important and crucial to explore original ideas and designs, <strong>not every game can be a new experience.</strong></p>\n<p>We need fun and excellent games in existing genres. Having brilliant roguelike, RTS, shmup, point &#x26; click, you name it… is equally important. And in this case, how do you hook people?</p>\n<p>What we wanted to do with <a href=\"http://steredenn.pixelnest.io\">Steredenn</a> (my game) is an excellent shmup-roguelike. We don't want to reinvent a genre or to experiment. We just want to make a great, fun, polished and addictive game. That's all. There's a market for a game like that — but we struggle to stand out of the crowd (and we tried many things like articles, arcade cabinet, tutorials, shows, devblog, contacts, press, etc.).</p>\n<p>If we had followed the \"hooks rule\", we would never have made Steredenn.<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup> But I truly think there's a place and an audience for this kind of games.</p>\n<p><strong>tl;dr: Should every game have a hook, a \"gimmick\", a unique twist? I don't think so.</strong></p>\n<hr>\n<p>To be fair, I want to discuss of something else:</p>\n<blockquote>\n<p>If you are unsure of the strength of your game's hooks, test them! With NecroDancer we did this by putting out a very early teaser trailer, and by demoing at PAX.</p>\n</blockquote>\n<p>\"Demoing at PAX\" is not something that everyone can afford. I'm all for the \"try your game in real as soon as possible\" mantra, but going to a big show is out of scope for almost any indie. It costs a lot just to present your game — and I don't even count the transportation, the food and hostels.</p>\n<p>When we went to Rezzed, we spent about £2000. It was close to us so the travel was very cheap.<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup> Rezzed is also no PAX or Gamescon.</p>\n<p>With our finances, we can afford one or two big exhibitions a year, if we are lucky. I don't think we are the only one in this position. I even think that we are in a privileged situation compared to many indies.</p>\n<p>I don't want to fool myself: big shows are very important to get feedbacks, coverage and press. And this is something that many indies can't do at all. Languages, geography, finances — this is not an easy problem.</p>\n<p>And as Ryan tells us a little bit later:</p>\n<blockquote>\n<p>It is common these days for devs to downplay the importance of festivals, awards, and even of press. I disagree. Sure, accolades and reviews themselves may not drive mountains of sales, but most people need to hear about your game from numerous sources before they'll actually watch a trailer or buy the game.</p>\n</blockquote>\n<p>Exactly. :)</p>\n<p>To Ryan's credit, he's also ending his article with:</p>\n<blockquote>\n<p>I know how difficult it is to succeed as a new indie dev, and I am aware of the advantages that I have due to experience, connections, and reputation.</p>\n</blockquote>\n<p>Thanks for the tips, anyways!</p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>Well, we do try a few novel ideas in Steredenn, so it's not a pure \"plain-old-game\". But the essence of the game is a direct action-packed game. That's our main focus.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>France to England.</p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2015-09-18T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2015/09/quantum-post-mortem/",
      "url": "https://matthieuoger.com/2015/09/quantum-post-mortem/",
      "title": "Quantum Post-Mortem",
      "content_html": "<p><a href=\"http://boardgamegeek.com/blogpost/24083/designer-diary-cruel-cruel-galaxy-or-designing-qua\">Fascinating post-mortem of Quantum, by its designer, Eric Zimmerman</a>:</p>\n<blockquote>\n<p>Quantum is a strategy game for two through four players that incorporates elements of tactics, resource management, and empire building. Players each begin the game with a small fleet of three starships on a customizable map built of modular tiles. Your goal is to expand by building Quantum Cubes on planets, along the way growing your fleet and evolving its abilities. […]</p>\n<p>Another element that opened up the possibilities of the game during this early prototyping period was the addition of special power cards. While I was working on it, I remember seeing a talk at the Game Developers Conference by Rob Pardo, one of the lead designers of World of Warcraft. According to Rob, one of the philosophies at his company Blizzard was to make the player feel overpowered. According to Rob, special abilities and power-ups should feel mighty and spectacular, rather than just being some kind of incremental stat improvement.</p>\n<p>As I started adding the advance cards to the game, I tried to have them embody this approach, especially when it came to the permanent card powers. My goal was that every card should feel incredibly powerful – a potential game winner in the right situation. I loved seeing my playtesters' faces grow greedy as they read the cards, astonished at how good the powers seemed to be.</p>\n<p>The challenge of powerful cards, of course, is balancing them. […]</p>\n<p>Designing the right mix of cards came down to good old-fashioned balancing and testing. There are a number of heuristics I tried to use in designing the cards to be balanced. For example, no card simply gives players an extra fourth action each turn; instead, some cards give you an extra action, but that action is limited, such as a free move that is only one space. There are also cards that do give you a completely open-ended extra action, but only if certain conditions are met, such as if you have more ships on the map than any other player. […]</p>\n<p> It seemed hopeless; I had designed a game with a combat system that no one wanted to use! The solution to this problem was to directly link combat to winning the game. […]</p>\n<p>One strong focus of our work was the language of Quantum: the terms in the rules, the names of the cards and units, and the other words we used in the game. In early prototypes, the titles of the advance cards were more technological: \"Ferocious\", the card that gives you a combat bonus, was originally called \"Armor\", while \"Energetic\", which gives you a movement bonus, was titled \"Propulsion\".</p>\n<p>The names of the card were clear, but they felt generic. Thinking about how to emphasize the player-as-commander, I changed the names from nouns to adjectives. Rather than describing the player's fleet, the cards now described the player. Instead of \"Fuel\", \"Evasion\", and \"Engineering\", the cards now had names like \"Brilliant\", \"Cruel\", and \"Stubborn\".</p>\n</blockquote>\n<p><a href=\"http://www.funforge.fr/US/?portfolio=quantum\">Quantum</a> is one of the best boardgames I recently played. It was unavailable for a year but I finally got my hand on the re-edition. The post-mortem shows all the history behind the game and how some concepts were found and implemented.</p>\n<p>The game is really fast, complex and deep. There's a bit of chance in the game through the roll of the dices (<em>obviously</em>), but I don't think it matters that much in the end. Your decisions are way more important than your luck.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2015-09-15T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2015/09/rule-of-two/",
      "url": "https://matthieuoger.com/2015/09/rule-of-two/",
      "title": "The Rule of Two",
      "content_html": "<p><a href=\"http://www.relay.fm/cortex/12\">CGP Grey</a>:</p>\n<blockquote class=\"transcript\">\n<p>The rule of two is that <mark>two is one — and one is none.</mark> This is applicable to so many things in your life. As a starting point, I often like to think of the rule of two with things that you have around the house. So, for example, if you have one roll of toilet paper, you really don't have any toilet paper. Because when that one runs out, you're in trouble. So you really need two rolls of toilet paper at all time. It's a redundancy rule, basically. It's where this comes from. […]</p>\n<p>This is one of my little pieces of advice for trying to run a life very smoothly. It's that, everything that you can possibly have two of, you should have it. Two shampoo bottles, two bottles of vitamins, two boxes of cereal, two cartons of eggs. You want duplicates of everything. And then, when you're down to one of those things, that's the sign that you need to buy the next one. In this way, you are never out, you're never out of anything. […]</p>\n<p>It's applicable to everything in your whole life, everything that's important.</p>\n</blockquote>\n<p>This is so spot on. I try to function like that, but I never put words onto this behavior. Here it is.</p>\n<p>Grey continues:</p>\n<blockquote class=\"transcript\">\n<p>Think this way with computer files: you have only one copy of that file, guess what? You have no copy of this file. I even think it's applicable to work. If you have one source of income, in many ways, it's like you have no source of income. Because if something happens with your main job, you are in lots and lots of trouble. One source of income, no source of income.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2015-09-09T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2015/08/dead-or-finished-libraries/",
      "url": "https://matthieuoger.com/2015/08/dead-or-finished-libraries/",
      "title": "Dead or Finished Libraries?",
      "content_html": "<p><a href=\"http://perl.plover.com/yak/12views/samples/notes.html\">Twelve Views of Mark Jason Dominus</a>:</p>\n<blockquote>\n<p>I released the Text::Template module several years ago, and it was immediately very successful. It's small, simple, fast, and it does a lot of things well. At the time, there were not yet 29 templating systems available on CPAN.</p>\n<p>Anyway, the module quickly stabilized. I would get bug reports, and they would turn out to be bugs in the module's users, not in the module; I would get feature requests, and usually it turned out that what the requester wanted was possible, or even easy, without any changes to the module. Since the module was perfect, there was no need to upload new versions of it to CPAN.</p>\n<p>But then I started to get disturbing emails. \"Hi, I notice you have not updated Text::Template for nine months. Are you still maintaining it?\" \"Hi, I notice you seem to have stopped work on Text::Template. Have you decided to abandon this approach?\" \"Hi, I was thinking of using Text::Template, but I saw it wasn't being maintained any more, so I decided to use Junk::CrappyTemplate, because I need wanted to be sure of getting support for it.\"</p>\n<p>I started wondering if maybe the thing to do was to release a new version of Text::Template every month, with no changes, but with an incremented version number. Of course, that's ridiculous. But it seems that people assume that if you don't update the module every month, it must be dead. People seem to think that all software requires new features or frequent bug fixes. Apparently, the idea of software that doesn't get updated because it's finished is inconceivable.</p>\n<p>I blame Microsoft.</p>\n</blockquote>\n<p>I must confess that I tend to look at the date of the last commit when I choose a library over another (along with other metrics, hopefully).</p>\n<p>Well, I also think that a \"perfect library\" might not exist, but the author is making a really good point in his talk.</p>\n<p>(via <a href=\"http://www.drmaciver.com/2015/08/what-if-we-had-more-finished-libraries/\">What if we had more finished libraries?</a>)</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2015-08-21T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2015/06/ads/",
      "url": "https://matthieuoger.com/2015/06/ads/",
      "title": "The Web, the Ads and the Ad-Blockers",
      "content_html": "<p>Like almost everyone else, I don't like ads. Nevertheless, I don't use an ad-blocker either.</p>\n<p>Using the web and using an ad-blocker is hypocrite. Like it or not, it's the most widely used business model on the web. That's how most people get paid for the content you read, watch and listen <strong>for free</strong>.</p>\n<p>There're other ways to do it (affiliate links, feed sponsorships, paywalls, etc.), but the dominant model today is ads.</p>\n<p>You know what? I don't find ads particularly irritating from now on. Why? Because I find and read honest websites that respect me by not throwing huge walls of ads to my face. I avoid those ad-filled websites, because most of the time, they are simply bad. And for YouTube? I patiently wait because the great contents made there that I want to see deserve to be paid.<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup></p>\n<p>The solution is not ad-blocking. The solution is to find well-made contents which focus on the readership, not the publisher.<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup></p>\n<hr>\n<p>Let me finish with <a href=\"https://news.ycombinator.com/item?id=9695552\">this</a>:</p>\n<blockquote>\n<p>There is a huge irony in that fact that AdBlock's function of keeping ads away from our content will eventually do the opposite. The alternative to ads alongside my content is ads inside my content.</p>\n<p>Let's face it: paywalls don't work. The alternative on the horizon is native advertising. Buzzfeed is now famously refusing to host ads. Instead they sustain themselves by publishing content that subtly supports the agenda of any company with deep enough pockets to pay for it. A viewer's ability to distinguish between native ads and regular articles is small and quickly vanishing. If separate ads stop reaching people, the path to monetization remaining is to change your content to reflect someone else's agenda.</p>\n</blockquote>\n<p>Because you cannot distinguish an ad from an article, it's even more insidious and dishonest. And this time, you won't be able to block it.</p>\n<hr>\n<h2>Update <span class=\"more\">08 June 2018</span></h2>\n<p>My view on this has changed quite a bit recently. With the explosion of ad tracking technologies and the bloat they add to any webpage, I <em>do use</em> an ad blocker now. But only with Safari, where I find it safe to use an extension like that thanks to its \"Content Blocker\" model of security (ie., no access to the page content, just many rules that match the webpage without a way to send data back).</p>\n<p>I have absolutely no trust in a company like AdBlock, and I am not willing to give them my data so easily.</p>\n<p>I do, however, unblock some specific sites. It's a shame, though.</p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>Ads in apps? I pay to remove them when I can or I find better paid alternatives.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>And if you really want to use AdBlock, <em>only block abusive websites</em>.</p>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2015-06-11T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2015/06/force-touch/",
      "url": "https://matthieuoger.com/2015/06/force-touch/",
      "title": "Force Touch Affordance",
      "content_html": "<p><a href=\"https://www.apple.com/watch/technology/#sensitive\">Force Touch</a> is an impressive piece of technology. It currently equips the Apple Watch and the new Macbooks. You press firmly on the screen and the haptic engine will register a \"deep\" press.</p>\n<p>On the Watch, I found that the feedback was not properly mapped to the press (it's a tap on your wrist, not on your finger). I didn't use the Watch a lot, but I've also found that it was sometime hard to trigger.</p>\n<p>On the new Macbooks' trackpad, the feeling is fantastic. You can push multiple times and sense the force you apply like it's real. You may not even understand that it's not a true physical button.</p>\n<p>But… <strong>Force Touch is not discoverable.</strong></p>\n<p>There is no visual clue that Force Touch is available — either on the screen or on a specific control. It's like the menu button of the old Android versions: you tap somewhere (the menu button on Android, firmly with Force Touch) and something may happen. Or not. It's confusing and it's one more hidden gesture with no affordance. It's no better than a long press if its sole purpose is to be another context menu.</p>\n<p>Indeed, on the Apple Watch, Force Touch's goal is to show a secret menu with additional actions. I understand the purpose — the screen is small and you can't fit everything on the screen. But this exact same behavior on a bigger display will have the same problem that Android had with its menu button. It's even worse than a hamburger menu, because the icon won't be there to tell you that an additional layer is present.</p>\n<p>On OS X, I found that the usage of Force Touch is better: it's not a way to show secondary actions, but just a \"deeper version\" of an action. In QuickTime, for example, you press firmly on the forward button and the video will fast forward faster for each level you reach. It's still hard to know when it's available and might result in nothing, but at least, it's consistant with its source.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2015-06-08T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2015/04/space-odyssey/",
      "url": "https://matthieuoger.com/2015/04/space-odyssey/",
      "title": "Space Odyssey",
      "content_html": "<p>I've finally convinced myself to watch <a href=\"http://www.imdb.com/title/tt0062622/?ref_=fn_al_tt_5\">2001: A Space Odyssey</a>.<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup></p>\n<p><strong>N.B.: If you haven't seen it, I don't think you should read what's coming. Spoilers ahead.</strong><br><br></p>\n<p>Well. I didn't <strong>love</strong> the movie (the pace is really <strong>slow</strong>, even for a movie from the sixties, and not being a fan of classical scores might not have helped). I don't mind if a film is ambiguous or doesn't explain much, but 2001 may have gone a bit too far.</p>\n<p>I get that the monoliths are alien artifacts (or an alien race). I get that David Bowman has been translated in a sort of zoo. I vaguely understood that the Star Gate is a kind of allegory about the human reproduction (there's even a foetus and an umbilical cord during this passage — and the Star Child coming back to earth can also be seen as a birth). But why? Why does an extraterrestrial race would want to improve another race? Why use monoliths? Why would they open the gate near Jupiter and not on the moon?</p>\n<p>The HAL sequence was perfectly clear however, even if they don't explain why it was malfunctioning (it doesn't matter). An interpretation talks about the duality between being a perfect computer and having to lie to the crew about the origin of the mission — this would create a paradox inside the machine. I like that idea.</p>\n<p>What, in the end, annoyed me the most were the expections I had. I always thought that the story would be phenomenal. And… it's not, really. It's pretty simple as soon as you think about it (not having explanations don't change that fact — it just wraps the movie in more mysteries). I had the same reaction after finishing Blade Runner, a few years ago.</p>\n<p>It's not the movie's fault: every awesome idea it invented has been reused everywhere since.</p>\n<hr>\n<p>I was pleasantly surprised to find that the movie does not feel that dated: the images are still beautiful and the depiction of space is really well-done (especially for its time).</p>\n<p>What I loved about the movie is some of the possible interpretations. I'm really eager to read the novel by <a href=\"http://en.wikipedia.org/wiki/2001:_A_Space_Odyssey_%28novel%29\">Arthur C. Clarke</a> to dive a bit more into the story. Especially for this theory:</p>\n<blockquote>\n<p>Arthur C. Clarke's theory of the future symbiosis of man and machine, expanded by Kubrick into what Wheat calls \"a spoofy three-evolutionary leaps scenario\": ape to man, an abortive leap from man to machine, and a final, successful leap from man to 'Star Child'.</p>\n</blockquote>\n<p>I've also found a great quote by Stanley Kubrick about intelligent life when <a href=\"http://en.wikipedia.org/wiki/Interpretations_of_2001:_A_Space_Odyssey\">I was reading articles about the movie</a>:</p>\n<blockquote>\n<p>I will say that the God concept is at the heart of 2001 but not any traditional, anthropomorphic image of God.</p>\n<p>I don't believe in any of Earth's monotheistic religions, but I do believe that one can construct an intriguing scientific definition of God, once you accept the fact that there are approximately 100 billion stars in our galaxy alone, that each star is a life-giving sun and that there are approximately 100 billion galaxies in just the visible universe. Given a planet in a stable orbit, not too hot and not too cold, and given a few billion years of chance chemical reactions created by the interaction of a sun's energy on the planet's chemicals, it's fairly certain that life in one form or another will eventually emerge.</p>\n<p>It's reasonable to assume that there must be, in fact, countless billions of such planets where biological life has arisen, and the odds of some proportion of such life developing intelligence are high.</p>\n<p>Now, the sun is by no means an old star, and its planets are mere children in cosmic age, so it seems likely that there are billions of planets in the universe not only where intelligent life is on a lower scale than man but other billions where it is approximately equal and others still where it is hundreds of thousands of millions of years in advance of us.</p>\n<p>When you think of the giant technological strides that man has made in a few millennia—less than a microsecond in the chronology of the universe—can you imagine the evolutionary development that much older life forms have taken? They may have progressed from biological species, which are fragile shells for the mind at best, into immortal machine entities—and then, over innumerable eons, they could emerge from the chrysalis of matter transformed into beings of pure energy and spirit.</p>\n<p>Their potentialities would be limitless and their intelligence ungraspable by humans.</p>\n</blockquote>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>It was one of the greatest shame of my movie culture. Especially when considering the fact that I love science-fiction books and films.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2015-04-26T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2015/04/wearables/",
      "url": "https://matthieuoger.com/2015/04/wearables/",
      "title": "Perspectives on Wearables",
      "content_html": "<p>For a few reasons, I'm considering whether or not I should be buying an Apple Watch.<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup></p>\n<p>For many people I know, it's another useless gadget.</p>\n<p>That's fine: most people are sceptical about new technologies, after all. It's in our nature: human doesn't like change (and new things) until it reaches a certain threshold and becomes acceptable. And to be fair, it might just be a fad.</p>\n<p>The iPhone (and other touch-based smartphones) were also considered as useless gadgets in their beginnings too — almost everybody has a smartphone now, right?<sup id=\"fnref-2\"><a href=\"#fn-2\" class=\"footnote-ref\">2</a></sup></p>\n<p>But like the iPhone, there's a chance the Apple Watch will succeed and become a thing (that's a big if, but I'm still more inclined to believe it will than not).</p>\n<p><strong>For the moment, I don't think there're many usages that make a watch (or other wearable devices) truly better than a phone</strong>. Hopefully, we are only at the beginning. To understand what we can do as developers, we have to use those objects daily.</p>\n<p>That's not to say they are completely useless as of today.</p>\n<p>The usages that intrigue me the most are:<sup id=\"fnref-3\"><a href=\"#fn-3\" class=\"footnote-ref\">3</a></sup></p>\n<ul>\n<li>Maps navigation (\"quick glance, straight on, a few haptic taps, go right — bam — you're arrived!\").</li>\n<li>Services like Capitaine Train <a href=\"https://blog.capitainetrain.com/8788-apple-watch\">(with an awesome watch app design that clearly understands its support and context)</a>.</li>\n<li>Passbooks and Apple Pay (if it ever comes to France).</li>\n<li>Music and podcasts playback (with Overcast or a remote).</li>\n<li>Fitness and health.</li>\n</ul>\n<p><strong>But not notifications.</strong></p>\n<hr>\n<p>I'm a huge proponent of disabling almost all notifications.</p>\n<p>I restrict the apps that can send notifications to the bare minimum (SMS, calendar, reminders and that's most of it) because I think that notifications are a nuisance.</p>\n<p>You don't need to know when someone followed you on Instagram or Twitter. You don't need to be interrupted when you receive a mail. That's also why I'm even more aggresive against sound for notifications (I do receive my mail every hour, but <em>silently</em>). I'd rather grab my phone and act willingly on something than being always distracted.</p>\n<p>People who are flooded by notifications (like <a href=\"http://www.theverge.com/a/apple-watch-review\">tech reviewers</a>) and criticize a device because of that ARE the issue, not the device. A wearable will only make their problem worse, because they will also allow access to those nuisance to a device that is physically connected to their body. And which can tap them <strong>anytime</strong>.</p>\n<hr>\n<p>What is really making sense is to have quick pertinent contextual information available at a glance.</p>\n<p>Like, when your train is ready to leave — which platform, what seat? That's useful: you are in a urge, you walk quickly and taking your phone out of your pocket takes time and precision.</p>\n<p>Having your itinerary directions given <a href=\"http://daringfireball.net/linked/2015/04/23/apple-watch-user-guide\">to you by a few vibrations</a>? That's great too.</p>\n<p>Having a full-fledged Twitter app on your wrist? Useless. Getting your Facebook likes instantly? Useless.<sup id=\"fnref-4\"><a href=\"#fn-4\" class=\"footnote-ref\">4</a></sup></p>\n<br>\n<p>I'm interested in wearables (<a href=\"https://www.google.com/glass/\">when they are not socially awkward</a>) because of what they might become. What they are today is just a glimpse of the potential of such devices.</p>\n<p>Imagine the application in the health field: with sensors on your body, it could be really easy to know and track diseases. To go there, we need to start small. For the moment, that means a watch with an heartbeat sensor and 18 hours of battery life.</p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>I probably won't, for the moment. <a href=\"http://steredenn.pixelnest.io\">Priorities</a>.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-2\">\n<p>Benedict Evans in “<a href=\"http://ben-evans.com/benedictevans/2014/11/20/time-for-new-questions-in-mobile\">New Questions In Mobile</a>”:</p>\n<blockquote>\n<p>Across all of this, and far more important, we are now well on our way to having some 3.5bn to 4bn people on earth with a smartphone. […] For the first time ever, the tech industry is selling not just to big corporations or middle-class families but to four fifths of all the adults on earth - <strong>it is selling to people who don’t have mains electricity or running water and substitute spending on cigarettes for mobile</strong>.</p>\n</blockquote>\n<a href=\"#fnref-2\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-3\">\n<p>The watch feature is probably the less important feature of a smartwatch. It's handy like it is on a phone. But like the phone feature of a smartphone, it's not the decisive capability.</p>\n<p>  Go on people, make jokes about a watch that is only able to tell the time for a day before running out of battery. ;)</p>\n<a href=\"#fnref-3\" class=\"footnote-backref\">↩</a>\n</li>\n<li id=\"fn-4\">\n<p>But that's also true for the web or an app, to be honest.</p>\n<a href=\"#fnref-4\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2015-04-25T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2015/01/something-slightly-less-terrible/",
      "url": "https://matthieuoger.com/2015/01/something-slightly-less-terrible/",
      "title": "Something Slightly Less Terrible",
      "content_html": "<p><a href=\"http://www.objc.io/issue-20/loren-brichter.html\">Fantastic interview of Loren Brichter on objc.io</a>:</p>\n<blockquote>\n<p>The more I learn, the more terrible I think programming is. I’d love to rip everything up and start over. But you can only swim against the tide so far, so it’s sometimes satisfying to sift through the garbage and repurpose terrible technologies to make something that is slightly less terrible. […]</p>\n<p>It’s not like a boat with a couple of holes that we can patch; it’s more like trying to sail across an ocean on a pile of accrued garbage. Sure, some of the stuff floats, and it keeps some other stuff from sinking. A better question might be: which parts are good? And you can only answer that if you look at a thing in isolation.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2015-01-15T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2014/12/a-tiny-game-that-you-can-play-forever/",
      "url": "https://matthieuoger.com/2014/12/a-tiny-game-that-you-can-play-forever/",
      "title": "A Tiny Game That You Can Play Forever",
      "content_html": "<p>The <a href=\"http://www.upup.fm/\">Up Up Down Down</a> podcast has a good episode with Asher Vollmer.</p>\n<p><a href=\"http://www.upup.fm/show/a-tiny-game-that-you-can-play-forever/\">A Tiny Game That You Can Play Forever</a>:</p>\n<blockquote>\n<p>Asher Vollmer, creator of Threes and Close Castles, joins us to talk puzzle games. We discuss the process of designing developing Threes, and what goes in to making a great little puzzle game. We then talk about the whimsical minimalism that works so well in indie games, and how to bring them to life. We talk about difficulty, complexity, and how to tune games. We touch on the effects of free to play on puzzle games, and how it makes us feel weird.</p>\n</blockquote>\n<p>There're some great points in there. It focuses a lot on Threes' gameplay and evolutions and dives a bit more into minimalism in games.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2014-12-19T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2014/08/taking-a-break/",
      "url": "https://matthieuoger.com/2014/08/taking-a-break/",
      "title": "Taking a Break",
      "content_html": "<p>I'm self-employed and I work every day at home for my company, <a href=\"https://pixelnest.io\">Pixelnest Studio</a>.</p>\n<p>A common good practice recommended by almost any home-worker is to take a quick (3 minutes) <em>walking</em> break every 45 minutes or so.</p>\n<ol>\n<li>It makes you move your body. Especially your legs and your back.</li>\n<li>It gets you out of your computer.</li>\n<li>It rests your eyes. Try to fix an object at 15m and blink your eyes a few times. It's a good way to not only use your close-sight during work.</li>\n</ol>\n<p>It's a simple habit, but it's hard to get used to it. For the last weeks, I forced myself to walk for 3 minutes every 1 hour of work.</p>\n<p>And… it's great. I'm really feeling much more concentrated and ready.</p>\n<p>Because I will forget to stand up as soon as I'm working, <a href=\"https://gist.github.com/solarsailer/6328415616b485ff7bef\">I've made a little \"app\" for OSX</a>. In fact, it's just a simple automator app that will trigger a notification for three minutes. Follow the gist above to know how to use it. It's dead simple, but <strong>it works</strong>.</p>\n<hr>\n<p>NB: this advice is especially true for self-employed people (because you can't take a break with your coworkers), but anybody working at a desk for several hours should do it. It costs nothing, and your body will love it.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2014-08-01T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2014/06/design-detail-ios8-messages/",
      "url": "https://matthieuoger.com/2014/06/design-detail-ios8-messages/",
      "title": "Design Detail in iOS 8 Messages",
      "content_html": "<p>One of the features that I wanted the most in iOS 8 was simple: add a <em>“Use Last Photo Taken”</em> button in the Messages app (along with the current \"Take Photo or Video\" and \"Choose Existing\").</p>\n<hr>\n<p>The idea was originally thought by <a href=\"http://mrgan.tumblr.com/post/12808983893/tweetbot-adds-last-photo-taken-feature\">Neven Mrgan</a> and later adopted by a lot of apps (Tweetbot, Slack, Droplr, etc.).</p>\n<figure>\n    <img\n    src=\"/images/posts/2014-06-03-picker-tweetbot.png\"\n    alt=\"Use “Last Photo Taken” in the Image Picker of Tweetbot 3\"\n    title=\"Use “Last Photo Taken”\"\n  >\n  <figcaption>Example: the Image Picker from Tweetbot 3.</figcaption>\n</figure>\n<p>But it was still missing in the one place where it would definitely shine: Messages.</p>\n<p><strong>No more.</strong></p>\n<hr>\n<p>The way it was added is brilliant. It's so simple that I don't know why it hasn't been done already (it might, I just don't know of an app that have done that).</p>\n<p>Here it is:</p>\n<figure>\n  <img\n    src=\"/images/posts/2014-06-03-picker-8.png\"\n    alt=\"Image Picker in iOS 8 Messages app\"\n    title=\"iOS 8 Messages\"\n  >\n  <figcaption>It's not a button. It's a grid of three (or more) images.</figcaption>\n</figure>\n<p>It solves three problems:</p>\n<ol>\n<li>You can use the last photo. 80% of the time, it's what you (and I) want to do.</li>\n<li>\n<p>You can see the last photo and be sure of what you are doing <strong>BEFORE</strong> doing it.</p>\n<p>With a button, the app had to provide a way to check the action.</p>\n<p>In Tweetbot, for example, the compose view shows a small thumbnail of the image.</p>\n<p>In Droplr, it's too late. As soon as you tap the button, the photo is uploaded and you have to delete it to fix your error.</p>\n</li>\n<li>You can use the last few photos too. Which might represent 80% of the last remaining use cases.</li>\n</ol>\n<p>It's so simple and clever that once you have seen it, you can only think: <em>\"Of course.\"</em>.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2014-06-03T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2014/01/how-netflix-reverse-engineered-hollywood/",
      "url": "https://matthieuoger.com/2014/01/how-netflix-reverse-engineered-hollywood/",
      "title": "How Netflix Reverse Engineered Hollywood",
      "content_html": "<p><a href=\"http://www.theatlantic.com/technology/archive/2014/01/how-netflix-reverse-engineered-hollywood/282679/\">Alexis Madrigal on Netflix classification</a>:</p>\n<blockquote>\n<p>[…], we discovered that Netflix possesses not several hundred genres, or even several thousand, <mark>but 76,897 unique ways to describe types of movies</mark>. […]</p>\n<p>Using large teams of people specially trained to watch movies, Netflix deconstructed Hollywood. They paid people to watch films and tag them with all kinds of metadata. This process is so sophisticated and precise that taggers receive a 36-page training document that teaches them how to rate movies on their sexually suggestive content, goriness, romance levels, and even narrative elements like plot conclusiveness. […]</p>\n<p>The Netflix Quantum Theory doc spelled out ways of tagging movie endings, the \"social acceptability\" of lead characters, and dozens of other facets of a movie. Many values are \"scalar,\" that is to say, they go from 1 to 5. So, every movie gets a romance rating, not just the ones labeled \"romantic\" in the personalized genres. Every movie's ending is rated from happy to sad, passing through ambiguous. Every plot is tagged. Lead characters' jobs are tagged. Movie locations are tagged. Everything. Everyone.</p>\n<p>That's the data at the base of the pyramid. It is the basis for creating all the altgenres that I scraped. Netflix's engineers took the microtags and created a syntax for the genres, much of which we were able to reproduce in our generator.</p>\n</blockquote>\n<p>This article completely blew my mind. Great journalism.</p>\n<p>The idea to tag any movie that much and create ultra-specific subgenres is so clever. Hell of a work too.</p>\n<hr>\n<p>Concerning the <em>Perry Mason</em> mystery, I found an interesting <a href=\"http://www.theatlantic.com/technology/archive/2014/01/how-netflix-reverse-engineered-hollywood/282679/#comment-1184453715\">explanation</a> in the comments (yep):</p>\n<blockquote>\n<p>Actually, Alexis, I am baffled by your conclusion that the Perry Mason Mystery is a \"ghost in the machine\".</p>\n<p>To me it seems obvious: there is a subgenre, \"Understated Cerebral Mysteries with Ironclad Plots, Good Dialogue, Not Much Action or Romance, and on the Side of the Defense\", that is popular with viewers yet <em>drastically</em> underpopulated. It's so drastically underpopulated that the show that's a best-fit for the category is <em>enormously</em> popular, much more popular than anyone realized.</p>\n<p>Far from being a \"bug\", this is programming <em>platinum</em> for Netflix. If they're as smart as I think they are, this is the subgenre where they should be looking to make a TV series. The biggest problem will be finding a showrunner and scriptwriters who are able to go against so many of Hollywood's cliches and assumptions. They need to make something where what is visually interesting, striking, or exciting is unimportant, but where there are no holes in the plots. Very high degree of difficulty, and only profitable to Netflix, which makes money from its shows, not from the advertising.</p>\n</blockquote>\n<p>Sounds a bit like <a href=\"http://www.imdb.com/title/tt1475582/?ref_=fn_al_tt_1\">Sherlock</a>, no?</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2014-01-07T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/11/unity-2d-tutorial/",
      "url": "https://matthieuoger.com/2013/11/unity-2d-tutorial/",
      "title": "Unity 2D tutorial",
      "content_html": "<p>During the last weeks, we (<a href=\"https://dmayance.com/\">Damien</a> and I) have cooked a complete tutorial about Unity and its new 2D tools. This tutorial covers the creation of a very small game from start to finish.</p>\n<p>We hope you will enjoy it.</p>\n<p>→ <a href=\"https://pixelnest.io/tutorials/2d-game-unity/\">You can read it here</a>.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-11-21T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/10/how-designers-destroyed-the-world/",
      "url": "https://matthieuoger.com/2013/10/how-designers-destroyed-the-world/",
      "title": "How Designers Destroyed the World",
      "content_html": "<p>Better late than never; I've managed to watch “<a href=\"https://vimeo.com/68470326\">How Designers Destroyed The World</a>” by Mike Monteiro.</p>\n<p>It's a great talk except that I'm not fond of the tone. Though it fits well with the content, I find it a bit overdramatic. The end is also a tad lengthy, which is unfortunate.</p>\n<p>Otherwise, I liked what I heard. <em>Which makes me consider…</em></p>\n<p>Regularly, I find myself stuck with incredibly ill-conceived things that frustrate me. These objects, rules or designs are things as simple as an ATM, a software or a door. They make us loose time, or worse, do (severe) mistakes.</p>\n<p>For example: there is a crossroad near my parents house. A few years ago, the mayor decided to remove the road signs at this place AND to not replace it. In France, there is an implicit rule which states that when there are no signs, you have to let the cars at your right cross the junction first. This rule is stupid. <strong>When you drive, you have no time to doubt</strong>. A sign serves primarily as way to convey a danger or a rule, without making you think. You know what you have to do instantly. <em>If you see a stop sign, you stop</em>. That is all.</p>\n<p>This implicit rule makes us do the contrary. At a junction like the one I talked about before, you see nothing, so you have to think, analyze and react. It's easy to have a (minor) car accident there. Moreover, people of my town had used this junction for years, knowing precisely how to react. But now, the priority rule has changed, and it's a mess. The result? In the best case, everybody stop, wait for 10 seconds to analyze the place and then drive.</p>\n<p><strong>This is a result of a design decision. Someone decided to do that.</strong> In this case, someone decided to break something that worked well for all this time.</p>\n<p>Sometimes, it might just be a dumb design that put you in an embarrassing situation. If you are a man, just remember the last time you have used a flat and too-high urinal. :)</p>\n<p>When I talk about that with some of my friends, they think that I'm excessively demanding and that the problem is me. Perhaps.</p>\n<p>I will conclude with a quote from the talk:</p>\n<blockquote class=\"transcript\">\n<p>There are professions more harmful than (industrial) design, <strong>but only a very few of them.</strong></p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-10-22T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/10/you-must-prototype-it-in-code/",
      "url": "https://matthieuoger.com/2013/10/you-must-prototype-it-in-code/",
      "title": "You Must Prototype It in Code",
      "content_html": "<p>Jeff Atwood in <a href=\"http://www.codinghorror.com/blog/2004/11/good-programmers-get-off-their-butts.html\">Good Programmers Get Off Their Butts</a>:</p>\n<blockquote>\n<p>I am not proposing a code-like-hell methodology. I am merely observing that, in my experience, <strong>coding without planning is just as futile as coding with too much planning</strong>. Software development is <a href=\"http://www.codinghorror.com/blog/archives/000071.html\">a wicked problem</a>; you should never make planning decisions without some kind of code prototype to ensure that you're making informed decisions. If you plan too far ahead of the code, I guarantee you are doing work that will be thrown away or altered until it is unrecognizable.</p>\n<p>The most destructive symptom of over-planning is the wrongheaded idea that being a Software Architect™ means drawing a lot of UML diagrams and handing them off to a group of developers in Bangalore. <strong>UML is great if you don't want to do any work; you just draw pictures of what it would look like if work was actually done</strong>. This is not only borderline laziness, it's also a recipe for disaster. You can't architect a real world application on a whiteboard. You must prototype it in code to gather data on the performance and design implications of the choices you are making.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-10-18T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/09/paying-for-softwares/",
      "url": "https://matthieuoger.com/2013/09/paying-for-softwares/",
      "title": "Paying for Softwares",
      "content_html": "<p>Florian Kugler about mobile apps in <a href=\"http://floriankugler.com/blog/2013/9/30/worth-less-than-a-cup-of-coffee\">Worth Less than a Cup of Coffee</a>:</p>\n<blockquote>\n<p>[People] might say otherwise when asked about, but their actions speak pretty clearly: A cup of coffee is worth more than almost every app on the store.</p>\n<p>That's a hard pill to swallow, but we should let it sink in. We pour all our creativity, time, and passion into creating basically worthless products.</p>\n</blockquote>\n<p>Recent events and the backlash <a href=\"http://realmacsoftware.com/blog/some-changes-for-clear\">against Realmac with Clear for iOS 7</a> are sad.</p>\n<p>People don't understand that creating softwares — <strong>truly</strong> good softwares that sweat every detail — takes a lot of time and money. Ironically, even a lot of developers who work in big companies don't want to pay for softwares.</p>\n<p>The mobile apps markets have made this situation worse.</p>\n<p>I'm currently thinking back about the mobile market, especially for games. At a time, I thought that going mobile-only was the best shot today, but the more I think about it, the more I'm realizing that a platform like Steam (which also drives the prices to the bottom, alas) is more sustainable for a developer/company.</p>\n<p><a href=\"http://www.marco.org/2013/09/28/underscore-price-dynamics\">Marco Arment</a> said in its latest blog post: <em>\"Paid-up-front iOS apps had a great run, but it’s over. Time to make other plans.\"</em>.</p>\n<p>So what does that leave? Freemium? Unfortunately, freemium almost always goes with <a href=\"https://itunes.apple.com/fr/app/candy-crush-saga/id553834731?mt=8\">bad apps or games that trick users to pay for more</a>.</p>\n<p>N.B.: To be clear, as a user, I'm happy to <em>pay less</em>. For almost everybody, a software or a game at 50-100$ is way too high, and that's fine. What I don't like is that we are now in a situation where  even one buck for an app you use daily is too much. <strong>One buck per app cannot sustain a one-person business.</strong></p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-09-30T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/09/patent-trolls/",
      "url": "https://matthieuoger.com/2013/09/patent-trolls/",
      "title": "Patent Trolls",
      "content_html": "<p><a href=\"http://arstechnica.com/tech-policy/2013/09/angry-entrepreneur-replies-to-patent-troll-with-racketeering-lawsuit/\">Angry entrepreneur replies to patent troll with racketeering lawsuit</a>:</p>\n<blockquote>\n<p>\"There's a lot of outrageous stories, but everyone's so damn afraid of coming forward—It's like going against the Mafia,\" he said. But the idea that trolls may retaliate against those who speak out is overblown, he thinks. \"If they want to try to teach me a lesson, go for it. This will be my retirement. I'll fight them.\"</p>\n</blockquote>\n<p>Here it is:</p>\n<ul>\n<li>Everyone knows that patent trolls are useless companies that only try to steal money from defenseless ones.</li>\n<li>Everyone knows that they don't invent anything.</li>\n<li>Everyone knows that they cost a lot — of time and money — with endless legal procedures.</li>\n<li>Everyone knows that it's pure bullshit and extortion, and yet, it is perfectly legal.</li>\n</ul>\n<p>Interesting system.</p>\n<hr>\n<p>I'm not against patents and inventors' rights. But there is a big difference between protecting your properties from real thieves and suing everyone without actually creating anything.</p>\n<p>However, if the only solution to this problem is to abolish the patents system, so be it.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-09-17T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/09/brand-and-logo/",
      "url": "https://matthieuoger.com/2013/09/brand-and-logo/",
      "title": "Brand and Logo",
      "content_html": "<p><a href=\"http://ia.net/blog/logo-bullshit-co-inc/\">Fantastic essay by Oliver Reichenstein</a>:</p>\n<blockquote>\n<p>This post is not about the technical quality of the logo. I am not writing about brand design, but about brand management. This is about a simple rule: Brand design follows brand management, not the other way around.</p>\n<p>One could argue that we can’t say if this is bad brand management. Unless we know what the brand ambition, the brand architecture, and the brand strategy is, we ought to have no opinion. Maybe the logo does exactly what it is supposed to do. Because really, it doesn’t matter whether it looks pretty, or whether someone likes or dislikes the purple or the scallops. The Coca-Cola logo was not designed by a professional designer, it is typographically hideous, but that doesn’t matter. Brand identity is not about visual refinement or aesthetics. It can be purposely ugly, like the London Olympics logo. What is important is that it is done seriously.</p>\n</blockquote>\n<p>(By the way, I'm still amazed by the quality of the iA website, and especially the blog. Typography, details, everything. It's wonderful.)</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-09-11T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/09/microsoft-out/",
      "url": "https://matthieuoger.com/2013/09/microsoft-out/",
      "title": "Microsoft Out",
      "content_html": "<p><a href=\"http://fishbowl.pastiche.org/2013/08/26/bundled_out/\">Great article by Charles Miller about Microsoft fall</a>:</p>\n<blockquote>\n<p>Microsoft did not make its mark as a builder of great things, but as a very successful bundler of good-enough things. […]</p>\n<p>Eventually by the mid-90s an argument could be made that Microsoft was making the best PC software in its class. Not because it had suddenly found the ability to develop cool, innovative products, but because everyone else was dead. […]</p>\n<p>Still, outside that monopoly, there is a clear distinction between Microsoft products that can trace their market dominance back to DOS, and those that can't. The former make money, the latter lose it.</p>\n</blockquote>\n<hr>\n<h2>Update <span class=\"more\">08 June 2018</span></h2>\n<p><a href=\"https://stratechery.com/2018/the-end-of-windows/\">It's</a> <a href=\"https://en.wikipedia.org/wiki/Satya_Nadella\">funny</a> <a href=\"https://blog.github.com/2018-06-04-github-microsoft/\">how</a> <a href=\"https://code.visualstudio.com/\">things</a> <a href=\"https://www.typescriptlang.org/\">change</a>…</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-09-09T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/08/nintendo-2ds/",
      "url": "https://matthieuoger.com/2013/08/nintendo-2ds/",
      "title": "Not for You",
      "content_html": "<p><a href=\"http://ignorethecode.net/blog/2013/08/29/nintendo/\">Lukas Mathis</a>:</p>\n<blockquote>\n<p>But the 2DS just isn’t made for people like me. That doesn’t mean it’s going to fail. That doesn’t mean it’s a bad product. It just means it’s not for me.</p>\n<p>And this, finally, brings all of this back to the topic of design. If you want to design a successful product, don’t design a product that’s only good for people like you, because most people aren’t like you.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-08-30T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/08/the-gif-video-format/",
      "url": "https://matthieuoger.com/2013/08/the-gif-video-format/",
      "title": "The Gif “Video Format”",
      "content_html": "<p><a href=\"http://pornel.net/beat-gif-manifesto\">HTML video still can't beat GIF</a>:</p>\n<blockquote>\n<p>Animated GIF, despite having awful compression and terrible quality, is still more useful on the web than any other video format.</p>\n<p>In 2013 people still routinely convert YouTube clips to GIF (producing postage-stamp-sized dithered-to-death desaturated blobs that use more bandwidth than a full HD video), because there's still no better way to share a short movie clip on the web.</p>\n</blockquote>\n<p>Gifs are an abomination: they are heavy and the quality is, most of the time, terrible. However, their convenience is too good that people use them nonetheless.</p>\n<p>The electrical cost of gifs must be gigantic.</p>\n<hr>\n<h2>Update <span class=\"more\">08 June 2018</span></h2>\n<p>There's <a href=\"https://calendar.perfplanet.com/2017/animated-gif-without-the-gif/\">hope</a>. In a near future, and in other browsers than Safari, we will be able to use a video as an image to <em>simulate a gif</em> (ie., silence and autoplay). With perks of a video instead of an awful low-quality and heavy gif.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-08-29T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/08/amazon-new-product-page/",
      "url": "https://matthieuoger.com/2013/08/amazon-new-product-page/",
      "title": "The Work of Change",
      "content_html": "<p><a href=\"http://bokardo.com/archives/a-thought-on-amazons-new-product-page-design/\">Interesting article on Bokardo</a> about Amazon's \"new\" product page:</p>\n<blockquote>\n<p>If Amazon were to make a big change, like for example do some actual visual design so everything didn’t have the same visual weight, the mere shock of the change would probably send their revenue downward, at least initially. People dislike change because change is work. They have to figure out what changed, adapt to it, relearn the UI, and still try to get their job done (they one they used to know how to do). <mark>So the next time you hear “People hate change” think to yourself “People don’t hate change. They hate the work of change”.</mark></p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-08-28T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/08/quote-trent-reznor/",
      "url": "https://matthieuoger.com/2013/08/quote-trent-reznor/",
      "title": "Paying for Things",
      "content_html": "<p><a href=\"http://www.spin.com/featured/trent-reznor-upward-spiral-nine-inch-nails-spin-cover-september-2013/\">Trent Reznor</a>:</p>\n<blockquote>\n<p>I'm not saying offering things for free or pay-what-you-can is wrong. I'm saying my personal feeling is that my album's not a dime. It's not a buck. I made it as well as I could, and it costs 10 bucks, or go fuck yourself.</p>\n</blockquote>\n<p>(via <a href=\"http://parislemon.com/post/59507355135/i-know-that-what-were-doing-flies-in-the-face-of\">ParisLemon</a>)</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-08-28T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/08/quote-jonathan-blow/",
      "url": "https://matthieuoger.com/2013/08/quote-jonathan-blow/",
      "title": "Ads Influence",
      "content_html": "<blockquote class=\"twitter-tweet\">\n<p>Advertising is effective <em>only</em> because so many people think “Ads don't influence me” and “Ads give me what I want for free”.</p>\n<p>— Jonathan Blow (<a href=\"https://twitter.com/Jonathan_Blow/status/372077731531350017\">@Jonathan_Blow</a>)</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-08-27T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/08/team-of-one/",
      "url": "https://matthieuoger.com/2013/08/team-of-one/",
      "title": "Team of One",
      "content_html": "<p><a href=\"https://myles.io/thoughts/theres-no-io-in-team\">There's no \"I/O\" in \"Team\"</a>:</p>\n<blockquote>\n<p>When you're a team of one, your I/O bandwidth is almost infinite. It's all in your brain, so you don't have to explain anything, write anything down, have meetings, draw on whiteboards, etc. Your available time to work collapses down to solving specific business problems with every line of code or web page update. Imagine a case where you never have to compromise, argue, make brain dead concessions or spend resources on proving your position. Assuming you are right, and have a good head for business, marketing and writing half-way decent code, you can solve a small problem very efficiently.</p>\n</blockquote>\n<p>Hard but hyper-efficient.</p>\n<p>We work <em>a bit</em> like that at <a href=\"https://pixelnest.io\">Pixelnest</a>. <a href=\"https://dmayance.com\">Damien</a> and me have a slightly different skill set, thus we can split the work almost equally. The advantage is that we can discuss together to avoid finishing in a dead end.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-08-19T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/08/transitional-interfaces/",
      "url": "https://matthieuoger.com/2013/08/transitional-interfaces/",
      "title": "Animations, Interactions, Transitions",
      "content_html": "<p><a href=\"https://medium.com/design-ux/926eb80d64e3\">Transitional Interfaces</a>:</p>\n<blockquote>\n<p>It seems crazy to me that more people don’t think about interfaces with respect to the dimension of time. Motion can provide so much information! Maybe the tools to create prototypes are too complicated for most designers?</p>\n</blockquote>\n<p>This is something I always speak about: an interface without motion is nothing. There is no context, no link between different objects.</p>\n<p>Windows Phone did a great job to this regard. For example, if you tap a tile on the homescreen, the rest of them move outside the screen before the one you pushed. The system has clearly been created around that, to respond to inputs and act on them.</p>\n<p>Motion is clearly a thing that designers tend to forget. Even if an interface is beautiful, it will look dull if nothing reacts to you. The \"<em>flat</em>\" design movement will exacerbate this. iOS 7 has made depth and context keys citizens of its new UX paradigm.</p>\n<p>Tools to simplify this process are now crucial.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-08-14T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/08/marketers/",
      "url": "https://matthieuoger.com/2013/08/marketers/",
      "title": "Marketers",
      "content_html": "<p>“<a href=\"http://www.elezea.com/2013/07/hey-marketers/\">Hey Marketers, making a website is not about you</a>”:</p>\n<blockquote>\n<p>The problem with many Marketers today is that they too often make it all about the company, and not about user needs. I’m sorry, but it’s not about changing people, and it’s not about making them do stuff. That’s old school thinking from a time when brands could steamroll their way into the consciousness and wallets of people through clever advertising and sleight of hand. Those days are over. Now our job is not to make it about how awesome we are, <mark>but how well we help people accomplish their goals</mark>.</p>\n</blockquote>\n<p>Further readings related to this subject:</p>\n<ul>\n<li><a href=\"http://www.90percentofeverything.com/2013/07/23/the-slippery-slope/\">The Slippery Slope</a></li>\n<li><a href=\"http://seriouspony.com/blog/2013/7/24/your-app-makes-me-fat\">Your App Makes Me Fat</a></li>\n</ul>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-08-13T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/08/zero/",
      "url": "https://matthieuoger.com/2013/08/zero/",
      "title": "Zero",
      "content_html": "<p><a href=\"http://zachholman.com/posts/inbox-zero-everything-zero\">Zach Holman</a>:</p>\n<blockquote>\n<p>Everyone works differently. The trick is finding out how you work best. For me, I tend to take an OCD approach to emptying things. I keep a clean desktop: under three icons at a time, preferably. It made sense to use my desktop as a kind of bucket I needed to empty: it's always there, and I can put short, actionable items there because that visually disturbs me enough to want to clean it off (and do the action).</p>\n<p>This is why Inbox Zero works so well for handling email for me. I try to use that mentality everywhere, really: iOS notifications, browser tabs, terminal tabs, and so on. Reducing ambiguity around what to do next is a huge deal for me.</p>\n</blockquote>\n<p>I have a similar mindset. I hate having stuffs in front of me:</p>\n<ul>\n<li>I close any app I don't use now</li>\n<li>I keep my tabs at a minimum</li>\n<li>I empty my mail inbox as much as I can</li>\n<li>I prune my RSS and Twitter feeds</li>\n<li>I clean my OS desktop</li>\n</ul>\n<p>A sort of minimalism? Probably.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-08-09T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/08/future-programming/",
      "url": "https://matthieuoger.com/2013/08/future-programming/",
      "title": "The Future of Programming",
      "content_html": "<p>I finally watched the latest Brett Victor's conference: <a href=\"https://vimeo.com/71278954\">The Future Of Programming</a>. I highly recommend to check everything he has done. You will not loose your time.</p>\n<p>One of the moments I liked the best is when Brett Victor is talking about smalltalk and its browser view. This idea, that is fairly old now, reminds me of some initiatives like <a href=\"http://brackets.io/\">Brackets</a> or <a href=\"http://www.lighttable.com/\">Light Table</a>. These editors are still using text files to manage code, but they add inline code browsing or live feedback, amongst others. It is funny to see that we had to wait 40 years to see that happens.</p>\n<p>Which reminds me of the conclusion of Brett Victor: <strong>you have to realize that you do not know what you are doing in order to find new way of doing things</strong>.</p>\n<p>In the programming field, we have improved our tools, but globally, we are still doing the same thing: coding with text files. <em>That's sad</em>.</p>\n<h2>A brief aside</h2>\n<p>A theme that comes in almost all the Brett Victor's talks is live feedback. Just watch <a href=\"https://vimeo.com/36579366\">Inventing on Principle</a>.</p>\n<p>I have used Interface Builder a lot recently — a software to create interface for iOS apps —, and even if this tool is one of the best of its kind (I look at you Android, with your stupid XML UI files), it is not a good one for all that.</p>\n<p>It gives me a partial representation of my interface: I cannot do everything with it. I cannot see animations. I cannot see particles. I cannot test the physic (and physic is clearly one of the key points of the new iOS 7 interface). I loose a lot of time checking that what I have done in code and Interface Builder are really what I want. It is tedious. It is slow.</p>\n<p>We need better tools to create UI — we need <strong>feedback and interactivity</strong> directly within the creative process.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-08-06T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/08/os-wp-winrt/",
      "url": "https://matthieuoger.com/2013/08/os-wp-winrt/",
      "title": "Windows Phone and WinRT",
      "content_html": "<p>From <a href=\"http://winsupersite.com/windows-phone/windows-phone-or-windows-rt\">Windows Phone or Windows RT?</a>:</p>\n<blockquote>\n<p>Microsoft already has a mobile platform with a thriving ecosystem. It’s called Windows Phone, and I think it makes a far better choice for general purpose tablets than does Windows RT.</p>\n</blockquote>\n<p>I used to have a Nokia Windows Phone, that I loved. The experience was pretty good, except for the lack of apps.<sup id=\"fnref-1\"><a href=\"#fn-1\" class=\"footnote-ref\">1</a></sup></p>\n<p>I created some Windows Phone 7 applications (notably <a href=\"https://dmayance.com/culturez-vous/\">Culturez-Vous</a> with Damien Mayance). I also developed a WinRT library for my daily work then — before Pixelnest.</p>\n<p>I had a Windows 8 and a WinRT device (Surface) at my workplace these days, and it was horrible. The experience was bad — the OS was a schizophrenic beast, always switching between the classic desktop and the Metro environment, with no apps. It was slow, unrefined, confusing. <a href=\"http://cl.ly/image/102N3O3C0k3z1c0g0u3g\">The font rendering was horrid</a>.</p>\n<p>When the announcement of WinRT became public, I wondered why Microsoft did not leverage its Windows Phone OS, instead of starting from scratch with Windows 8. A tablet with Windows Phone would have been far better than a tablet with the fail that is WinRT/Windows 8.</p>\n<div class=\"footnotes\">\n<hr>\n<ol>\n<li id=\"fn-1\">\n<p>To be fair, however, even then I thought that iOS was a superior OS. But I like to try a new OS to discover what works and not, and to make my own opinion.<br><br>Windows Phone lacked some polish but was rock solid, especially when compared to Android. At least, the Lumia was a supercharged feature phone with a browser and a decent keyboard.</p>\n<a href=\"#fnref-1\" class=\"footnote-backref\">↩</a>\n</li>\n</ol>\n</div>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-08-05T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/08/quote-marco-arment/",
      "url": "https://matthieuoger.com/2013/08/quote-marco-arment/",
      "title": "New AOL CDs",
      "content_html": "<p><a href=\"http://www.marco.org/2013/07/25/nexus-72\">Marco Arment</a>:</p>\n<blockquote>\n<p>I offered to give my Nexus 7 and Kindle Fire to Betaworks in the Instapaper acquisition, but they had so many of both sitting around already that they declined. Tech companies with mobile apps can practically tile walls with outdated Android devices. They’re the new AOL CDs.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-08-05T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/08/life-too-short-ugly-graphs/",
      "url": "https://matthieuoger.com/2013/08/life-too-short-ugly-graphs/",
      "title": "Life Is Too Short To Stare at Ugly Graphs — and Yes, You Should Feel Bad",
      "content_html": "<p><a href=\"https://news.ycombinator.com/item?id=4480876\">Tanoku</a>:</p>\n<blockquote>\n<p>It was done in-house. We really care about how our graphs look, because graphs represent information. It's like typography. Humans learned how to write 5000 years ago, and it took us a very long while until we mastered the art of transmitting information like that. Once we mastered it, however, we started caring about the way we present that information. For no specific reason, but we developed unique typefaces that look beautiful, different, yet transmit the same information.</p>\n<p>Likewise, we've spent a ton of valuable time graphing and mining data from all over our stack; it's only natural that after that, we care about how we present that data. Like typography, it's hard because it's an arduous hunt for the aesthetics hidden behind information. But this hunt is what makes us human.</p>\n<p>That's why we design beautiful graphs, just like we'd design a beautiful typeface. Not because we are GitHubbers, nor because we are designers, but because we are humans.</p>\n<p><mark>Life is too short to stare at ugly graphs. And yes, you should feel bad.</mark></p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-08-02T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/08/quote-changing-the-world/",
      "url": "https://matthieuoger.com/2013/08/quote-changing-the-world/",
      "title": "Changing the World…?",
      "content_html": "<p><a href=\"https://news.ycombinator.com/item?id=6108967\">Freyr</a>:</p>\n<blockquote>\n<p>Could \"changing the world\" be a contender the most trite, overused expression of 2013? Recent grads seem to have adopted it en masse as their personal tagline. It's a nice sentiment, but it hard not to roll your eyes when every 23 year old applies it to his mobile phone app with no users that he threw together in a couple weeks.</p>\n<p>[…]</p>\n<p>Besides, I'm not even sure it's a healthy sentiment for most people. If your focus is as broad as \"changing the world,\" you're probably setting yourself up to feel like a failure.</p>\n</blockquote>\n<p>(via <a href=\"http://wolfslittlestore.be/2013/08/changing-the-world/\">Wolf's Little Store</a>)</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-08-02T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/07/designer-decision/",
      "url": "https://matthieuoger.com/2013/07/designer-decision/",
      "title": "Designer's Decision",
      "content_html": "<p><a href=\"https://benhowdle.im/options-are-the-devil.html\">Ben Howdle, in “Options Are The Devil”</a>:</p>\n<blockquote>\n<p>It’s kind of like going, “Well, erm, I dunno, this is a tricky UI/UX decision, oh hell, we’ll let the user decide.” Passing the buck to the user to make the UX decision for you? Sounds worse when it’s put like that, huh?</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-07-25T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/07/rule-three/",
      "url": "https://matthieuoger.com/2013/07/rule-three/",
      "title": "The Rule of Three",
      "content_html": "<p><a href=\"http://www.codinghorror.com/blog/2013/07/rule-of-three.html\">Jeff Atwood</a>:</p>\n<blockquote>\n<p>If I have learned anything in my programming career, it is this: building reusable software, <em>truly</em> reusable software, is an incredibly hard problem – right up there with <a href=\"http://martinfowler.com/bliki/TwoHardThings.html\">naming things and cache invalidation</a>.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-07-24T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/07/current-days-science-fiction/",
      "url": "https://matthieuoger.com/2013/07/current-days-science-fiction/",
      "title": "Current Days Science Fiction",
      "content_html": "<p><a href=\"http://verynicewebsite.net/2013/07/a-planet-where-apes-evolved-from-man/\">John Moltz</a>:</p>\n<blockquote>\n<p>Microsoft struggles to get developers on its platforms with apps coming late or not at all, developers ship for Apple first and foremost and the platform with the most market share is, ostensibly, open-source.</p>\n<p>You couldn’t have written this as science fiction in 1997. No one would have believed it.</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-07-23T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/07/quote-brent-simmons/",
      "url": "https://matthieuoger.com/2013/07/quote-brent-simmons/",
      "title": "Efficiency Is Superior UX",
      "content_html": "<p><a href=\"http://inessential.com/2013/07/01/netnewswire_and_syncing_speculation\">Brent Simmons</a>:</p>\n<blockquote>\n<p>Efficiency is more important than cloning Google Reader’s (undocumented and un-lovely) API and more important than adhering strictly to REST. (<mark>Because efficiency makes for a better user experience, and that’s more important than anything else.</mark>)</p>\n</blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-07-02T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/07/firefox-os/",
      "url": "https://matthieuoger.com/2013/07/firefox-os/",
      "title": "Firefox OS",
      "content_html": "<p>Mozilla and Telefónica have announced a phone running Firefox OS this morning - the ZTE Open. It will cost $69.</p>\n<p>Mozilla, as usual, promotes the open nature of its OS along with the fact that it is powered by web technologies:</p>\n<blockquote class=\"twitter-tweet\"><p><a href=\"https://twitter.com/search?q=%23FirefoxOS&amp;src=hash\">#FirefoxOS</a> arrives this month in select markets! Celebrate the 1st smartphone powered completely by Web technologies! <a href=\"http://t.co/Mio0f4zctj\">http://t.co/Mio0f4zctj</a></p>&mdash; Firefox (@firefox) <a href=\"https://twitter.com/firefox/statuses/351641840728023040\">July 1, 2013</a></blockquote>\n<p>I honestly don't get it:</p>\n<ul>\n<li>As a user, why should I care that my phone is using web technologies? What is the benefit for <strong>me</strong>?</li>\n<li>This is the main argument that I have heard about FirefoxOS. Not that it is fast, features-rich or with a huge ecosystem. Just that the OS was built with web technologies. Once again, why should I care ? It's a technical detail, not something that has any value for a consumer.</li>\n<li>Firefox means a slow and heavy browser. The phone costs $69, which will probably result in a crappy hardware. The web (HTML, CSS and JavaScript) is a nice environment, a really powerful one to create websites, but it is <em>slow</em>. I want my phone to run quickly and smoothly. I want it to scroll at 60 fps. This phone (Firefox + crappy hardware + web) sounds <em>not</em> like a good deal.</li>\n</ul>\n<p>I would like to be wrong, but I don't expect much and I don't see the value of Firefox OS, especially against its main competitor — Android. There are Android phones that are cheaper AND with Google Play.</p>\n<p>I agree with <a href=\"http://ben-evans.com/\">Benedict Evans</a>:</p>\n<blockquote class=\"twitter-tweet\"><p>When I hear people say how great Firefox OS is, they talk about operators, OEMs, litigation... and sometimes remember to mention users</p>&mdash; Benedict Evans (@BenedictEvans) <a href=\"https://twitter.com/BenedictEvans/statuses/351646258856857600\">July 1, 2013</a></blockquote>\n<p>And:</p>\n<blockquote class=\"twitter-tweet\"><p>Everyone agrees that the web is the future and apps are a dead end. The only people who disagree are the actual, you know, users.</p>&mdash; Benedict Evans (@BenedictEvans) <a href=\"https://twitter.com/BenedictEvans/statuses/351646755818975232\">July 1, 2013</a></blockquote>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-07-01T00:00:00.000Z"
    },
    {
      "id": "https://matthieuoger.com/2013/06/a-start/",
      "url": "https://matthieuoger.com/2013/06/a-start/",
      "title": "A Start",
      "content_html": "<p>For years, I was eager to create my own writing \"platform\".</p>\n<p>So, I guess it starts now.</p>",
      "author": {
        "name": "Matthieu Oger",
        "url": "https://matthieuoger.com"
      },
      "date_published": "2013-06-26T00:00:00.000Z"
    }
  ]
}