<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
        <title><![CDATA[Mikkel Malmberg: Everything]]></title>
        <description><![CDATA[All posts, notes, and issues]]></description>
        <link>https://mikkelmalmberg.com</link>
        <generator>RSS for Node</generator>
        <lastBuildDate>Wed, 11 Mar 2026 06:14:39 GMT</lastBuildDate>
        <atom:link href="https://mikkelmalmberg.com/feeds/all.xml" rel="self" type="application/rss+xml"/>
        <pubDate>Wed, 11 Mar 2026 06:14:38 GMT</pubDate>
        <language><![CDATA[en]]></language>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>The other day I used agents to convert a dollar field to a cents field. I’ve wanted to for a literal decade. But this is dangerous territory. You don’t want to 100x your users’ bills.</p>
<p>Using agents I felt safer than I ever would without.</p>
<p>Agents…</p>
<ol>
<li>Investigated the necessary changes and their consequences</li>
<li>Confirmed that this would generally be a good idea – to standardize and to remove the risk if hitting <em>float math</em> troubles.</li>
<li>Made the necessary changes to code and unit tests.</li>
<li>Wrote the data and schema migrations.</li>
<li>Did manual testing in Chrome.</li>
<li>Watched the deploy.</li>
<li>Ran spot and full diagnostic checks on db backups of before/after to verify.</li>
</ol>
<p>Not only can I work faster, I can also be extra thorough, be my best developer self.</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01KERZBHEW7C9A66ZDFXFATDV5</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01KERZBHEW7C9A66ZDFXFATDV5</guid>
            <pubDate>Mon, 12 Jan 2026 12:27:12 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[The best time ever for juniors]]></title>
            <description><![CDATA[<p>What if AI is <em>the best thing ever</em> to happen to junior devs?</p>
<p>When I was coming up what held me back was not knowing and having to find the right apis, googling for errors, wasting time on the wrong abstractions, missing blind spots. All of this can be done at 10x the speed with AI now.</p>
<p>To be useful (ie. get a job) practice unblocking yourself. Be like an AI agent++. The further you can go without needing help or guidance the more useful you are. Has to be in the right direction of course or close to. So also practice business sense, actually listening to your lead, understanding the company direction, dabble in design, SEO, marketing. Just enough of everything and don’t tell yourself anything is “not for you”.</p>
<p>You can be more than twice the speed of an anti-AI-maxxing senior dev at a fraction of the price. That’s a great bargain.</p>
<p>Maybe it’s the best time ever to be a junior?</p>
]]></description>
            <link>https://mikkelmalmberg.com/2025/2025-12-19</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2025/2025-12-19</guid>
            <pubDate>Fri, 19 Dec 2025 14:40:55 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>I wish I could justify using only <a href="https://ampcode.com" class="external-link">Amp</a>. With Opus 4.5 it is incredible.</p>
<p>I have it set to buy tokens for the same price as a Codex/Claude subscription every month but it only lasts a fraction of that 😭</p>
<p>Sponsorship deal if I put your logo on my wedding suit maybe?</p>
<p>Sadly I married before I knew we had options like that.</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01KCA41798QSD07BZTHNF3K9FN</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01KCA41798QSD07BZTHNF3K9FN</guid>
            <pubDate>Fri, 12 Dec 2025 21:28:57 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Post]]></title>
            <description><![CDATA[<blockquote class="twitter-tweet">
  <p><a href="https://x.com/dannypostma/status/1994959643735724241">View on X</a></p>
</blockquote>
<p>My mind is also starting to shift towards this.</p>
<p>Both because of increased belief in human ingenuity and because of decreased belief in human ability to downgrade comfort expectations.</p>
<p>Degradable plastic, lab meat, carbon removal tech. It’ll work out. I hope it will. It has to.</p>
]]></description>
            <link>https://x.com/dannypostma/status/1994959643735724241</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/links/2025-11-30-2025-11-30</guid>
            <pubDate>Sun, 30 Nov 2025 10:05:47 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>Started a thing 5 years ago. Spent a few days, realized the scope made it unrealistic, walked away.</p>
<p>Coding agents have made it feel within reach.</p>
<p>In the evenings, on the side, I am making 𝐩𝐫𝐨𝐠𝐫𝐞𝐬𝐬.</p>
<figure><img src="/attachments/CleanShot%202025-11-27%20at%2023.06.53@2x.png" alt="journey to hell"></figure>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01KB3PGTVCGPH9XE2BHW3KYT26</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01KB3PGTVCGPH9XE2BHW3KYT26</guid>
            <pubDate>Thu, 27 Nov 2025 23:21:40 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>I bet you didn’t consider the wurst case</p>
<figure><img src="/attachments/Pasted%20image%2020251127105321.png" alt="wurst-case.jpg"></figure>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01KB2BP698MY4C5DFK77NXC251</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01KB2BP698MY4C5DFK77NXC251</guid>
            <pubDate>Thu, 27 Nov 2025 10:53:07 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>The <em>only</em> bad thing about <a href="https://www.sketch.com" class="external-link">Sketch</a> is how impossible it is to google for shit and not hit tons of generic “sketch” stuff.</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01KB08EN2PXA2GRRP7H6QHEM8D</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01KB08EN2PXA2GRRP7H6QHEM8D</guid>
            <pubDate>Wed, 26 Nov 2025 15:18:05 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<figure><img src="/attachments/Frame.png" alt="Frame"></figure>
<p>New Aerospace 0.20 can print the current window’s layout mode. Means we can add icons to Sketchybar.</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01KAXNSZ8QQ57JGTYQMKZDHE27</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01KAXNSZ8QQ57JGTYQMKZDHE27</guid>
            <pubDate>Tue, 25 Nov 2025 15:13:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>I wonder if, in this new agentic coding world, the old <em>we can’t justify both iOS and Android apps</em> is obsolete? What if you now make the one you prefer first, but faster with AI, then when demand is there, make the <em>agent of the moment</em> clone it to the other platform – or maybe 85% there – and you just bring home the details?</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01KAV34MP41H5TE827BHA3GP2N</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01KAV34MP41H5TE827BHA3GP2N</guid>
            <pubDate>Mon, 24 Nov 2025 15:09:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[I’m Building an Algorithm That Doesn’t Rot Your Brain]]></title>
            <description><![CDATA[<div class="embed embed-youtube">
  <div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:640px;margin:0 auto;">
    <iframe
      src="https://www.youtube.com/embed/EO14wPQw89c"
      title="YouTube video player"
      allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
      style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
      allowfullscreen
    ></iframe>
  </div>
  <p><a href="https://www.youtube.com/watch?v=EO14wPQw89c">Watch on YouTube</a></p>
</div>
<blockquote>
<p>They call these feeds “For You” but it’s not for you. It’s <em>for them</em>.</p>
</blockquote>
<p>Powerful stuff as always from Jack Conte, CEO of Patreon.</p>
<p>Some open questions of course – like, how would Patreon try and filter stuff if it had as much as say X or YouTube?</p>
<p>Also, ads are actually kind of great for funding internet distributed digital <em>stuff</em>.</p>
<p>They aren’t <em>the enemy</em>, they’re just ads.</p>
<p>The reality is that creators want as many eyeballs and earholes as possible. And only so many want to - or are able to - pay. Bless their hearts, they’re the best. But because of the scaling of digital media, you don’t <em>actually need</em> everyone to pay.</p>
<p>My take is Patreon (and my own 10er!) are super important, wonderful services that work great on their own or alongside the ad-bound platforms.</p>
]]></description>
            <link>https://www.youtube.com/watch?v=EO14wPQw89c</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/links/2025-11-24-2025-11-24</guid>
            <pubDate>Mon, 24 Nov 2025 12:08:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>Planning and finishing the project becomes the biggest task.
You wrote 100,000 lines of whatever? Done in an afternoon.</p>
<p>You came up with an original idea, carefully managed scope, beat edge cases and presented it with a clear description in a tidy package?</p>
<p>How did you do that?!</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01KA8KMCP6S3DSEZVZRQ1T71ZS</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01KA8KMCP6S3DSEZVZRQ1T71ZS</guid>
            <pubDate>Mon, 17 Nov 2025 10:51:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[AI just broke Trackmania's greatest record]]></title>
            <description><![CDATA[<div class="embed embed-youtube">
  <div style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;max-width:640px;margin:0 auto;">
    <iframe
      src="https://www.youtube.com/embed/zFLQU70QstY"
      title="YouTube video player"
      allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
      style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;"
      allowfullscreen
    ></iframe>
  </div>
  <p><a href="https://youtube.com/watch?v=zFLQU70QstY">Watch on YouTube</a></p>
</div>
<p>Incredible video on Reinforcement Learning.</p>
<ul>
<li>AI is a tool. Best results come from Human <em>plus</em> AI (still).</li>
<li>Games make great visualizations of RL improvement.</li>
<li>Humans are incredible.</li>
</ul>
]]></description>
            <link>https://youtube.com/watch?v=zFLQU70QstY</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/links/2025-11-12-2025-11-12</guid>
            <pubDate>Wed, 12 Nov 2025 11:06:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>Maybe if I get an MCP that’ll tell me to drop it: it’s marketing week</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01K9B0PTV4VJCEM6RMTGG5N0ER</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01K9B0PTV4VJCEM6RMTGG5N0ER</guid>
            <pubDate>Wed, 05 Nov 2025 23:03:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>🔥 Agent quick tip: Review changes in vim.</p>
<ol>
<li>Pipe your <code>git diff</code> into vim with <code>vimreview</code>.</li>
<li>Add your review comments in the comfort of your favorite editor as basic # comments.</li>
<li><code>:wq</code> and paste into your agent session.</li>
</ol>
<p>Get it:</p>
<pre><code class="hljs language-sh">$ brew install moreutils
</code></pre>
<p><code>~/.zshrc</code>:</p>
<pre><code class="hljs language-zsh"><span class="hljs-function"><span class="hljs-title">vimreview</span></span>() {
  {
    <span class="hljs-built_in">echo</span> <span class="hljs-string">&quot;# [NOTE]\n# DIFF REVIEW:\n# The following is our current changes as a git diff with my comments added. Comments are denoted by a leading #\n# Please review and discuss or process my comments.\n# [/NOTE]\n&quot;</span>; \
    git diff
  } | \
  vipe --suffix diff | \
  pbcopy
}
</code></pre>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01K99RQABAK68TRAJPGG14B9W9</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01K99RQABAK68TRAJPGG14B9W9</guid>
            <pubDate>Wed, 05 Nov 2025 11:56:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>🔥 Agent quick tip: Make an agent summarize a change from the outside in so the diff tells a story.</p>
<p>Large diffs can be hard to understand when they’re just presented from top to bottom, alphabetically by filename. If you know the big picture, it’s easier to understand the parts.</p>
<p><a href="https://ampcode.com" class="external-link">Amp</a>’s <code>-x</code> param is great for this.<br>
Pipe it to <a href="https://github.com/charmbracelet/glow" class="external-link"><code>glow</code></a> for pretty terminal markdown tui.</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01K8QNDZBTKR3PDXE2CWAVAWZQ</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01K8QNDZBTKR3PDXE2CWAVAWZQ</guid>
            <pubDate>Wed, 29 Oct 2025 10:40:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>After using iPhone minis for 4-5 years, the battery in this new phone feels infinite.</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01K8NBYPGKRVS01Y367FBX9QCQ</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01K8NBYPGKRVS01Y367FBX9QCQ</guid>
            <pubDate>Tue, 28 Oct 2025 13:16:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>Petition to change the spelling of <code>default</code> to <code>deafult</code> (because my fingers will not learn)</p>
<p>Sign here<br>
​____________________________________________</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01K8AXPV0QD0PQ96CYR2AAK6FJ</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01K8AXPV0QD0PQ96CYR2AAK6FJ</guid>
            <pubDate>Fri, 24 Oct 2025 12:55:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>Remember how much time we spent googling just a year or two ago and now we can just type “make my tmux.conf support italic and squiggly underlines” and it works</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01K8AQ3SJJB968J9CSBGTKQXDC</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01K8AQ3SJJB968J9CSBGTKQXDC</guid>
            <pubDate>Fri, 24 Oct 2025 10:59:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Beyond the Machine by Frank Chimero]]></title>
            <description><![CDATA[<figure><img src="/attachments/beyond-the-machine-final.104.jpg" alt="beyond-the-machine-final.104"></figure>
<blockquote>
<p>I’m trying to figure out how to use generative AI as a designer without feeling like shit. I am fascinated with what it can do, impressed and repulsed by what it makes, and distrustful of its owners. I am deeply ambivalent about it all. The believers demand devotion, the critics demand abstinence, and to see AI as just another technology is to be a heretic twice over.</p>
<p>Today, I’d like to try to open things up a bit. I want to frame the technology more like an instrument, and get away from GenAI as an intelligence, an ideology, a tool, a crutch, or a weapon. I find the <em>instrument</em> framing more appealing as a person who has spent decades honing a set of skills. I want a way of working that relies on my capabilities and discernment rather than something so amorphous and transient as taste. (If taste exists in technology, it needs to be smuggled in.)</p>
</blockquote>
<p>Frank Chimero just dropped the first essay I read top-to-bottom in what feels like years.</p>
<p>Really good shit about how to feel, as an artist, a creator, about “AI”.</p>
<blockquote>
<p>I wouldn’t want an irregular AI in my bank app, but in a creative workflow, hallucinating feels like the point of it all.</p>
</blockquote>
]]></description>
            <link>https://frankchimero.com/blog/2025/beyond-the-machine/</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/links/2025-10-22-2025-10-22-beyond-the-machine-by-frank-chimero</guid>
            <pubDate>Wed, 22 Oct 2025 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Secondhand AI considered offensive]]></title>
            <description><![CDATA[<p>I’m seeing a trend: Some poor, misguided person passes on an AI generated answer without adding any direct <em>human effort.</em></p>
<p>The intention is to be helpful, but we all have access to the same tools, more or less, so merely passing on a slopjob isn’t helpful. It’s disrespectful.</p>
<p>Passing on AI content without judgment signals both:</p>
<ol>
<li>I think this issue/problem/feature is simple enough that it can be done just by asking a perpetual internet machine, and…</li>
<li>I don’t think you were smart enough to consider asking AI for guidance on your own.</li>
</ol>
<p>The same wall of text, human written, would at least show some real effort in understanding the whole problem. Even if misguided, it is a genuine sign that someone spent time on understanding and formulating a well-structured, researched answer. <em>Proof of work</em>, one might say.</p>
<blockquote>
<p>[Requiring AI use disclosure] is to help maintainers assess how much attention to give a PR. While we aren’t obligated to in any way, I try to assist inexperienced contributors and coach them to the finish line, because getting a PR accepted is an achievement to be proud of. But if it’s just an AI on the other side, I don’t need to put in this effort, and it’s rude to trick me into doing so.</p>
</blockquote>
<p><a href="https://github.com/ghostty-org/ghostty/pull/8289" class="external-link">@mitchellh requiring disclosure for AI assisted PRs to Ghostty</a>.</p>
<blockquote>
<p>Copy/pasting code into an AI chat platform then copy/pasting the response to this issue thread is, in my opinion, not at all helpful. […] If you provide some professional insight based on your own experience and experimentation in addition to hitting Ctrl+C/Ctrl+V, that may in fact be useful, but otherwise I would refrain from doing that again on GitHub.</p>
</blockquote>
<p><a href="https://github.com/foostan/crkbd/issues/265#issuecomment-3006695226" class="external-link">@viscount-monty providing responding to a user throwing a complex engineering to ChatGPT then blindly commenting the answer</a>.</p>
<blockquote>
<p>“Please, just stop sending me AI videos of Dad [late comedian Robin Williams] ,” Zelda wrote. “Stop believing I wanna see it or that I’ll understand, I don’t and I won’t. […] It’s dumb, it’s a waste of time and energy, and believe me, it’s NOT what he’d want. […] To watch the legacies of real people be condensed down to ‘this vaguely looks and sounds like them so that’s enough’, just so other people can churn out horrible TikTok slop puppeteering them is maddening,” she continued. “You’re not making art, you’re making disgusting, over-processed hotdogs out of the lives of human beings, out of the history of art and music, and then shoving them down someone else’s throat hoping they’ll give you a little thumbs up and like it. Gross.”</p>
</blockquote>
<p><a href="https://variety.com/2025/film/news/robin-williams-daughter-ai-recreations-gross-1236541633/" class="external-link">Zelda Williams on people sending her AI clips of her dad, the late Robin Williams</a>. If she wanted those, she could make them herself.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2025/2025-10-08-secondhand-ai-considered-offensive</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2025/2025-10-08-secondhand-ai-considered-offensive</guid>
            <pubDate>Wed, 08 Oct 2025 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[What to include when agentic coding]]></title>
            <description><![CDATA[<p>First, start with <a href="https://mikkelmalmberg.com/2025/prompt-for-behaviour" class="external-link">prompting for behaviour</a>.</p>
<p>Second, what else to include?</p>
<ol>
<li><em>Strong preferences</em> for the task at hand:
<ul>
<li>Say <code>use shadcn/ui for the dialog</code></li>
<li>Or <code>state must go through the central store</code></li>
<li>Or <code>use plain sql for complex queries</code></li>
<li>Or <code>don't add any db fields</code></li>
<li>Or <code>this should be a db field</code></li>
</ul>
</li>
<li><em>Hunches</em> and make it sound like they are:
<ul>
<li>Like, <code>I think this has to do with xyz</code></li>
<li>Or <code>I'm sure there's prior knowledge of this</code></li>
<li>Or <code>do we already have a version of this? Investigate</code></li>
<li>Or <code>we should probably add an integration test for this? Wdyt?</code></li>
<li>Or <code>can we abstract and reuse the comments code in Post.rb? Wdyt?</code></li>
</ul>
</li>
<li><em>Questions</em>
<ul>
<li>Ask <code>eli5 how we handle publishing posts</code></li>
<li>Or <code>summarize the admin auth</code></li>
<li>Or <code>review @docs/add-comments.md. Focus on simplification and removing complexity</code></li>
<li>Or <code>can we skip the middle step here or would that be worse for users?</code></li>
</ul>
</li>
</ol>
<p>We used to discover the details as we went along with the implementation. For agentic coding you want to speed-run this, assisted by the agent, <em>before</em> you let it rip.</p>
<blockquote>
<p>Give me six hours to chop down a tree and I will spend the first four sharpening the axe.</p>
</blockquote>
<p>– Abraham Lincoln<br>
  – Mikkel Malmberg</p>
]]></description>
            <link>https://mikkelmalmberg.com/2025/2025-10-02-what-to-include-when-agentic-coding</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2025/2025-10-02-what-to-include-when-agentic-coding</guid>
            <pubDate>Thu, 02 Oct 2025 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>Just throwing it out there that “we” absolutely do not “need to go on the offense” against Codes of Conduct nor main branches.</p>
<p>“We” should show by example that it’s possible to exist in a culture that can hold disagreement without turning into a poop throwing match.</p>
<p>Someone has a feeling towards branch naming? You, the maintainer, decides whether you want to change anything. Listen, then make a decision. Neither decision makes anyone a fascist or communist or anime avatar.</p>
<p>A project uses a term you don’t like? You, the user, can suggest using a different term. Be civil and provide short, to the point arguments. It is now up to the maintainer what they will do with this request. Neither decision makes anyone a fascist or communist or demon.</p>
<p>Attacking or ridiculing the other party for their decision or request does not make you look cool. “Going on the offense” does not make you look cool. Staying calm and collected and true to yourself looks cool.</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01K6GK5RPRGQ02ADT5XBZ7YRXJ</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01K6GK5RPRGQ02ADT5XBZ7YRXJ</guid>
            <pubDate>Wed, 01 Oct 2025 21:14:50 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Prompt for behaviour]]></title>
            <description><![CDATA[<p>Here’s a tip for your agentic coding:</p>
<p><strong>Don’t prompt for the thing you want, prompt for behaviour.</strong></p>
<p>Say you need to <code>add authentication</code>. So many details are missing: What kind of auth? How strict? What does it look like? Where does it lead to? Where does it end?</p>
<p>The agent needs <em>context</em>. It has <em>some</em>, can figure out <em>some more</em>. But you, the builder, have most if not all of it. Plus your preferences. Plus your intuition. What needs to happen is telepathic transfer from you to the agent.</p>
<p>The agent is so eager to start working. It is trained for action. Like a junior dev refactoring billing on their first day, it will gladly run amok before you can even type <em>design doc</em>.</p>
<p>So be deliberate about how you want it to act.</p>
<p>You don’t have to spend a day writing a perfect <em>spec</em>. Use the agent’s eagerness to your advantage. Let it do the typing. Instead, short prompts for behaviour:</p>
<ul>
<li>Say, <code>plan authentication with me</code>.</li>
<li>And <code>ask me questions to align</code>.</li>
<li>And <code>investigate best practices for oauth</code>.</li>
<li>And <code>discuss the pros/cons of magic links</code>.</li>
<li>Say <code>write our plan to an .md file in docs/</code></li>
</ul>
<p>Then, <em>finally</em>, when the context is primed like a stretched bow and arrow: <code>implement @docs/auth-plan.md</code>.</p>
<p>This makes sure the agent doesn’t run like a mad man, 100 km/hour in the wrong direction.</p>
<p>You may not know what the final result should look like. You might not know which details to include. But your intuition does. So help the agent help you both first, then let it run like the wind.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2025/2025-09-30-prompt-for-behaviour</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2025/2025-09-30-prompt-for-behaviour</guid>
            <pubDate>Tue, 30 Sep 2025 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>Whatever you think a coding agent “can’t do”, 99% chance it’s a skill issue.</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01K5R7K0D0V7PZ3S852503CMFM</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01K5R7K0D0V7PZ3S852503CMFM</guid>
            <pubDate>Mon, 22 Sep 2025 08:13:13 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>friends I have completed codex. It’s done
<img src="/attachments/G1PapMabQAAput5.jpeg" alt="G1PapMabQAAput5"></p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01K5R7FRBGV4H9D61FB53JNYVR</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01K5R7FRBGV4H9D61FB53JNYVR</guid>
            <pubDate>Fri, 19 Sep 2025 23:08:48 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>it’s 2025</p>
<p>twitter is dead but more alive than ever</p>
<p>girls are riding robot horses</p>
<p>the heroes on the tl are zuck failing a demo and dhh inventing linux</p>
<p>the villain is apple with too many border radii</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01K5R7E1369Y97VF8D1594HMZW</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01K5R7E1369Y97VF8D1594HMZW</guid>
            <pubDate>Fri, 19 Sep 2025 14:00:52 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>I feel bad for Zuck and the Meta developers for their demos failing so now the normies can ridicule them – but the builder in me only has respect for daring to do live demos like that. It’s easier to fix the bugs than a lack of courage. Onwards</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01K5E14MS20WYYJ1PP3VJNSB6Q</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01K5E14MS20WYYJ1PP3VJNSB6Q</guid>
            <pubDate>Thu, 18 Sep 2025 11:05:28 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Note]]></title>
            <description><![CDATA[<p>I’ve been feeling like blogging again. I think I will.</p>
]]></description>
            <link>https://mikkelmalmberg.com/notes/01JB0A5R2W7Z8X9Y0Z1Q2W3E4R</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/notes/01JB0A5R2W7Z8X9Y0Z1Q2W3E4R</guid>
            <pubDate>Tue, 19 Aug 2025 22:23:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Disable macOS' "Tile by dragging windows to screen edges" from the command line]]></title>
            <description><![CDATA[<pre><code class="hljs language-sh">defaults write com.apple.WindowManager EnableTilingByEdgeDrag -int 0;
</code></pre>
<p>To enable it again:</p>
<pre><code class="hljs language-sh">defaults write com.apple.WindowManager EnableTilingByEdgeDrag -int 1;
</code></pre>
]]></description>
            <link>https://mikkelmalmberg.com/2024/2024-11-06-disable-tile-by-dragging-windows-to-screen-edges</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2024/2024-11-06-disable-tile-by-dragging-windows-to-screen-edges</guid>
            <pubDate>Wed, 06 Nov 2024 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Accountability Buddies]]></title>
            <description><![CDATA[<p>Jeg skriver i dag, ikke fordi jeg havde planlagt det, og jeg gad egentlig godt bare spille Call of Duty lige nu, men <a href="https://twitter.com/petersuhm" class="external-link">Peter</a> sidder og venter på, jeg sender et screenshot af ordtælleren i <a href="https://ia.net/writer" class="external-link">iA Writer</a>.</p>
<p>Peter skriver hver dag minimum 500 ord. Han har gjort det i noget tid, og da han nævnte det på Twitter, vidste jeg, jeg skulle være med.</p>
<figure><img src="https://s3.brnbw.com/CleanShot-2024-01-09-at-21.53.08-2x-LW6PfIMVg1vCKgqDagWWDNlPecpBR614H2sliZ46FjyrJu0uDe2O4lAkkG4wjvGqYj4AK01pU7Hcl65I7qr4EiQXRBYLh7lvXJQz.png" alt="Tweet"></figure>
<p>Så mange gange har jeg siddet herhjemme, tirsdag formiddag, og været lige ved at droppe min tur til <a href="https://thorosgym.dk/" class="external-link">byens bedste træningscenter</a>, hvis ikke det var fordi, jeg vidste, Martin stod der allerede, og ventede på jeg kom.</p>
<p>Jeg har alle dage været en udskyder. Skrevet mine stile natten før. Ventet så længe med arbejdsopgaver, at jeg til sidst måtte sidde hele natten og mange gange alligevel skubbe deadlines.</p>
<p>Men jeg har endnu ikke misset mine 500 ord en eneste gang. (Jeg holder mig til arbejdsdage, Peter kører weekend og ferie med 🥵)</p>
<p>Og jeg har kun meget få gange meldt afbud til en træning med Martin.</p>
<p><a href="https://twitter.com/levelsio" class="external-link">Pieter Levels</a> taler ofte om konceptet at sætte en kadence og aftale med en ven, at de får penge, hvis du ikke holder den.</p>
<figure><img src="https://s3.brnbw.com/CleanShot-2024-01-09-at-22.02.59-2x-Yxk6TtPP0moULoDxu6plgOlAzM7rqKcrZlHekH1wLaDCor9cpTI3JBOBUuGVQIbM33qm3CQ4FM8xQJzv5zzyvSyFXexDHl9jL5nK.png" alt="Tweet"></figure>
<p>Kunne også være en anden straf, som fx at <a href="https://s3.brnbw.com/siam-HvydjvgTgRZS8SB8bwOdtdbmpslDNzb5cV34gLiupIDuRSurio8cV6mQrhL0WU68OZj8kGAOB8OVV3M5XPWlbfdzXaTrCPGrb2YN.jpeg" class="external-link">gå ned gennem Strøget med min pik i en handske?</a></p>
<hr>
<p>I en nylig episode af <a href="https://www.lennyspodcast.com/strategies-for-becoming-less-distracted-and-improving-focus-nir-eyal-author-of-indistractable-and/" class="external-link">Lenny’s Podcast</a>, taler Lenny med <a href="https://twitter.com/nireyal" class="external-link">Nir Eyal</a>, som har skrevet bogen <em>Indistractable: How to control you attention and choose life</em>.</p>
<p>Én af Eyals pointer er, at <em>procrastination</em> ikke skyldes vores <em>short attention span</em> eller skærme eller social media eller hvad vi ellers skyder skylden på. Overspringshandlinger har rod i en <em>følelse</em>. Vi udskyder en opgave, fordi vi vil undgå en eller anden ubehag.</p>
<p>For Eyal var det et gennembrud, for følelser kan vi lære at kontrollere, hvordan vi reagerer på.</p>
<p>Et af hans tips er <em>10-minutters-reglen</em>: Når du sidder med opgaven foran dig, og får lyst til <em>liiige</em> at tjekke Inst først, siger du til dig selv: Det må jeg godt, men først om 10 minutter.</p>
<p>De 10 minutter bruger du så enten på at gå i gang med opgaven eller på at reflektere over, hvad det mon er for en følelse, du prøver at undgå, når du vil udskyde opgaven.</p>
<p>Han har endda et matra til ventetiden: <em>This is what it feels like to become better.</em></p>
<p>Inden de 10 minutter er gået, er lysten til Inst forhåbentligt forsvundet, og du har fået taget første spadestik, ja faktisk har du egentlig fanget en lille smule momentum.</p>
<p>Da jeg satte mig ved iA Writer i dag, kunne jeg mærke en smule uro. Var lige ved at tjekke Twitter én gang mere inden – men jeg ved, Peter sidder og venter, så jeg gav mig selv 10 minutter. Inden 2 var jeg i gang.</p>
<hr>
<p>Nåmen det var sådan set bare lige 2 produktivitetstips fra en nu knapt så udskydende Mikkel.</p>
<p>Har du nogen planer for 2024? Forleden, mens jeg sad og tænkeskrev mine 500 ord, kom jeg frem til, at jeg er nødt til at forbedre min (mangel på) sengetid. Jeg tracker det i Notion, for det havde jeg åbent allerede, og jeg gad ikke bruge ét sekund for meget på <em>system</em>.</p>
<figure><img src="https://s3.brnbw.com/CleanShot-2024-01-09-at-22.09.51-2x-uoNtrStUdMfX1TJXAbDOZ3j2m9tgY52hQTy8tFFW3oftDPDB5cReeepL2F3aiOsYTnAGURZ2534BQCai1FZQxMdSRZOb8OAjj72u.png" alt="Notion"></figure>
<p>Er der noget bestemt, du går og tumler med? Noget jeg kan hjælpe med? Noget du godt gad, jeg skrev mere om i dette, ofte så udskudte, vidunder af et nyhedsbrev?</p>
<p>🖥️ Mikkel</p>
<figure><img src="https://s3.brnbw.com/CleanShot-2024-01-09-at-22.23.56-2x-34lA4HolIrKBzSXaOXkmUPnZJeKsaKOQbig8nTOOX2EjEM50HVqGe5Vc4t2vcCVJJk5D3UCbC0dyxHULvkFOazh0qASHQALaEWeo.png" alt="boooom"></figure>
]]></description>
            <link>https://mikkelmalmberg.com/issues/73</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/73</guid>
            <pubDate>Wed, 11 Sep 2024 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[State of the Malmberg, 2023]]></title>
            <description><![CDATA[<p><strong>2023</strong>: Jeg startede fortvivlet, det blev forløst. Jeg troede, jeg havde planer, ingen af dem holdt.</p>
<h2 id="mikker.eth" tabindex="-1">mikker.eth</h2>
<p>I starten af året var NFT-bølgen endnu ikke så død, som den er nu. Efter <a href="https://ironpaw.io" class="external-link">Iron Paw Gang</a> var ude, var der ikke meget mere for mig at se til i <a href="https://rndmcharacters.com" class="external-link">RCC</a>-regi. Det er der stadig ikke. Jeg håber, det kommer igen, for det var ærligt talt super inspirerende og sjovt at begå sig blandt kunstnere, at turde drømme stort og blive udfordret rent teknisk i en helt ny verden af blockchain. Så’n er det, som vi siger det på Nordjysk-Vonnegutsk.</p>
<h2 id="10er.dk" tabindex="-1"><a href="http://10er.dk" class="external-link">10er.dk</a></h2>
<p>Jeg startede året i en form for uafklaret halv-krise-tilstand. Efter mange år som sideprojekt, var 10er begyndt at føles som en byrde. Jeg havde dårlig samvittighed over ikke at gøre mig mere umage med at bygge og drive denne service, som så mange afhænger af.</p>
<p>Det løste sig, da <a href="https://www.instagram.com/taarekanalen/" class="external-link">Rikke</a> kom hjem fra flere måneders togtur. Det er nok ikke noget, der overrasker mange, men for en tenderende eneboer som mig, var det overraskende inspirerende at være <em>et hold</em>. Det hjalp både hende og mig at jeg ansatte hende fast, 8 timer om ugen, Danløn og det hele, i stedet for hun selv skulle holde styr på og fakturere timer. Jeg besluttede at give 10er i hvert fald et år endnu, hvor jeg gjorde mig umage. Hvis ikke det fik skudt omsætningen og arbejdsglæden tilpas i vejret, ville 10er i det mindste ende med at være i en endnu mere salgbar tilstand bagefter.</p>
<p>Jeg havde dog stadig meget om ørene, og med stadigt dryppende NFT-penge i noget tid endnu, besluttede jeg at udvide biksen og finde en <a href="https://brainbow.studio/full-stack-developer" class="external-link">med-udvikler til Brainbow</a>. Jeg fandt <a href="https://simondegn.dk" class="external-link">Simon</a> i Århus, og ansatte ham tidligt i sommers. Eller rettere, Simon fandt mig. Desværre ophørte NFT-pengene før tid, så jeg måtte omlægge mine forventninger, og var nødt til at opsige ham igen i december.</p>
<p>Det var fedt at være 2. Jeg har stort set altid været alene i mit arbejdsliv. Ikke <em>helt</em> alene, men oftest alene med mit eget lille hjørne eller projekt. Det har passet mig fint. Men jeg kunne også mærke, hvordan man, når det går bedst, kan arbejde dobbelt så hurtigt, når man er dobbelt så mange om det.</p>
<p>Det er sommetider svært at kommunikere, <em>hvorfor</em> en bestemt stump kode skal se ud på den ene i stedet for den anden måde. Og det er svært, i rollen som den der <em>bestemmer</em>, hvor meget jeg bør bestemme. Simon er både erfaren og dygtig, og kan nogle ting, jeg endnu ikke kan, men 10er var hans første Ruby-projekt, så selvfølgelig var der ting at lære. Min oplevelse var, at den bedste og mest effektive måde at gøre det på, var ved at pair-programmere. Det er både hyggeligt og lærerigt (fornemmer jeg), men det har den ulempe, at det nulstiller den effektivitet, jeg vandt, ved at kunne arbejde på 2 ting på én gang.</p>
<p>Jeg tror, at hvis jeg skal ansætte en udvikler igen, er jeg nødt til at finde en, som har erfaring med Ruby og Rails. Når det er sagt, var Simon nu utroligt hurtig til at komme i gang med Rails og alt det der hører med, så det har bestemt ikke noget med hans evner at gøre. (Han er go’ og rar, og hvis du mangler en generalist/product/udvikler-type, så siger jeg det gerne videre.)</p>
<p>Rikke optager lige nu 10er-podcast med udvalgte projekter. Hun har delt første episode til gennemlyt, og det er vidunderligt at høre. Jeg ved, jeg aldrig ville få sat alt det i værk og arrangeret. Jeg ville have snublet over mig selv for at afbryde med ugennemtænkte jokes.</p>
<h2 id="10er.com" tabindex="-1"><a href="http://10er.com" class="external-link">10er.com</a></h2>
<p>Jeg har i mange år haft 10er på engelsk, sådan helt uofficielt og ubrugt, men liggende klar til en dag at blive foldet ud og afprøvet i en international kontekst. Jeg har stukket en smule til det, men altid været… bange, vel, for, øhm… at fejle, tror jeg? Tænk, hvis jeg sad der med min fødselsdagskage og planlagte skattejagt, og så kom der ingen gæster. Og så startede hele Indsamlingsnævnet-miseren, og jeg kunne slet ikke begynde at forestille mig, hvor skrækkelige nævnmonstre, der mon kunne findes i resten af verden.</p>
<p>Anyway, en bekendt udfordrede mig på, hvorfor jeg ikke bare gav det et skud, og… det kunne jeg ikke rigtig komme med en god grund til.</p>
<p>Her er min teori: 10er voksede i Danmark, fordi den startede med et projekt, der allerede var etableret, min egen podcast <a href="https://fupifarvandet.dk" class="external-link">Fup i Farvandet</a>. Lidt efter kom min ven Michael Schøt på med <a href="https://schoetministeriet.dk/" class="external-link">Schøtministeriet</a> og derefter voksede det af sig selv, organisk. Mange podcastere lytter selv til podcasts, og er man på 10er, er man ligesom nødt til at nævne <em>konstant</em>, at man er på 10er, og således har det spredt sig.</p>
<p>Jeg tror, jeg kan følge samme model i udlandet. Jeg skal bare have de først 2-3 allerede etablerede projekter, til at benytte 10er, og så vil det sprede sig. (🤞)</p>
<p>Men konkurrencen er også hårdere, når vi inkluderer resten af verden. Når jeg har spurgt projekter og brugere af 10er, hvad de bedst kan lide ved 10er, er det for mange, at den er dansk. Den fordel har jeg ikke internationalt.</p>
<p>Til gengæld er 10er også unik på andre måder. Hvor de andre services fokuserer på enten enkeltbetalinger, faste månedlige abonnementer eller begge dele, har 10er sin betal-per-episode-model – og kun den. Fokus er en fordel, synes jeg.</p>
<p>Da vi i sin tid udgav Fup i Farvandet, havde vi nok at gøre med blot at forsøge at udkomme med podcasten selv. Vi følte ikke, vi havde ekstra energi og overskud til at lave <em>mere</em> til dem, der måtte betale.</p>
<p>10er forsøger at skifte incitamenterne, så betalingerne ikke er for <em>mere</em> men for det indhold, du <em>allerede</em> udgiver. Dermed ikke sagt, du ikke kan give goder, til dem der betaler, det er bare hverken forventet eller påkrævet fra platformens side.</p>
<p>Jeg ved ikke, om det er en bedre model for alle – men det var det for os. Og jeg behøver ikke overtale alle. Det internationale marked er gigantisk, så jeg behøver blot en lille brøkdel for at gøre det indsatsen værd.</p>
<p>Hvilket leder mig til endnu en fordel: 10er er stadig 100% uafhængig, <em>boostrapped</em>, og har ikke modtaget én eneste krone i hverken støtte eller funding. Det har alle de andre. Det føler jeg, jeg kan vende til min fordel i min kommunikation, men også i de ting jeg kan tillade mig at gøre – eller ikke gøre.</p>
<p>Så det er planen:</p>
<ol>
<li>Gør produktet helt klart på engelsk. Det er det, mere eller mindre allerede.</li>
<li>Skriv marketing/sammenligningssider henvendt det engelsktalende udland. Den nemmeste måde at forklare, hvad 10er er, er at sige den er Patreon-agtig. Derefter er det første spørgsmål naturligvis: hvordan er den så anderledes end Patreon? Det svar skal jeg have klar.</li>
<li>Opsøg etablerede podcasts og introducer dem til projektet, hør om deres erfaringer med eksisterende platforme, hvorfor de har/ikke har brugt dem.</li>
<li>Profit(?!)</li>
</ol>
<p>Jeg har ikke tænkt det længere end punkt 3, ærligt, men det virker også overvældende nok allerede dertil.</p>
<h2 id="brainbow.studio" tabindex="-1">brainbow.studio</h2>
<p>Jeg kan godt lide at være <em>product studio</em>. Jeg savner sommetider at have mere erfarne kollegaer og være den dummeste i lokalet. Men jeg nyder og udnytter til fulde, at jeg er herre over min egen (arbejds)tid. Jeg forstår stadig ikke, hvordan par der begge har jobs med mødetider, kan få konceptet børnefamilie til at gå op.</p>
<p>Jeg har taget enkelte små opgaver ved siden af produkt-udviklingen i 2023. Jeg kan godt lide det, men det er også svært ikke at have dårlig samvittighed overfor 10er, når jeg peger mit fokus mod andet. Til gengæld kommer der så lidt ekstra penge i kassen, hvilket giver en anden slags ro. Er ikke sikker på, hvad løsningen er her. Måske er det bare sådan, det er.</p>
<p><a href="https://funnn.co" class="external-link">Funnn</a> har fået lidt opdateringer. I 2023 har <a href="https://michaelschoet.dk/" class="external-link">Michael</a>, <a href="https://jakobsvendsen.dk/" class="external-link">Jakob</a>, <a href="https://habane.dk/" class="external-link">Mahamad</a> og <a href="https://www.mikkelraskcomedy.dk/kb-shows" class="external-link">Mikkel</a> solgt shows derpå. <a href="https://twitter.com/mikker/status/1692077957433458779" class="external-link">Sprinkles dør snart</a>. <a href="https://getmoves.app" class="external-link">Moves</a> er gratis. <a href="https://twitter.com/mikker/status/1720557688252195218" class="external-link">Latr.fm lever</a>, men har (stadig) ikke nogen forretningsmæssig fremtid.</p>
<h2 id="mikkel-malmberg" tabindex="-1">Mikkel Malmberg</h2>
<p>Vi købte i foråret et nyt, gammelt hus, som vi overtog d. 1/9. (Tak til jpegs på blockchain.) Samme dag gik håndværkere i gang, og det er de stadig. Stort projekt, som jeg ikke, for at være ærlig, helt kan overskue. Det kan heldigvis min dygtige hustru, som står for det hele. Selvom det blot ligger 3-400m fra vores nuværende hus, føles det meget stort at skulle flytte. Glæder mig og frygter det på samme tid.</p>
<p>Børn og voksne har det godt. Min mellemste starter i skole til sommer. Sindssygt.</p>
<p>Jeg styrketræner stadig med min træner Martin. Jeg ville aldrig komme afsted, hvis han ikke stod og ventede på mig hver tirsdag formiddag. Og hvis jeg gjorde, ville jeg kun presse mig selv halvt så meget og ikke ane, hvad jeg skulle løfte og hvor mange gange. De penge er virkeligt godt brugt, og jeg kan stadig mærke, det er godt for både min krop og mit hovede at løfte nogle tunge ting og sætte dem ned igen.</p>
<p>Jeg spiller stadig Call of Duty. Et par aftener om ugen når ungerne sover. Min hjerne elsker læringskurven, følelsen af at tage tusindvis af mikrobeslutninger og blive belønnet/afstraffet. At blive bedre, at blive udfordret. Nu om dage bruger de fleste kompetitive spil noget, der hedder <em>SBMM, skill-based match making</em>, hvilket betyder, spillet prøver at finde modstandere, der er tæt på dit niveau. Det bliver altså aldrig rigtig lettere, selvom du bliver bedre. <em>It never gets easier, you just go faster</em>. Sådan er det med meget i livet, og det er godt.</p>
<p>God jul, my love, og godt nytår.</p>
<p>🖥️ Mikkel</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/72</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/72</guid>
            <pubDate>Thu, 21 Dec 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Assistant to the regional manager]]></title>
            <description><![CDATA[<p>I min nye rolle som <a href="https://giphy.com/gifs/the-office-david-brent-Hf9RZEpEPwaL6" class="external-link">assistant to the regional manager</a> har jeg skullet finde ud af, hvordan jeg vil strukturere arbejdet i Brainbow og på 10er.</p>
<p>Det er som om, at hvis man ikke tager beslutningen om andet, falder det naturligt tilbage på 14-dages “sprints”.</p>
<p>(Hvad er det for en interval-træning, hvor hvert interval foregår i sprint?)</p>
<p>Sprints er, efter min erfaring, en undskyldning for i virkeligheden ikke at planlægge ordenligt. Arbejdsbyrden har ingen sammenhæng med de to 2 ugers varighed. Man finder en opgave, giver den en t-shirt-størrelse ud fra ens (ukorrekte) mavefornemmelse, smider den i den relevante kolonne, og måske bliver den færdig – om et sted mellem 12 sekunder og 4 år. Det er project management, som komponerede man <a href="https://www.youtube.com/watch?v=Dg-Jpz0Td1s" class="external-link">melodien til <em>Her er London</em></a>.</p>
<p>Lige så snart en brik kan flyttes fra det ene sprint til det næste, kollapser konceptet.</p>
<p>Basecamp har skrevet bogen <a href="https://basecamp.com/shapeup" class="external-link">Shape Up</a> som et alternativ til SCRUM . Jeg har ikke læst den, men jeg har plukket derfra og ladt mig inspirere. (Hvem er nogensinde blevet klogere af at nærlæse?)</p>
<p>I Brainbow arbejder vi i 6-ugers <em>cycles</em>, med 2 ugers mellemlægningsperioder imellem.</p>
<p>Hver cycle har nogle <em>temaer</em>, som er de store ambitioner for udviklingen. Temaer kan ikke <em>krydses af</em>, men er mere retningen, end de er projekter. Målet er, de kan bruges til at bestemme, hvilke <em>projekter</em> vi vil færdiggøre i løbet af cycle’en.</p>
<p>Det er ambitionen at <em>alle</em> projekter defineres i en form og målestok, så de <em>alle</em> går fra planlægning til færdige i løbet af en cycle. Man må ikke flytte et projekt fra en cycle til den næste. Projekter er ikke todos, men kan krydses af, når de er “færdige”, hvad end det så betyder for det enkelte projekt.</p>
<p>Under et projekt, kan der være <em>tasks</em> eller lister eller beskrivelser eller gif’er. Det er frit for den enkelte, hvad man føler, vil hjælpe.</p>
<p>De 2 ugers mellemlægning er der, så der er tid til at få de sidste detaljer på plads i projekterne, eller til at følge op på noget <em>tech debt</em>, man gerne vil have klaret, men som ikke lige passede til et cycles temaer.</p>
<p>Det er mere eller mindre dét, for nu.</p>
<p>Eksempelvis, i vores netop overståede <em>🐛 Cycle 2</em>, direkte fra vores Notion:</p>
<h3 id="themes" tabindex="-1">Themes</h3>
<ul>
<li><strong>Reduce missed donations/expired cards</strong>
<ul>
<li>Seems like low-hanging fruit?</li>
</ul>
</li>
<li><strong>Creator autonomy</strong>
<ul>
<li>Help creators get a better sense of the state and movements of their supporter base</li>
</ul>
</li>
<li><strong>Grow (projects++)</strong>
<ul>
<li>Expand into new communities (YT?)</li>
<li>Build relationships with established podcasters (outside 10er)</li>
</ul>
</li>
</ul>
<h3 id="eksempler-p%C3%A5-projects" tabindex="-1">Eksempler på Projects</h3>
<p>Uden videre forklaring. Bemærk formen, der starter med et udsagnsord i bydeform:</p>
<ul>
<li>Add Creators’ overview page</li>
<li>Optimize e-mail copy</li>
<li>Improve users’ credit card management</li>
<li>Schedule credit card reminders closer to expiry</li>
<li>Add taxonomy to campaigns</li>
<li>Reach out to 3 YouTubers</li>
<li>Reach out to 3 indie podcasters</li>
</ul>
<p>I næste uge starter <em>🦏 Cycle 3</em> med disse temaer og ideer til, hvordan de kunne følges:</p>
<h3 id="themes-1" tabindex="-1">Themes</h3>
<ul>
<li>Get ready for the world
<ul>
<li>Public pages need to be translated (and made)</li>
</ul>
</li>
<li>Improve creator insight
<ul>
<li>Data pages need an overhaul to be useful</li>
</ul>
</li>
<li>Grow
<ul>
<li>More direct contact</li>
<li>Investigate more <em>quantitative</em> methods</li>
<li>Improved signup(s)
<ul>
<li>Social sign up for subs</li>
<li>Wizard-style signup for projects</li>
</ul>
</li>
</ul>
</li>
</ul>
<p>Vi bruger Notion til at holde styr på det. (Notion startede utroligt lovende, men er efterhånden både for tungt og for kompliceret. Til gengæld er det <em>fint nok</em>, og jeg fortæller mig selv, fint nok <em>er</em> fint nok, og det rigtige arbejde foregår udenfor Notion alligevel.)</p>
<p>Jeg er overrasket over, hvor meget det hjælper mig selv at have blot denne lette form for struktur og planlægning. Indtil nu har jeg udviklet som vinden blæste, men jeg kan mærke, at det at finde og nedfælde temaerne, lader mig sætte en mere ambitiøs kurs. Siden jeg ansatte Simon, har jeg været mere produktiv end nogensinde før på 10er.</p>
<p>Jeg er sågar begyndt at overveje, om jeg burde gøre det samme for mit privatliv. Jeg er bare ikke sikker på, jeg vil kendes ved de krumspring, jeg skal igennem for at få al mit Warzone-gaming til at passe ind under temaet “personlig udvikling”.</p>
<p>🖥️ Mikkel</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/70</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/70</guid>
            <pubDate>Wed, 20 Sep 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Er du model?]]></title>
            <description><![CDATA[<p><em>Som en</em> <strong><em>large language model</em></strong> <em>kan jeg ikke tage med på hotel.</em></p>
<figure><a href="https://twitter.com/mikker/status/1702059997004271755"><img src="https://assets.buttondown.email/images/809de69c-d559-4659-9770-82e8decb0677.png?w=500&amp;fit=max" alt="WTF"></a><figcaption>Hvor er jeg?</figcaption></figure>
<p>(Hej! Længe siden. Jeg er Mikkel Malmberg, og det her er mit nyhedsbrev COMPUTERS. Hvis du nu skulle have glemt, du havde skrevet dig op, så forstår jeg godt. Jeg skriver desværre ikke så tit. Nå, men…)</p>
<p>Pludselig gik det stærkt. Fra MidJourney til ChatGPT til Nvidias aktiekurs. “AI” tog et ordenligt hop op i brugbarhed. Er alle jobs døde? Kan vi genkende vores jobs i morgen? Kan vi genkende vores kære?</p>
<p>Jeg startede skeptisk. Indtil det gik op for mig, at det, som altid, er nemmere at svømme med strømmen end at stå og surmule ved siden af. Købte MidJourney, købte ChatGPT. Investerede tid at prøve at forstå.</p>
<p>Her er nogle faktiske ting, jeg har brugt “AI” til det sidste halve års tid:</p>
<h3 id="copilot-i-min-neovim" tabindex="-1"><a href="https://github.com/features/copilot" class="external-link">CoPilot</a> i min <a href="https://www.lazyvim.org/extras/coding/copilot" class="external-link">NeoVim</a></h3>
<p>Det er overraskende ofte, den gætter rigtigt. Jeg vil skyde på, den færdiggør 50-60% af mine kodelinjer nu. Specielt ting som oversættelser af tekst og tests er den åbenlyst hjælpsom til.</p>
<h3 id="illustrationer-til-web" tabindex="-1"><a href="https://twitter.com/mikker/status/1689560427607326721" class="external-link">Illustrationer til web</a></h3>
<p>Det tager lidt tid at spore sig ind på en prompt, men så snart den er der, kan men generere i en evighed. Jeg vil bedømme resultatet ★★★☆☆☆. Men det er bestemt heller ikke værre end ingen illustrationer.</p>
<figure><img src="https://assets.buttondown.email/images/6beccedc-bd63-4367-ae3c-1cd6c8807ed4.png?w=500&amp;fit=max" alt="studio microphone, minimal, cute, thick edge, line draft, black and white ink sketch, no background --style raw"></figure>
<p><em>studio microphone, minimal, cute, thick edge, line draft, black and white ink sketch, no background --style raw</em></p>
<h3 id="interview-sp%C3%B8rgsm%C3%A5l-til-ans%C3%A6ttelsessamtale" tabindex="-1">Interview-spørgsmål til ansættelsessamtale</h3>
<p>Jeg har hyret en udvikler til Brainbow. <a href="https://simondegn.dk" class="external-link">Simon</a>. Min eksistentielle, karrieremæssige krise omkring nytår forløste sig, da Rikke kom hjem og tilsluttede sig 10er-<em>styrken</em> igen. Det er sjovt at være mange. (Og Danløn er slet ikke så skræmmende.) Før et af mine interviews med Simon, manglede jeg inspiration til tekniske spørgsmål. ChatGPT leverede på 3 sekunder.</p>
<h3 id="sql" tabindex="-1">SQL</h3>
<p>Never bothered.</p>
<figure><a href="https://twitter.com/mikker/status/1686478393343090688" class="external-link"><img src="https://assets.buttondown.email/images/f2ed9de1-2ec2-4a1d-9521-fed657882289.png?w=500&amp;fit=max" alt="Metabase"></a></figure>
<h3 id="utallige-udviklingssp%C3%B8rgsm%C3%A5l" tabindex="-1">Utallige udviklingsspørgsmål</h3>
<p>Alt hvad jeg tidligere ville have Googlet og endt på et StackOverflow-spørgsmål om, spørger jeg maskinen om i stedet. Sommetider kræver det lidt opfølgende info. Næsten altid giver den bedre svar. Man skal stadig vide, hvilket spørgsmål man skal stille – både teknisk og <em>holistisk</em> – men fx…</p>
<figure><img src="https://assets.buttondown.email/images/3229a088-aebe-4344-805a-85692f51a0c3.png?w=500&amp;fit=max" alt="ChatGPT"></figure>
<ul>
<li>In neovim, how can I unmap <code>&lt;cr&gt;</code> when entering quickfix windows?</li>
<li>I have this SQL query that I use for a graph. How do I make it so rows with the same user_id value only count once per day?</li>
<li>of 8595 how many percentages is 574</li>
<li>In SQL how do I get time series data from my table <code>donations</code> showing percentage of rows with <code>state == &quot;awaiting_user&quot;</code>, grouped by month, limit it to last 12 months</li>
<li>I have rotated some animated gifs using CSS’ <code>transform: rotate()</code>. They perform quite badly. Can I optimize this?</li>
<li>Using ffmpeg, how do I cut an mp4 to square dimensions keeping the center?</li>
<li>When converting a gif to mp4 with ffmpeg, how can I give the result a solid hex color background?</li>
<li>Give me a cron config to run a thing every week day at 3pm</li>
<li>Installed via homebrew, where does Postgres store its config?</li>
<li>How do I increase the sshd keep alive time?</li>
<li>How do I get a time from a unix timestamp in ruby?</li>
<li>In a macOS app, can I get an application’s bundle identifier using the Accessibility apis?</li>
<li>Using ViewComponents can I pass a block to my component and use it in my template?</li>
<li>How do I create an ActionMailer preview interceptor that shows me the preheader preview text on an email preview?</li>
</ul>
<h3 id="%E2%80%9Cyou-believe-you-are-an-egyptian-pharaoh.-a-god-among-men%2C-worthy-of-your-throne.-in-reality-you-are-just-a-guy-named-greg-who-works-in-an-office.%E2%80%9D" tabindex="-1"><a href="https://twitter.com/mikker/status/1644415901662421028" class="external-link">“You believe you are an Egyptian pharaoh. A god among men, worthy of your throne. In reality you are just a guy named Greg who works in an office.”</a></h3>
<figure><img src="https://assets.buttondown.email/images/78c18e52-30f1-4134-b203-230ba22707f9.jpeg?w=500&amp;fit=max" alt="Greg"></figure>
<p>Sammenlignet med andres eksempler er det her altsammen barnemad. Jeg skriver det blot for at nævne, hvor mange små, der sammen, du ved, giver en å, og jeg er efterhånden overbevist om, det betaler sig at lære at svømme med den.</p>
<hr>
<p>Jeg forsøger mig med et lidt lettere (for mig) format her på kanalen i håbet om, det betyder højere frekvens. Nok stadig ikke oftere end ugentligt, men lad os nu heller ikke komme for godt i gang. Glad for I er her. Alt vel?</p>
<p>🖥️ Mikkel</p>
<figure><a href="https://twitter.com/mikker/status/1672176201895661568" class="external-link"><img src="https://assets.buttondown.email/images/1ada73a0-ac2f-482e-800e-98d2c49e1f6c.png?w=500&amp;fit=max" alt="HTH"></a></figure>
]]></description>
            <link>https://mikkelmalmberg.com/issues/69</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/69</guid>
            <pubDate>Thu, 14 Sep 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[En emails om emails]]></title>
            <description><![CDATA[<p>For år tilbage, da jeg startede COMPUTERS, var jeg en email-dengse. Hver hverdagsformiddag, helst, knoklede jeg min inbox i nul. <strong>Alt</strong> landede i inboxen, og boede der kun, indtil de var blevet læst, svaret eller fulgt op på.</p>
<p>Så kom <a href="https://hey.com" class="external-link">Hey</a>, og for en stund var det der, min email boede. Hey fik mig til at dirigere nyhedsbreve direkte i deres egen bunke. Det var overraskende befriende. I stedet for at ligge i indbakken og skule til mig og min pligtfølelse, lå de nu for sig, og blev til et tilvalg i stedet for en pligt. Et tilvalg jeg i perioder kunne ignorere helt.</p>
<p>Hey var smart men også <em>en bro for langt</em> fra min gamle Mail.app, så jeg flyttede til sidst tilbage til <a href="https://ref.fm/u16040769" class="external-link">Fastmail</a>*. Jeg savnede dog nyhedsbrevsfordelingshatten, så meget, at jeg måtte bygge den i Fastmail.</p>
<p>*Affiliate link med 10% rabat, hvis du skulle få lyst 🤷‍♂️</p>
<hr>
<p>Jeg har gjort det sådan her:</p>
<h3 id="opret-en-contact-group-hos-fastmail.-tilf%C3%B8j-en-contact-for-hver-newsletter-afsender%3A" tabindex="-1">Opret en Contact Group hos Fastmail. Tilføj en contact for hver newsletter-afsender:</h3>
<figure><img src="https://assets.buttondown.email/images/23611373-2f39-4ad7-988b-069cd4275b71.png?w=960&amp;fit=max" alt="CleanShot 2023-11-04 at 11.15.47@2x.png"></figure>
<h3 id="ops%C3%A6t-en-mail-rule%3A" tabindex="-1">Opsæt en Mail Rule:</h3>
<figure><img src="https://assets.buttondown.email/images/2d4c19e1-e556-4e23-98b7-31954b6f19a6.png?w=960&amp;fit=max" alt="CleanShot 2023-11-04 at 11.20.28@2x.png"></figure>
<h3 id="bonus%3A-tr%C3%A6k-mappen-i-favourites%2C-s%C3%A5-du-kan-hoppe-til-den-med-%E2%8C%982%3A" tabindex="-1">Bonus: Træk mappen i favourites, så du kan hoppe til den med <strong>⌘2</strong>:</h3>
<figure><img src="https://assets.buttondown.email/images/3ea03539-1edb-4548-bec2-74b9ebd2419a.png?w=960&amp;fit=max" alt="CleanShot 2023-11-04 at 11.22.36@2x.png"></figure>
<h3 id="ultrabonus%3A-lav-en-action-til-scriptable-til-at-tilf%C3%B8je-direkte-via-share-sheet." tabindex="-1">Ultrabonus: Lav en <a href="https://gist.github.com/mikker/c847162db0ade5631053f68c52f60936" class="external-link">action til Scriptable</a> til at tilføje direkte via Share Sheet.</h3>
<hr>
<p>Ikke raketvidenskab, men det har gjort, hvad det skulle.</p>
<p>Nu går der lange perioder, hvor jeg slet ikke kigger i bunken. Ind imellem erklærer jeg newsletter-fallit, og sletter hele lortet. Det er jo, du ved, <em>bare</em> emails.</p>
<p>På nær den her, som jeg selvfølgelig forventer, du auto-sender videre til din printer-og-laminerings-kø, så den kan komme op på køleskabet til de andre COMPUTERS-breve.</p>
<p>🖥️ Mikkel</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/71</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/71</guid>
            <pubDate>Tue, 11 Apr 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Pyramid Scheme]]></title>
            <description><![CDATA[<p>From my <a href="https://mikkelmalmberg.com/ama" class="external-link">AMA</a>:</p>
<blockquote>
<p>Hi Mikkel. Just finished watching <a href="https://www.youtube.com/watch?v=ORdWE_ffirg" class="external-link">The great crypto scam with James Jani</a>. I have previously (Kortsluttet) heard you talk positively about the possibilities of block chain technology. Are you still optimistic about the potential now or do you share some of his concerns, that it is mostly utilized as a pyramid scheme to make early adopters rich.</p>
</blockquote>
<p>I’m quite involved now in the digital collectible scene, AKA NFTs, and I hold some crypto, mainly $ETH that I’ve made from selling and helping others sell NFTs. So take my opinion with that in mind.</p>
<p>I don’t see crypto, Ethereum at least, as a pyramid scheme. There have definitely been folks who’ve been rewarded solely by being <em>first</em> but that is also true in start-up investing or real estate or whatever else people invest in. There’s always risk and then sometimes there’s a reward for taking on that risk.</p>
<p>I like how NFTs allow me to collect art directly from artists. I support them in their creative endeavours and I get to call some pieces <em>mine</em>. Whether you think this form of ownership is even <em>a thing</em> (I CAN JUST RIGHT-CLICK SAVE AS?!) is up to you but it is meaningful to me.</p>
<p>I think the last 10 years have shown us that if we want to live increasingly larger parts of our lives online, we need somewhere to <em>live</em>. Huge corporations and their Social Media products were easy to move into as they had the means to pay thousands of talented people to build very easy to use and welcoming machines. But the rent was paid with attention and privacy and, on Facebook <em>democracy</em>, and recently on Twitter with <em>our dignity</em>.</p>
<p>So we need something else. Public blockchains provide a solution to the problem of <em>where do we put all the stuff?!</em> Just think of them as a database that no one owns. It’s slow and expensive and cumbersome. But no one <em>owns</em> it. So no one can fiddle with the data. No one can decide to sell your data against your will. No one can tell you, you have to use <em>their</em> app, because there’s no moat around the data.</p>
<p>There are a few other decentralisation efforts that don’t include the whole <em>money</em> aspect so prominently, like <a href="https://holepunch.to/" class="external-link">Holepunch</a> or <a href="https://scuttlebutt.nz/" class="external-link">Scuttlebutt</a>. They’re very interesting as well.</p>
<p>I don’t think Bitcoin will replace the dollar. I’m not sure it’s a good investment to buy any crypto at any point. Well, it would’ve been 6 years ago and wouldn’t 1 year ago. But who knows where prices go from here. I’m not too interested in that aspect (I mean, if the $ETH price goes to a million USD and I become generationally rich, I won’t complain.)</p>
]]></description>
            <link>https://mikkelmalmberg.com/2023/pyramid-scheme</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2023/pyramid-scheme</guid>
            <pubDate>Fri, 27 Jan 2023 13:22:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[It's not the tool, dummy]]></title>
            <description><![CDATA[<p>Jeg ser aldrig fjernsyn for mig selv. (Endnu) én af mine regler for mig selv er, jeg kun ser fjernsyn, når det er sammen med min hustru eller mine børn. Er jeg alene, er der tusind andre ting, jeg synes, er mere interessante.</p>
<p>Jeg ser til gengæld meget YouTube.</p>
<p>Min seneste fascination er kanalen <a href="https://www.youtube.com/@93Acres" class="external-link">93 Acres</a>, hvor irske <em>Hugh</em> fiser rundt i Logic Pro, mens han genskaber segmenter af pophits på Under. Én. Time. Go!</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/y0gMfRAeLNQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<p>(btw<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>)</p>
<p>Uanset hvad du vil lære: på YouTube er der (mindst) en, der har gjort det til sit livs primære mål at lære dig, alt der er værd at vide om præcist dét emne.</p>
<p>I en verden hvor udviklingen faktisk føles eksponentiel — sådan helt riskorn på et skakbræt-agtigt, <em>eksponentiel</em>, overser man nemt, hvor helt igennem ubegribeligt fortryllende det er, at der findes et sted, hvor du kan lære <em>alt, gratis</em>.</p>
<p>!?</p>
<p>93 Acres’ format viser på bedste drik-direkte-fra-brandslangen-facon, hvor mange muligheder du får med blot en Mac og Logic. Logic koster 1699 kr. for hele pakken. Enhver Mac du kan købe i dag, kan køre det uden problemer. Ingen dyre plugins, måske en guitar, en masse midi, en halvsløj sangstemme (undskyld Hugh, du får til gengæld imponerende resultater ud af den) og én time på stopuret.</p>
<p>Han har selvfølgelig <em>forberedt sig lidt hjemmefra</em>, men det er stadig tydeligt, hvordan han kender Logic helt ud i krogene. Alt foregår via keyboard shortcuts. Hvis et <em>preset</em> lyder godt, er der ingen grund til at prøve alle de andre også. Er et take lidt for sejlende, <em>press Q to quantize</em>. Er et take lidt for statisk, kør “Humanize”, og giv det lidt af den der sexede menneskelige fejlbarlighed.</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/MqlMdD1GZHQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<p>Jeg savner at lave musik, og jeg har altid brugt Logic. Over de sidste par år, har jeg bildt mig selv ind, det var sejere, hvis jeg brugte Ableton Live. For det gør <em>alle de seje</em>. Jeg har stort set aldrig haft det åbnet siden.</p>
<p>Næste gang jeg forsøger at bilde mig selv ind, der er noget som helst, jeg mangler, før jeg endelig sætter mig ned, og komponerer det næste Soundtrack Til En Bjørn, Der Lunter<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>, sender jeg en mental honør-emoji til Hugh, glemmer Ableton, og åbner Logic.</p>
<p>🖥️ Mikkel</p>
<p>It’s not the tool, dummy, it’s you.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Er det… Fred Again… i studiet med Sheeran i de klips der?! <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Fup i Farvandet-reference. Man skal nok have lyttet til 263 episoder for kende den. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/68</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/68</guid>
            <pubDate>Thu, 26 Jan 2023 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[State of the Malmberg]]></title>
            <description><![CDATA[<h5 id="%2366-%E2%80%93-2021.06.05-%E2%80%93-state-of-the-malmberg-%E2%80%93-l%C3%A6s-online" tabindex="-1">#66 – 2021.06.05 – State of the Malmberg – <a href="https://mikkelmalmberg.com/issues/66" class="external-link">Læs online</a></h5>
<p>Nå, jeg har grublet og grublet og haft intentionen – men skrevet utroligt lidt. Så nu har jeg lovet mig selv, at jeg <em>skal</em> skrive det her færdigt på under en time. Perfection is the enemy of done og alt det der, så afsted med os. Der er en navle, der skal pilles i…</p>
<h1 id="state-of-the-malmberg" tabindex="-1">State of the Malmberg</h1>
<p>Det er et år siden, jeg stoppede i mit job hos Elastic for at være fuldtids selvstændig (igen). Jeg har haft travlt, og jeg har haft ikke særligt travlt. Det er et kæmpe privilegium at være i en situation, hvor jeg ikke behøver bekymre mig om månedslønnen. I hvert fald ikke fra måned til måned. Jeg kan selv bestemme frit, hvilke projekter jeg kaster mig over, og hvornår og hvordan jeg arbejder på dem. Det er drømmen – så hvorfor er jeg egentlig forvirret?</p>
<h2 id="10er" tabindex="-1">10er</h2>
<p>Jeg ser <a href="https://10er.com" class="external-link">10er</a> som mit primære projekt. Men er det dét? For det er slet ikke der, jeg bruger det meste af min tid og energi. 10er er et vigtigt projekt. Men i virkeligheden nok mere for andre end for mig selv. Stadig flere og flere projekter afhænger af 10er for at holde sig flydende. Og det er måske derfor, jeg fortæller mig selv, det er her, jeg burde lægge min energi.</p>
<p><a href="https://10er.com/open" class="external-link">Graferne</a> går generelt set opad og til højre, og det på trods af, vi stadig venter på, det færdigskrevne <a href="https://twitter.com/11erdk/status/1527970395151863810" class="external-link">lovændringsforslag</a> bliver vedtaget af Folketinget, som vil fjerne den bureaukratiske kæp i hjulet ved navn <em>Indsamlingsnævnet</em>. Det vil fritage de største projekter for en masse bøvl, vi har måttet forholde os til i 2(!) år efterhånden. Og det på trods af at alle, også politikerne og endda Indsamlingsnævnet selv, synes, det er fjollet, at det skal gå ud over 10er.</p>
<p>Helt ærligt så har jeg mere eller mindre mistet pusten på 10er. Det er det perfekte sideprojekt, for selvom jeg lidt for sjældent kigger forbi, tøffer det roligt og sikkert afsted for sig selv. Jeg har dog dårlig samvittighed. Jeg synes, det er spildt potentiale.</p>
<p>Jeg har hyret freelancere til at hjælpe mig, og det hjælper, men de løse forpligtelser og arbejdsforhold har gjort indsatsen meget uregelmæssig i omfang, og samarbejderne har indtil nu været korte. Jeg har endnu ikke rigtig haft modet til at fastansætte nogen, men det kan være, det er næste skridt?</p>
<p>Jeg har overvejet at finde en investor eller 50 og bruge deres penge i stedet for mine egne. Men det er jo, som det er med investorer, og en allerede udbrændt founder er nok ikke, hvad de fleste er på udkig efter. En fyr fra Seed Capital spurgte om jeg kunne sende ham mit pitch deck, og selvom jeg var smigret, kunne jeg også mærke, at jeg på ingen måde kom til at lave et pitch deck.</p>
<p>Jeg har overvejet at finde nogen at sælge hele pisset til. Det kunne jeg faktisk godt se ske, hvis jeg finder den rigtige. Nådada.</p>
<h2 id="random-character-collective" tabindex="-1"><a href="https://rndmcharacters.com" class="external-link">Random Character Collective</a></h2>
<p>Selvom NFT-manien har fortaget sig en smule siden foråret, har vi stadig medvind på vores kunstnerkollektiv. Jeg er stadig fast og eneste developer tilknyttet. Vi har et par releases planlagt for 2023 allerede.</p>
<p>Jeg nyder at arbejde med kunstnerne. Og jeg får simpelthen så meget ros fra vores community. Det er selvfølgelig nemt at se godt ud, når man står som eneste person med ansigt i en samling af anonyme dyreprofilbilleder, men det tæller stadig. Jeg noterede mig forleden, at vi endnu ikke er blevet beskyldt for at snyde. Vi har heller ikke lavet store, betydelige fejl. Ingen er endt i evig gæld. I hvert fald ikke på grund af os. Det er måske en underlige ting at fejre, at vi ikke har snydt nogen <strong>i et helt år</strong>, skulle man tro, men kigger man rundt til andre projekter, er vi i en meget lille klub af stadig troværdige, oprigtige, ærlige folk, der endnu ikke har lovet for meget eller leveret for lidt.</p>
<h2 id="funnn" tabindex="-1"><a href="https://funnn.co/members" class="external-link">funnn</a></h2>
<p>I forbindelse med Michael Schøts <a href="https://michaelschoet.dk" class="external-link">Dæmonkrati-release</a> og en masse ændrede Stripe-API’er fik jeg lov til at genskrive det meste af funnn’s salgsmekanik. Der er små 8-10 shows til salg via platformen og et par flere på vej.</p>
<p>Jeg kunne åbne den op og lade alle sælge via den, men jeg tror, en mere håndholdt wholesale-agtig strategi som nu er bedre.</p>
<p>Et oplagt næste skridt kunne være at gøre det nemmere at finde de flere shows, efter man har købt det første.</p>
<p>Jeg er stadig ikke fan af navnet, <em>funnn</em>, selvom <a href="https://twitter.com/mikker/status/1568705558462570497" class="external-link">det nye logo</a> er meget lækkert.</p>
<h2 id="moves" tabindex="-1"><a href="https://mikkelmalmberg.com/moves" class="external-link">Moves</a></h2>
<p>Moves kostede $5. Nu er den gratis. Verdens mindste app men jeg bruger den 1 milliard gange om dagen. Den har fået nyt hjem på min egen hjemmeside. Det ærgrer mig stadig, den ikke kan komme på App Store (den bruger accessibility-API’er til at flytte vinduer fra andre apps 🤷‍♂️) men jeg nyder, at jeg da i det mindste kan bruge den selv.</p>
<h2 id="sprinkles" tabindex="-1"><a href="https://getsprinkles.app" class="external-link">Sprinkles</a></h2>
<p>Sprinkles er til gengæld at finde på App Store, hvor den også er gratis. Også denne bruger jeg hele tiden. Jeg har arbejdet en lille smule på <a href="https://beta.getsprinkles.app/snippets/5" class="external-link">et site til at dele snippets</a>.</p>
<p>Det er svært at finde ud af, hvad forretningen i Sprinkles kan være – og om der overhovedet bør være en. Det føles også som om, der er noget potentiale, der går til spilde her også.</p>
<h2 id="brainbow" tabindex="-1"><a href="https://brainbow.studio" class="external-link">Brainbow</a></h2>
<p>Udover de ovenstående har jeg haft enkelte opgaver i mit beskedne <em>one-man product studio</em>. Kort efter Schøts Dæmonkrati, lavede jeg <a href="https://schoetministeriet.dk/valgtest/0" class="external-link">Schøtministeriets Valgtest</a>, som blev taget godt imod. Jeg skal også lave resten af Schøtministeriets hjemmeside, men også det har jeg svært ved at mønstre gejst omkring. (Forkælede idiot, ikk?)</p>
<p>Jeg ville ønske, jeg kendte nogle freelancere, der kunne omtrent det samme som mig, som jeg kunne uddelegere til. Men jeg synes, de er svære at finde. Sig til, hvis det er dig, eller du kender en.</p>
<h2 id="mikkel-malmberg" tabindex="-1"><a href="https://mikkelmalmberg.com" class="external-link">Mikkel Malmberg</a></h2>
<p>Jeg er blevet bedre til at sige nej, men det er stadig noget, jeg øver mig på.</p>
<p>I foråret var jeg gæst i så mange radio- og tv-programmer om NFT’er, at jeg til sidst lavede en regel til mig selv om, at jeg <em>skulle</em> sige nej til <strong>alt</strong>. Jeg har holdt et par oplæg og foredrag i år. Det er sådan noget, der synes som en let opgave for mig (skal jeg ikke engang få dem til at grine?!) men det ender altid med at tage mere tid og - ikke mindst - energi, end jeg regner med. Så nu har jeg lavet en ny regel om, at det heller ikke er noget, jeg gør. <em>Jeg holder ikke foredrag og oplæg.</em> Jeg elsker sådan nogle regler, for de gør det nemt for mig at sige nej.</p>
<p>Jeg har siden foråret betalt en rar fyr, der hedder Martin, for at være min personlige træner. Det har overrasket mig, hvor meget jeg nyder, at blive og være <em>stærkere</em>. Og bevares, det er kun fordi, udgangspunktet var så lavt, at jeg kan kalde mig dét. Det er en fornøjelse at mærke min krop ændre sig langsomt mod det bedre og en fornøjelse at have Martin til at fortælle mig hvordan og hvor mange gange og nænsomt løfte mig de sidste centimeter af de sidste pull-ups. Det burde jeg have gjort for længe siden, men i det mindste gjorde jeg det i år.</p>
<p>Min største musikalske opdagelse i 2022, var britiske Fred again… Jeg har ikke tal på, hvor mange gange jeg har lyttet til <a href="https://www.youtube.com/watch?v=c0-hvjV2A5Y&amp;t=2446s" class="external-link">det her set</a> og hans andre udgivelser.</p>
<p>Da Ruben spurgte mig, om jeg ville optræde 2 gange med ham og Jonas i efteråret, tænkte jeg hurtigt “tænk hvis jeg sagde ja” og gjorde det. Det var rart at bruge tid med gamle, nære venner. Jeg var nervøs, men da første joke havde fået første grin, kunne jeg mærke, hvordan jeg helt roligt faldt tilbage i rollen. Det gik fint, og jeg gik derfra med en god oplevelse, men ingen videre lyst til at sætte blus under den karriere igen.</p>
<p>Jeg</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/67</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/67</guid>
            <pubDate>Wed, 21 Dec 2022 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Convert transparent WebP video to HEVC MP4 with alpha channel]]></title>
            <description><![CDATA[<p>Converting the other direction <a href="https://rotato.app/blog/converting-videos" class="external-link">is widely documented</a> but going in the other direction required a little more digging. Here’s how I did it:</p>
<pre><code class="hljs language-sh">$ <span class="hljs-built_in">mkdir</span> frames
$ ffmpeg -vcodec libvpx-vp9 -i INPUT_FILE.webm -pix_fmt rgba frames/%04d.png
$ ffmpeg -r 24 -i frames/%04d.png -c:v prores_ks -pix_fmt yuva444p10le OUTPUT.mov
</code></pre>
<p>That’ll give you a ProRes4444 version of it. To convert further, I used a macOS built-in service.</p>
<ol>
<li>Right-click on <code>OUTPUT.mov</code></li>
<li>Select <code>Services &gt; Encode Selected Video Files</code></li>
<li>Select <code>HEVC 1080p</code> as the setting and check <code>Preseve Transparency</code></li>
</ol>
<p>This should give you a <code>OUTPUT-1.mov</code> which you can rename to <code>.mp4</code>.</p>
<p>Using transparent video is <a href="https://rotato.app/blog/transparent-videos-for-the-web" class="external-link">easy and widely supported these days</a>. Fun!</p>
]]></description>
            <link>https://mikkelmalmberg.com/2022/2022-09-21-convert-from-webp-to-hevc-mp4</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2022/2022-09-21-convert-from-webp-to-hevc-mp4</guid>
            <pubDate>Wed, 21 Sep 2022 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Den perfekte storm]]></title>
            <description><![CDATA[<h1 id="den-perfekte-storm" tabindex="-1">Den perfekte storm</h1>
<p>Inden du a) falder ned af stolen over at høre fra mig eller b) automatisk lukker ørerne (øjnene?) fordi “metavers” og “krypto”, så lad mig hurtigt nævne at jeg også er både forskrækket og overstimuleret. Men…</p>
<p>Der er gået lidt tid siden sidst. Jeg lavede <a href="https://mikkelmalmberg.com/issues/62" class="external-link">én NFT</a>. Så snublede jeg mig ind i <a href="https://www.euroman.dk/podcast/mikkel-tjente-165-000-kr--paa-tre-dage-skal-din-naeste-investering-ogsaa-vaere-i-nfter" class="external-link">Loot</a>. Så lavede jeg selv <a href="https://cranes.supply/" class="external-link">en samling</a>. <a href="https://mobile.twitter.com/slimjimstudios" class="external-link">James</a> så den og <em>slidede ind i min dm</em>. Så solgte vi 5.000 <a href="https://www.slimhoods.com/" class="external-link">SlimHoods</a>. SlimHoods blev til <a href="https://mobile.twitter.com/RNDMCHARACTERS" class="external-link">Random Character Collective</a>. Sammen med <a href="https://mobile.twitter.com/lucas_zanotto" class="external-link">Lucas</a> solgte vi 5.000 <a href="https://moodrollers.com/" class="external-link">MoodRollers</a>. Det var lige heromkring, jeg stoppede i mit job hos Elastic. <a href="https://mobile.twitter.com/motionmarkus" class="external-link">Markus</a>’ <a href="https://invisiblefriends.io/" class="external-link">Invisible Friends</a> voksede til det mest hypede NFT-projekt over vinteren og i marts solgte vi 5.000 af dem.</p>
<p>Jeg har lært og stresset og lært mere og tjent en mindre formue. Jeg har købt og solgt og købt igen. Har reddet højt på den grønne bølge og rutsjet ned igen, hver gang priserne faldt. Jeg faldt pladask for digitalt ejerskab, kunst og kultur, og blev taget imod med åbne arme som en bredt favnende udvikler, der tilmed var rar og ikke ude på at snyde nogen.</p>
<p>Det var den perfekte storm for en Mikkel Malmberg. Min hjerne er eksploderet dagligt, og jeg har elsket det hver gang. For hvert radiointerview faldt jeg dybere og dybere ned i overbevisningen, til jeg nu ikke længere kan se udover kanten.</p>
<p>Blockchain sagde mig stort set intet, da det mest var mønter. Da jeg så, det også kunne være <a href="https://unisocks.exchange/" class="external-link">sokker</a>, blev jeg nysgerrig. Da jeg fandt ud af, det kunne være kunst, kultur og identitet, blev jeg overtalt.</p>
<hr>
<p>Jeg lover, jeg snart skriver igen. Denne gang blot et livstegn og en opsummering. Håber du har det rigtig godt, ven ❤️</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/66</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/66</guid>
            <pubDate>Sat, 28 May 2022 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Configure a hyper key with VIA configurator]]></title>
            <description><![CDATA[<p>It’s 2021 and you have a <a href="https://reddit.com/r/mechanicalkeyboards" class="external-link">mechanical keyboard</a> that’s configurable with <a href="https://www.caniusevia.com/" class="external-link">VIA</a> and you want one of your keys to be a <em>hyper</em> key. Meaning it should be the same as holding <kbd>⌃⌥⌘⇧</kbd> all at once.</p>
<p>It’s possible! Set the key to <em>Any</em> and put <code>MT(MOD_HYP, KC_NO)</code> as the key code.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2021/2021-08-26-hyper-key-in-via</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2021/2021-08-26-hyper-key-in-via</guid>
            <pubDate>Thu, 26 Aug 2021 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Indad]]></title>
            <description><![CDATA[<h5 id="%2365-%E2%80%93-2021.06.05-%E2%80%93-indad-%E2%80%93-l%C3%A6s-online" tabindex="-1">#65 – 2021.06.05 – Indad – <a href="https://mikkelmalmberg.com/issues/65" class="external-link">Læs online</a></h5>
<p>Der er et citat a la,</p>
<blockquote>
<p>Ingen ligger på deres dødsleje, og tænker, “gid jeg havde brugt mere tid på arbejdet.”</p>
</blockquote>
<p>Jeg aner ikke, hvor det stammer fra, men det er en klassiker i artikler med titler som “25 rules to live by from old, basically already dead, people”.</p>
<p>Bag det ligger en god pointe: Brug din tid på dem og det, du holder af i stedet for at slave afsted på kontoret for at nå en eller anden arbitrær deadline, sat af din chef, fordi han havde et hul i sin Outlook-kalender der. Før du ved af det, er dine børn ikke børn, og de eneste der ringer, er uambitiøse journalister, der vil skulke sig til en artikel.</p>
<p>Jeg stødte på citatet igen i dag, og i et eller andet forsøg på en form for hyper-tunet pragmatisme, spurgte jeg, <em>indad</em>, om det nu i virkeligheden også altid er rigtigt?</p>
<p>Det er sandt, at det ville være ærgerligt at gå glip af børn eller samlevere, fordi man tager all-nighters på kontoret, <em>working for the man</em>. Men der er vel en modpol?</p>
<p>Jeg er i virkeligheden mere bange for at ende på mit dødsleje, fortrydende at jeg ikke brugte <em>mere</em> tid på arbejdet.</p>
<p>Selvfølgelig ikke på bekostning af familien. Men de der timer, der er til overs, når børnene (langt om længe) er faldet i søvn.</p>
<p>Alt er kommet nemt til mig i mit liv. Jeg har praktisk talt ikke mødt en eneste udfordring. Altså sådan en <em>rigtig</em> udfordring. Det er umuligt at sige, om jeg ville have overkommet en, havde den meldt sig. Det har efterladt mig med en hjerne og arbejdsmoral, der er styret udelukkende af, hvad der falder den ind. Jeg har kun fat i min opmærksomhed med fingerspidserne, og kan med nød pege den i ønsket retning. Enten arbejder den med 3x hastighed, fordi den er på sporet eller med 0,2x hastighed, fordi den tænker på noget andet.</p>
<p>Det har frustreret mig, og det har frustreret folk, jeg har arbejdet sammen med.</p>
<p>Derfor er min frygt nærmere at kigge tilbage på mine forrige 80 år og tænke, “hvorfor gjorde du dig egentlig aldrig umage, Mikkel?”</p>
<p>Jeg arbejder for Elastic, ansat til lige omkring 37 timer om ugen, og det er ikke dem, jeg har tænkt mig at fordoble. Det er dejligt, det er et job, flotte penge, gode forhold, dygtige kollegaer, hov, så var klokken 16, vi ses i morgen.</p>
<p>Det <em>arbejde</em> jeg frygter for, er det andet. Mit <em>rigtige</em> arbejde.</p>
<p>Introspektion har ledt mig til, det jeg skal, er at underholde. Det er ikke så mærkeligt, jeg faldt så hurtigt i stand-up, da jeg prøvede det, for det er den mest intense version af <em>at underholde</em>. <em>Sig noget sjovt. Nu.</em></p>
<p>Jeg elsker også at <em>lære ting</em> og ikke mindst at <em>lave ting</em>. Men spørger jeg mig selv <em>hvorfor?</em> og <em>hvorfor?</em> igen, så ender Sokrates altid med konklusionen, at det er for at vise frem.</p>
<p>(Jeg føler, jeg her bør undskylde for at være et skrækkeligt menneske. Det er blot min natur.)</p>
<p>Jeg ser i virkeligheden mine “sideprojekter”, 10er, Kortsluttet, Sprinkles, nyhedsbrevet her, som underholdning. Nogle af dem er nemme at forstå i den kontekst, andre skal måske forklares. Jeg, Mikkel, viser noget, jeg kan, og verden, publikum, kigger eller ler eller klikker på knapperne – og universet opsnapper energien, og putter det direkte tilbage i hjernen på mig. Det er smukt. Den sidste ramme i <em>universe brain</em> meme’et – det er mig, der modtager applaus.</p>
<p>Det sidste års tid har min opmærksomhed været opsat på at blive god til skydespil. Og det er jeg blevet, bevares. Min superkraft, hvis jeg har en, er at jeg er god til at lære ting til husbehov. Du ved: <em>jack of all trades, master of none.</em> Og lod jeg min hjerne løbe efter sine lyster, som en tegneseriehund efter et egern, ville den sige, vores hovedmål i livet, lige nu, var at blive rigtig meget, endnu mere, bedre til Call of Duty.</p>
<p>Højtempo skydespil er vidunderlige for min hjerne. Det er nærmest meditativt, en form for zen, for det kræver, du ikke tænker på andet imens. Det kræver fuld koncentration. Og samtidig er det fyldt med små sejre, skyd en modspiller, saml et godt våben op. Mikro- og makrobelønningerne flyder i en sanselig overdådighedsfest, du ikke kan kigge væk fra. Der er så mange dele af det, man kan øve sig i, blive god til, og måske endda vise frem.</p>
<p>Tilsat det, har jeg genfundet nogle gamle venner, som jeg spiller med, mens vi taler om løst og fast og sommetider meget konkret om de fjender, der skyder på os.</p>
<p>Det kunne, med flid og lidt held, blive en karriere. At underholde med skydespil. Det lyder skørt, hvis du ikke er inde i det. Men sådan vil du nok også kunne overraske mig med, hvordan én af dine interesser er nogens levevej. Yay, internet.</p>
<p>Tænker jeg det til ende dog, er det ikke det, jeg vil.</p>
<p>Og det er måske i virkeligheden min udfordring. At lede min opmærksomhed i den rigtige retning. I retningen af flere timer på kontoret. I retningen af at gøre mig umage. Og gøre mig umage med de rigtige ting.</p>
<p>Så tiden ikke kommer til at gå og gå, år efter år, indtil jeg bliver ringet op af en doven fremtidsjournalist og spurgt, om der er noget, jeg fortryder på mit dødsleje, og jeg vil fortælle dem, at jeg skulle have brugt nogle flere timer på kontoret.</p>
<hr>
<p>🖥 Mikkel</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/65</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/65</guid>
            <pubDate>Fri, 04 Jun 2021 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Det ser svært ud, det vil jeg have]]></title>
            <description><![CDATA[<h5 id="%2364-%E2%80%93-2021.05.12-%E2%80%93-det-ser-sv%C3%A6rt-ud%2C-det-vil-jeg-have" tabindex="-1">#64 – 2021.05.12 – Det ser svært ud, det vil jeg have</h5>
<p>Jeg kan huske, hvornår jeg købte mit Ergodox. Ikke da jeg <em>faktisk</em> bestilte det, men det øjeblik hvor jeg vidste, jeg måtte eje sådan et keyboard.</p>
<figure><a href="https://www.instagram.com/p/BixmPq6lUAU/" class="external-link"><img src="https://s3.brnbw.com/31906112_156513648527233_7096324367235153920_n-bUT65PHo5jTRMy1pJ6msTpebZkrInd9OdpJfl7RsQ7QuBWyGjxZW2D9tvIpdm2x4QoNvsZldpFhcSvncfgEMyrej1nQ8EWwqvMoI.jpg" alt="image"></a></figure>
<p>At se dette billede af <a href="https://mintlodi.ca" class="external-link">Susans</a> keyboard overtalte mig øjeblikkeligt til at kaste min bastardversion af <em>ti-finger-systemet</em> op i luften og lade fingerene dumpe ned, anstrengte og krampende, på de to-delte <em>men korrekte</em> pladser – og efter en uge eller to, helt uden smerter i hverken led eller hjerne.</p>
<p>Det er sommetider sådan, jeg vælger værktøjer. Hvis det ser svært ud, så skal jeg have det. Således keyboardet, således vim.</p>
<hr>
<p>Det er interessant, hvordan vi vælger vores værktøjer. Hvilke kriterier der tæller. Hvilke grunde vi fortæller os selv og andre.</p>
<p>Jeg har længe villet betale tilbage for alle de <a href="https://usesthis.com" class="external-link">usesthis.com</a>-interviews og <a href="https://uses.tech" class="external-link">/uses</a>-sider, jeg har læst, og for nyligt fik jeg taget mig sammen:</p>
<p>På <a href="https://mikkelmalmberg.com/uses" class="external-link">mikkelmalmberg.com/uses</a> kan du læse om, hvad jeg bruger, når jeg gør min ting ved computeren. Hvis altså du, som jeg, synes den slags er interessant.</p>
<blockquote>
<p>Seeing and reading about other people’s setups is a guilty pleasure of mine. It’s the sort of meta-work that can feel like a productive investment to find juuust the right font when in reality the font doesn’t matter at all — it’s the words, dummy.<br>
Yet – it’s interesting to see how others conduct their work and the tools they use. We spend so much time in front of our screens (so much more so this last year) so might as well make ourselves comfortable. And so, here are some of the things I use.</p>
</blockquote>
<p>Ses derovre.</p>
<p>🖥 Mikkel</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/64</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/64</guid>
            <pubDate>Wed, 12 May 2021 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Sammenkvast kuvert]]></title>
            <description><![CDATA[<h5 id="%2363-%E2%80%93-2021-04-27-%E2%80%93-sammenkvast-kuvert" tabindex="-1">#63 – 2021-04-27 – Sammenkvast kuvert</h5>
<p>Den første computer jeg købte, byggede jeg selv. Alle delene individuelt udvalgt og betalt for med penge, jeg havde tjent som flaskedreng i Kvickly Vestbyen.</p>
<p>Det må have været i 2001 eller 2002.</p>
<p>I 2007 købte jeg min første MacBook. Den hvide, i plastik, der var først med overgangen til Intel-processorer. Man kunne skifte ram og harddisk i den. Åbne den op med en helt almindelig skruetrækker. Det var vist den sidste MacBook, man kunne det med.</p>
<p>Jeg havde nærmest glemt, hvad delene i en computer hedder efter 15 års tid<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> med Macs, hvor det bare ikke har været så relevant. Jeg nød at købe så små og sammenkvaste bærbare så muligt, og elskede, at jeg bare kunne smide dem i <a href="https://youtu.be/T9huJCGhPMQ?t=200" class="external-link">en kuvert</a> og løbe om bord på toget for at fare ud i livet som ungkarl.</p>
<p>Apples nye <a href="https://www.apple.com/dk/imac-24/" class="external-link">iMacs</a> er ekstremt sammenkvaste. De er som Iben Hjejle, der er ikke ét eneste gram fedt for meget<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.</p>
<p>CPU, GPU, RAM, harddisk? De sidder allesammen på den samme <em>system-on-a-chip-chip<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup></em>, Apples egen M1. Jeg synes, de er enormt rappe.</p>
<p>Men…</p>
<p>Det seneste år, halvandet, er jeg faldet pladask tilbage i en gammel hobby: førstepersons skydespil. Mere specifikt Battle Royal-baserede multiplayerspil. 100+ spillere kastes ud over en ø. Sidste mand i live vinder. Og til den slags er det nødvendigt med en PC. En dedikeret grafikprocessor, en højfrekvens skærm, <em>Windows</em>.</p>
<p>Og dermed kom en genopdagelse af en af glæderne ved <em>computer</em>. Jeg har bygget og ombygget. Jeg har overclocket og undervoltet. Jeg har deshroudet og bestilt 3d-printede mods på Ebay. Jeg har set flere YouTube-videoer med grafer over termisk performance, end jeg nogensinde har set grafer før.</p>
<p>At bygge – og genbygge – min gamer-PC var en vidunderlig genopdagelse af, hvor og med hvad man går på kompromis, når man køber sin sammenkvaste Mac. Men også en fornyet beundring af, hvor stort et vidunder det er, at de får så meget performance ud af så lidt.</p>
<p>Tænk, de behøver ikke engang være grimme nu om dage.</p>
<figure><img src="https://s3.brnbw.com/IMG_6939-1-LQfHhTUOJXUdyvFrETAR1eYbl07BX14XElRVoodYXpaKdwFXhs0CXYwmRWi3crdSzYIb2AXIbYLzlP2TSr6tK17m2eRFjIhXKnEp.jpeg" alt="PC"></figure>
<p>Jeg er helt skuffet over, hvor godt den virker nu, så jeg ikke får lov at bygge mere.</p>
<hr>
<p>Men Windows, hva? Hvorfor sker der intet der? Den eneste forbedring, der er sket de sidste 20 år er, at man nu kan køre <a href="https://en.wikipedia.org/wiki/Windows_Subsystem_for_Linux" class="external-link">noget</a> <em>der ikke er Windows</em> ovenpå.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>omg tid flyver <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Casper og Mandrilaftalen, jo. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>chip chip churra! <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/63</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/63</guid>
            <pubDate>Tue, 27 Apr 2021 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[sapanoroc]]></title>
            <description><![CDATA[<h5 id="%2362-%E2%80%93-2021-04-19-%E2%80%93-sapanoroc" tabindex="-1">#62 – 2021-04-19 – sapanoroc</h5>
<p>Forleden nat gik jeg rundt og rundt i min stue. Jeg havde min 1-årige søn med, som jeg håbede på, ville falde i søvn, igen. En travetur i armene plejer at kunne gøre det.</p>
<p>Min hjerne opfører sig mærkeligt om natten. Halvt vågen, halvt sovende, fikserer den sig på tanker. Sommetider føles det som en besættelse, andre gange er det et omkvæd af en sang, der kører i ring<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
<p>Den nat sad noget, jeg havde tweetet, fast:</p>
<blockquote class="twitter-tweet"><p lang="da" dir="ltr">Jeg forstår ikke. Det er jo også &quot;nemt&quot; at stjæle en Snickers. Det gør ikke tingene mindre ulovlige, at de er nemme?<br><br>Jeg synes, den her løsning er tilstrækkelig. Hvis folk vil snyde, skal de finde ud af at snyde. Uanset om vi så puttede de pdf&#39;er på blockchain.</p>&mdash; Mikkel Malmberg (@mikker) <a href="https://twitter.com/mikker/status/1380071516910542849?ref_src=twsrc%5Etfw">April 8, 2021</a></blockquote>
<p>Det drejede sig om, at det var <em>“nemt”</em> at forfalske de der Coronapas-pdf’er.</p>
<hr>
<p>3D-modellering er én af de emner, jeg skuler til. Én af de ting, jeg føler, jeg burde være bedre til. Som en halvskaldet Pippi Langstrømpe er jeg velsignet (og forbandet) med opfattelsen af, at den eneste grund til jeg ikke er ekspert i noget, er, at jeg ikke har prøvet endnu<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.</p>
<p>I mine tidlige teenageår, var der en periode, hvor jeg forsøgte mig med 3D Studio Max. I de år var der en periode med alle kreative udtryksformer. Det var dengang <em>warez</em> flød som en lunken, ulovlig sovs, man blot kunne stille sin <em>knapt-nok-én-gigahertz-computer</em> ind under og lade den drukne i muligheder. En teenager som mig, kunne nemt have for flere 100.000 kroner professionelt henvendt software uden at have betalt en krone. I dag fås endnu mere avancerede programmer gratis – <em>lovligt</em> gratis.</p>
<p>Jeg husker intet om de ting, jeg byggede. Jeg husker tydeligt min ven <a href="https://www.instagram.com/p/CKCSHoQB_IK/" class="external-link">Frederiks</a> værk <strong>“Fogh, barbaren”</strong>. Han havde lavet en hulemand, som tilfældigvis endte med at ligne Anders Fogh. Irakkrigen hærgede. Det var perfekt.</p>
<hr>
<p>Da jeg så <a href="https://www.hyumankind.com" class="external-link">Hyam</a>’s <a href="https://twitter.com/hyumankind/status/1370919107256676352" class="external-link">FRAGMENTS-serie</a> kunne jeg mærke <a href="https://www.blender.org" class="external-link"><code>Blender.app</code></a> ryste i <code>/Applications</code>. <em>Lær mig, brug mig</em>, lød en svag stemme. Nu havde jeg en idé.</p>
<figure><a href="https://www.hicetnunc.xyz/objkt/31586" class="external-link"><img src="https://s3.brnbw.com/0001-0060-3-PgcE1Sd4U6n7YiibFuDsQQrAx17Nhze36SXuE0GxLEm6g7L5lIQwSSZyUv8oxmS4i3fKrN4ZsH9Su5cCO1VooCaWOdp3IGu7BmwQ.gif" alt="sapanoroc"></a></figure>
<p>Jeg har sat det her kunstværk til salg.</p>
<p>Udgivet som en Non Fungible<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup> Token, <em>NFT</em>, på Tezos blockchainen. Der findes kun <a href="https://www.hicetnunc.xyz/objkt/31586" class="external-link">ét eksemplar og det er til salg</a> for 10 <a href="https://www.coinbase.com/price/tezos" class="external-link">$XTZ</a>, lige nu godt 370 kroner. I morgen enten 370.000 eller 10. Hvem ved med krypto.</p>
<p>NFTer bringer begrænsning til det ubegrænsede internet. Pludselig kan noget kalde sig <a href="https://foundation.app/NyanCat/nyan-cat-219" class="external-link">den originale Nyan Cat</a>, og blive solgt for lige under 4,5 million kroner, selvom du længe har kunnet nyde den i <a href="https://www.youtube.com/watch?v=SkgTxQm9DWM" class="external-link">4K-opløsning</a> med tilhørende musik i 10 timers intervaller.</p>
<p>Der er gået et år med Coruñes og nedlukning. De absurd rige ikke har kunnet købe de mange yachter, de ellers plejer. Aktie- og kryptokurserne når nye højder. Pengene brænder i deres lommer. Hvad bedre at bruge dem på end lidt moderne kunst.</p>
<p>Men krypto er sort. Udvindingen af Ether, ETH, er, ligesom O.G. Bitcoin, stadig bygget op omkring et ublu forbrug af computerregnekraft.</p>
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">imagine if keeping your car idling 24/7 produced solved Sudokus you could trade for heroin</p>&mdash; kerala tankie (@Theophite) <a href="https://twitter.com/Theophite/status/1030225104234373121?ref_src=twsrc%5Etfw">August 16, 2018</a></blockquote>
<p>Tezos, den blockchain hicetnunc er bygget op om, er <a href="https://medium.com/tqtezos/proof-of-work-vs-proof-of-stake-the-ecological-footprint-c58029faee44" class="external-link">foruden de gængse blockchains absurde energiforbrug</a>, fordi værdien baserer sig på <em>Proof of Stake</em> i stedet for <em>Proof of Work</em>. Ethereum er så vidt jeg ved igang med at konvertere sit eget netværk til <em>-Stake</em>. Det hjælper på det min forbeholdnenhed for at gå for alvor om bord deri.</p>
<hr>
<p>Ideen om at blande coronapas og NFTer på en alternativ blockchain var på en eller anden måde <em>for</em> 2021-agtig til, jeg kunne lade den være.</p>
<p>NFTerne og deres priser synes hysteriske. Der er uden tvivl tale om et <em>gold rush</em>, og mon ikke <del>mange</del> de fleste ender med værdilæse jpegs i processen. Jeg har ikke fået afsat mit mesterværk endnu.</p>
<p>Til gengæld har jeg fneset gennem hele processen. Både fordi det her lige præcis er den grad af civil ulydighed, det kan blive til for en tørvetriller som mig. Men også fordi, det var vidunderligt at åbne et 3d-program igen og have et mål. Det animerede coronapas er måske morsomt nok i sig selv, men i lyset af at skulle være et kunstværk, har det pludselig karakter af noget helt <em>andet</em>.</p>
<p>Og det er essencen af, hvad NFT-teknologien bringer. Der er stadig udfordringer, med ejerskab og med Ethereums stadige energiforbrug (endnu), men tilbagekomsten af det unikke bringer et manglet lag til vores online eksistens. Ejerskab er en essentiel del af, hvordan vi fortæller historien om os selv. I vores kapitalistiske, produktfikserede liv, <em>er vi i høj grad, hvad vi køber</em>.</p>
<p>Forestil dig din <em>wallet app</em> i fremtiden både holder dine penge, kryptobaserede måske, men også beviser på egendele, der fortæller historien om dig og din smag. Collector’s Edition af dit favoritbands’ debutplade. Et originalt værk af en 3d-kunstner. Billetten fra den der koncert, du var til med din bedste ven, inden I gled fra hinanden. Et værk, som lever på blockchain, hvor det er kodet til først at <em>åbne sig</em> ved midnat, nytårsaften 2031. Et bevis på, du har adopteret en truet abe i reservat. Et kunstværk som skifter udseende efter, hvor meget af indlandsisen, der er smeltet. En vielsesring.gif, som kun findes i 2 eksemplarer.</p>
<figure><img src="https://s3.brnbw.com/a05f392d4806eaedf970a04d240f681c-JVkEoXWzue3fRGtxPC3FWsb9h4kVCpVV0uDk33E1jmy560hF8udGkno8WpN5MthafqSQMJCduaoWUkTy4d7ZUgwRJ3iSbDRUNpOu.gif" alt="ring.gif"></figure>
<p>Jeg er hverken fanatiker eller hater af krypto, men det er længe siden, jeg har haft det så sjovt med tanken om at lave noget til internettet.</p>
<hr>
<p>Længe siden! Jeg elsker at skrive til jer, men det er svært at få det gjort, når der også er kunst, der skal skabes. Husk, jeg altid gerne vil høre, hvad du synes, om det jeg skriver. Jeg vil også gerne bare høre, hvordan du har det. Hvordan har du det? Alt vel?</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Men hvem har du tænkt dig du sku’ vær’ for mig? <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Det er den ultimative hvide mand. Hverken holdt tilbage af samfund eller sin egen realitetssans. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>Det betyder <em>ikke-svampet</em>. Jo, det gør. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/62</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/62</guid>
            <pubDate>Mon, 19 Apr 2021 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Fix macOS Big Sur being stuck in Do Not Disturb]]></title>
            <description><![CDATA[<p>For some reason, since upgrading to macOS Big Sur, my Do Not Disturb status seems to get stuck. However many times I turn it off it always mysteriously ends up being on again. Which I of course first realise after missing notification for a few hours, having been unwantingly extra productive. Can’t have that!</p>
<p>Thanks to <a href="https://www.reddit.com/r/MacOS/comments/kcvdn4/cannot_turn_off_the_do_not_disturb_on_big_sur_is/gj04n0t/?utm_source=reddit&amp;utm_medium=web2x&amp;context=3" class="external-link">this Reddit comment</a> the setting is set in one or more plists.</p>
<p>Use this one liner to set it to false:</p>
<pre><code class="hljs language-bash"><span class="hljs-keyword">for</span> f <span class="hljs-keyword">in</span> `<span class="hljs-built_in">ls</span> ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist`; <span class="hljs-keyword">do</span> defaults write <span class="hljs-variable">$f</span> doNotDisturb 0; <span class="hljs-keyword">done</span> &amp;&amp; killall NotificationCenter
</code></pre>
<p>Aaah, the overwhelming feeling of drowning in notifications is back.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2021/2021-03-02-fix-broken-dnd-on-big-sur</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2021/2021-03-02-fix-broken-dnd-on-big-sur</guid>
            <pubDate>Tue, 02 Mar 2021 06:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Smart]]></title>
            <description><![CDATA[<h5 id="%2361-%E2%80%93-2020-11-14-%E2%80%93-smart" tabindex="-1">#61 – 2020-11-14 – Smart</h5>
<p>For ikke skulle tage stilling til alting altid, kan du med fordel tage stilling én gang, tidligt, helst inden du ved for meget. Så har du din holdning, og behøver ikke være i tvivl. Det er trygt at være stædig.</p>
<p>Således har jeg altid skyet “Smart devices”. Udover selvfølgelig min -phone, har mine elpærer, termostater og køleskabet været vidunderligt dumme, mens Internet of Things skabte overskrifter om rædderlig sikkerhed til gengæld for kulørt lys og stemmeaktiverede assistenter<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
<p>Og så ved jeg ikke helt, hvad der skete, for jeg havde pludselig købt 2 Philips Hue-pærer, så jeg kunne scripte, at lyset i loftet automatisk slukker, når mit møde-script også tænder mit webcam-lys.</p>
<p><a href="https://sive.rs/opposite" class="external-link">Derek Sivers</a> foreslår, at du stiller dig selv spørgsmålet, hver gang du tilbyder en holdning: synes jeg nu også i virkeligheden stadig det? Begge sider af en sag er som regel sande på hver deres præmisser.</p>
<p>Således har jeg for nyligt fundet ud af, der <em>var</em> plads til nogle Smart-produkter i mit liv, og min loftslampe slukker og tænder nu automatisk før og efter mine møder.</p>
<figure><img src="https://s3.brnbw.com/Screenshot-2020-11-10-at-13.58.19-VJSb7MHKz2AJX644vlmqRbiXNS3e08pBDh1LpPzRAhMfC025D0lU15R7I6ThmXHVS8kmaFs0KkbYEwWVGNdxR6VEDb4EhXM1cDVj.png" alt="Automator.app"></figure>
<figure><img src="https://s3.brnbw.com/Screenshot-2020-11-14-at-21.40.46-w8zgNOakNqJ99t0VewkS4ATkwiccN8BHJ7k7jFzTqPpLpyflPWwrO0Nq3DQE78C36Ep8Qge1gAr2FgxFsHEjjKU2btihrBwNFhid.png" alt="index.js"></figure>
<p>Ok, ok, jeg giver mig. Smart er <em>smart nok</em>. Men jeg føler mig stadig som en idiot, hver gang jeg skal <em>tale</em> til en computer.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Pestilenser. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/61</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/61</guid>
            <pubDate>Sat, 14 Nov 2020 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[En kontrolleret eksplosion]]></title>
            <description><![CDATA[<h5 id="%2360-%E2%80%93-2020-10-05-%E2%80%93-en-kontrolleret-eksplosion" tabindex="-1">#60 – 2020-10-05 – En kontrolleret eksplosion</h5>
<p>Når jeg laver ting, nyder jeg allermest de første spadestik. <em>Green field</em>, hvor få ting endnu ligger fast, og det gælder om at bevæge sig så hurtigt som muligt fra en ide til en <em>teknisk bevist</em> ide.</p>
<p>Hvor skal man starte? Jeg starter som regel med et brag. En form for kontrolleret eksplosion, hvor én enkelt hypotese skal bekræftes. Én lille del af ideen, tæt på kernen. Viser det sig, min hypotese er forkert, og det enten er umuligt eller mere besværligt end antaget, er det med at nå til den erkendelse hurtigt, så jeg kan lægge det fra mig igen.</p>
<p>(For <a href="http://latr.fm" class="external-link">latr.fm</a> var det bookmarklet’en til at tilføje episoder. For 10er var det motoren til at hæve penge. For Sprinkles var det en server i Swift med HTTPS på <code>localhost</code>. For Moves var det at flytte ét vindue fra en anden app. For funnn var det en overlay med kreditkortfelter fra Stripe.)</p>
<p>Hvor skal man <strong>ikke</strong> starte? Det er nemt at falde i fælden, hvor man bruger de første par uger på at vælge og overveje programmeringssprog, framework, build pipeline, front end strategi og alt det, der nok skal dukke op på et tidspunkt.</p>
<p>I en verden hvor de udmærkede muligheder er uendelige i antal, kan man bruge uendelig tid på at overveje uden nogensinde at komme videre.</p>
<p>Det er derfor, du starter med en kontrolleret eksplosion. Forestil dig, vandet stiger, og du skal bygge er tårn. Så bygger du kun lige præcist så sikkert, at det holder, og du bruger ikke for meget tid på at overveje, hvilken type stol, du vil stable. Målet er at komme opad, ikke at vælge stol.</p>
<p>Jeg er selv forfalden til at ende i en evig forberedelsesfase, men jeg ved nu, det er det forkerte sted at bruge energien. Tag bare det, du kender. Hvis der ikke er noget i vejen med PHP, så er der ingen grund til at bruge andet. Der er heller ikke noget i vejen, hvis du bruger andet, og det er pointen: det allerførste vi skal, er at bevise vores hypotese. Derefter kan vi polstre og sikre det vaklende tårn og tilføje alle de funktioner, vi mangler.</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/60</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/60</guid>
            <pubDate>Mon, 05 Oct 2020 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Kopi]]></title>
            <description><![CDATA[<h5 id="%2359-%E2%80%93-2020-09-13-%E2%80%93-kopi" tabindex="-1">#59 – 2020-09-13 – Kopi</h5>
<p>Sommetider fortæller venner og bekendte mig en ide til et produkt eller en service, og jeg kan næsten altid komme på et eksisterende projekt, der enten ligner eller kan det samme. Det slår dem ud, og de siger opgivende, at, nå, så nytter det jo ikke noget. Men det er der ingen grund til at tænke.</p>
<p>Det gik op for mig forleden, at alle de services og produkter, jeg har, er kopier af eksisterende ideer.</p>
<p>10er er (mere eller mindre) Patreon. funnn er Gumroad. <a href="http://Latr.fm" class="external-link">Latr.fm</a> er Huffduffer. Sprinkles er dotjs. Moves er Zooom2.</p>
<p>Facebook, Instagram, Netflix, Convertkit, Ghost, Kristendommen. Ingen af dem, var den første af deres slags, men det har ikke holdt dem tilbage.</p>
<p>I virkeligheden er det en forrygende ide, at bygge en kopi af noget, du kender. Du behøver ikke engang bygge det hele. Du skal bare bygge den ene, essentielle ting, du føler, mangler et sidste twist for at være <em>rigtig</em> god. Det er rigeligt at være bedre på bare ét punkt.</p>
<p>Originalen lider højst sandsynligt af, at være fanget mellem en halv brugerskare, der har vænnet sig til, tingene er forkerte men <em>forkerte som de altid har været</em> og en anden halvdel, der er frustrerede og klar til at skifte.</p>
<p>Og der er én ting, de andre ikke har: Dig og din smag, dit take og din tilgang. Du er god, og der er masser af plads til dig og dit på internettet. Også selvom det ligner noget andet.</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/59</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/59</guid>
            <pubDate>Sun, 13 Sep 2020 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Hjernesuppe]]></title>
            <description><![CDATA[<h5 id="%2358-%E2%80%93-2020-08-06-%E2%80%93-hjernesuppen" tabindex="-1">#58 – 2020-08-06 – Hjernesuppen</h5>
<p>Jeg gider ikke kommentere på, hvor længe siden det er, jeg skrev sidst, eller hvilket sprog det var på. Ingen detaljer, vi kører:</p>
<hr>
<p>Nogle mener, du lige så godt kan lade være med at læse en bog, hvis du ikke tager noter undervejs.</p>
<p>Det lyder rigtigt. Vi kan jo umuligt opbevare en hel, for ikke at tale om adskillige, bøgers viden i hovedet hele tiden. Jeg kan knapt nok huske, hvad jeg læste for en time siden. Hvis ikke vi optimerer udbyttet, og kopierer det bedste ned i vores <a href="https://writingcooperative.com/zettelkasten-how-one-german-scholar-was-so-freakishly-productive-997e4e0ca125" class="external-link">notesystem</a>, kunne vi lige så godt lade være.</p>
<p>Men det kræver, man sidder klar i sit studium, med bogen i den ene hånd og sin trofaste Spacepen/Moleskine-combo i den anden, og hvornår gør man lige det, når man har 3 børn<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>, en husholdning og utallige apps under vingerne? Svaret er aldrig.</p>
<p>Så jeg læste nærmest ikke i et par år. Købte bøger, købte Kindle, brugte dem lidt og så aldrig.</p>
<p>Indtil jeg gik på <a href="https://computers.mikkelmalmberg.com/issues/37/" class="external-link">kompromis</a> med mig selv.</p>
<p>Jeg opsagde abonnementet på de mest sludder-for-en-sladder-agtige podcasts<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>, og installerede Amazons Audible. Jeg bestemte mig for, at det var bedre at <em>læse</em><sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup> noget med et halvt øre(!?) end at læse intet. Mistede jeg et minut eller to til vandrende tanker, så gjorde det ikke noget. Skrev jeg ingen noter, så gjorde det ikke noget. Mistede jeg pusten på en bog og begyndte på en anden i stedet, så gjorde det ikke noget.</p>
<p>Men hvad er så meningen? Hvis ikke der er noter, hvad skal jeg så fortælle den ambitiøse, resultathungrende del af mig?</p>
<p>Jeg ser det som at hælde ingredienser i min hjernesuppe.</p>
<p>Forestil dig en stor gryde med uspecificeret suppe. Den dufter godt, ser lækker ud. Det er din hjerne. Når du læser en bog, kommer ideerne i suppen. Måske forsvinder de lidt i mængden, men ingen skal sige, det ikke er dernede. Nu smager suppen lidt mere af de ideer.</p>
<p>Og således kan du roligt hælde i, uden at bekymre dig om at være nødt til at føre protokol. Der er alligevel allerede så mange ting i, at det er umuligt at tilbageføre en opskrift.</p>
<p>Sommetider føler jeg, min suppe trænger til noget bestemt. En smule skønlitteratur for eksempel. Det er ikke lige så lette kalorier som mine selvhjælpskulhydrater, til gengæld er der flere proteiner i.</p>
<p>Sommetider kan jeg mærke, suppen har brug for en <a href="https://computers.mikkelmalmberg.com/issues/27/" class="external-link">gammel kending</a>.</p>
<p>Mange af de tanker og ideer, der skvulper rundt i min hjerne, stammer fra de bøger, jeg har læst. Jeg ved ikke altid hvorhenne og i hvilken, men det har jeg det fint med. Nu er de i suppen, og suppen er min.</p>
<p>Du må ikke lade dig afskrække af, ikke at kunne give 100%. 80% er stadig bedre end 0%.</p>
<hr>
<p>Jeg håber, jeg skriver igen i næste uge, men jeg bilder mig ikke ind, at vi kan regne med noget som helst. Stadig glad for at have dig. Alt vel?</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Nåja, jeg har fået én til. Han er sød og forældrene er nu officielt i undertal. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p><a href="https://fupifarvandet.dk" class="external-link">Skyldig</a> <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>Min kære hustru ruller med øjnene, når jeg kalder det at <em>læse</em>, hvad jeg i virkeligheden har <em>hørt</em>. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/58</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/58</guid>
            <pubDate>Thu, 06 Aug 2020 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[A Calm Side Project]]></title>
            <description><![CDATA[<p>There’s no way round it– side projects come with some measure of responsibility. As soon as you have users, fans or even <em>customers</em>, you can’t just <em>leave</em> anymore. People will be counting on your thing to work. Having customers means success but if you’re already drowning in one inbox then adding another busy one is not going to <em>feel</em> like success.</p>
<p>If your day job takes up all your waking hours, if it feels like the house is on fire at all times, if you feel bad when leaving the office –or closing the laptop if you’re a remote worker like me – then a side project isn’t a good idea.</p>
<p>If, on the other hand, you’re in the privileged position that your day job leaves you with time for yourself then there’s <a href="https://brainbow.studio/10-hours/" class="external-link">plenty of room</a> in the week for side projects.</p>
<p>But because work on side projects is mainly (if not <em>only</em>) driven by your own excitement and curiosity, and because you only have <em>so much</em> time left after your regular job, <strong>your side project should allow your effort to go up and down</strong> without turning into, as they say, a garbage fire.</p>
<p>We don’t want garbage fires. We don’t want to burn out so we can’t keep doing <em>the good work</em>. We’re in this to build quality projects and quality connections to the people who use our thing. And if we’re constantly putting out fires or doing uninspiring, dreadful work, we won’t have the excess energy to do <em>the good work</em>.</p>
<p>Sometimes you will put in 2-3 hours and get loads of shit done. Other times you’ll feel like rewatching Arrested Development instead<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>. This should be alright, mostly always.</p>
<p>If your idea or app requires consistent, daily work, consider this: Can you repurpose or re-shape it into something that doesn’t require your every waking hour? It might feel exciting right now but in 2 years you’ll wish you never started.</p>
<ol>
<li>
<p><strong>Don’t build business-critical things</strong>.<br>
For example, things that come with multiple nines<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup> of guaranteed uptime. As soon as people rely on your service for the critical parts of <em>their</em> service, you’re on the hook. That’s why companies have revolving on-call schedules so one employee can go on a holiday or, well, <em>sleep</em>, because someone else is on the hook. When you’re just you, you are <em>just you</em>. No sleep.</p>
</li>
<li>
<p><strong>Automate the right things <em>and</em> at the right level</strong>.<br>
Between hand-holding users and fully automating things, there’s a scale of <em>partial automation</em>.<br>
If your signup process is hard to get right, maybe it’s better to do it manually for now. This is a good idea if you have few but large fish. Terrible if you have thousands of small krill.</p>
</li>
</ol>
<p>Charging users (if you are so lucky) is something that often comes with lots of <em>ifs</em> and if it does, it can probably be done manually at first.<br>
I love the idea behind <a href="https://github.com/braintree/runbook" class="external-link">the project Runbook</a> where every step can start as a manual, human task, before gradually becoming automated.</p>
<ol>
<li><strong>Use the tools that you know</strong>.<br>
Even though I’m always tempted to use something new and flashy, I mostly just use good ol’ <a href="https://rubyonrails.org" class="external-link">Ruby on Rails</a>. Even though I’m curious to learn Figma instead of Sketch, I make myself use the latter. This ensures that the mere 3 hours I have, go towards something constructive.</li>
</ol>
<p>This is not meant to be an exhaustive list. It’s merely a suggestion of things to look out for <em>before</em> starting your project or how to calm down projects you may already have on your hands.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Season 1-3 only, of course. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Service availability is measured in how many nines you can put as decimals after 99%. <em>5 nines</em> means the service is guaranteed available and functioning 99.99999% of the time. If you’re down for one hour in an entire year, you’re for example already down to 99,9885844749% uptime. A single <em>nine</em>. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/2020/a-calm-side-project</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2020/a-calm-side-project</guid>
            <pubDate>Fri, 21 Feb 2020 14:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[The Side Project Garden]]></title>
            <description><![CDATA[<p>Along with our house came a rather extensive garden. It’s not acres of rain forest but it’s definitely more than what we were used to; nothing.</p>
<p>It’s big enough to have several sections. There’s the front yard, there’s the back yard with its beginning by the house, its open, grassy middle and then end, which has been seemingly completely neglected by the former owner for years. It is a mess. With a little love and good set of gloves, that end could become almost a little garden in itself.</p>
<p>When we got the house, the Danish November’s harshness had everything stripped of leaves and berries and anything green that could give us, the crude city people, any indication of what any of it was.</p>
<p>Then spring came and it blew up. It turned out we had raspberries, blackcurrants, redcurrants, apples, hazelnuts, a, lonely but giant, rhubarb. Tiny woodland strawberries came up all around the edges of the bushes. The kids ate everything.</p>
<p>How do you handle all that green? You only have one choice: Little by little. You nurture one part. Leave it for a bit. Look at the mess. Then come back and tend to another part. Little by little.</p>
<hr>
<p><a href="https://frankchimero.com/" class="external-link">Frank Chimero</a> recently <a href="https://frankchimero.com/blog/2020/gardening-vs-architecture/" class="external-link">posted something</a> on his blog that resonated with me (and <a href="https://frankchimero.com/blog/2020/who-cares/" class="external-link">others</a>.) On the topic of how the author of Game Of Thrones, George R. R. Martin, built his intricate world with its complicated relationships and long-running plotlines:</p>
<blockquote>
<p>In interviews, [George R. R.] Martin has compared himself to a gardener—forgoing detailed outlines and overly planned plot points to favor ideas and opportunities that spring up in the writing process. You see what grows as you write, then tend to it, nurture it. Each tendrilly digression may turn into the next big branch of your story.</p>
</blockquote>
<p>It resonated because it reminded me of how I treat my side projects. (I recommend reading the whole <s>post</s>blog.)</p>
<p>When I look at all of my projects, it’s a mess. Each project deserves nurturing. They hunger for the attention of their master who’s seemingly found new love <a href="https://twitter.com/mikker/status/1224453213933293569" class="external-link">elsewhere</a>. Nothing is perfect, heck, some parts just barely hold together. Yet, my attention isn’t easily controlled. Forcing myself to throw every spare hour at trimming the edges of every project would make me mayor of Burnout City faster than I could buy a fancy top hat. And even if I did, it wouldn’t be time enough to get everything into perfect shape.</p>
<p>So I pick a part, a plant, and nurture it a bit. Yesterday that was Joof.app which is getting renamed and restyled and has been so for months. That is, I had decided that it was to happen, but I hadn’t found the time or motivation.</p>
<p><img src="https://s3.brnbw.com/Artboard-Copy-f8upBABba5ilc9JHgsX7Kn8dRAQpu67ciX8bRGBOoIMRf8Lho2oJMOG2uRv15X3QfaELxjf8urOwu6UWzo1HwUxStLbQlIEJ3u3v.png" alt="Icon sketch" width="256" /></p>
<p>Jamming with <a href="https://twitter.com/marckohlbrugge/" class="external-link">Marc</a> about names back in November, we’d come up with Sprinkles which, although being a slightly loaded term in the developer world, fit perfectly.</p>
<p>A rough sketch of a logo direction had been living as the only thing on my otherwise completely empty macOS desktop. Then, two days ago, the motivation was there and I bashed together a version of it in Sketch.</p>
<p><img src="https://s3.brnbw.com/Icon-Edit-me-Copy-VWJvOsjU6HXQLHjh8UNMpQnPXZ7VBlHmkfvFTB4BQBIijIvtykm6Q3eSW0DcxZ5C4njp6l7DLY5rGNc0tXyfaOkxrf7ZvcXWcQar.png" alt="Sketch icon" width="256" /></p>
<p>I sent it out to a few trusted designer friends on Twitter to get some quick reactions. Everyone agreed it wasn’t quite there yet. The window didn’t look like a browser. The colors were more akin to an editor. Another round and it looked like this.</p>
<p><img src="https://s3.brnbw.com/AppIcon-512px-mS8QFfBDn3ftVgtyqVy1DdN48RPbyeMSF4m720xq94xa7Z3fHGoYa3igYdQ24f3rkRvsfNz6SRQk4ktvw2UJ4Ys6vpZHbtTkKWGr.png" alt="Round two icon sketch" width="256" /></p>
<p>I’m not sure this is where it ends – but it’s good enough for now.</p>
<p>Good enough <strong>is</strong> <em>good enough</em> and with side projects that’s what we’ll have to come to terms with. We can look out into the project garden and see how everything is perhaps a bit rough, but a little love here and there and over time we’ll get to eat the berries and and and…, enough with that metaphor.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2020/side-project-garden</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2020/side-project-garden</guid>
            <pubDate>Fri, 07 Feb 2020 14:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[The first 10 hours]]></title>
            <description><![CDATA[<p>It has always annoyed me when people proclaimed that they <em>always wanted to learn to play the piano</em> or any other skill as if it was ever too late.</p>
<p><em>I wish I could code</em>. Well, how do you think anyone ever learnt anything? They put in some time. And, if you’re really serious about that wish, this is the only way to do it. <em>But I don’t have the time</em>! you say and you are wrong.</p>
<p>What you don’t have is either the motivation or a clear enough idea of how to start.</p>
<p>This is not to get all #hustle on you but you have time. Exchange one of the TV shows you watch with learning to code a little bit. One season of Game of Thrones is, what, at least 10 hours? I promise you that you can make your own, your very own, home grown website in 10 hours or less. Especially if you call those 10 hours a <em>deadline</em>.</p>
<p>Unsurmountable tasks like “☑️ learn to code” or “☑️ learn to play the piano” are daunting <strong>because</strong> they’re impossible to ever <em>finish</em>. When is anyone <em>done</em> learning to code? I’m certainly not and I’ve been going for over 15 years. People die having had successful programming careers yet still <em>learning to code</em>.</p>
<p>This is just to say that, you do absolutely have time to learn to code <em>something</em>. Perhaps, start out with the task of creating as much of a personal website as possible in 10 hours. This works if you don’t know anything about coding and it works if you’re a pro.</p>
<p>The deadline makes sure you don’t waste too much time on details or the fact that there are things you don’t know yet. You’re a smart, capable person. You can look things up if you need to.</p>
<p>I promise you, if you do this, you will feel like you can do anything <em>and</em> you’re now at least 10 hours into the life-long task of <em>learning to code</em>.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2020/10-hours</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2020/10-hours</guid>
            <pubDate>Thu, 09 Jan 2020 10:30:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Hva' det værd?]]></title>
            <description><![CDATA[<h5 id="%2357-%E2%80%93-2019-08-09-%E2%80%93-hva%E2%80%99-det-v%C3%A6rd%3F" tabindex="-1">#57 – 2019-08-09 – Hva’ det værd?</h5>
<p>Jeg går ud fra, mange af jer, der læser COMPUTERS, som jeg, er tech support for store dele af jeres vennekreds(e) og familie®. Gennem hele min opvækst har det været mig, der blev ringet op, når en printer ikke virkede, et modem ikke kunne forbinde, eller der skulle et helt specielt sæt hænder til at genstarte<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> en computer.</p>
<p>Det kom mig til gode, da jeg i mine start-tyvere begik mig som stand-up-komiker. <a href="https://omarmarzouk.dk" class="external-link">Omar</a>, der ellers havde været komikernes <em>go-to guy</em>, var blevet for travl<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>, og det passede mig fint, for jeg havde intet imod at sætte <a href="https://www.instagram.com/p/WFRrsErRX3/" class="external-link">Jonatans</a> AppleTV op eller <a href="https://twitter.com/mikker/status/1031804725161861125" class="external-link">Franks</a> Time Capsule, for som betaling fik jeg lov til at kende Jonatan og Frank, og – ikke mindst – de kendte til mig.</p>
<blockquote class="twitter-tweet"><p lang="da" dir="ltr">Hvis jeg havde vist, da jeg forærede Frank det klistermærke for 5-6 år siden, at han en dag ville have det med på nationalt tv, ville jeg har kaldt mig Den Danske Banksy noget før. <a href="https://t.co/iLW0bKNBPU">pic.twitter.com/iLW0bKNBPU</a></p>&mdash; Mikkel Malmberg (@mikker) <a href="https://twitter.com/mikker/status/1031804725161861125?ref_src=twsrc%5Etfw">August 21, 2018</a></blockquote>
<p>Ingen blev udnyttet, men mit ekstra tech-lag gjorde, jeg kunne tilbyde noget igen. Mellem alle de nye, håbefulde, var jeg ham, der både var rar at hænge ud med OG kunne fixe din printer.</p>
<p><a href="https://www.instagram.com/p/ByAaAeEFfCK/" class="external-link">Fuhlen</a> spurgte mig for nyligt, om jeg kunne hjælpe ham med at klippe hans podcast<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>, mens hans sædvanlige klipper var på ferie. Det kunne jeg godt, og nu har jeg gjort det i 3 uger. Hver gang med forespørgsel dagen inden, fordi Fuhl bliver ved med at misforstå, hvor længe hans klipper er på ferie.</p>
<p>Som <em>betaling</em> for de første 2, sagde jeg først, han kunne nævne 10er i podcasten. Men så benyttede jeg alligevel chancen og spurgte <em>én gang til</em>, hvorfor det nu var, det var, at han ikke ville have sin podcast tilmeldt. Det kunne han ikke rigtig finde på argumenter imod, så vi oprettede ham. <em>Noget for noget</em>.</p>
<p>160 lyttere støtter ham allerede.</p>
<p>Og det på trods af, Christian er forfærdelig til at sælge ideen. Han snakker og snakker, og nævner at du kan bidrage, hvis du vil, det ville godt nok være skørt at gøre, men altså du kan, hvis du er psykopat, men så ikke gør det med for stort et beløb, uha, pas på, du ikke giver mig penge.</p>
<hr>
<p>Jo ældre jeg bliver, jo mindre usikker bliver jeg omkring at tale om penge. Det kan også være fordi, jeg omgiver mig med større og større beløb. Nu ejer vi<sup class="footnote-ref"><a href="#fn4" id="fnref4">[4]</a></sup> et hus og en bil, og når en af dem skal laves eller laves bedre, så koster det.</p>
<p>For ikke særligt længe siden, føles det som, boede jeg på et værelse på Vesterbro i København, og betalte min <em>høje</em> husleje kontant, 4000kr én kuvert ad gangen. Når det gik rigtig godt, havde jeg 2-3 måneders kuverter klar i skuffen forud.</p>
<p>Uanset om du er kapitalist(svin) eller ej, så lever du i en kapitalistisk verden, og du gør ikke dig selv nogen tjeneste ved at benægte det.</p>
<p>Det handler om at forstå <em>værdi</em>. Alt har en pris, og den pris afhænger af, hvilken værdi, køberen forventer at få ud af købet.</p>
<p>For 10er er regnestykket lidt bagvendt, for der er det op til <em>“køberen”</em> at regne ud, hvor høj værdi den gratis underholdning <em>havde</em>. Hvis man enten er sur på eller alt for lidt sur på <em>markedet</em>, kan man umiddelbart ikke forestille sig, det kan fungere. Klassisk set er markedet bygget op omkring ideen om, at jeg har noget, du vil have, og det kan du få for penge. Ingen penge, ingen noget.</p>
<p>Så hvordan kan det være, folk donerer til Christian for det <em>noget</em>, de allerede har fået<sup class="footnote-ref"><a href="#fn5" id="fnref5">[5]</a></sup>.</p>
<p>Det virker fordi, de gerne vil betale for <em>værdi</em>. Helt af egen fri vilje, vil de selv prissætte noget, de allerede har, og betale for det.</p>
<p>Det er ikke svært at tale om penge, hvis du gør det udfra antagelsen om, at folk gerne vil betale for noget, der har <em>værdi</em> for dem, og prissætning derfor handler mest om at finde ud af, hvad og hvor stor værdien er for køberen.</p>
<p>Selvom du måtte synes, det du gør <em>er nemt</em> eller <em>du havde gjort det alligevel</em>, så har det ikke betydelig indflydelse på den værdi, det har for modtageren.</p>
<hr>
<p>Jeg modtager hver dag et nyhedsbrev fra <a href="https://jonathanstark.com" class="external-link">Jonathan Stark</a>, der skriver om den her slags. <em>Hver dag?</em> Ja, han skriver hver dag, og det er sjældent kedeligt og altid kort nok til man ikke bliver begravet. Måske er det noget for dig? Jeg skal i hvert fald <a href="https://jonathanstark.com/hbin" class="external-link">aldrig have en timeløn igen</a>.</p>
<p>Husk at nyhedsbrevet selv <a href="https://10er.app/computers" class="external-link">også er på 10er</a>, hvis du synes, det har værdi. For mig selv, og det er helt oprigtigt, er den største værdi, at I gider høre på mig. Tak for det, uanset.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p><em>Am I right?</em> <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Fun Fact: Omar brændte os af som gæst i Fup 3 gange før vi stoppede med at spørge 🤷‍♂️ <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>Den er rigtig god! Du burde <a href="https://podcasts.apple.com/dk/podcast/hva-s%C3%A5-med-christian-fuhlendorff/id1272767671?mt=2" class="external-link">lytte til den</a>. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn4" class="footnote-item"><p>Så vidt man nu <em>ejer</em> noget, når man køber det for penge, banken finder på til lejligheden. <a href="#fnref4" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn5" class="footnote-item"><p>Jeg er så hiphop, jeg rimer, selv når det ikke er meningen. <a href="#fnref5" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/57</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/57</guid>
            <pubDate>Fri, 09 Aug 2019 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Svær at stille tilfreds]]></title>
            <description><![CDATA[<h5 id="%2356-%E2%80%93-2019-08-02-%E2%80%93-sv%C3%A6r-at-stille-tilfreds" tabindex="-1">#56 – 2019-08-02 – Svær at stille tilfreds</h5>
<p>Tre udgaver blev det til, før jeg pludselig var midt i min sommerferie, og ikke havde overvejet, om jeg ville skrive nyhedsbrev undervejs. I stedet for at tage beslutningen om at lade være, valgte jeg små-dårlig samvittighed i tre uger, og nu sidder jeg her, og har svært ved at sparke det i gang igen.</p>
<p>Momentum, har jeg efterhånden lært, er nøglen.</p>
<hr>
<p>En ting jeg savner fra min tid i DR er, at jeg i høj grad følte, jeg gjorde en forskel. Jeg havde det som om, jeg havde en direkte, positiv (synes jeg selv, bevares) indflydelse på en stor organisation, som i den grad har brug for det.</p>
<p>Det var på mange måder en frustrerende tid. DR er stor, og selvom den er fyldt med søde, kompetente, ambitiøse mennesker, er det sommetider svært at se det på resultatet. I hvert fald den tekniske del.</p>
<p>Og selvom det var langt fra alt, jeg og mit lille hold kom igennem med, var det alligevel som om, de søde, kompetente, ambitiøse mennesker kiggede på og ville ønske, vi sommetider kunne gøre som Mikkel foreslog.</p>
<hr>
<p>Fx,</p>
<p><a href="https://twitter.com/mikker/status/1138808856845410306" class="external-link">https://twitter.com/mikker/status/1138808856845410306</a></p>
<p>DRs nye player er ude i en prøveversion. En fornyelsesproces der startede mens jeg stadig var i organisationen. Det vil sige for mindst 2 år siden. En, dyr formoder jeg, leverandør er hevet ind for at udvikle den. Appen bruges af et helt lands befolkning. Og så er den knapt nok en forbedring.</p>
<p>Mit SmartTV har ingen DR-app men en webbrowser, så det er som regel i den, jeg ser DR-programmer. Det fungerer kun lige akkurat.</p>
<p>Det er knapt nok et argument, men overvej hvor mange penge, den har kostet. Ekstern leverandør arbejder i (mere end) 2 år. <em>Adskillige</em> DR-medarbejdere holder <em>adskillige</em> møder ugentligt med <em>adskillige</em> konsulenter fra leverandøren. Flere af dem kun med til møderne, fordi de eller deres chef, syntes det var et sted, de <em>burde</em> være repræsenteret. Planlægningen, udviklingen, frem og tilbage. Brainstorm efter brainstorm. Uforløst, agendaløst møde efter møde. 2 år og så en prøveversion. Det er simpelthen ikke måden at gøre det på.</p>
<p>Jeg har ikke været med til de møder. Og jeg vil ikke kaste nogen under bussen. I virkeligheden er der heller ikke nogen specifikt ansvarlige. Det er <a href="https://computers.mikkelmalmberg.com/issues/30/" class="external-link">måske problemet</a>.</p>
<hr>
<p>Jeg har et objektivt set vidunderligt job hos <a href="https://elastic.co/solutions/apm" class="external-link">Elastic</a>. Jeg har et niveau af frihed, en løn, en teknisk udfordrende opgave, som de fleste kun kan drømme om. Jeg har kollegaer så dygtige at jeg ofte(st) føler mig som den, der halter bagefter<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
<p>Dette er ikke en klage, og jeg er ikke på vej væk. Men der er ting, jeg savner.</p>
<p>Jeg lider af storhedsvanvid – men jeg har lyst til at gøre en forskel. Det føler jeg ikke, jeg gør i Elastic. Det er ikke fordi, jeg ikke føler mig værdsat. Men jeg er heller ikke speciel. I værste fald en lille smule kedelig. Som <a href="https://www.amazon.com/Random-House-Audio-Linchpin-Indispensable/dp/B00362DVOG/ref=tmm_aud_swatch_0?_encoding=UTF8&amp;qid=&amp;sr=" class="external-link">Seth Godin</a> ville sige; en tand på tandhjulet. Og det er frustrerende på den dårlige måde.</p>
<hr>
<p>Jeg elsker at programmere. Hvis jeg ikke selv holder igen, gør jeg det helt automatisk døgnet rundt. Men ikke alt kan løses med kode. DR-jobbet, og specielt i dets kode-fattige anden halvdel, var spændende. Jeg savner den del. Mediebranchen er lige dele spændende, udfordrende og selv udfordret af den teknologiske udvikling, og jeg føler, jeg kan bidrage. Det var frustrerende på den gode måde.</p>
<p>Jeg bidrager allerede med <a href="https://10er.com" class="external-link">10er</a> (der nu hedder <code>.app</code>), <a href="https://funnn.co" class="external-link">funnn</a> (der burde hedde noget andet) og <a href="https://brainbow.studio" class="external-link">de andre</a> (som jeg nok burde skille mig af med for at fokusere?) Men de er, desværre, endnu ikke lukrative nok til at være jobs.</p>
<p>Det ironiske er, at jeg til sidst i min DR-tid savnede en god teknisk udfordring. Så i virkeligheden er jeg nok bare svær at stille tilfreds<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.</p>
<hr>
<p>Det var vist en lidt selvransagende omgang i denne uge. Som altid vil jeg helt vildt gerne høre dine tanker om mine tanker, så du skal ikke holde dig tilbage fra at svare hverken langt eller kort.</p>
<p>Husk også at COMPUTERS selvfølgelig er at finde <a href="https://10er.com/computers" class="external-link">på 10er</a>. Så må du selv vælge, om du vil betale med svar på emails eller penge 😘</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Dette er ubestridt en god ting. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Dette er også en god ting. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/56</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/56</guid>
            <pubDate>Fri, 02 Aug 2019 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Digital Confidence]]></title>
            <description><![CDATA[<h5 id="%2355-%E2%80%93-2019-07-05-%E2%80%93-digital-confidence" tabindex="-1">#55 – 2019-07-05 – Digital Confidence</h5>
<p>Jeg har en slags regel om, at 3-4 gang jeg hører om et produkt, et programmeringssprog, en person, en præmis er jeg nødt til at undersøge, hvad det er, det går ud på. Sådan var det for et par måneder siden med <a href="https://superhuman.com" class="external-link">Superhuman</a>. Et emailprogram der koster $30 om måneden(!) Som du over i købet skal inviteres til for overhovedet at få lov til at betale for.</p>
<p>Jeg kan ikke høre sådan noget, uden mit Dankort begynder at dirre i lommen.</p>
<p>Men jeg er endnu ikke blevet inviteret – og fred være med det. Jeg har prøvet dem allesammen, men falder altid tilbage til det samme setup og Apples egen Mail.app<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>. <em>If it ain’t broke…</em></p>
<p>Superhuman var <a href="https://twitter.com/mikeindustries/status/1146092247437340672" class="external-link">oppe og vende</a> i løbet af ugen, da de, ikke som de eneste, havde <em>Read Receipts</em> som en <em>on by default</em> feature.</p>
<p>Du kender nok <em>read receipts</em> fra Messages eller Facebooks Messenger, som den feature man kun kan få ondt i maven af<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.</p>
<p>Her kan du som regel slå featuren fra. Det gør jeg. Det er ikke altid, jeg svarer med det samme, og når jeg ikke gør, kan jeg godt lide, modtageren ikke går og får ondt i maven over, hvorfor jeg mon ikke svarer nu, hvor <em>jeg jo har læst den for 44 minutter siden</em>.</p>
<p>I emails, en vidunderligt forældet teknologi, fungerer read receipts typisk ved, dit email-program (eller en browser extension) indsætter et usynligt billede ved afsendelsen, som, når det bliver vist hos modtageren, rapporterer tilbage, at nu har de altså set det. Der er ingen mulighed for mig som modtager at blokere for trackeren uden også at blokere for alle andre billeder, og <em>så</em> spartansk foretrækker jeg dog ikke mine emails.</p>
<p>Superhuman <a href="https://blog.superhuman.com/read-statuses-bdf0cc34b6a5" class="external-link">hørte kritikken</a> og har slået tingen fra som default. Godt for dem og for os.</p>
<hr>
<p>Jeg kom til at tænke på en ting, jf. sidste uges snak om Twitter bios og Read Receipts; min hjerne opsummerede og navngav det øjeblikkeligt <em>Digital Confidence</em>.</p>
<p>Når jeg ser dig småændre din Twitter-bio hver dag. Når jeg ser dig kigge mig over skulderen for, om jeg nu har læst din mail (<em>omg</em> han har ikke svaret <strong>endnu</strong>.) Når jeg ser min browser extension have blokeret 30+ extensions på <a href="https://twitter.com/antoniogm/status/1146492837447393282" class="external-link">dit website</a>. Så ser det desperat ud.</p>
<p>Jeg er sommetider desperat. Men det er bestemt ikke noget, jeg har lyst til at <a href="https://twitter.com/emme" class="external-link">emme</a> af.</p>
<p>Det er, som vi (nu) siger her på COMPUTERS: Vær selvsikker i din digital.</p>
<p>Jojo, vi <em>kan</em> tracke gud og hvermand på vores side. Men har vi <em>virkelig</em> brug for det? Jojo, vi kan spionere på modtagerne af vores breve, men vil vi virkelig, nu hvor vi har indset, det er det, vi gør? Er vi så desperate?</p>
<p>Jeg vil gerne give mine besøgende og samtalepartnere muligheden for, selv at bestemme om og hvordan de vil reagere på min(e) <em>digital</em> for jeg vil ikke fremstå som desperat<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>.</p>
<p>🖥 Mikkel “The Saint”</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Det er da i hvert fald indtil <a href="https://www.yourtempo.co/" class="external-link">Tempo</a> fatter andet end GMail. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Jaja, <em>du</em> kan styre det, men altså nu er det jo mit nyhedsbrev. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p><em>Sendt via nyhedsbrevssoftware der holder øje med, hvor mange der åbner de mails det sender. Jeg forsøger, ikke at ænse det.</em> <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/55</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/55</guid>
            <pubDate>Fri, 05 Jul 2019 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Et komma til et punktum til et komma]]></title>
            <description><![CDATA[<h5 id="%2354-%E2%80%93-2019-06-28-%E2%80%93-et-komma-til-et-punktum-til-et-komma" tabindex="-1">#54 – 2019-06-28 – Et komma til et punktum til et komma</h5>
<p>En af mine yndlingsmails er den, jeg hver dag får fra <a href="https://spoonbill.io" class="external-link">Spoonbill</a>. Spoonbill overvåger Twitter, og sender dig et dagligt overblik over ændringer i de folk du følgers bio.</p>
<p>Jeg havde <a href="https://spoonbill.io/datum/1451892/" class="external-link">i en evighed</a> den samme tekst: <em>Mig på éthundredeogtreds tegn? Du kan få ét ord: Emhætte</em>. Det er svært at opsummere hele sit virke i én lille komprimeret godbid, og i en periode, hvor jeg prøvede lykken med stand-up, var den anti-joke i virkeligheden mere præcis, end hvad end jeg måtte have puttet ind af folketaksonomiske<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> kategorier på den typiske stakatofacon; <em>Dad, husband, coder, christian, house plant</em>. Ord der hver især kan pakkes ud til en hel fortælling, men sammen siger intet.</p>
<p>Efter 8 år(!) med den samme tekst<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>, fik jeg lyst til at prøve noget nyt og skiftede til en række lige-så-afvisende-overfor-konceptet <a href="https://spoonbill.io/datum/18442641/" class="external-link">ironiske bud</a>, for til sidst at kapitulere og gøre som alle de andre:</p>
<figure><img src="https://s3.brnbw.com/pb-7B04j0P68K-hHvmxf772uFrSRAeazYOoi6hqxBxElOT9z9thXYCfVO9XGNb8zQBeJkh9j44cI42UHI4kcpEByB90B7A3ZhC56a5e7KwTaR7xa45.png" alt="Boring bio"></figure>
<p>I sidste ende er bioens mål at lokke nye folk til. Hvor ofte går du ind på dem du allerede følgers profil for at se, om de har fundet på en ny måde at opsummere dem selv på? Jeg gør sjældent.</p>
<hr>
<p>Spoonbill-teatret sjovt at følge med i. For det er et blik direkte ind i folks forfængelig- og usikkerhed. Jeg har set folk forlade deres sikre job og gå freelance for derefter at opdatere deres bio flere gange om ugen i håbet om, at dét skulle lokke kunder i butikken. Og det samme, men med folk der skal sælge et eller andet håbløst produkt, de har kastet alt deres kærlighed i. Folk forlader firmaer, produkter og partnere. For nogen ryger det fra bioen, når det er kommet lidt på afstand. Andre stryger det 2 uger inden bruddet.</p>
<p>Og så er der dem, der bare ikke kan få den <em>helt</em> rigtig. Hver uge ændres en minimal detalje – et komma til et punktum, et <em>make things</em> bliver til <em>do things</em>, et nyt projekt overtager bannerpladsen fra det forrige, nu helt glemte, projekt. Internetpersonaens svar på at file negle.</p>
<p>Alt sammen fordi, det er en umulig opgave at opsummere sig selv på så lidt plads. Eller i det hele taget.</p>
<p>At følge med på Spoonbill er nærmest som at smugkigge ind ad folks vinduer. De ved ikke, du følger med, men i virkeligheden kigger du direkte ind i deres sjæl. Eller – det vil sige, de ændrer jo bare et komma til et punktum til et komma. Men alle de historier du finder på om hvorfor, føles forbudte.</p>
<p>Jeg ville ønske, jeg kunne koge, <em>det jeg gør</em> ned til en Twitter-bio, men jeg synes godt nok, det er svært at finde ud af, hvad de i det hele taget er.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Nu ér det et ord. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>De fleste af dem med <a href="https://computers.mikkelmalmberg.com/issues/25" class="external-link">det samme billede, også</a>. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/54</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/54</guid>
            <pubDate>Fri, 28 Jun 2019 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Using Sorbet in (Neo)Vim via coc.nvim]]></title>
            <description><![CDATA[<p>I for one welcome <a href="https://sorbet.org" class="external-link">Stripe’s new typechecker for Ruby</a>. As many of us learnt from Typescript, the added help from the typechecker is a great benefit with little to no cost.</p>
<p>To add Sorbet’s hints and errors to your Neovim, install <a href="https://www.github.com/neoclide/coc.nvim" class="external-link">coc.nvim</a> and add this to your <code>:CocConfig</code>:</p>
<pre><code class="hljs language-json"><span class="hljs-attr">&quot;languageserver&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
  <span class="hljs-attr">&quot;sorbet&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
    <span class="hljs-attr">&quot;command&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-string">&quot;srb&quot;</span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">&quot;args&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-string">&quot;tc&quot;</span><span class="hljs-punctuation">,</span> <span class="hljs-string">&quot;--lsp&quot;</span><span class="hljs-punctuation">,</span> <span class="hljs-string">&quot;--enable-all-experimental-lsp-features&quot;</span><span class="hljs-punctuation">]</span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">&quot;filetypes&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-string">&quot;ruby&quot;</span><span class="hljs-punctuation">]</span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">&quot;rootPatterns&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-string">&quot;sorbet/config&quot;</span><span class="hljs-punctuation">]</span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">&quot;initializationOptions&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span><span class="hljs-punctuation">}</span><span class="hljs-punctuation">,</span>
    <span class="hljs-attr">&quot;settings&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span><span class="hljs-punctuation">}</span>
  <span class="hljs-punctuation">}</span>
<span class="hljs-punctuation">}</span>
</code></pre>
<p>Restart vim and load up a type checked Ruby file. What a time to be alive 🍦</p>
]]></description>
            <link>https://mikkelmalmberg.com/2019/2019-06-21-using-sorbet-with-vim-via-coc</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2019/2019-06-21-using-sorbet-with-vim-via-coc</guid>
            <pubDate>Fri, 21 Jun 2019 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Mere tvang, mindre rom]]></title>
            <description><![CDATA[<h5 id="%2353-%E2%80%93-2019-06-01-%E2%80%93-mere-tvang%2C-mindre-rom" tabindex="-1">#53 – 2019-06-01 – Mere tvang, mindre rom</h5>
<p>For et par måneder siden hørte jeg <a href="https://www.amazon.com/Why-We-Sleep-Science-Dreams/dp/B0785HMMKX/" class="external-link">Why We Sleep</a> og jeg var virkeligt skræmt. Jeg har altid elsket sene aftener. Og med sene aftener mener jeg alt efter klokken 23.</p>
<p>Der er bare noget, der skifter, når hele <s>verden</s>CET<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> falder til ro. Pludselig er det nemmere at fokusere. Pludselig kan jeg bruge flere timer i den samme app uden konstant at skifte væk og checke Slack og checke Twitter og checke emails og og og… Jeg tror, uden at overdrive, at 80% af den musik, jeg har indspillet, er blevet det efter klokken 23.</p>
<p>Det er ikke fordi, jeg ikke er træt. Tværtimod er det som om, en smule søvndrukkenhed låser op for kreativiteten og pludselig er al besværet med at komme igang blevet til besvær med at holde op. Det er vidunderligt.</p>
<p>Det var også nemt, dengang jeg bare var mig selv, der boede sammen med mig selv.</p>
<p>Men mine børn står op, lige meget hvor længe jeg selv var oppe, fordi jeg ikke liiiige kunne slippe det trommespor. Eller det nyhedsbrev.</p>
<p>Hvis jeg skal gøre mig nogen som helst forhåbninger om 8 timer på langs, er 23 allersidste udkald. Og 8 er påkrævet, hvis man skal tro på videnskaben<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.</p>
<p>Questlove foreslår i sin bog, jeg <a href="https://computers.mikkelmalmberg.com/issues/44" class="external-link">før har skrevet om</a>, <a href="https://computers.mikkelmalmberg.com/issues/44" class="external-link">Creative Quest</a>, at indtage en enkelt genstand eller to, for at få kreativiteten i gang. Og selvom jeg tror, han har ret, så er det nok ikke det bedste <em>life choice</em> at hænge ansvaret for sin kreativitet op på indtagelsen af alhohol.</p>
<p>Men om det er som søvndrukken eller bare -drukken, så hjælper det at være en smule bedøvet. En lille smule bedøvet, så man kan få fred fra den indre kritiker. Du ved, den kraft der er i et tomt dokument. Skærmen er tom for ord, men den er fuld af modstand.</p>
<p>Jeg har haft svært ved at finde tid til at skrive, og al den tid jeg fandt, var tid, hvor jeg enten var for vågen eller for træt. For fuld (ikke rigtig) eller (i hvert fald) for ædru.</p>
<p>Men det skal selvfølgelig ikke være rigtigt.</p>
<p>Er det ikke også som om, at nu hvor vi har regnet ud, at det eneste der var i vejen, var mig selv. Og nu hvor vi har identificeret, hvad det var, vi ville vinde med at dulme, så burde vi have nok selvindsigt og -kontrol til at kunne tvinge teksten ud.</p>
<p>Jeg ville i hvert fald ønske, jeg fik skrevet noget oftere. Og det er nok tvang, der skal til. Så hermed min åbne erklæring om, at få sparket nyhedsbrevet igang igen. Hæng på, hvis det tager et par fredage at få sparket rusten af. Jeg lover at tvinge det igang.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Nu hvor jeg har kollegaer i hele verden, har jeg lært, ikke at tro på én klokken. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Bah! Jeg er ikke overbevist. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/53</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/53</guid>
            <pubDate>Sat, 01 Jun 2019 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[DET ER IKKE FOR SENT, DU DER]]></title>
            <description><![CDATA[<h5 id="%2352-%E2%80%93-2019-02-22-%E2%80%93-det-er-ikke-for-sent%2C-du-der" tabindex="-1">#52 – 2019-02-22 – DET ER IKKE FOR SENT, DU DER</h5>
<p>Jeg er aldrig bleg for at anbefale alle at lære at kode. Du kan nærmest ikke gå forbi mig på gaden, uden jeg råber ad dig, at “DET ER IKKE FOR SENT, DU DER, DU KAN STYRE MASKINEN!”</p>
<p>Og det er da også sandt, at det ikke er for sent. Og at det da er en fin ide. Det tror jeg virkelig på.</p>
<p>Men det kan jeg jo i virkeligheden nemt sige – jeg kan jo allerede. Hvad indebærer det overhovedet <em>at programmere</em> i dag. I hvert fald noget andet, end det gjorde, da jeg begyndte. Så når folk spørger, hvordan man starter, har jeg i virkeligheden ikke bedre svar end at pege på alle de <a href="https://learn.freecodecamp.org" class="external-link">gratis</a> og <a href="https://www.codecademy.com" class="external-link">knap-så-gratis</a> kurser, der er, og sige “vælg ét og gennemfør det”.</p>
<p>Det er <em>hvordan</em>. Men hvorfor? Hvorfor skulle alle tage at lære at kode?</p>
<p><a href="https://twitter.com/mikker/status/1093586166811627520" class="external-link">https://twitter.com/mikker/status/1093586166811627520</a></p>
<p>Jeg har arbejdet på en Mac app-version af noget, der startede som et Ruby-projekt af GitHub-stifter <a href="https://github.com/defunkt" class="external-link">Chris Wanstrath</a> kaldet <a href="https://github.com/defunkt/dotjs" class="external-link">dotjs</a>, siden et <a href="https://github.com/mikker/joof" class="external-link">Node.js-projekt</a> af mig. Nu en <a href="https://joof.app" class="external-link">Mac app</a>.</p>
<p>Ideen er at putte JavaScript- og CSS-filer i en mappe, navngivet efter domæner, og ved hjælp af en browser extension, modificere de hjemmesider du bruger mest, men som du synes, burde gøre en liiiille ting anderledes.</p>
<p>Det er et punkt, der adskiller <em>nettet</em> fra stort set alle andre platforme: dets åbenhed. Hvis du vil ændre i Office-pakken, fordi du synes, en knap sidder forkert, så held og lykke. Vil du ændre noget på <a href="http://Twitter.com" class="external-link">Twitter.com</a>, så åbner du bare den Web Inspector, der i forvejen findes i alle de moderne browsere, og går amok.</p>
<p>Joof<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>, som jeg kalder app’en (og som den også hed i sin <a href="https://github.com/mikker/joof" class="external-link">Node.js-version</a>), gør stort set det. Tilføjer din kode ovenpå de andres kode. <a href="https://joof.app" class="external-link">Joof’s egen hjemmeside</a> fortæller historien på egen hånd.</p>
<hr>
<p>Jeg ved aldrig helt, hvad nyhedsbrevet her <em>handler om</em>. Jeg synes, det skal handle om et eller andet gennemgående. Men jeg slås med, hvad præcist det gennemgående er<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.</p>
<p>Én af de ting, jeg kommer tilbage til, hver gang jeg ransager mit sind, er; hvordan får du din computer til at arbejde <em>for</em> dig. Computere er vidunderlige. Men det er maskiner. Når folk frustreret skælder deres computer ud – deres <em>egen</em> computer – så kan jeg mærke, det kilder allermest i min råbetrang. <em>“SÅ SÆT DIG DOG IND I, HVAD DER FOREGÅR, DU DER, DET ER IKKE FOR SENT!”</em></p>
<p>Computere <em>er</em> vidunderlige. Tricket er at få dem til at arbejde <em>for</em> dig. Det er mit råd: <em>Brug</em> ting. Du er i kontrol. Når du læser en bog, så smør den ind i noter, æselører og overstregning. Føl dig ikke tvunget til at høre den kedelige lydbog færdig. Skip lortet. Spol i den. Missede du et minut eller to? So what. Pil det cover af din telefon. Du har jo købt den for at bruge den. Er du træt af, <a href="https://twitter.com/mikker/status/1009026900667371526" class="external-link">dit regnskabssystem er en reklamesøjle</a>, så <a href="https://github.com/mikker/dotfiles/blob/master/browsers/joof.symlink/app.dinero.dk.css" class="external-link">pil lortet af</a>.</p>
<p>Dét har jeg lyst til at bidrage til – at du får en følelse af autonomi over forholdet til dine computere. At du har lyst til at bruge dem, fordi de gør, som du vil have. Så du kun sidder og bander over de ting, de gør, fordi du selv får dem til det.</p>
<hr>
<p>Joof giver dig en lille bitte superkraft: kraften til at ændre hjemmesider, så de gør, som du vil. I mindste målestok kan du <a href="https://github.com/mikker/dotfiles/blob/master/browsers/joof.symlink/news.ycombinator.com.css" class="external-link">ændre en skriftstørrelse på Hackernews</a>. I den ambitiøse ende af målestokken giver den dig følelsen af, du er i kontrol over dit forhold til maskinerne.</p>
<p><a href="https://twitter.com/mikker/status/1098211934904684544" class="external-link">https://twitter.com/mikker/status/1098211934904684544</a></p>
<p>Dette LifeHack™ krævede 4 linjer CSS – og evnen til at vide, hvad jeg skulle lede efter i den Web Inspector, min browser allerede har. Og Joof.</p>
<p>Hvordan får du din computer, det vidunderlige, ustyrlige bæst, til at lystre?</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>HVORFOR jeg i sin tid opkaldte lortet efter Hella Joof, har jeg ingen ærindring om. Men det var da en tåbelig idé og alligevel en vidunderlig lyd, hvis man siger det som lyden af en raket, der letter. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Hvis du har regnet ud, hvad det her nyhedsbrev vil, så vil jeg meget gerne have hjælp. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/52</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/52</guid>
            <pubDate>Fri, 22 Feb 2019 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[At polere sin hockeystav]]></title>
            <description><![CDATA[<h5 id="%2351-%E2%80%93-2019-02-15-%E2%80%93-at-polere-sin-hockeystav" tabindex="-1">#51 – 2019-02-15 – At polere sin hockeystav</h5>
<p>Da jeg i sin tid byggede <a href="https://motherload.dk" class="external-link">Motherload</a> (og sidenhen <a href="https://funnn.co" class="external-link">funnn.co</a>) til mine venner, der gerne ville sælge deres comedyshows til download, vidste jeg godt, der allerede fandes en kæmpe konkurrent, der hed Gumroad.</p>
<p>Gumroad lignede en typisk, enorm, Silicon Valley-type af en service. Venture Capial-penge, masser af ansatte, champagne fra morgenstunden.</p>
<p>Det var de også. Men et år efter jeg havde sat første spadestik til Motherload, havde Sahil, stifteren af Gumroad, fyret alle medarbejdere og droppet at skaffe flere investorpenge. Droppet sin drøm om det champagnefyldte(?) unicorn thoughtleader-liv.</p>
<p>Det var både en stor fornøjelse og lidt af en overraskelse at læse stifterens beretning om Gumroads historie i dette vidunderlige blogpost:</p>
<figure><a href="https://twitter.com/shl/status/1093532795438133253" class="external-link"><img src="https://s3.brnbw.com/pb-wLRDkqpQl3-ptF2ZHjFyAQNG8sc5tfZwdoaKz8HWGjgG5f60WpTaaEOHfluqN6MsPSehIYc4Z3fwntHScE0h2n7P2pc3CjxDf42SSCu4Fx3kmUX.png" alt="Gumroad"></a></figure>
<p>De gik efter at blive en mastodont. Graferne blev ved med at gå opad, men knækkede aldrig til at ligne den berygtede hockey-stav. Gumroad var altså en god forretning – men ikke <strong>god nok</strong> på Silicon Valleys præmisser.</p>
<figure><img src="https://s3.brnbw.com/pb-IxjPu0vEnq-EgoUTqeKaRavivPGkcxTVjWVeYa84Zl76TWqgrEmdUCKnbfem3kTWnmukP2G3IbnWnWbYxLFaPegBFntUe8zzbgraUH6ELRUCZSc.png" alt="Opad"></figure>
<p>Det går til sidst op for Sahil, at den vigtigste vækst er den, han har skabt for andre. Forretninger opstår og lever fordi, de kan sælge deres ting gennem Gumroad. Tager man sine hippie-briller på, kan man endda sige, at der er skabt endnu mere værdi, som ikke nødvendigvis er økonomisk værdi, hos Gumroads <em>kunders kunder</em>.</p>
<p>Det er selvfølgelig ekstra lækker læsning for en som mig, der har mit eget produkt med min egen langsomt stigende graf og mine egne tanker om vækst.</p>
<hr>
<p>Jeg har flere gange flirtet med ideen om at søge investering til 10er. Få et par millioner, så jeg kunne bruge al min tid (og andres) på at bygge og skalere, og polere min hockeystav (tøhø) til den pegede direke mod himlen (ej) og sprøjtede 10x igen (STOP.)</p>
<p>Når jeg ser Løvens Hule, og folk (og fæ) værdisætter deres virksomheder til millioner med mindre grafer end min, kan jeg mærke, jeg fnyser indeni og tænker <em>no way</em>, men det er ikke altid, løverne har samme reaktion.</p>
<p>Jeg ender alligevel altid med at lade være.</p>
<p>I stedet lod jeg mig selv ride afsted på Sahils åbne beretning om op- og nedturene for Gumroad. Hans grafer ligner til forveksling mine. Opad, langsomt, roligt, men dog opad. Jeg drømmer om, at 10er kan blive en stor nok forretning til at bære mig (og andre), men det er helt, helt fint, at det tager den tid, det tager.</p>
<p>Ideen om at skabe en virksomhed, et produkt, og generelt bare et virke, som udmønter sig i andet end blot mønter, tiltaler mig. Det er bestemt ikke fordi, jeg drømmer om at drive en gavebod – så kunne jeg jo have gjort det gratis – men når jeg læser alle artiklerne om Uber eller Facebooks gøren og laden, og hvordan de opfører sig til ære for Guden Growth, så ved jeg, det ikke er noget for mig. Når jeg til gengæld læser Sahils blogpost, får det mig til at indse…</p>
<p>Tænk, jeg har råd til at hyre Asha, min freelance-programmør, til at hjælpe mig og samtidig hjælpe hende igang med sin karriere.</p>
<p>Tænk, jeg har råd til at Kickstarte’ mine (vidunderlige) venners <a href="https://www.kickstarter.com/projects/dahlgaardstivoli/dahlgards-tivoli-podcast-episode-5-8-plus-bonus?ref=discovery_recommendations" class="external-link">(helt forrygende) podcasts</a>.</p>
<p>Tænk, at siden december 2014 har 10er, min lille Rails-app, hævet <strong>2.636.285 kr</strong> på vegne af alverdens vidunderlige projekter. To komma seks millioner kroner.</p>
<p>Tænk, hvor mange menneskers positive hensigter, der ligger bag alle de donationer, der, <em>friviligt</em>, er gået til at støtte op om folks kreative projekter.</p>
<p>Tænk.</p>
<figure><a href="https://10er.co/open" class="external-link"><img src="https://s3.brnbw.com/pb-qKWXlHsPf8-OchubnvMiIpfzEszyQmVTfiCFbE8TTfkXEOMoo1FOWZxJvugIWnxSbq1UjjY9phHrDaa8acGc8SKpLkdq5D6g8e2BbELeughNN4J.png" alt="To the moon"></a></figure>
<hr>
<p>Som altid elsker jeg at høre tilbage fra jer. Det er en af mine største glæder, at jeg har jer, min lille læserskare. Det er en fornøjelse at skrive til jer, og en endnu større fornøjelse, når I gengælder det 🖤</p>
<p>Hvis du bruger/har brugt 10er til at modtage eller give donationer, vil jeg rigtig gerne høre din lynhurtige holdning til lortet ovre i det her <a href="https://10er.dk/survey" class="external-link">meget korte survey</a>.</p>
<p>🖥 Mikkel</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/51</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/51</guid>
            <pubDate>Sun, 17 Feb 2019 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Practicing Product]]></title>
            <description><![CDATA[<blockquote>
<p>I think side projects, software at least, are a lot like the Civilization games. You can’t wait to start. The first 10% is awesome. 10–40% is complex and the difficulty ramps up. 40–100%, all you can think about is starting over on something else. At around 80%, you just quit and actually do start over. <a href="https://news.ycombinator.com/item?id=18546751" class="external-link">[comment]</a></p>
</blockquote>
<p>I laughed, like you do when alone by the computer: with a smile and a snort, when I read this hitting comparison on <a href="https://news.ycombinator.com/" class="external-link">Hackernews</a>.</p>
<p>It <em>feels</em> like you are almost done before you even type <code>rails new</code>. And so you jump right in but already after the first few minutes you realize you’ve made the stupid mistake again.</p>
<p>The stupid mistake of thinking that anything would be easy just because you can imagine a few parts of it in your naive head.</p>
<p>Yet, side projects — or lets just call them projects because why does it matter if they’re on the side? — are the best way to learn. Even if you don’t finish them you learned something. You can read all the books or blog posts in the world and still learn more by actually building something.</p>
<p>You get to experience the whole process from designing to developing to redesigning to planning features, eventually (hopefully) deploying and marketing your thing. When you consider the whole of it, it isn’t quite so small anymore.</p>
<p>But what if the things you want to practice are specifically the last parts?</p>
<figure><img src="https://cdn-images-1.medium.com/max/2000/0*sJ-OhIiXZhWnuuOD.png" alt=""></figure>
<p>I recently launched <a href="https://www.producthunt.com/posts/many-link" class="external-link">many.link</a>.</p>
<p>It all began when I saw someone use <a href="http://linktr.ee/" class="external-link">linktr.ee</a> on Instagram. I liked the idea but felt the execution lacking. Their administration tool was anywhere from bad to <em>not working</em>. The actual profiles looked bland. I could do something like it<a href="https://buttondown.email/computers/archive/6e2fe3ca-e44b-4a7e-9386-f7c05410aca3#fn:others" class="external-link">1</a> <em>fast enough</em>, I thought.</p>
<p>First, I needed a short, <em>quirky</em> domain so I typed words like <em>bio</em> into <a href="http://iwantmyname.com/" class="external-link">iwantmyname</a>and <a href="http://bio.kiwi/" class="external-link">bio.kiwi</a> was available.</p>
<p>My gut feeling told me some things would be important for this to work:</p>
<ol>
<li>The <strong>domain</strong> had to be short enough and signal intent. People expect your Instagram link to do one thing. How do we signal that this one might contain several — only by the name?</li>
<li>The profile pages needed to look <strong>presentable and well arranged</strong>, easy to understand. And…</li>
<li>Be customisable. People who have multiple things to link to are also people who are concerned about their online presence. Aesthetics are a big part of anything. How do we make it <strong>easy to customise yet hard to mess up</strong>. Pre-built themes would be relatively easy to provide so we’ll start there.</li>
<li><strong>Frictionless</strong> sign up. OAuth (the “Sign in with whatever” buttons) makes it easy to provide authentication features for every service on the planet. But would that make sense? Intentionally I kept it to Instagram. Adding Facebook or Twitter might take a second to add but it would confuse the entire sentiment of the service.</li>
</ol>
<p>One problem though: this was in the middle of the Cambridge Analytica story and Facebook had seemingly put a cooler on handing out API keys to anyone and their neighbour. So after applying to get my Instagram app approved and waiting, checking for updates for a few <s>days</s>weeks to no news, I eventually put the project away.</p>
<p>Showing what I had so far to a few <em>not-so-maker-scene-but-very-Instagram-savy</em>friends made me realise that the domain, although cute 🥝, didn’t tell the story well enough. My friend Emilie suggested <em>allmylinks</em> and .app was available. Bought the domain but did nothing with it.</p>
<p>There it was for a month or two. Online and working on the wrong domain. Far from done, even further from <em>done enough to submit</em>.</p>
<p>Then came Christmas and I discovered <a href="http://usemagnify.com/" class="external-link">Magnify</a>. A few days later they launched on ProductHunt. Nice little product, simple concept, good execution. They were #1 for the day. Wait a second? I have one of those lying around somewhere!</p>
<p>I checked Instagram’s developer section. It had gotten approved!? What’s the minimum amount of work I need to do to put this on ProductHunt? The landing page and … polish?</p>
<p>I copied the general idea of Magnify’s landing page — header, short text, big preview on the right. Made sure everything looked presentable <em>on the inside</em> too.</p>
<p>Then I discovered <a href="http://allmylinks.com/" class="external-link">allmylinks.com</a> doing the exact same thing (there are so many!) and went back to iwantmyname. I typed all kinds of things into the box and pulling the lever like a granny working a slot machine. Suddenly, there was <a href="http://many.link/" class="external-link">many.link</a>. <em>Works!</em></p>
<p>A few evenings’ work and I had it ready for launch. I put it on PH at 00:13 San Fransisco time and to my surprise it went to #1 for the day.</p>
<p>There’s so much more to making a thing than programming it. We all know that it’s a lie that <em>if you build it they will come</em>. I wanted to practice all the other parts than building.</p>
<p><a href="https://many.link/" class="external-link">many.link</a> was the perfect project to practice ProductHunt. Everyone has an Instagram account and is familiar with the problem. The problem is so small, you can explain it with a single sentence. The running costs are the price of whatever the cheapest VPS you can find costs.</p>
<p>Now, this leaves the project in an awkward place as its main purpose has been fulfilled. Could I do ProductHunt? I could. Can I make it generate some revenue? We’ll find out in the future.</p>
<p><em>I ended up selling many.link.</em></p>
]]></description>
            <link>https://mikkelmalmberg.com/2019/practicing-product</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2019/practicing-product</guid>
            <pubDate>Tue, 29 Jan 2019 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Hvad jeg (tror jeg) ved]]></title>
            <description><![CDATA[<h5 id="%2350-%E2%80%93-2019-01-25-%E2%80%93-hvad-jeg-(tror-jeg)-ved" tabindex="-1">#50 – 2019-01-25 – Hvad jeg (tror jeg) ved</h5>
<p>🇩🇰<strong>Sprognyt:</strong> Selvom engelsk var <a href="https://twitter.com/mikker/status/1085173383187316736" class="external-link">ok med flest</a>, har jeg besluttet mig for, det ikke bliver i COMPUTERS, at jeg skal brede mig ud over landegrænserne. Måske i et andet nyhedsbrev! (Ha! Hør idioten. Han får jo knapt nok skrevet det her?!)</p>
<hr>
<p>Fordi ingen spurgte og inspireret af <a href="https://patrickcollison.com/advice" class="external-link">den yngste selv-lavede milliardær i historien</a>, er her, hvad jeg (tror jeg) ved om karriere og tidlige livsvalg (15-20 år gammel) i form af en række råd.</p>
<p>Jeg kan godt lide ideen om at henvende rådene til en aldersgruppe. Jeg er 32 i skrivende stund, så selvom jeg selv tror på og lever efter mange af de her endnu (YOLO), så er jeg unægteligt et andet sted i mit liv, end da jeg var 15.</p>
<p>Listen er ikke nødvendigvis fuldkommen eller i dens endelige form, men…</p>
<hr>
<ol>
<li>
<p>Prøv alle tingene. Brug ikke resten af livet på at sige “jeg ville ønske, jeg havde lært at spille klaver”. Prøv nu, hvor du har tiden, og se om det er noget for dig.</p>
<p>Og hvis du finder én ting, så bliv endelig ekspert, men prøv også de andre. Du bliver kun bedre til at spille klaver ved at prøve kræfter med kunstmaling eller programmering. Alt hvad du kan og ved bygger op til en samlet person. Der er tusind klavereksperter, men kun én dig.</p>
<p>Lad være med at lytte for meget til dem, der spørger, om du har noget at <em>falde tilbage på</em>. Det er nu, du kræver absolut færrest penge for at din dagligdag hænger sammen. Hvis du er klaverekspert nu, men ender med at være mekaniker, bliver du kun en bedre mekaniker. Det er aldrig spild at have lært noget.</p>
<p>Men lyt alligevel en lille smule. Hvis du drømmer om at leve af din drøm, er du nødt til <strong>selv</strong> at finde ud af, hvordan det kan lade sig gøre. Drømmer du om at blive revisor, er vejen klar. Drømmer du om at blive painist, er det dig selv, der skal lægge asfalten. Hvordan kan du fokusere dit klaverspil hen mod noget, du kan tjene penge på? Ikke fordi penge er alt, men fordi penge er nødvendigt, for at du kan bruge maksimalt af din tid på lige præcis det, du har lyst til.</p>
<p>Dit liv bliver 100 gange mere udholdeligt, hvis du kan finde et arbejde, der ikke føles som et arbejde. (Eller find en rig partner, der kan betale gildet – <s>life</s>WIFE HACK!)</p>
</li>
<li>
<p>Vid at verden ikke stopper, hvor din umiddelbare sociale cirkel stopper. Hvis du har andre interesser end dine klassekammerater, er der intet galt i det. Prøv internettet – der er folk, der går op i det samme som dig (og langt mere mærkelige ting.)</p>
<p>Det er en fordel at være del af flere sociale cirkler. Det er ikke et problem, hvis du <em>er en anden</em> sammen med dem fra spejder end ovre i skolen, og en tredje når du er til ridning. Det hjælper dig til at <em>finde dig selv</em>, at du kan eksperimentere lidt.</p>
</li>
<li>
<p>Lær at præsentere en ide. Det er stort set det, de prøver at lære dig i skolen, gymnasiet og på universitetet. Men det er en evne, der kommmer dig til gode over alt. Hvad er de essentielle punkter, pointer og argumenter for at telepatere ideen i dit hovede ind i hovedet på en anden via din mund, pen eller emoji.</p>
<p>Det er sådan, du får de andre på jobbet til at lytte. Det er sådan du får jokes til at virke. Det er sådan, du skriver et nyhedsbrev.</p>
<p>Lær at skære det overflødige fra.</p>
<p>Den bedste måde at lære det på er at lægge mærke til, hvordan andre gør det. Find interessante, velkommunikerende mennesker på Youtube, Twitter, Twitch eller til ridning, og læg mærke til, hvordan de bygger deres historier op. Det er alt sammen historiefortælling.</p>
<p>Deltag hvor dine idoler er. Hold dig ikke tilbage fra at skrive fanbreve eller spørge dem til råds. I værste fald svarer de ikke, og ingen behøver vide det. I bedste fald svarer de. Jeg gør stadig det her, og kan bekræfte at de sommetider svarer.</p>
</li>
<li>
<p><em>Lav</em> ting. Alt hvad du kan lære ved at læse eller lytte kan du lære ti gange så effektivt ved at <em>gøre</em>.</p>
<p>Alle der har lært at programmere apps/spille klaver/være statsminister, har lært det ved at gå i gang uden at vide, hvordan man gør.</p>
<p>Det betyder: Læs lidt om klaver, prøv det af så hurtigt som muligt efter. Læs lidt om programmering, prøv det af lige så snart, du kommer til det første eksempel-kode.</p>
<p>Alle der har lært et fremmedsprog, kender det. Med lidt gåpåmod lærer du mere tysk ved at tage til Berlin og tale med folk, end hvad end du måtte lære af at læse i Alles Klappt<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
<p>Ved at lave ting bidrager du også til den fælles pulje af menneskelig kreativitet. Hvis du kun kommenterer og kritiserer begrænser du kun. Om 10 år lytter vi stadig til Beatles, men alle har glemt, hvad anmelderne sagde dengang pladerne udkom.</p>
</li>
<li>
<p>Hav holdninger, men vær ikke bange for at smide dem væk. Du har sikkert ret, i det du tror. Men hvis du ikke har, yder folk dig en service ved at gøre dig opmærksom på det. Det er ikke let – hele din reptilhjerne kæmper for at opretholde verden som den er, men det betyder ikke, den nødvendigvis har ret.</p>
</li>
<li>
<p>Del ud af, hvad du ved. Du ved det, fordi andre har gjort det samme.</p>
<p>Gør det til din ting, at du altid kan få flere ideer. Meget, meget få ideer er noget værd i sig selv. (Det indebærer altså ikke din ide. Nej, heller ikke den.) Det er udførelsen, der gør dem til noget specielt. Vær ikke bange for at råbe dine ideer højt. Hvis nogen stjæler dem (højst sansynligt ikke), får du bare en ny. Hvis du <em>har en ide til en app</em> (hvem har ikke?) skal du hellere sige det til så mange som muligt end gå og hemmelighedskræmme om den.</p>
<p>Dette er en styrke: Det gør ikke noget, din ide er lavet før. Meget, meget få ideer er så originale (dvs. ikke din. Nej, heller ikke din) at deres blotte ytring har nogen værdi i sig selv.</p>
</li>
<li>
<p>Lyt til alle råd, men tag dem ikke nødvendigvis til dig. Hvis du bevidst vælger at gøre det komplet modsatte, havde det alligevel en effekt, at du lyttede. <a href="https://en.wikipedia.org/wiki/Survivorship_bias" class="external-link">Survivorship bias</a> er over alt.</p>
</li>
</ol>
<p>Enig eller uenig? Jeg vil altid gerne høre fra jer. Mere end fra nogen andre. Tak fordi I hænger på.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Okay, wahnsinnig reference, Malmberg. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/50</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/50</guid>
            <pubDate>Fri, 25 Jan 2019 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Practicing Product]]></title>
            <description><![CDATA[<h5 id="%2349-%E2%80%93-2019-01-11-%E2%80%93-practicing-product" tabindex="-1">#49 – 2019-01-11 – Practicing Product</h5>
<p><strong>Sidenote:</strong> As you’ll notice, this issue is in English. I’m still trying Twitter in English and am still not sure if the loss of vocabulary is outweighed by the gains in potential audience. So now the newsletter is getting the same treatment. Very curious to hear if you have any thoughts about this. Replies are very welcome as always.</p>
<hr>
<blockquote>
<p>I think side projects, software at least, are a lot like the Civilization games. You can’t wait to start. The first 10% is awesome.
10-40% is complex and the difficulty ramps up. 40-100%, all you can think about is starting over on something else. At around 80%, you just quit and actually do start over. <a href="https://news.ycombinator.com/item?id=18546751" class="external-link">[comment]</a></p>
</blockquote>
<p>I laughed, like you do when alone by the computer: with a smile and a snort, when I read this hitting comparison on <a href="https://news.ycombinator.com" class="external-link">Hackernews</a>.</p>
<p>It <em>feels</em> like you are almost done before you even type <code>rails new</code>. And so you jump right in but already after the first few <s>hours</s>minutes you realize you’ve made the stupid mistake again.</p>
<p>The stupid mistake of thinking that anything would be easy just because you can imagine a few parts of it in your naive head.</p>
<p>Yet, side projects – or lets just call them projects because why does it matter if they’re on the side? – are the best way to learn. Even if you don’t finish them you learned something. You can read all the books or blog posts in the world and still learn more by actually building something.</p>
<p>You get to experience the whole process from designing to developing to redesigning to planning features, eventually (hopefully) deploying and marketing your thing. When you consider the whole of it, it isn’t quite so small anymore.</p>
<p>But what if the things you want to practice are specifically the last parts?</p>
<figure><a href='https://many.link' title="many.link"><img src="https://s3.brnbw.com/Artboard-1Fy89YmH9azMt6ZSTcL1ntbzJnMfogzMY2toLiYz1BamLRsbbs0MGUJkBHR8bzG9qFAseL9YB7j6Yx2VpWe1mPzp6pBoh62ZxBGe.png" alt="many.link" width='500' /></a></figure>
<p>I recently launched <a href="https://www.producthunt.com/posts/many-link" class="external-link">many.link</a>.</p>
<p>It all began when I saw someone use <a href="http://linktr.ee" class="external-link">linktr.ee</a> on Instagram. I liked the idea but felt the execution lacking. Their administration tool was anywhere from bad to <em>not working</em>. The actual profiles looked bland. I could do something like it<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> <em>fast enough</em>, I thought.</p>
<p>First, I needed a short, <em>quirky</em> domain so I typed words like <em>bio</em> into <a href="http://iwantmyname.com" class="external-link">iwantmyname</a> and <a href="http://bio.kiwi" class="external-link">bio.kiwi</a> was available.</p>
<p>My gut feeling told me some things would be important for this to work:</p>
<ol>
<li>The <strong>domain</strong> had to be short enough and signal intent. People expect your Instagram link to do one thing. How do we signal that this one might contain several – only by the name?</li>
<li>The profile pages needed to look <strong>presentable and well arranged</strong>, easy to understand. And…</li>
<li>Be customisable. People who have multiple things to link to are also people who are concerned about their online presence. Aesthetics are a big part of anything. How do we make it <strong>easy to customise yet hard to mess up</strong>. Pre-built themes would be relatively easy to provide so we’ll start there.</li>
<li><strong>Frictionless</strong> sign up. OAuth (the “Sign in with whatever” buttons) makes it easy to provide authentication features for every service on the planet. But would that make sense? Intentionally I kept it to Instagram. Adding Facebook or Twitter might take a second to add but it would confuse the entire sentiment of the service.</li>
</ol>
<p>One problem though: this was in the middle of the Cambridge Analytica story and Facebook had seemingly put a cooler on handing out API keys to anyone and their neighbour. So after applying to get my Instagram app approved and waiting, checking for updates for a few <s>days</s>weeks to no news, I eventually put the project away.</p>
<p>Showing what I had so far to a few <em>not-so-maker-scene-but-very-Instagram-savy</em> friends made me realise that the domain, although cute 🥝, didn’t tell the story well enough. <a href="https://www.instagram.com/emilygbruhn/" class="external-link">Emilie</a> suggested <em>allmylinks</em> and <code>.app</code> was available. Bought the domain but did nothing with it.</p>
<hr>
<p>There it was for a month or two. Online and working on the wrong domain. Far from done, even further from <em>done enough to submit</em>.</p>
<p>Then came Christmas and I discovered <a href="http://usemagnify.com" class="external-link">Magnify</a>. A few days later they launched on ProductHunt. Nice little product, simple concept, good execution. They were #1 for the day. Wait a second? I have one of those lying around somewhere!</p>
<p>I checked Instagram’s developer section. It had gotten approved!? What’s the minimum amount of work I need to do to put this on ProductHunt? The landing page and … polish?</p>
<p>I copied the general idea of Magnify’s landing page – header, short text, big preview on the right. Made sure everything looked presentable <em>on the inside</em> too.</p>
<p>Then I discovered <a href="http://allmylinks.com" class="external-link">allmylinks.com</a> doing the exact same thing (there are so many!) and went back to iwantmyname. I typed all kinds of things into the box and pulling the lever like a granny working a slot machine. Suddenly, there was <a href="http://many.link" class="external-link">many.link</a>. <em>Works!</em></p>
<p>A few evenings’ work and I had it ready for launch. I put it on PH at 00:13 San Fransisco time and to my surprise it went to #1 for the day.</p>
<hr>
<p>There’s so much more to making a thing than programming it. We all know that it’s a lie that <em>if you build it they will come</em>. I wanted to practice all the other parts than building.</p>
<p><a href="http://many.link" class="external-link">many.link</a> was the perfect project to practice ProductHunt. Everyone has an Instagram account and is familiar with the problem. The problem is so small, you can explain it with a single sentence. The running costs are the price of whatever the cheapest VPS you can find costs.</p>
<p>Now, this leaves the project in an awkward place as its main purpose has been fulfilled. Could I do ProductHunt? I could. Can I make it generate some revenue? We’ll find out in the future.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>I have since found at least 5 other services that do a version of this idea. Doesn’t matter if we do it differently– it’s just practice! <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/49</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/49</guid>
            <pubDate>Fri, 11 Jan 2019 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Checkboxe så langt øjet rækker]]></title>
            <description><![CDATA[<h5 id="%2348-%E2%80%93-2018-12-14-%E2%80%93-checkboxe-s%C3%A5-langt-%C3%B8jet-r%C3%A6kker" tabindex="-1">#48 – 2018-12-14 – Checkboxe så langt øjet rækker</h5>
<p>Der er 2 kategorier af apps, hvori jeg har prøvet alt.</p>
<p>Den ene er note-apps. Tekst, ren tekst, tekst med billeder. Jeg har prøvet så mange, men er faldet så dybt i <a href="https://da.wikipedia.org/wiki/Vim" class="external-link">vim</a>-hullet, at jeg nærmest har givet op på at komme op igen<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
<p>Den anden er todo-apps. Alle ved, hvad det handler om. Konceptet er så gængst, at JavaScript-community’et – en gruppe mennesker, der ellers er enige om intet – er blevet enige om, at det er prototypen på <em>en app</em>, og sammenligner deres frameworks ved at se, <a href="http://todomvc.com/" class="external-link">hvordan man bygger den samme todo-app i dem</a>.</p>
<p>Jeg er draget af todos. <a href="https://da.wikipedia.org/wiki/Getting_Things_Done" class="external-link">GTD</a> og checkboxe så langt øjet rækker. Og det føles vidunderligt. At lave lister, og ét efter ét krydse sig igennem dagens strabadser som hakkede du dig igennem amazonejunglen med en machete. Kryds, kryds, slash, slash, getting, things, doooooooone!</p>
<p>Jeg har prøvet alle apps’ne for <em>selvfølgelig</em> er det software, der manglede.</p>
<p>Men jeg bliver ved med at have problemet med todos, at jeg aldrig ved, hvad jeg skal skrive på dem.</p>
<hr>
<p>Mit arbejde egner sig ikke til det. Det består sjældent af mange små ting, men som oftest få store ting. De fleste dage ville starte med ét punkt, der kunne hedde ‘Arbejd videre hvor du slap i går’, og selvom det er sandt, er det svært at vide, hvornår man ligesom kan krydse sådan en af.</p>
<p>Ind i mellem har jeg ét punkt mere, der får lov at sidde der med et lille rødt udråbstegn og råbe <em>Haster!</em> i ugevis.</p>
<p>Jeg har dog fundet en brug af todos, som passer mig. Fordi jeg som regel bare skal fortsætte, hvor jeg slap, kan jeg nemt komme til at gå i gang uden at rydde op først.</p>
<p>Ikke i mit (fysiske) liv eller på køkkenbordet. De sejler. Men i mine indbakker. Det føles lækkert at starte dagen med et rent bord, sådan digitalt.</p>
<p>Jeg har lavet et gentagende projekt, som lander i min Today i <a href="https://culturedcode.com/things/" class="external-link">Things</a> hver morgen. Det hedder <em>Morning Checklist</em>, og ser sådan her ud:</p>
<figure><img src='https://s3.brnbw.com/Screen-Shot-2018-12-14-20-20-53.96-4pBmpXGv4wAnJxHm13G7e2P0AO3AoXmIAPwQssxz3tAFvfVaN8l7XupwlAYZOCrX7kOT358HjrpbJXLwYnjtrddtfjjv06MYOvqk.png' width='516' alt='Checklist' /><figcaption>🌅</figcaption></figure>
<ol>
<li>Start med en tom skærm. Lige nu er den sikkert fuld af alt det, du ikke nåede at lukke ned, inden du alt for sent forlod kontoret/gik i seng.</li>
<li>Slå Do Not Disturb til… Meeen sørg lige for, du ikke glemmer alle dine møder inden.</li>
<li>Email! Min arbejdsmail er hurtigst gennemgået. Endnu hurtigere med <a href="https://support.google.com/mail/answer/6594?co=GENIE.Platform%3DDesktop&amp;hl=en" class="external-link">Gmails tastaturgenveje</a>. Learn once, win forever. Jeg har verdens nemmeste email-system: Arkiver alt. Ikke i mapper. Bare ud af inboxen. Sæt tid af til at gå igennem dem allesammen. Lad være med at gå til og fra. Svar alt personligt, læs det meste. Afmeld alt, du ikke gider læse.</li>
<li>Mere email! Mit hovede kan ikke så nemt skille det ene ansvar fra det andet, så for maximum fokus, skal begge af vejen. Lær også Mail.apps genveje.</li>
<li>GitHub er også en inbox, når man arbejder med <a href="https://twitter.com/mikker/status/1045217331746668544" class="external-link">åben sovs</a>. Ned med den. Lær <a href="https://help.github.com/articles/using-keyboard-shortcuts/" class="external-link">genvejene</a>.</li>
<li>Things’ egen inbox. Den er som regel tom. Men man er jo nødt til at tjekke. <a href="https://support.culturedcode.com/customer/portal/articles/2785159" class="external-link">Genvejene!</a></li>
<li><em>Plan Today</em> betyder put ting på dagens liste. Der er som regel én eller to ting; telefonopkald eller den slags. Der er ofte intet.</li>
<li>Åbn sluserne.</li>
</ol>
<p>Det kan synes simpelt, men det er ofte, jeg fanger mig selv i at være drevet væk, og leder mig selv tilbage ved at huske, hvilket punkt jeg var kommet til. Det føles godt at starte hver dag med et par checkboxes.</p>
<hr>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Hvis jeg havde et team at dele noter med, så ville jeg dele dem i <a href="https://notion.so" class="external-link">Notion.so</a>. Det har jeg, men vi deler dem på Github. Så vim, igen. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/48</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/48</guid>
            <pubDate>Fri, 14 Dec 2018 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Nogle mærkelige huller jeg har indeni]]></title>
            <description><![CDATA[<h5 id="%2347-%E2%80%93-2018-10-29-%E2%80%93-nogle-m%C3%A6rkelige-huller-jeg-har-indeni" tabindex="-1">#47 – 2018-10-29 – Nogle mærkelige huller jeg har indeni</h5>
<p>Der er noget ved begrænsninger, der gør kreativiteten nemmere.</p>
<p>Jeg har altid elsket historien om, hvordan Sune Wagner, hæmmet af forventningerne efter hans succes med Psyched Up Janis, besluttede, at hans nye band, The Raveonettes, kun ville optage sange der,</p>
<ol>
<li>… var i Bb-mol,</li>
<li>… højst bestod af 3 akkorder,</li>
<li>… var kortere end 3 minutter lange.</li>
</ol>
<p>Således deres debut-EP <a href="https://en.wikipedia.org/wiki/Whip_It_On" class="external-link">Whip it On</a>.</p>
<p>Men der var endda flere regler; Sune lejede et studie i en dag (eller en uge? Historierne er blot sagaer i min hukommelse nu), så det var den tid, der var, og sangene var nødt til at blive færdige inden.</p>
<p>(Jeg har ledt internettet tyndt efter et interview, hvor de nævner dogmerne, og fandt kun <a href="https://en.wikinews.org/wiki/The_Raveonettes_on_love,_death,_desire_and_war" class="external-link">dette mærkelige et</a>, der også inkluderer <em>not-so-2018-agtige</em> spørgsmål som, <em>Sharin Foo, hvad vil du helst: knalde med en der prutter eller taler med babystemme.</em></p>
<p>Og, nå ja, dogmefilmene. Samme ting der.)</p>
<figure><a href="https://twitter.com/mikker/status/72046642441891840" class="external-link"><img src="https://s3.brnbw.com/Screen-Shot-2018-10-29-14-38-08.08-Fy6Il6xcJNCprVFxwJIglbFaTA7TQGSGGG9CbEwO2AXbW1jlICBd0BfneoWPm9A3yJStzVMUnSJbziA8FCfjQRYO1zqqYsairVHj.png" alt=""></a></figure>
<p>For godt to måneder siden, bukkede jeg under for det umenneskelige pres, jeg har opbygget på de syv år, der er gået, siden jeg første gang erklærede offentligt at jeg havde et hul indeni, der kun kunne lukkes med en svensk synthesizer, og købte en på Ebay.</p>
<p>Det er anden gang, nogensinde, jeg har købt noget på Ebay. Den første gang var 2 <a href="https://en.wikipedia.org/wiki/Bolo_tie" class="external-link">bolo ties</a> i plastik, jeg synes var super indie. Det er nogle mærkelige huller, jeg har indeni.</p>
<p>Min længsel blussede mere og mere op, efter jeg fandt <a href="https://www.youtube.com/playlist?list=PLcaEIjiwaCmQC8ono49T1IQXfUwNJcPUO" class="external-link">Red Means Recording’s videoer</a>.</p>
<figure><a href="https://twitter.com/mikker/status/873523031066411009" class="external-link"><img src="https://s3.brnbw.com/Screen-Shot-2018-10-29-14-38-40.49-k2lThfX1CsVjfGZg3PFMpoJJiLzq0HyYINUy9OZ6eBLarmvl2dOJb7nCT4WUNyAl2nSvZzYv7npnojdj24Z8H0PskZ5tycTAO8FS.png" alt="Red Means Recording"></a></figure>
<p>Jeg startede min hjemme-studie-karriere i 2005-6-stykker på en gennemtæsket Samsung-laptop, som knapt nok kunne køre Cubase. Når jeg optog, kunne computeren ikke følge med, så optagelsen begyndte efter få sekunder at <em>drifte</em> fra beatet.</p>
<p>Da jeg fik en Mac, gik det noget nemmere. At indspille musik var noget jeg gjorde i det tidsrum, hvor kreativitet er bedst<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>: sen aften og nat. Der er noget ved <em>lagkage</em>-optagelser, der tiltaler mig. Jeg har nærmest aldrig skrevet en sang fra ende til anden udenfor computeren. Men når jeg kan gøre det i lag, kommer det nemmere.</p>
<p>Desværre stoppede min hobby nærmest brat, da jeg flyttede sammen med min (nu) hustru i en lille lejlighed på Amager. Det er ikke så solidarisk at sidde oppe til kl. 3 og spille guitar, når nogen ligger ved siden af og sover.</p>
<p>Og således kom jeg aldrig rigtig videre med nogen lagkager i Logic. Bortset fra en enkelt jingle hist og her.</p>
<p>Men når jeg endelig åbner Logic, og hele internettet og Youtube og <a href="http://lmgtfy.com/?q=free+vsts" class="external-link">Free VSTs</a> på Google er lige ved siden af, så er det som om, jeg aldrig rigtig kommer i gang. Jeg drukner, når jeg har alle muligheder på én gang.</p>
<p>På OP-1’en har jeg kun de få ting, jeg har. Og så er det pludselig nemmere at vælge. Dens 4-spors båndoptager har ingen <em>undo</em>, så man må bruge tricks til at komme udenom det. Det er meget nemmere, når man ikke kan alt.</p>
<hr>
<p>På 10er er jeg alene om arbejdet. Det er ikke en begrænsning, jeg som sådan har <em>opfundet</em> men immervæk realiteten. Det føles selvfølgelig hæmmende, når man kigger på sit roadmap og sine ambitioner og ville ønske, tingene gik hurtigere, men hellere vil spille på sin OP-1, (eller kigge på sin familie eller passe sit job eller tyre sin hat efter alverdens ting i Super Mario Oddyssey). Men det er også en begrænsning, der har gjort, jeg skabt 10er i en facon, der kan lade sig gøre at administrere som ene mand. En facon som er, måske, mere simpel, enkel og ikke mindst en facon, som var begrænset nok i omfang til, at den i dag findes som et rigtigt produkt ude i verden og ikke blot som en halv lagkage, der druknede i alle verdens muligheder.</p>
<hr>
<p>Det er nemt at føle sig hæmmet af begrænsninger. Hvis du ikke har nok, kan du måske prikke hul på bylden ved at finde på nogle?</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Skråstreg mindst i vejen. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/47</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/47</guid>
            <pubDate>Mon, 29 Oct 2018 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Det artistiske, sociale bungeejump]]></title>
            <description><![CDATA[<h5 id="%2346-%E2%80%93-2018-08-23-%E2%80%93-det-artistisk%2C-sociale-bungeejump" tabindex="-1">#46 – 2018-08-23 – Det artistisk, sociale bungeejump</h5>
<p>Der er 589 abonnenter på dette nyhedsbrev. Det gør mig glad, men også en smule ærefrygtig, hver gang jeg tænker på, at jeg nok snart burde skrive igen.</p>
<p>Og så går der en lille måned, før jeg prøver, og det føles som om, der skal ekstra til, for at retfærdiggøre lige netop denne udgave, var den, der bragte mig tilbage til tasterne.</p>
<p>Hvad bilder jeg mig overhovedet ind at tro, jeg har noget som helst at tilbyde?</p>
<hr>
<p>Jeg har sagt det før; enhver burde opleve at optræde med stand-up. I hvert fald én gang, men nok også flere for den fulde effekt, da du højst sandsynligt glemmer hvad der foregik, så snart du træder ned fra scenen. Hjernens forsvarsmekanisme der vurderer, at den mængde adrenalin umuligt kan betyde noget godt er sket, og kasserer alle konkrete minder, så det eneste du kan huske, er følelsen i kroppen bagefter. En anden ting alle burde prøve er at optræde og være dårlig.</p>
<p>Jeg har aldrig sprunget bungeejump, men jeg forestiller mig lidt stand-up som værende den <em>artistiske, sociale</em> version af det. Når det går godt kilder det i maven. Når det går dårligt, er det som om, elastikken springer. Det føles som at styrte udover en social afgrund.</p>
<figure><img src="https://s3.brnbw.com/Artboard-OxFDTONVrf.jpg" alt=""></figure>
<p>Men, selvom det aldrig bliver rart, kan man vende sig til det. Selv det. Det er måske endda først idet, du ikke længere er rædselsslagen for at være dårlig, du kan begynde at være ægte god.</p>
<p>I min ungdom var jeg spejder, og selvom det da er brugbart at kunne binde et flagknob cirka én gang hver femte år, så er det, jeg er mest begejstret for at have lært af det, at være okay med at have det træls.</p>
<p>Det var det første, jeg tænkte på, da jeg læste denne passage fra <a href="https://amzn.to/2NdT9k0" class="external-link">The War of Art</a><sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>:</p>
<blockquote>
<p>There’s a myth that Marine training turns baby-faced recruits into bloodthirsty killers. Trust me, the Marine Corps is not that efficient. What it does teach, however, is a lot more useful.</p>
</blockquote>
<blockquote>
<p>The Marine Corps teaches you how to be miserable. This is invaluable for an artist.</p>
</blockquote>
<blockquote>
<p>Marines love to be miserable. Marines derive a perverse satisfaction from having colder chow, crappier equipment, and higher casualty rates than any outfit of dogfaces, swab jockeys or flyboys, all of whom they despise. Why? Because these candy-asses don’t know how to be miserable.</p>
</blockquote>
<blockquote>
<p>The artist committing himself to his calling has volunteered for hell, whether he knows it or not. He will be dining for the duration on a diet of isolation, rejection, self-doubt, despair, ridicule, contempt, and humiliation.</p>
</blockquote>
<blockquote>
<p>The artist must be like that Marine. He has to know how to be miserable. He has to love being miserable. He has to take pride in being more miserable than any soldier or swabbie or jet jockey. Because this is war, baby. And war is hell.</p>
</blockquote>
<blockquote>
<p><cite>– <a href="https://amzn.to/2NdT9k0" class="external-link">Pressfield, Steven. The War of Art</a> (p. 68).</cite></p>
</blockquote>
<p>Hvor træls det end føles at stå i en skov, i regnvejr, midt om natten, og forsøge at tænde et bål, så er det nu den situation, du befinder dig i, og det nytter ikke noget at brokke sig.</p>
<p>Hvor forfærdeligt det end må føles at være 11 jokes inde i et set, og ingen har grint endnu, så er der ikke andet for end at gøre dit bedste for, at nummer 12 vender skuden.</p>
<p>Hvor længe du end måtte have udskudt at skrive dit nyhedsbrev, så er der ikke andet for end at komme at komme i gang igen. Det er ikke nødvendigvis meningen, det skal være behageligt at udfordre sig selv.</p>
<hr>
<p>Nu hvor <a href="https://fupifarvandet.dk/episodes/262/" class="external-link">Fup i Farvandet er stoppet</a> er jeg endt i den spegede situation, at jeg ikke længere laver noget, der modtager donationer via <a href="https://10er.dk" class="external-link">10er</a>.</p>
<p>Hvad er det for en syg eksistens, der ikke har noget projekt på 10er? <em>Gisp!</em></p>
<p>Jeg har derfor oprettet <a href="https://computers.10er.dk" class="external-link">COMPUTERS på 10er</a>. <em>Dogfooding</em> hedder det vist. Så kan du spytte en mønt i hver gang jeg sender noget. Eller lade være. Jeg er glad så længe, du er her. Hvordan går det egentlig?</p>
<p><a href="https://computers.10er.dk"><img src="https://10er.dk/assets/stoet-paa-10er.svg" style="width: 140px" width="140" alt="Støt" /></a></p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Jeg har en <a href="https://computers.mikkelmalmberg.com/issues/44" class="external-link">fetich</a> med <em>“How to creative”</em>-bøger. Det er så tæt på faktisk at være kreativ, at man narres til at tro, man er det. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/46</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/46</guid>
            <pubDate>Fri, 24 Aug 2018 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[(Not so) livechat]]></title>
            <description><![CDATA[<h5 id="%2345-%E2%80%93-2018-07-13-%E2%80%93-(not-so)-livechat" tabindex="-1">#45 – 2018-07-13 – (Not so) livechat</h5>
<p>Man kan ikke gå nogle steder hen på nettet, uden at støde på de små bobler nede i højre hjørne, der mere eller minder aktivt opfordrer dig til at chatte med folkene bag siden. Jeg havde også en på <a href="https://10er.dk" class="external-link">10er</a>, men jeg har fjernet den igen.</p>
<p>Jeg tror, det startede før, men det så ud som om, det rigtigt eksploderede med <a href="https://intercom.com" class="external-link">Intercom</a>. Intercom er et produkt, der samler en masse andre produkter til at kommunikere med dine besøgende (<em>skråstreg kunder</em>) under den samme hat, og kalder det <em>Growth Management</em>.</p>
<p>Kommunikationsværktøj kunne også dække det, men du ved, hvordan det er.</p>
<p>På den ene side er det utroligt irriterende, som produkt-nysgerrig type, der tilmelder sig nye ting til højre og venstre, at man ikke længere kan gøre det i stilhed, uden at få opfølgningsmail 1, 2 og 3 og så videre, der bare lige vil <em>“checke in”</em> og høre, hvordan det nu altså går med onboardingen til <em>todolist.wizardry</em>?</p>
<p>På den anden side, er det sommetider det, der skal til, for at vende en nysgerrig, men travl, type til en betalende kunde, så vi må finde os i det? Irritér 95% for at konvertere 5%? Det er vel sommetider dét, opsøgende salg består i.</p>
<p>Til den slags, der bare er almindelig kundeservice, kan sådan en chatbox tage meget af det, der ellers ville være blevet til emails. Én person kan nemt håndtere adskillige aktive samtaler, og hver besøgende får et indtryk af, der sidder nogen på den anden side af skærmen, som er til at tale med.</p>
<p>Hvis der altså sidder nogen. Jeg havde også en på 10er<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>, og ind imellem hjalp jeg folk igennem den. Jeg blev ikke oversvømmet med chatbeskeder. Til gengæld havde jeg dårlig samvittighed, hver gang en chatbobbel poppede op, som jeg ikke kunne svare på med det samme.</p>
<p>Selvom chat kan foregå asynkront, så bliver man en lille smule skuffet, når man opdager, modtageren ikke sidder klar til at svare med det samme.</p>
<p>Det er også Slacks forbandelse. Man <em>kunne</em> i princippet godt bruge det som email: Åbne det et par gange om dagen, læse og skrive og lukke det igen. Men i virkeligheden er det svært at gøre andet, end at have det kørende i baggrunden hele dagen lang, klar til at svare på hvad end, der måtte dukke op.</p>
<p>Slack-lampen er rød. Er det din kollega, der har postet en skør, skør gif (mig, beklager) eller din chef med en vigtig besked? Kun én måde at finde ud af det på, og det er ved at kigge. Helt ligegyldigt vs meget vigtig. Tør du lade være med at kigge?</p>
<p>Det gik op for mig, at jeg med chatboxen på 10er, havde stillet (endnu) en offentligt åben inbox til rådighed. Endnu en kanal, jeg halvt forventedes at tjekke hele tiden – hvis ikke af afsenderen, så af mig selv.</p>
<p>Så jeg har fjernet den igen. I stedet har jeg kodet min egen version af en ris/ros-kasse. Den fjerner presset fra mig for at skulle svare hurtigt (eller overhovedet), men beholder det lave gærde for at give sin mening til kende. Jeg er ikke sikker på, den er i sin færdige form, men den findes da.</p>
<p>Og til alt det andet er der mails. Der er forventningen en anden. Flere gange hvor jeg har svaret efter adskillige timer, måske endda dagen efter, har modtageren skrevet “tak for hurtig svar”. På mail er det tilsyneladende ikke forventet af nogen, at de overhovedet gider vende tilbage indenfor et døgn. Det er meget nemmere at leve op til, når man ikke vil kunne forstyrres hele tiden.</p>
<p>Det er nemmere end nogensinde at installere kommentarspor, chat-ting, like-knapper og det ene eller det andet <em>Growth Management</em>-værktøj, men det betyder jo ikke nødvendigvis, man bør. Jeg nyder i hvert fald at have en inbox mindre.</p>
<hr>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Baseret på <a href="https://smooch.io" class="external-link">Smooch</a>. Virkede fint og jeg kunne slippe med det gratis niveau. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/45</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/45</guid>
            <pubDate>Fri, 13 Jul 2018 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Kreativitet og dens naboer]]></title>
            <description><![CDATA[<h5 id="%2344-%E2%80%93-2018-07-06-%E2%80%93-kreativitet-og-dens-naboer" tabindex="-1">#44 – 2018-07-06 – Kreativitet og dens naboer</h5>
<p>Jeg er begyndt at lytte til The Roots-trommeslageren Questloves seneste bog <a href="https://www.amazon.com/Creative-Quest/dp/B07664YXST/ref=sr_1_2_twi_audd_1?ie=UTF8&amp;qid=1530781627&amp;sr=8-2&amp;keywords=creative+quest" class="external-link">Creative Quest</a>, og jeg kan allerede mærke, at hver eneste dag fra den blev udgivet til jeg begyndte på den, har været en dag spildt. Jeg er en sucker for bøger om kreativitet og proces og specielt fra folk, der er så cool som Questlove.</p>
<p>Questlove er, som jeg selv, af den opfattelse, at ingen mennesker <em>ikke</em> er kreative. Nogle siger ting som, <em>jeg er ikke så kreativ</em> eller <em>jeg kan ikke tegne</em> eller den slags. Pas på med det, du ender med at få ret. Jeg tror på, kreativiteten er et sted derinde, bange for at komme ud, fordi du og dine selvhæmmende opfattelser står i vejen.</p>
<p><em>Kreavtiv</em> er i øvrigt ikke kun forbeholdt kunsten. En hvilken som helst tanke kan være kreativ<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
<p>Ofte er det andre ting og egenskaber – eller mangel på dem – der forvirrer, og får det til at synes som om, der ingen kreativitet er.</p>
<figure><img src="https://s3.brnbw.com/image-3Z6tttEUbK.jpg" alt="Billede: Def Jam Records"></figure>
<p>For overhovedet at gå i gang med noget kreativt, er det nødvendigt at have en smule <strong>naivitet</strong> omkring, om det overhovedet nytter. Der er allerede skrevet <em>ret mange</em> sange. <em>Hold The Line: The Ultimate Toto Collection</em> har fx 45 og det er ikke engang <em>alle</em> Totos sange. Hvorfor skulle det nytte med én sang mere i universet? Naivitet hjælper til at dulme disse eksistentielle nyttespørgsmål. For at være helt ærlig, så ja, det er usandsynligt, du kan bidrage med noget i det store hele – gudskelov er de fleste kreativt produktive mennesker, som fx Toto, naive nok til, at give det et skud på trods af de dårlige odds.</p>
<p>Hvis du er så heldig at have dannet dig en god<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup> smag, er det endnu sværere at komme igang. Som <a href="https://www.youtube.com/watch?v=X2wLP0izeJE" class="external-link">Ira Glass beskriver det</a><sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>, så starter du ud med at lave ting, der ikke er så gode, som din egen smag kunne tænke sig. Du har komponeret en sang, der ikke er helt så god som noget med Toto. Og du elsker Toto, og du prøvede at lave noget, der mindede om. Her kræver det en god portion <strong>stædighed</strong> funderet i en sund portion naivitet at kæmpe sig igennem de første 5-6 år, hvor du prøver, selvom du ikke selv er tilfreds. Hvor du, hver gang du viser en kreation til andre, og de siger <em>godt gået!</em>, kun kan tænke på alle de ting ved det, der <em>ikke</em> er godt gået.</p>
<p>Men til helvede med hvad andre synes. En anden ting, der hjælper er <strong>nysgerrighed</strong>. <em>Nu prøver jeg at se, hvor god jeg kan blive for min egen nysgerrigheds skyld.</em> Det er dejligt med et fremviseligt resultat, men rejsen kan sagtens være målet, hvis du er nysgerrig. <em>Gad vide, om jeg kan skrive en sang som Toto? Nå, det kunne jeg ikke, men nu har jeg det her.</em></p>
<p>Og selvom du er kommet igang, skal du også blive færdig. Hvis jeg skal blive færdig med noget, er jeg somme tider nødt til at have en deadline. Uden en deadline, åbner jeg sangen i Logic, hører den igennem, skruer lidt på lyden af high-hat’en, hører den igennem igen, og lukker projektet. Næste dag gør jeg det samme, men skruer high-hat’en tilbage igen. Ikke særligt produktivt. En deadline tvinger dig til at grave din <strong>beslutsomhed</strong> frem. <em>Færdig</em> betyder sjældent <em>perfekt</em>. Færdig betyder færdig, og det er bedre end perfekt.</p>
<p>Så selvfølgelig er du (og alle) kreative. Men måske er du ikke <strong>naiv</strong>, <strong>stædig</strong>, <strong>nysgerrig</strong> eller <strong>beslutsom</strong> nok?</p>
<hr>
<p>Når du så endelig er færdig, og spiller din nye Toto-sang for alle, du møder, kræver det overskud at høre deres kritik uden at miste glæden. Folk har holdninger. Det må vi vende os til. Bevares, det har vi også selv. Men vores holdninger <em>indskrænker</em> og <em>udelukker</em> kun, så vi vil hellere definere os udfra, hvad vi skaber. Og til det er vi nødt til at lade være med at stille os i vejen for vores kreativitet.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>For mig at se er det komplet ligegyldig diskussion, om noget er <em>kunst</em> eller ej. Hvis nogen har lyst til at kalde noget kunst, så gør de bare det. Kunst er briller, du ser på ting igennem – ikke et stempel, man skal gøre sig fortjent til. Når nogen siger <em>“Jeg synes ikke det er kunst”</em>, hører jeg <em>“Jeg er faktisk det mest fantasiløse menneske i verden”</em>. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Synes du selv. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>Ja, du husker rigtigt, jeg har <a href="https://computers.mikkelmalmberg.com/issues/27" class="external-link">skrevet om de klip</a> før. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/44</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/44</guid>
            <pubDate>Fri, 06 Jul 2018 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Zenklodser]]></title>
            <description><![CDATA[<h5 id="%2343-%E2%80%93-2018-06-28-%E2%80%93-zenklodser" tabindex="-1">#43 – 2018-06-28 – Zenklodser</h5>
<p>Én af de ting jeg så frem til ved at få et barn, var at lege med LEGO igen.</p>
<figure><img src="https://s3.brnbw.com/Photo-2018-06-28-16-55-jGMuAxoqpafEsbK3j1hb.jpg" alt="Aldrig aldrig"></figure>
<p>LEGO var <em>mit</em> legetøj. Jeg legede også med G.I. Joe og Turtles og den slags, men intet kom nær LEGOs førsteplads. Du har måske haft det på samme måde – men det betyder ikke nødvendigvis, vi har gjort det samme.</p>
<p>Nogle samler modellerne efter instruktionerne, stiller rumskibet på en hylde til pynt eller flyver det rundt i stuen i et par dage. Min hustru gemmer min søns instruktionsmanualer sammen med klodserne. Det var aldrig faldet mig ind.</p>
<p>Jeg tror aldrig, jeg har ladt en færdigsamlet model være det i mere en et par timer, før jeg pillede den fra hinanden, og gik igang med at udforske, hvad delene ellers kunne blive til. Det er sådan jeg leger med LEGO.</p>
<hr>
<p>Jeg ved måske, når jeg starter på en ny ting, at jeg vil sigte efter at lave et rumskib eller en robot men ikke nødvendigvis mere end det<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>. Resten bestemmes af nysgerrighed + tilfældighed. Jeg roder i bunken, ledende efter klodser, der kunne ligne noget, der kunne hjælpe mig. Sommetider finder jeg nogen, der rimeligt åbenlyst kan bidrage til rumskib: Vinger, instrumentbræt, glas til kabine. Sommetider noget andet. En lygtepæl eller et hestevognshjul. <em>Gad vide hvordan jeg kan få dem her til virke på et rumskib?</em> tænker jeg, og sådan går det brik for brik.</p>
<p>Min egen LEGO-samling er splittet i to og placeret henholdsvis hjemme hos mine forældre og i deres sommerhus, så hjemme har vi kun min søns klodser. Men det gør det næsten kun endnu sjovere at have et mindre, ukendt udvalg. Opdagelsen af hestevognshjuls brug på et rumskib er en stor del af glæden ved LEGO for mig.</p>
<figure><img src="https://s3.brnbw.com/scooter-Jab3krz8op.jpg" alt="LEGO"></figure>
<p>Det slog mig, da jeg mediterede over det ovenstående mens jeg byggede den der scooter-ting, at det ofte er samme måde, jeg bygger andre ting på.</p>
<ul>
<li>Du kan godt forestille dig en model, før du bygger den. Men ikke <em>alle</em> klodserne. Undervejs vil du finde problemer, du ikke havde forudset. Det betyder, din model ikke kommer til at ligne den, du har i hovedet. Not: Bliv sur og læg det væk. Hot: Forvent ændringer fra starten af.</li>
<li>Du havde sikkert aldrig overvejet at bruge en lygtepæl, hvis ikke du var faldet over den.</li>
</ul>
<p>Det er zen-LEGO: Forvent ikke at livet giver dig de rigtige klodser — få det bedste ud af de klodser, du finder.</p>
<hr>
<p>Hvordan bygger du?</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p><a href="https://mobile.twitter.com/LegoSpaceBot" class="external-link">@legospacebot på Twitter</a> sender mig dagligt direkte tilbage til 90’ernes bibeler jeg mener LEGO-kataloger. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/43</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/43</guid>
            <pubDate>Thu, 28 Jun 2018 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Tidsspilde]]></title>
            <description><![CDATA[<h5 id="%2342---2018-05-31---tidsspilde" tabindex="-1">#42 - 2018-05-31 - Tidsspilde</h5>
<p><a href="https://mobile.twitter.com/tveskov/status/999557670515429376" class="external-link">tveskov</a> linkede til artiklen <a href="http://nymag.com/selectall/2018/05/i-dont-know-how-to-waste-time-on-the-internet-anymore.html" class="external-link">“I don’t know how to waste time on the internet anymore”</a>.</p>
<figure><a href="https://mobile.twitter.com/tveskov/status/999557670515429376" class="external-link"><img src="https://s3.brnbw.com/Photo-2018-05-31-20-09-JCiC26vpBVADeTZQFzvw.jpg" alt="Tveskov"></a></figure>
<p>Jeg læste den. Og jeg er med på præmissen – internettet er anderledes efter Facebook, Twitter, Instagram, smart phones, GDPR<a href="ej">^gdpr</a>.</p>
<p>Før havde vi hver vores små netværk. I slutningen af folkeskolen brugte jeg al min tid i chatten på <a href="http://tegnebordet.dk" class="external-link">tegnebordet.dk</a>. I gymnasiet brugte jeg oceaner af tid på at glo på andres <a href="http://customize.org" class="external-link">customizede Windows-opsætninger</a>. Det var sociale netværk, men de kredsede om interesser. Efter gymnasiet kom jeg på MySpace. Et netværk der kredsede om at være mest indie/gå i de strammeste bukser.</p>
<p>Så kom Facebook som det altoverskyggende Sociale Netværk, og alle de andre forsvandt. Tidsspilde begyndte, for de fleste, altid at tage udgangspunkt i Facebook. Nuvel, vi postede links til ting udenfor, men de var aldrig mere interessante end kommentarsporet tilbage på Facebook, sagde reptilhjernen, og pludselig tog al tidsspilde form af komplet ufarlige og dræbende kedelige <em>likes</em> og sarkastiske kommentarer. Og det første på det sidste i en uendelighed.</p>
<hr>
<p>Du kan altid åbne Facebook (udskift selv med Twitter eller Instagram efter præference) og bladre. Bladre til din tommelfinger er øm, og du forsøger at huske, om du måske har <em>stødt den mod et eller andet</em>, så du ikke, Gud forbyde det, må indse, at du simpelthen har swipet dig til seneskedehindebetændelse<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
<p>Jeg får det ikke godt af at bladre. Jeg er underholdt. Reptildelen i hvert fald. Og jeg føler, jeg følger med. Men når jeg låser min telefon igen, har jeg det ikke bedre, jeg er ikke mæt. Jeg har bare lyst til at bladre <em>endnu</em> mere.</p>
<hr>
<p>Jeg har slettet min Instagram- og Twitter-app på min telefon. Grunden er ovenover. Jeg <strong>er</strong> en moderne legende, jeg ved det, og det er da også en historie, jeg er nødt til at bringe et addendum til med det samme: …så nu kigger jeg kun en gang imellem på dem gennem Safari<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.</p>
<figure><a href="https://mobile.twitter.com/mikker/status/997075829078315008" class="external-link"><img src="https://s3.brnbw.com/Photo-2018-05-31-20-14-wR3Znl2mY4a5iFbnQdko.jpg" alt="Vaner"></a></figure>
<p>Der gik et par dage, men nu er det dejligt.</p>
<hr>
<p>Jeg tror ikke, Social Media er <em>godt</em>. Både sådan helt lokalt i min egen tilværelse men heller ikke for mennesker. Jeg troede det. Men nu tror jeg det mindre og mindre.</p>
<p>Sådan, 3-4 gange om dagen. Det er okay. Men blandingen Social Media + smart phone er ikke godt.</p>
<p>Det er i hvert fald ikke den slags tidsspilde, hvor jeg kommer ud på den anden side og er tilfreds.</p>
<p>(Og alligevel læste jeg lige de nyeste tweets mellem den her sætning og den forrige.)</p>
<p>En opfordring, hvis du mangler noget at spilde tiden på: programmering. Du kan lære nok på en weekend til at kunne lave din egen hjemmeside. Og du kan blive ved med at lære og spilde tiden resten af livet. Spilde tiden på den der måde, hvor du taber dig selv så dybt i noget, at du glemmer tid og sted, og kommer ud på den anden side, helt mættet og glad og måske med et nyt job, en app eller bare noget dumt, som du i det mindste kan pege stolt på og sige <em>se, jeg har lavet den her og den er fjollet og er den ikke mageløs?!</em></p>
<p>Det bliver svært at vænne os af med de andre (hvis du er med mig.) Vi er nødt til at skrive andre url’er, når vi ikke tænker os om. Skrive <a href="https://glitch.com" class="external-link">glitch.com</a> i stedet for <a href="http://twitter.com" class="external-link">twitter.com</a>. Skrive <a href="https://github.com" class="external-link">github.com</a> i stedet for <a href="http://facebook.com" class="external-link">facebook.com</a>.</p>
<p>Det kræver en smule mere af den del af hjernen, der ikke er reptil-, men det er i det mindste den slags tidsspilde, der har en smule mere potentiale til at bidrage til <em>glæde over tid</em>.</p>
<hr>
<p>Det er stadig min intention at udsende det her oftere, og det er stadig lige svært.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p><em>Oooog prisen for bedste ord går, igen i år, tiiiiil…</em> <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Og faktisk har jeg installeret Instagram igen, men smidt den langt, dybt ned i en mappe, og slået alle notifications fra. De sletter cookie’en super hurtigt, så jeg hele tiden skulle logge ind på ny og med 2-factor auth var det et helvede og hør alle mine dårlige undskyldninger. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/42</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/42</guid>
            <pubDate>Thu, 31 May 2018 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[SoMe or Not To Be]]></title>
            <description><![CDATA[<h5 id="%2341-%E2%80%93-2018-04-19-%E2%80%93-some-or-not-to-be" tabindex="-1">#41 – 2018-04-19 – SoMe or Not To Be</h5>
<p>Det er ikke altid til at forklare, hvorfor man kan lide nogle ting og ikke andre. Facebooks mission er at forbinde alle mennesker i verden – men det er jo i virkeligheden ikke meget anderledes end alle de andres. Forskellen ligger i midlerne og metoden. Og følelsen.</p>
<figure><a href='https://some-or-not-to-be.glitch.me'><img src='https://s3.brnbw.com/pb-IE8wvu9nCd-yghjakv4W8.png' alt='The Matrix' /></a><figcaption><a href='https://some-or-not-to-be.glitch.me'>The Matrix</a></figcaption></figure>
<p>Jeg <a href="https://twitter.com/mikker/status/976059864714743808" class="external-link">slettede for nyligt</a> min Facebook-profil. Det behøver vi ikke gøre meget mere ud af, andet end at sige at jeg er okay. Ikke er opløst til de atomer, jeg består af. Stadig har mine venner, bekendtskaber og kommer med til <a href="https://twitter.com/mikker/status/981074059969679360" class="external-link">den polterabend</a> alligevel.</p>
<p>Facebook føltes værre og værre og til sidst var jeg lige dele træt af dem, deres metoder og min egen tøven ved at slette min konto. <em>Det kan ikke passe, det skal føles som sådan en farlig ting at slette den dumme konto?!</em> tænkte jeg, og gjorde det.</p>
<p><em>Suuuper sejt, Mikkel, hvor er du bare punk. Men har du overvejet, at det er (endnu) et privilegium overhovedet at kunne slette sin Facebook? Og er du ikke stadigvæk på Instagram, som har fuldstændig samme forretningsmodel OG er ejet af Facebook?</em></p>
<p>Jo. Men Instagram <em>føles</em> anderledes. Og hvad er en bedre metode til at forstå sine følelser end at putte dem i et diagram? Så her er mit og en opfordring til dig til at gøre det samme. Jeg kunne selvfølgelig ikke bare klippe-klistre det, men har lavet en bette app, hvor man kan trække dem rundt – prøv den <a href="https://some-or-not-to-be.glitch.me" class="external-link">ovre på Glitch</a>.</p>
<h4 id="r%C3%B8d" tabindex="-1"><span style='color:red'>Rød</span></h4>
<p>Hvis en service er i rødt felt, er det nok på tide at gøre en aktiv indsats. For et par år siden var Facebook her for mig, indtil jeg slettede appen og installerede Messenger i stedet.</p>
<h4 id="orange" tabindex="-1"><span style='color:orange'>Orange</span></h4>
<p>Ikke det værste sted at være.</p>
<p>Jeg har slettet min <strong>Facebook</strong> og for længe siden min <strong>LinkedIn</strong>, for jeg synes, det er ulidelige firmaer med ulidelige produkter, så de kan fint få lov at sejle deres egen orange sø.</p>
<p><strong>Pinterest</strong> bruger jeg ikke rigtig, selvom jeg kigger derind engang hvert halve år. Til gengæld bryder jeg mig slet ikke om <a href="https://trackchanges.postlight.com/stick-a-pin-in-it-acf3a9051337" class="external-link">deres</a> <a href="https://www.theverge.com/2013/7/26/4560190/pinterest-now-tracks-web-history-for-suggestions-supports-do-not-track" class="external-link">metoder</a>.</p>
<h4 id="gul" tabindex="-1"><span style='color:gold'>Gul</span></h4>
<p>Ikke det værste sted at være. Jeg kan godt lide <strong>Reddit</strong>, <strong>Twitch</strong> og <strong>Tumblr</strong>, selvom jeg ikke kommer meget derind. Og når jeg gør, er det som regel kun som tilskuer. Det er sjovere at deltage.</p>
<p><strong>Snapchat</strong> var sjovt i en periode, men der var for stor forvirring omkring, hvor stor en anledning der kræves, før man sender noget direkte.</p>
<p>Når en app har lov til at sende push-beskeder (og det er bestemt ikke alle, jeg giver lov til det), kræver det, der er nogenlunde styr på, alvorligheden af forstyrrelsen. Når du får en SMS, er det som regel fordi, der er noget, du skal tage stilling til. Når du får en Snap, er det som regel fordi, nogen vil sige <em>“SE MIG! Jeg har en skør hat på hahahaha! FACE SWAP 🤪”</em></p>
<h4 id="gr%C3%B8n" tabindex="-1"><span style='color:green'>Grøn</span></h4>
<p>Forhåbentligt stedet hvor flest services havner?</p>
<p>Jeg elsker <strong>Twitter</strong>. Ikke firmaet, heller ikke rigtig produktet. Jeg er i hvert fald ikke enig i deres retning og prioriteringer. Men jeg elsker formatet, og det er sjovt og nemt at deltage. Twitter har altid føltes som <em>mit</em> sociale medie.</p>
<p>Men det kræver også en indsats. Sommetider – fx lige nu – kører jeg på nedsat diæt. Jeg har en privat <em>liste</em>, jeg kalder “Don’t miss”<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>, som kun indeholder dem, jeg helst vil høre fra. Tweetbot lader mig se denne i stedet for min Timeline, så jeg ikke behøver unfollowe nogen. Og har jeg lyst til at drikke direkte fra brandhanen, kan jeg bare åbne <a href="http://twitter.com" class="external-link">twitter.com</a>.</p>
<p><strong>Github</strong> er et værktøj. Men også et socialt medie for Open Source! Mere <em>uplifting</em> end Twitter, da det alligevel er mere konstruktivt at bringe kode ind i verden end dårlige ordspil.</p>
<p><strong>Medium</strong> er godt, selvom de fleste artikler kunne være dobbelt så gode ved at være halvt så lange. Medium er bedst, når det er mig selv, der skriver… Altså ikke fordi jeg skriver bedst. Fordi det er sjovest at deltage.</p>
<p><strong>Slack</strong> er som Github et værktøj såvel som et Socialt Medie, så måske er du der, fordi du er tvunget. Alt afhængig af, hvem de andre i dit workspace er, kan det være fantastisk eller forfærdeligt. Jeg har heldigvis stort set kun oplevet et sted midt imellem, hældende til den grønne side. De rette Notifications-indstillinger kan <em>make or break</em> oplevelsen.</p>
<p><strong>Youtube</strong> er blevet godt, efter jeg det seneste år er hoppet i, og er begyndt at forme min oplevelse. Jeg abonnerer på en 10-15 kanaler, og følger dem mere eller mindre fast. Det hjælper både mig og algoritmerne til at finde de få videoer i en sø af milliarder, som jeg faktisk nyder at se.</p>
<p><strong>Instagram</strong> er godt – og for nyligt endnu bedre. Jeg plejede <strong>kun</strong> at følge venner. Men de fleste af mine er professionelle komikere, selviscenesættende medietyper eller tager på alt for mange ferier, til at jeg til sidst kunne holde det ud. Så for nyligt gjorde jeg en indsats: Jeg mutede en masse stories, fulgte en hel masse tegnere og grafiske designer, dansere(?) og generelt bare folk, der laver ting (i stedet for at <em>drikke</em> ting ved en pool). Det flyttede Instagram fra en position, der bevægede sig længere og længere vestpå til hvor det er nu, stort set helt inde i det grønne.</p>
<hr>
<p>Hvordan ser dit matrix ud? Har du gjort lignende tiltag for at sørge for, det hele føles dejligt? Eller er du helt til rotterne, begravet i dine venners perfekte liv, pæne, rene børn og formidable ordspil?</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Slap af, du <em>er</em> på den. Du er dobbelt på den! <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/41</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/41</guid>
            <pubDate>Thu, 19 Apr 2018 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Introducing: Spotify Hard Mode]]></title>
            <description><![CDATA[<p>I for one miss the days of spending at least 30 minutes at every party going through the host’s CDs for the ones I knew, the ones I knew I wanted, and most of all; the ones I didn’t know I wanted.</p>
<p>The days when a friend would bring his newly purchased cd to your house so you could listen to it together. But only until he left and you’d have to <em>wait?!</em> until his next visit to hear that one genius track again.</p>
<p>I’m nostalgic, I know, but I’m not going to sit around and sob. I’m bringing it back:</p>
<p>With <strong>Spotify Hard Mode</strong> you can offer to lend out records in your Spotify collection to your friends — or request to borrow from theirs.</p>
<figure><img src="https://cdn-images-1.medium.com/max/4448/1*S8p9RHF4ExHCmi2BZC9lyQ@2x.jpeg" alt=""></figure>
<p>When one of you lend out a record it disappears from your collection and appears in the other’s. If it’s a record that you know you’re going to miss you can add a timed request for your friend to turn your record back.</p>
<p><strong>This will not be automated.</strong></p>
<p>Instead your friend will be pinged to turn back the record by themselves and in the process be asked to write a few words as a review. Not like a public facing, thumbs up or down, <em>dreadful</em> review like the internet is brimming with. But a short text based, personal review from one friend to another.</p>
<p>When a record comes back to your collection it will suddenly be at the top of the list again (because you sort your albums by date added like any reasonable person) and you will once again be reminded of how much you listened to this all summer, two years ago, and just how good it is. The best records will keep being on top of your collection pile.</p>
<p>If you cheat and manually re-add the record while it’s lent out, Spotify Hard Mode will punish you by removing two other random records from your collection plus add a few thousand plays of Smurf songs to wreak havoc on your Discover Weekly and Daily Mixes.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2018/spotify-hard-mode</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2018/spotify-hard-mode</guid>
            <pubDate>Thu, 29 Mar 2018 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[YouTube Binge Bundler]]></title>
            <description><![CDATA[<h3 id="it%E2%80%99s-2am.-you-planned-to-go-to-bed-4-hours-ago-but-even-though-you-could%E2%80%99ve-guessed-where-this-would-end-you-visited-youtube." tabindex="-1">It’s 2am. You planned to go to bed 4 hours ago but even though you could’ve guessed where this would end you visited YouTube.</h3>
<p>Eyes sore, head spinning. You are at your twentieth video in a row. Or was it thirtieth? In the middle of a binge, the stream of videos seems so natural. You flow between categories and themes, hand in hand with YouTube’s algorithms, in a game of never ending <em>Ooh that reminds me of…</em></p>
<p>You’ve long forgotten where this began. The last few videos were of Queen songs with the vocals singled out. What an amazing talent he was! And you can’t go to bed *juuust *yet because <em>there’s at least a few more Related Videos and what about cover versions? There must be some good cover versions of this song.</em></p>
<p>If you’re anything like me you can’t control YouTube at night.</p>
<h2 id="introducing%3A-youtube-binge-bundler%E2%84%A2" tabindex="-1">Introducing: YouTube Binge Bundler™</h2>
<figure><img src="https://cdn-images-1.medium.com/max/6204/1*3SKqEXNo1YL1HsLRLLC4ig.png" alt=""></figure>
<p><strong>YouTube Binge Bundler™</strong> looks at your YouTube History for what looks like a recent binge and turns it into a playlist, easily shareable with friends and family.</p>
<p>If your binge looks like other binges, our Machine Learning robots will suggest videos to add to your journey.</p>
<p>I always end up having at least a few Michael Jackson recordings in there. But that’s just me. You might have your own go-to things that are never <strong>not</strong> relevant. They will find other late night Michael Jackson aficionados and who knows — you might end with new, tired and confused friends.</p>
<p>If you’re up to the challenge you can provide a description. Like a sort of guided trip or journal entry of a fever dream. Fun!</p>
]]></description>
            <link>https://mikkelmalmberg.com/2018/youtube-binge-bundler</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2018/youtube-binge-bundler</guid>
            <pubDate>Fri, 16 Mar 2018 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[How To Mikkel Malmbergs nyhedsbrev]]></title>
            <description><![CDATA[<h5 id="%2340-%E2%80%93-2018-03-11-%E2%80%93-how-to-mikkel-malmbergs-nyhedsbrev" tabindex="-1">#40 – 2018-03-11 – How To Mikkel Malmbergs nyhedsbrev</h5>
<p>Okay, du vil gerne skrive et nyhedsbrev? Du har måske læst <a href="https://computers.mikkelmalmberg.com" class="external-link">40 eksemplarer</a> af et og tænkt, <em>“det kan jeg sgu sagtens gøre mindst lige så godt”</em>. Du har sikkert ret – det er nemt nok:</p>
<hr>
<h2 id="1%3A" tabindex="-1">1:</h2>
<p>Først skal du bruge en ide. Den behøver ikke være særligt god eller særligt veldefineret. <em>“How to Mikkel Malmbergs nyhedsbrev”</em> er en ide. Her er 3 andre, jeg endnu ikke har skrevet som andet end en linje i mine noter:</p>
<blockquote>
<ul>
<li>kan godt styre mit forhold til facebook, men jeg ved ikke, om de kan styre deres forhold til mig</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>Perfektion – for meget giver lammelse, for lidt giver rod. Bedste fremgangsmåde er at gå fremad, kiggende efter, hvilke dele man kan gøre perfekte og hvilke får lov at være rod.</li>
</ul>
</blockquote>
<blockquote>
<ul>
<li>Kønsdropdown</li>
</ul>
</blockquote>
<h2 id="2%3A" tabindex="-1">2:</h2>
<p>Så tilsætter du 1–1,5 times <em>så-godt-som</em> uforstyrret skrivetid. Med to små børn og en milliard jern i ilden<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>, er det her punkt det sværeste.</p>
<p>Husk mindst en 4-5 gange om ugen at tænke på, <em>hvor</em> meget tid du dog havde til valgfri brug, da du boede for dig selv, uden børn. Hvad brugte du den på? Ingen kan huske det.</p>
<h2 id="3%3A" tabindex="-1">3:</h2>
<p>Begynd at skrive fra starten af fortællingen. Du skriver det hele i <a href="https://daringfireball.net/projects/markdown/" class="external-link">Markdown</a> i <a href="http://vimr.org/" class="external-link">VimR</a>. I første omgang som en side i din personlige <a href="https://github.com/vimwiki/vimwiki" class="external-link">wiki</a>. Du bruger dit eget bastard-10-finger-system, som du godt ved, du burde investere noget tid i at lave om til det ægte. Du har amerikansk tastatur, så hver gang du kommer til et æ… ø… eller ∂ jeg mener å, styrtdykker din <em>Words per Minute</em>-statistik. Til gengæld kan du skrive <code>/</code> med din lillefinger. <em>Huge win</em>.</p>
<p>Du har højst sandsynligt <a href="https://open.spotify.com/user/mikker" class="external-link">musik</a> i ørerne. Nogle gange går det nemmere med, andre gange uden.</p>
<p>Selvom det du skriver, er tips til, hvordan du vælger den bedste printer (jeg har ingen ide) så skriv underholdende. Start med den kortest mulige introduktion til problemstillingen. Vi starter fra nul, og skal så hurtigt som muligt, med så få elementer som muligt, etablere præmissen for <em>publikum</em>. Det er en tendens, du har tillært dig fra stand-up, men den er god nok.</p>
<h2 id="4%3A" tabindex="-1">4:</h2>
<p>Introduktionen leder forhåbentligt op til, du nu, helt naturligt, går i gang med kødet. Det er her, du folder dit koncept ud. Præsenterer ideen, lægger den på bordet, går et par gange rundt om den og taler<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup> om, hvad du ser.</p>
<p>Lad være med at være alt for bitter, det klæder dig ikke. Lad være med at hænge nogen ud, med mindre du sparker (langt) opad. Lars Løkke har fortjent det. Din chef har ikke.</p>
<p>Formuler ting kort og præcist, men med plads til enkelte småprætentiøse afstikkere, så det hele ikke virker som om, det er skrevet af en autistisk robot. Sigt efter en klassisk 80/20 på robot/prætentiøs. Går du i stå, kan du springe til punkt <strong>6</strong>. Det er ikke farligt at gå i stå.</p>
<p>Brug masser af tegn. Brug <strong>**fed**</strong>. Brug __kursiv__. Brug parenteser. Brug de klassiske Unicode-karakterer™. Hold igen med emojis 😫 <a href="https://twitter.com/jonasjuhler" class="external-link">Jonas Juhler</a> synes, de er fjollede, og du kan ikke, <em>ikke</em> give ham lidt ret. Brug links: Lad være med at skrive <em>“du kan finde min yndlings meme fra 2005 <a href="http://knowyourmeme.com/memes/crying-while-eating" class="external-link">her</a>”</em>. Skriv i stedet <em>“min yndlings meme fra 2005 var <a href="http://knowyourmeme.com/memes/crying-while-eating" class="external-link">Crying While Eating</a>”</em>. Brug fodnoter til jokes og tangenter, der bryder flowet<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>.</p>
<h2 id="5%3A" tabindex="-1">5:</h2>
<p>Ved at være nået til enden af dit originale koncept? Rund smukt af med en elegant sløjfe. Eller lad være. Det behøver ikke ende godt. Det må gerne ende brat ved en skrænt, uforløst, så længe rejsen derhen har været underholdende. Og hvis den ikke har været dét, skal du skrive om noget andet, du.</p>
<h2 id="6%3A" tabindex="-1">6:</h2>
<p>Indtil nu har du kun holdt korte tænkepauser og skrevet i én lang strøm. Det er godt, for lige meget om det er guld eller skidt, har du i det mindste skrevet <em>noget</em>. Og dét sker alt for sjældent. Måske har du fundet ud af, en tangent var mere spændende end din første ide. Måske har du ændret mening undervejs. Måske opdagede du en pointe, du slet ikke havde tænkt på i første omgang. Det føles lækkert, og det er derfor, du gør det.</p>
<h2 id="7%3A" tabindex="-1">7:</h2>
<p>Læs nu, det du har skrevet. Det er sgu helt ok! Der mangler helt klart noget, inden <em>det her stykke</em> for at historien hænger sammen. Det her stykke fungerer ikke. Skal det ud? Ja. Og det her heller ikke. Måske kan vi kombinere de to? Ja, meget bedre.</p>
<p>Giver det mening? Det skal give mening. Du går efter en tekst, der føles som en lille omsluttende boble. Ikke som et tryllenummer, hvor du til sidst slår armene ud med et <em>tadaa</em>. Men læseren skal helst føle, det ikke bare munder ud i ingenting. Hvis det føles som noget, der glider nemt og ordene falder rytmisk naturligt, så er du ved at være færdig.</p>
<h2 id="8%3A" tabindex="-1">8:</h2>
<p>Åbn <a href="http://marked2app.com/" class="external-link">Marked 2</a> og tjek om syntaksen stemmer. Det gør den ikke, og du mangler stadig at fylde adresser ud på stort set alle de links, du har sat ind uden adresser for ikke at blive afbrudt. Tilføj de manglende <code>*</code>-tegn og links.</p>
<p>Ret titlen så den giver mening. Måske har du ikke skrevet en endnu. Hvis du har, gælder den garanteret ikke længere. Glem at rette datoen.</p>
<p>Når den er der, kopierer du hele lortet<sup class="footnote-ref"><a href="#fn4" id="fnref4">[4]</a></sup> og sætter det ind i tekstfeltet på <a href="https://buttondown.email" class="external-link">buttondown.email</a>. Læs det hele igen. Lav de sidste rettelser, kopier dem tilbage i Vim.</p>
<p><em>Send</em>. <em>Ja, jeg er sikker</em>. Den her del er altid en lille smule nervepirrende men mest tilfredsstillende. Det er grunden til, du gør det.</p>
<p>Åbn <a href="https://github.com/mikker/computers.mikkelmalmberg.dk" class="external-link">COMPUTERS websitet</a>. Kopier markdown-filen herind også. Gem. Deploy.</p>
<p>Åbn Mail.app og se mailen være ankommet. Spot mindst 2 fejl, men glæd dig over, du gjorde det igen, og faktisk fik skrevet <em>noget</em>. Håb på nogen svarer, og at alle læserne heller ikke denne gang opdager, at du i virkeligheden ikke har ret meget at byde på.</p>
<p>Mærk stilheden.</p>
<p>Tænk på noget andet.</p>
<hr>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p><em>Ej prøv at se der er også en ild herovre, man kan prøve. Det skal jeg også. Og her er en til!</em> <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Du taler. Du snakker ikke. Det er en lidt mærkelig ide du har fået, at gå op i, ikke at sige <em>snakke</em>. Er du Peter Sommer nu, eller hvad? <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>Fx hvis du vil gøre opmærksom på, at det engelske låneord, <em>flowet</em>, lyder bedst på jysk: <em>flåu’e</em>. Så kunne du gøre det i en fodnote. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn4" class="footnote-item"><p>gg&quot;*yG <a href="#fnref4" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/40</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/40</guid>
            <pubDate>Mon, 12 Mar 2018 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Skip.life]]></title>
            <description><![CDATA[<figure><img src="https://cdn-images-1.medium.com/max/2880/1*Y1Wba4Ncb4sNKKzQ2oSjAg.png" alt="Why read it later when you can skip it for life?"></figure>
<h2 id="skip.life-%E2%80%94-the-%E2%80%9Cread-it-later%E2%80%9D-service-for-people-too-busy-to-read-it-later" tabindex="-1">Skip.life — The “Read it Later” service for people too busy to Read It Later</h2>
<p>I enjoy a good, steamy <em>hot take</em> as much as anyone, I just don’t always have the time <em>right now</em>. That’s why I use <a href="https://instapaper.com" class="external-link">Instapaper</a>. Or, used to use.</p>
<p>Because my Instapaper reading list grew faster than I would read whatever I would put in it, every visit became more about feeling guilty than enjoying taking the <strong>;dr</strong> part out of the <strong>tl</strong> blog posts.</p>
<p>So I moved to <a href="https://getpocket.com" class="external-link">Pocket</a>.</p>
<p>And what a relief! Just me and a completely fresh Pocket archive, empty of articles and guilt. Ready to be filled with <em>longreads</em> of whatever we are very, very concerned about this week.</p>
<p>And so I quickly began throwing anything in there. I even added my friends as <em>friends</em> and added a few of their recommendations. Some of them had many and that made them seem just the kind of smart that I want to be.</p>
<p>Until a few days later when my Pocket started to look like my Instapaper. Uselessly filled with a ambitions I couldn’t live up to. So I ditched it and began using Safari’s built-in Reading List instead. <em>And what a relief?</em></p>
<p>I was beginning to see a pattern and needed a drastic change. So I made <a href="https://skip.life" class="external-link">skip.life</a>:</p>
<figure><img src="https://cdn-images-1.medium.com/max/2000/1*uXpWmzaAgfRcOSXZWR0rWA@2x.png" alt="Skip.life integrates 100% with your browser"></figure>
<h3 id="introducing-skip.life" tabindex="-1">Introducing <a href="https://skip.life" class="external-link">skip.life</a></h3>
<p><a href="https://skip.life" class="external-link">Skip.life</a> is a browser extension, an app and a way of life. Just like you’d expect from Instapaper, Pocket or the other guilt trippers. Come across an article you’d love to read *just not right now? *Click the <em>“Save” Button™</em> and you will be treated to a very satisfying animation of a robot arm carefully archiving the article for later enjoyment, then the tab will close.</p>
<p>Yet, nothing else will happen.</p>
<p><a href="https://skip.life" class="external-link">Skip.life</a> will skip it for you.</p>
<p>You’ll feel satisfied that you didn’t miss out on the article. You definitely saved it for later. And 6 minutes later you will have forgotten both the article and every intention of reading it — and best of all, you’ll feel zero anxiety when you log into <a href="https://skip.life" class="external-link">skip.life</a> and see that you have <strong>0 unread articles.</strong></p>
<figure><img src="https://cdn-images-1.medium.com/max/2000/1*Rt4OWcRC3nNabkYAVy8XyQ@2x.png" alt="You must be very smart!"></figure>
]]></description>
            <link>https://mikkelmalmberg.com/2018/skip-dot-life</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2018/skip-dot-life</guid>
            <pubDate>Thu, 08 Mar 2018 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[5min.dk anno 2018 (Part 2)]]></title>
            <description><![CDATA[<h5 id="%2339-%E2%80%93-2018-02-22-%E2%80%93-5min.dk-anno-2018-(part-2)" tabindex="-1">#39 – 2018-02-22 – <a href="http://5min.dk" class="external-link">5min.dk</a> anno 2018 (Part 2)</h5>
<p><a href="http://5min.dk" class="external-link">5min.dk</a> er nu online i en ny og opdateret udgave. Da jeg sidst skrev, var projektet kørt i stilling <a href="https://glitch.com/edit/#!/5min?path=01/index.html" class="external-link">på Glitch</a>. Nu er det først <a href="https://glitch.com/edit/#!/5min?path=02/main.js" class="external-link">færdigbygget</a>, så <a href="https://glitch.com/edit/#!/5min?path=03/index.js" class="external-link">ombygget</a>, så <a href="https://github.com/mikker/5min" class="external-link">flyttet til Github</a> og til sidst online:</p>
<figure><a href='http://5min.dk'><img src='https://s3.brnbw.com/2018-02-22-14_24_32-6V4BRbN9rv.gif' alt='5min' /></a><figcaption><a href='http://5min.dk'>nul</a></figcaption></figure>
<hr>
<p>Da jeg som <em>næsten</em> teenager begyndte at lave mine egne hjemmesider, var det med hjælp fra et hæfte, min far havde lånt til mig på biblioteket. <em>Lær at lave hjemmesider med HTML</em>, må det have heddet. Det beskrev, hvordan man kunne åbne Windows’ Notesblok, skrive en masser <code>&lt;</code>'er og <code>&gt;</code>'er og gemme det som <code>index.html</code>, og så havde man en hjemmeside ✨</p>
<p>Der var ingen <em>syntax coloring</em>, <em>shadow DOM</em>, <em>hot module reload</em><sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> eller noget af det, vi får nærmest gratis i dag. Det var dig, en blinkende, sort/hvid cursor og et hæfte fra biblo. Og så det store, verdensomspændende Internet<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.</p>
<p>Alligevel var det mere end rigeligt. Udover en introduktion og nogle eksempler, man kunne skrive af fra, havde hæftet ét enkelt tip, som resten af din uddannelse bestod af: <em>View source</em>.</p>
<p>Den er der stadig, funktionen. Tryk på den, og bliv kastet direkte ud i den dybe ende. Hvis du ikke ved, hvad tegnende betyder, ser det måske ikke ud af meget. Men lærer du bare det basiske, er det et kig bag tæppet. Pludselig bestod alle verdens hjemmesider af kulørte motiver, jeg kunne klippe ud og sammensætte til min egen <em>Personlige Hjemmeside</em>-kollage.</p>
<p>Og det var tilstrækkeligt. Hverken browserne eller os, der (mis)brugte dem, var noget nær så avancerede, som vi er i dag. Ingen forventede at din hjemmeside opdaterer automatisk – hvis da overhovedet – når der var nyt indhold. Ingen forventede en oplevelse og slet ikke da en brugervenlig en. Det var skelsættende, da jeg fandt ud af, hvordan man fjernede <u>understregningen</u> på links. Det var nok til at imponere. Jeg kan, uden at overdrive, ikke længere huske, hvor mange gange jeg har hørt nogen fortælle, de lærte HTML og CSS, fordi de skulle pimpe deres MySpace-profil.</p>
<p>Men hvis du åbner en typisk hjemmesides <em>source</em> i dag, er der ikke til at blive klog på og slet ikke til at lære af. For det første er det ikke sikkert, koden er den samme som den der leder til det du ser. Alt muligt kan være <em>javascriptet</em> ind mellem det øjeblik, du modtog HTML’en fra serveren og nu. Faktisk er det ikke unormalt at skrive både sin HTML og CSS i Javascript.</p>
<p>Se bare vores æggeur – hvordan kan <code>index.html</code> blive større fra <code>01</code> til <code>02</code> for så at blive mindst i <code>03</code>, hvor alle features kommer på?</p>
<p>For det andet er der typisk ikke bare ét men flere <em>build steps</em> mellem det, udvikleren skrev og det, du ser. Et moderne workflow består af, at man skriver koden ét sted, så giver man det til et program, der holder øje med koden, og, når du ændrer i den, giver det til en hel række andre små programmer, der laver koden større, så smartere, så dummmere til gamle browsere, så så lille som muligt, så til sidst komplet uforståeligt for mennesker.</p>
<p>Det er ikke for at være forvirrende – det er for at give en god oplevelse til både udvikler og bruger. Og udnytte vores moderne browsere bedst muligt. Men det <em>er</em> forvirrende, hvis man prøver at forstå det som menneske.</p>
<hr>
<p>Opdagelsesrejser<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup> i andres HTML med <em>View source</em> var essentiel for, hvordan jeg selv lærte at skrive min egen.</p>
<p>Glitch giver os lidt af dette tilbage. Typisk ville jeg kunne lave det <em>nemmere</em> og måske <em>smartere</em>, hvis jeg bare kodede det i Vim i min Terminal, som jeg plejer. Men på Glitch kan jeg gøre det, så andre kan følge med. Og når jeg er bevidst om, at I potentielt gør det, og jeg er væk fra de værktøjer, der efterhånden sidder bedre fast i mine fingermusklers hukommelse, end hvordan man holder en pen, så skriver jeg også koden, så den er nemmere at forstå.</p>
<p>Derfor skrev jeg først version <a href="https://glitch.com/edit/#!/5min?path=01/index.html" class="external-link">1</a>, så <a href="https://glitch.com/edit/#!/5min?path=02/main.js" class="external-link">2</a>, i et forsøg på at bruge så få værktøjer som muligt. Og jeg forsøgte at holde mig fra at skrive det om i <a href="https://glitch.com/edit/#!/5min?path=03/index.js" class="external-link">3’eren</a>. Hvor cute <a href="https://choo.io/" class="external-link">choo</a> (🚂🚋🚋🚋🚋🚋!) end prøver at være, inden det putter koden igennem maskineriet, så er resultatet i <em>View source</em> ikke til at blive klog på.</p>
<ul>
<li><a href="https://glitch.com/you-got-this?ref=producthunt" class="external-link">You Got This! Zine</a> – er et <em>internetblad</em>, som Glitch for nyligt udgav om at lave hjemmesider og Node apps.</li>
<li><a href="https://frankchimero.com/writing/everything-easy-is-hard-again/" class="external-link">Everything Easy is Hard Again</a> – Frank Chimero skriver formidabelt – og for nyligt om, hvor kompliceret det er blevet at lave en almindelig hjemmeside.</li>
<li><a href="https://handbook.choo.io/" class="external-link">choo handbook</a> – er en guide til at lære at lave apps og hjemmesider med choo.</li>
</ul>
<hr>
<p>Det er længe siden, du har hørt fra mig. Og længe siden, jeg har hørt fra dig. Hvordan har du det? Vil du stadig have mit nyhedsbrev? Er du gået i gang med nogle nye projekter?</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>… og andre ting, der lyder som en skurk fra Black Panther. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Dengang var internettet med stort I, du. Da far var <em>noob</em>. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p><em>More like plyndringstogter</em>, ikk <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/39</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/39</guid>
            <pubDate>Thu, 22 Feb 2018 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[5min.dk anno 2018 (Part 1)]]></title>
            <description><![CDATA[<h5 id="%2338-%E2%80%93-2018-02-03-%E2%80%93-5min.dk-anno-2018-(part-1)" tabindex="-1">#38 – 2018-02-03 – <a href="http://5min.dk" class="external-link">5min.dk</a> anno 2018 (Part 1)</h5>
<figure><a href='https://twitter.com/mikker/status/958342724809347074'><img src="https://s3.brnbw.com/Screen-Shot-2018-02-03-22-49-12-vbe81Ak7jf.png" alt="Oplagt" width='473' /><figcaption>Oplagt</figcaption></a></figure>
<p><a href="http://5min.dk" class="external-link">5min.dk</a> er et domæne jeg købte for over 9 år siden. Kort efter tænkte jeg, jeg burde bruge det til et eller andet, og så lavede jeg et æggeur.</p>
<p>Uret har været overraskende populært. Jeg ved det mest fra de gange, den har været nede, og folk har råbt op om det. Det er fra den tid, <em>single serving sites</em> opstod som en modreaktion mod hjemmesiders uoverskuelighed. Pludselig kunne alting komme på nettet, så det skulle det. Alting havde blokke af 10pt tekst og multi-niveau drop-down-menuer. Da Google kom på banen var den stort set blanke forside nærmest provokerende simpel. Nu om dage er det gået op for de fleste, at man selvfølgelig ikke bare kan stille alle varerne ud på græsplænen og regne med, folk selv finder det, de skal bruge.</p>
<p>Der kan ske meget på 9 år. Heldigvis glemmer Git aldrig: I <a href="https://github.com/mikker/5min.dk/commit/8c27c4d13f1f9be0a097f5425c827ead5da64f0b" class="external-link">aller første version</a><sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> var sidens serverdel skrevet i programmeringssproget PHP. Et sprog jeg allerede var på vej væk fra, så senere samme år <a href="https://github.com/mikker/5min.dk/commit/5c7ed911eff76f254a8a93f474df609faee796b8" class="external-link">skrev jeg den</a> (tilsyneladende) om i Ruby. Det var nok i virkeligheden slet ikke nødvendigt med en decideret dynamisk serverdel, så et års tid senere <a href="https://github.com/mikker/5min.dk/commit/7afe8b194a57aecf8826d1012dce8327869b277b" class="external-link">skrev den om</a> (igen) til blot at køre i browseren. Og sådan forblev den til den dag, Jacobs æg blev ufrivilligt hårdkogte.</p>
<p>Og prøv lige at kigge på den?! Den skriger på et Total Mikker Makeover™.</p>
<hr>
<p><strong>Og således går vi i gang:</strong> Jeg har oprettet et Glitch-projekt til os og skrevet første runde i mappen <code>01</code>. Jeg tænker, vi deler processen op i et par dele og tilføjer lidt efter lidt. I første omgang har jeg:</p>
<ol>
<li>Sat projektet op som en lille bitte Node-server (Det er mest Glitch-teknikalitet.)</li>
<li>Bygget interfacet påny i <em>ren</em> html.</li>
<li>Fundet og indsat en række ikoner, vi kan bruge til at indstille ur og forskellige indstillinger.</li>
</ol>
<p>Du finder det her:</p>
<h4 id="%E2%8F%B0-5min.glitch.me%2F01-(source)" tabindex="-1">⏰ <a href="https://5min.glitch.me/01/" class="external-link">5min.glitch.me/01</a> (<a href="https://glitch.com/edit/#!/5min" class="external-link">Source</a>)</h4>
<hr>
<p>Det er uhyre sjældent, jeg laver noget som helst i <a href="https://www.sketchapp.com/" class="external-link">Sketch</a> før jeg åbner min editor. Det føles aldrig rigtig narturligt at designe responsivt i et program, der kræver statiske bredder. Så med mindre, jeg fatter pen og papir, eller skal lave noget decideret grafisk som et logo eller ikon, kan jeg bedre lide at springe direkte til interface. Og <a href="http://tachyons.io/" class="external-link">Tachyons</a> gør det kun endnu nemmere.</p>
<p>Hvis du har skrevet CSS før, er du muligvis ved at eksplodere over mine <em>u-semantiske</em> <code>class</code>-attributter? <a href="http://tachyons.io/" class="external-link">Tachyons</a> er et rimeligt nyt, rimeligt kontroversielt CSS-framework. Hvis man kan kalde det det – det er i virkeligheden mere et koncept end et framework. Det føles rigtig skørt de første par dage. Men jeg har aldrig kigget tilbage. Hvis du er nysgerrig (eller provokeret), vil jeg anbefale denne formidable artikel om baggrunden, <a href="http://mrmrs.github.io/writing/2016/03/24/scalable-css/" class="external-link">CSS and scalability</a>. Hvis du er ligeglad, så er det virkelig også helt fint.</p>
<p>I næste runde tilføjer vi Javascript og vækker u(hy)ret til live! Derefter tænker jeg, vi tilføjer presets, Dark Mode, lyd (til Bøtter) og måske noget helt fjerde, du kan finde på? Hvis du har lyst, er du meget velkommen til at <em>forke</em> og skrive din egen version.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Læg mærke til, runde hjørner krævede et jQuery-plugin. Det var tider. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/38</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/38</guid>
            <pubDate>Mon, 05 Feb 2018 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Skrækkeligt mange podcasts]]></title>
            <description><![CDATA[<h5 id="%2337-%E2%80%93-2018-01-17-%E2%80%93-skr%C3%A6kkeligt-mange-podcasts" tabindex="-1">#37 – 2018-01-17 – Skrækkeligt mange podcasts</h5>
<p>Hvad stiller man egentlig op som helt almindeligt menneske, I en verden der svømmer over af et helt forfærdeligt stort udbud af ganske udemærkede podcasts?</p>
<p>Jeg har lyttet til podcasts længe. Jeg har adskillige tydelig billeder i min hukommelse af bestemte situationer, hvor jeg var, både koordinatmæssigt og livsmæssigt, da jeg hørte specifikke episoder, af nogle af de podcasts, der står mig nærest.</p>
<p>Der er <a href="http://youlooknicetoday.com" title="You Look Nice Today" class="external-link">dem</a>, jeg fulgte fra start til slut, <a href="http://thisamericanlife.org" title="This American Life" class="external-link">dem</a> jeg kom til sent, men som stadig lever, <a href="http://5by5.tv/b2w" title="Back to Worl" class="external-link">dem</a> jeg med tiden voksede fra, <a href="http://stoppodcastingyourself.com" title="Stop Podcasting Yourself" class="external-link">dem</a>, jeg startede <a href="http://fupifarvandet.dk" title="Fup i Farvandet" class="external-link">min egen podcast</a> i skyggen af, og <a href="https://gimletmedia.com/heavyweight/" title="Heavyweight" class="external-link">dem</a> jeg længes efter flere episoder af, hver gang jeg åbner min <a href="http://overcast.fm" title="Overcast" class="external-link">podcast-app</a>.</p>
<p>Og så er der en hel masse, jeg har nydt, men afmeldte for et par måneder siden:</p>
<hr>
<p>Podcasts er blevet allemandseje. Hvis du ikke allerede har en, har du sikkert overvejet, hvad din skulle handle om, hvis du nu <em>skulle</em> have en. Udbredelsen er dejlig, bevares, men der er også rigtig meget snik-snak<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
<p>For et par måneder siden fik jeg nok af alle de timer, jeg brugte på kun-lige-præcis-underholdende sniksnak, slettede (stort set) alt i kategorien, og puttede Audible på side 1 på min iPhone.</p>
<p>Lydbøger er præcis det samme som podcasts – og så alligevel ikke. Modsat podcasts har de en start, som typisk er sløvere end din typiske underholdningspodcastepisode<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>. Ofte skal man længere ind end 40 minutter, før den overhovedet kommer i gang. Til gengæld ender man med at have bevidnet en ide, der var større end 40 min plus reklamer for Det Venlige Spøgelses madrasser og Det Firkantede Steds hjemmesideplatform.</p>
<p>Med en blanding af, at mit nuværende antal af podcast-tilmeldinger holdes <em>lavt</em>, og min <em>delete</em>-finger holdes trigger-happy på episoder, der aldrig rigtig kommer i gang, sørger jeg for, sommetider at komme i <em>nul</em>. Nul uaflyttede episoder i køen. <em>Gisp</em>. Når jeg er der, starter jeg en ny lydbog. Eller også vender jeg tilbage til den, jeg er midt i, men holder en kort pause fra.</p>
<p>Det er en fornøjelse at markere <em>hele bøger</em> som <em>Read</em> på Goodreads. Tænk sig, jeg mønstrede opmærksomhed til en hel bog, når jeg kunne have læst Twitter i stedet.</p>
<p>Bøgerne jeg lytter til, er et virvar af non- og rent-faktisk-fiktion. (Før var skønlitteratur forbeholdt den ene bog, jeg læste i min sommerferie. Not any more.)</p>
<p>Senest har jeg fx fået <a href="https://www.goodreads.com/book/show/77711.A_Fire_Upon_the_Deep" class="external-link">eksploderet min hjerne</a>, <a href="https://www.goodreads.com/book/show/28815513-messy" class="external-link">fået bekræftet alle mine dårlige vaner</a> og blevet påmindet om <a href="https://www.goodreads.com/book/show/28446162-dreaming-the-beatles" class="external-link">nogle ældgamle helte</a>.</p>
<p>Hvad er din podcaststrategi? Også selvom den måske er <em>færre</em>?</p>
<hr>
<p>Efterhånden udkommer jeg så sjældent, at jeg kan annoncere en livsændrende begivenhed i hvert nummer. Denne gang er jeg, siden sidst, blevet far (igen) til en datter. Alle har det godt – selv faren, der ellers havde en slem forkølelse under fødslen. Der var ikke meget sympati at hente i den situation, kan du tro.</p>
<p>🖥 Mikkel</p>
<p>I øvrigt: Jeg har fundet en ny platform til nyhedsbrevet – hvordan virker det? Kan du ikke mærke forskel? Perfekt!</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Sagde manden der selv har bidraget til 257 episoders sniksnak. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Sikke dog et lækkert langt ord. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/37</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/37</guid>
            <pubDate>Sat, 27 Jan 2018 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Dumme ting, seriøst]]></title>
            <description><![CDATA[<h5 id="%2336-%E2%80%93-2018-01-02-%E2%80%93-dumme-ting%2C-seri%C3%B8st" tabindex="-1">#36 – 2018-01-02 – Dumme ting, seriøst</h5>
<p>I starten af december holdt jeg et oplæg for TV 2s tekniske afdeling(<em>er?</em>), fordi jeg er team building.</p>
<p>Jeg var blevet spurgt om, <em>min branches syn på TV 2</em>, og hvis der er noget jeg har, så er det syn på ting. Hvis der er noget, jeg ikke har, så er det <em>én</em> branche? Jeg tog det som en form for fristil og gik med overskriften <em>Dumme ting, seriøst</em>.</p>
<figure><a href='https://www.instagram.com/p/BcVQRZGAOPj/'><img src="https://s3.brnbw.com/pb-1webY3C6Zo-mBdaoICT0b.png" alt="#thoughtleader" width='500' /><figcaption>#thoughtleader</figcaption></a></figure>
<p>Jeg endte med et oplæg, der var én tredjedel demoer, én tredjedel holdning til mediebilledet og én tredjedel råd til, hvordan jeg ser, de kan bidrage til at redde os for den lunkne lort store dele af anden tredjedel er med første tredjedel. Forvirret? Alle er.</p>
<p>Situationen: Store dele af medierne på internettet bliver betalt af reklamer. Brugerne er så trætte af reklamer, at de bruger Adblock og sender screenshots istedet for links. De eneste, der nyder situationen er hackerne, som stjæler milliarder ved at inficere uskyldige computere og hjemmesider.</p>
<p>Alle kan blive sin egen medieplatform men kun via platforme, som er for store til at kunne styre, at det ikke ender med, at hæderlige annoncører betaler for nazisters videoer – eller nazi-annoncører der betaler for børns underholdning.</p>
<p>TV 2s konkurrenter er ingen mindre end de største mediehuse og techplatforme i verden. Milliardvirksomheder, som hver især har et par hundrede ansatte til at se på det, du har Jørgen ansat til at <em>kigge på</em> engang i februar.</p>
<figure><a href='https://twitter.com/jwangARK/status/937756792829878272'><img src="https://s3.brnbw.com/pb-N1lsEfYDCo-ncmwy021ZC.png" alt="" width='500' /><figcaption>300+ Machine Learning eksperter</figcaption></a></figure>
<p>Så kan vi overhovedet stille noget op som TV 2? Jeg håber ikke, vi giver op i hvert fald.</p>
<p>Vi er nødt til at være kreative, eksperimenterende, <em>dumme</em>! Heldigvis har det aldrig været nemmere eller billigere at være nogen af delene.</p>
<hr>
<p>Jeg er vild med dumme ting. Små, dumme ting<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>. Tag for eksempel dengang jeg lavede den her ting, hvor vi kunne se DR1 sammen, mens vi smed emojis på hinandens skærme.</p>
<figure><img src="https://s3.brnbw.com/Screen-Shot-2018-01-01-22-28-16-RhCNzqsu8m.png" alt="emojis-on-tv.glitch.me" width='500' /><figcaption>emojis-on-tv.glitch.me</figcaption></figure>
<p>Et par uger efter kunne jeg genbruge ideen (og koden!) til et projekt vi lavede med DR Sporten<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.</p>
<figure><img src="https://s3.brnbw.com/2018-01-01-22_43_27-xkRatuJNcL.gif" alt="Trøjer" /><figcaption>Trøjer</figcaption></figure>
<p>Eller dengang jeg lavede den der <a href="https://computers.mikkelmalmberg.com/issues/34" class="external-link">humør-vejrudsigt</a>? Til kommunalvalget genbrugte <a href="https://twitter.com/JensLykkeBrandt" class="external-link">Jens</a> ideen til at kortlægge følelserne på kandidaternes valgplakater.</p>
<figure><a href='https://www.dr.dk/nyheder/politik/kv17/vi-husker-smilet-naar-vi-skal-stemme'><img src="https://s3.brnbw.com/pb-ly2iPbj3jy-zzE4WDqyCy.png" alt="robot læser" width='500' /><figcaption><em>robot læser(?)</em></figcaption></a></figure>
<p>Eller dengang jeg så, at et fransk, politisk, tv-program live-aflyttede og -analyserede gæsternes ord til en ordsky bag ved dem, og testede om jeg kunne gøre <a href="https://s3.brnbw.com/DenStoreBagedeft-uXQ1vn1g4f.mp4" class="external-link">det samme med Bagedysten</a>.</p>
<figure><img src="https://s3.brnbw.com/pb-q8cuDLbWkB-kQWYT3mLHh.png" alt="ENTREPRISES" width='500' /><figcaption><em>ENTREPRISES</em></figcaption></figure>
<p>Hvis man giver sig selv tid og lov til at se, om noget kan lade sig gøre med relativt få midler, så kan man som regel grave et eller andet af værdi frem. Og selvom det ikke giver mere mening end et skævt smil til at starte med, så kommer der sommetider et kommunalvalg et par måneder senere, hvor ideen giver lidt mere mening. Eller en nytårstale;</p>
<p>Kan du huske dengang, jeg <a href="https://computers.mikkelmalmberg.com/issues/35" class="external-link">trænede et neuralt netværk til at skrive som dronningen</a>? Information fik bedre resultater med en <a href="https://en.wikipedia.org/wiki/Markov_chain" class="external-link">Markov Chain</a>.</p>
<figure><a href='https://www.information.dk/kultur/2017/12/forfatter-analyseret-16-aars-nytaarstaler-traenet-algoritme-skrive-dronning-margrethe'><img src="https://s3.brnbw.com/IMG_5956-DdJNmAvg3i.jpg" alt="Bedre resultater OG illustrationer" width='500' /><figcaption>Bedre resultater OG illustrationer</figcaption></a></figure>
<p>Med en Markov Chain kan du dog kun finde nye sammensætninger af ordene i kildeteksten, og ikke opfinde nye ord, som fx min dumme ting var meget begejstret for. Ord som <em>forydhjermede</em>, <em>opmærnelserende</em> eller <em>villebivet</em> – så hvem fik i virkeligheden, de bedste resultater, hva’ hippie-avis?</p>
<hr>
<p>Glædelig jul, nytår. Alt det der. Jeg gider ikke engang skrive, at jeg har i sinde at sparke til det her gamle nyhedsbrev igen i det nye år. Men nu gjorde jeg det alligevel, jo.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Ligesom ham selv, ikk? <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Ingen brugere fattede i tests at trøjerne var knapper/reakioner. Ha! Dumme brugere. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/36</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/36</guid>
            <pubDate>Tue, 02 Jan 2018 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Getting a project's Ruby version from the Gemfile]]></title>
            <description><![CDATA[<p>It used to be that every project had its own <code>.ruby_version</code> file. But you’d also have to specify the same version in the <code>Gemfile</code>. I say nay to <code>.ruby_version</code> and instead get it from <strong>one</strong> place:</p>
<pre><code class="hljs language-zsh"><span class="hljs-built_in">alias</span> ruby-vers=<span class="hljs-string">&quot;cat Gemfile | grep &#x27;^ruby&#x27; | sed -E \&quot;s/.*[\\\&quot;&#x27;](.+)[\\\&quot;&#x27;]/\1/&quot;</span>\&quot;
</code></pre>
<p>Now you can <code>$ chruby <code>ruby-vers</code></code> your way to success!</p>
]]></description>
            <link>https://mikkelmalmberg.com/2017/2017-12-31-getting-ruby-version-from-Gemfile</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2017/2017-12-31-getting-ruby-version-from-Gemfile</guid>
            <pubDate>Sun, 31 Dec 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Lorem Ipsum I / Er det Schmeichel?]]></title>
            <description><![CDATA[<h5 id="%2335-%E2%80%93-2017-11-04-%E2%80%93-lorem-ipsum-i-%2F-er-det-schmeichel%3F" tabindex="-1">#35 – 2017-11-04 – Lorem Ipsum I / Er det Schmeichel?</h5>
<p>Jeg <a href="https://www.instagram.com/p/Bae6HmMA6xC/?taken-by=mikker" class="external-link">blev gift</a>. Jeg begyndte på et <a href="https://twitter.com/mikker/status/922371359547805696" class="external-link">nyt job</a>. Nyhedsbrevet holdt igen en lang pause. Vi fortsætter som om intet var hændt.</p>
<hr>
<p><a href="https://computers.mikkelmalmberg.com/issues/34" class="external-link">mootmoart</a> var den første af de 3 ting, jeg havde lavet til mit show i sommers. De andre to var <strong>Lorem Ipsum I</strong> og <strong>Er det Schmeichel?</strong></p>
<h3 id="lorem-ipsum-i" tabindex="-1">Lorem Ipsum I</h3>
<p>For en 6-7 år siden snublede jeg første gang over Dronningens nytårstaler på nettet. Jeg tænkte, at de <em>kunne da være sjove at lave noget med</em>, så jeg scrapede dem og gjorde ikke meget mere ved det.</p>
<p>Et års tid senere meldte jeg mig til <a href="http://demodag.org/" class="external-link">Demodag</a> uden at have ret meget demo. Til gengæld havde jeg lyst til at lave noget, der var sjovt. Nytårstalerne poppede op i min hukommelse, og jeg lavede et par eksempler på, hvordan man kunne hive tilfældige passager ud, blande dem til nye taler, generere referater eller få Google-damen til at læse dem op.</p>
<p>5-6 år mere gik og Machine Learning blev allemandseje. I et forsøg på at dyppe tæerne bare lidt i AI-suppen huskede jeg de gamle taler igen, og fodrede dem til <a href="https://github.com/jcjohnson/torch-rnn" class="external-link">char-rnn</a>. <code>char-rnn</code> er et open source projekt, der, fodret en tekst fil, danner en model, der forsøger at forstå det du giver den, således den kan genere nyt, lignende data. Et såkaldt <a href="https://en.wikipedia.org/wiki/Recurrent_neural_network" class="external-link"><em>Recurrent Neural Network</em></a>. Hjerner er også neurale netværk. <a href="https://www.youtube.com/watch?v=qv6UVOQ0F44" class="external-link">Her er en, der lærer et at spille Super Mario World</a>.</p>
<p>Det medfølgende eksempel er adskillige megabyte Shakespeare. Jeg kunne finde godt 359 kilobyte Dronningetaler. Resultatet var ok.</p>
<figure><a href='https://twitter.com/mikker/status/894893209712812032'><img src="https://s3.brnbw.com/DGtMoNOXcAI4ClR.png-large-AT7FLZufXJ.png" alt="Lorem Ipsum I" width='500' /></a><figcaption>Lorem Ipsum I</figcaption></figure>
<p>Krydret med fake skrive-effekt, et monogram og brevpapir-look:</p>
<figure><img src="https://s3.brnbw.com/2017-11-04-13_33_34-3UqAAwjrtM.gif" alt="HUN SIDDER OG SKRIVER LIGE NU" /><figcaption>HUN SIDDER OG SKRIVER LIGE NU</figcaption></figure>
<p>I sidste ende har vi nok ikke hørt nok til <a href="https://dansketaler.dk/taler/margrethe-2-hkh-dronning/" class="external-link">HM. Margrethe II</a> til at kunne erstatte hende med en AI endnu.</p>
<h3 id="er-det-schmeichel%3F" tabindex="-1">Er det Schmeichel?</h3>
<p><strong>Er det Schmeichel-appen</strong> slægter sig lidt til <em>mootmoart</em> i det, at de bruger samme api: <a href="https://azure.microsoft.com/en-us/services/cognitive-services/face/" class="external-link">Microsoft’s Face API</a></p>
<p>Med appen kan du tage et billede af en person og få at vide, om det er Peter Schmeichel eller ej.</p>
<figure><img src="https://s3.brnbw.com/2017-11-04-13_59_09-LV6Bcynjs1.gif" alt="It's a match!" /><figcaption>It's a match!</figcaption></figure>
<p>Med over 7 mia. mennesker kan det være svært at holde styr på dem allesammen. Peter Schmeichel er dog ikke bare hvem-som-helst, så hvis man møder ham, vil man helst være sikker på, det er den ægte vare. Så er det rart med lidt AI-hjælp.</p>
<p>Teknologien til at genkende og gruppere ansigter har eksisteret i mange år – Photos har kunnet det siden det hed iPhoto – og det er stort set det, jeg har gjort. Fundet 52 billeder af Peter og tilføjet dem til et virtuelt fotoalbum, som om han var en bekendt. Hver gang appen tager et billede, spørger den api’et om nogle af personerne derpå, mon er en af dem.</p>
<p>Indtil videre har den ikke fejlet. Og til det ene show viste vi den endda Kasper Schmeichel.</p>
<hr>
<p>Koden til begge projekter er tilgængelig <a href="https://github.com/ny-mappe-1" class="external-link">på Github</a>. Bragt uden videre forklaring – sig til, hvis der er noget, du gerne vil have forklaret.</p>
<p>🖥 Mikkel</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/35</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/35</guid>
            <pubDate>Sat, 04 Nov 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[mootmoart]]></title>
            <description><![CDATA[<h5 id="%2334-%E2%80%93-2017-09-16-%E2%80%93-mootmoart" tabindex="-1">#34 – 2017-09-16 – mootmoart</h5>
<p>Efter en mindre pause er det på tide at få gang i det her lortebrev igen. Hvorfor pause? Jeg stressede rimeligt meget op til Zulu Comedy Festival, da jeg i en form for kalender-Jackass havde udmeldt, jeg ville lave et show, og som altid gik det først op for mig, at jeg nok også var nødt til at forberede det, da der var kort tid til deadline.</p>
<p>Før eller siden kunne det være et sjovt experiment, at prøve at forberede sig til et eller andet. Bare sådan <em>et eller andet</em>. Not today!</p>
<hr>
<p>Første del af showet var <em>almindelig</em> stand-up. Anden del var 3 <em>product launches</em> af (tvivlsomme) <em>produkter</em>, jeg havde lavet til lejligheden. Det var sjovt at bringe et fremmed element ind i comedy-disciplinen. Jeg elsker en lille smule kaos, så uvisheden i om alting nu virkede, som det skulle, og om det overhovedet kunne være sjovt med programmering, var lækker.</p>
<p>Jeg tænker at fortælle om de 3 ting én ad gangen heri nyhedsbrevet, og i samme ombæring lægge koden op til fri afbenyttelse <a href="https://github.com/ny-mappe-1" class="external-link">på Github</a>.</p>
<hr>
<p>Ét af produkterne er <a href="https://github.com/Ny-Mappe-1/mootmoart" class="external-link">mootmoart</a>: 2 gange om dagen tager den et screenshot af <a href="http://eb.dk" class="external-link">eb.dk</a>, finder alle ansigter på alle billeder, og spørger en computer om deres følelser.</p>
<figure><img src="https://s3.brnbw.com/Screen-Shot-2017-09-16-12-18-00-ZXffsQ0cux.png" alt="mootmoart" width='520' /><figcaption>Det skulle have heddet mootboart - en slags homage til <a href='https://www.youtube.com/watch?v=p1JPKLa-Ofc'>Beyonce's <em>surfboart</em></a> - men jeg ramte et m i stedet.</figcaption></figure>
<p>Den gør det via <a href="https://azure.microsoft.com/en-us/services/cognitive-services/face/" class="external-link">et API</a>, som Microsoft stiller til rådighed for håndører.</p>
<p>Tanken var at man kan bruge den som en slags følelsesvejrudsigt. <em>Hvordan er følelsesvejret på <a href="http://eb.dk" class="external-link">eb.dk</a> i dag?</em> Det viser sig, det for det meste er sådan lidt 😐 <em>meh</em>.</p>
<figure><img src="https://s3.brnbw.com/Untitled-sGGIduUZaS.png" alt="meh all day" width='360' /><figcaption>meh all day.</figcaption></figure>
<p>Det overraskede mig faktisk, hvor nemt, hurtigt og forholdsvist præcist api’et er. Det tager et splitsekund at scanne for ansigter og deres følelser. Det tager langt længere tid at indlæse <a href="http://eb.dk" class="external-link">eb.dk</a> i en browser end det gør at scanne alle de stakkels ansigter på den.</p>
<p>Den er god til at ramme plet – og alligevel skyder den sommetider helt ved siden af. Det virker som en meget god opsummering af forholdet mellem mennesker, computere, <em>Machine Learning</em> og følelser: På et splitsekund kan en computer måle dine følelser uden at vi helt ved, hvad den baserer det på. Ofte er den præcis, sommetider rammer den helt, helt ved siden af.</p>
<img alt='ked af det?' src='https://s3.brnbw.com/Screen-Shot-2017-09-16-12-52-02-FlRhk8n7gd.png' width='180' />
<p>Microsofts model<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> mener fx kvinden her er ked af det? Det synes jeg ikke umiddelbart at kunne tyde. <em>Måske ved computeren noget, jeg ikke ved?</em></p>
<p>Det er selvfølgelig alt sammen fis og løjer og comedyshow. Men husk på, <a href="https://twitter.com/GambleLee/status/862307447276544000" class="external-link">reklamestandere allerede gør det samme med dit ansigt</a>, når du kigger på dem i en burgerbar.</p>
<p>Og sådan går vi allesammen lige så stille en fremtid i møde, hvor computere har en holdning til vores følelser. Eller endnu værre: Andre mennesker baserer deres holdning til vores følelser på, hvad en computer fortæller dem. Computeren er jo i virkeligheden den eneste i forsamlingen, der slet ikke har nogen følelser.</p>
<p>🖥 Mikkel</p>
<hr>
<p>Jeg er stolt af, vi er så mange på COMPUTERS-listen. 545 i skrivende stund. Som altid vil jeg rigtig gerne have dine tanker og kommentarer – du kan bare svare på mailen her. Vil du gøre mig endnu gladere, videresender du dette nummer til en, du tror vil kunne lide det, eller måske tweeter du om det?</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Det, der kommer ud på den anden side, når man <em>træner</em> en kunstig intelligens, kalder man en <em>model</em>. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/34</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/34</guid>
            <pubDate>Sat, 16 Sep 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Using Preact in production with Rails' Webpacker]]></title>
            <description><![CDATA[<p><a href="https://preactjs.com" class="external-link">Preact</a> is like React but smaller in size. I think? Anyway, so I’ve been told. It’s also different in some ways and I’m not entirely sure how, but they have this thing called <a href="https://github.com/developit/preact-compat" class="external-link"><code>preact-compat</code></a> that’ll plug right into your Webpack config and use Preact instead of React which seems like free filesize savings. Right on!</p>
<p>First:</p>
<pre><code class="hljs language-sh">$ yarn add preact-compat webpack-merge
</code></pre>
<p>In <code>config/webpack/production.js</code>:</p>
<pre><code class="hljs language-javascript"><span class="hljs-keyword">const</span> environment = <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;./environment&quot;</span>);
<span class="hljs-keyword">const</span> merge = <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;webpack-merge&quot;</span>);

<span class="hljs-variable language_">module</span>.<span class="hljs-property">exports</span> = <span class="hljs-title function_">merge</span>(environment.<span class="hljs-title function_">toWebpackConfig</span>(), {
  <span class="hljs-attr">resolve</span>: {
    <span class="hljs-attr">alias</span>: {
      <span class="hljs-attr">react</span>: <span class="hljs-string">&quot;preact-compat&quot;</span>,
      <span class="hljs-string">&quot;react-dom&quot;</span>: <span class="hljs-string">&quot;preact-compat&quot;</span>,
    },
  },
});
</code></pre>
<p>I saved 2 whole megabytes with just this change. No, of course that’s not true.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2017/2017-09-07-using-preact-in-production-with-rails-webpacker</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2017/2017-09-07-using-preact-in-production-with-rails-webpacker</guid>
            <pubDate>Thu, 07 Sep 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Overtræk på sejhedskontoen]]></title>
            <description><![CDATA[<h5 id="%2333-%E2%80%93-2017-08-19-%E2%80%93-overtr%C3%A6k-p%C3%A5-sejhedskontoen" tabindex="-1">#33 – 2017-08-19 – Overtræk på sejhedskontoen</h5>
<p>En læser af nyhedsbrevet, <a href="http://kristianjust.dk" class="external-link">Kristian</a>, spurgte, om jeg kunne skrive lidt om, de fejl jeg måske har begået som programmør eller komiker. Hvad Kristian måske ikke vidste, er, at fejl er en af mine kernekompetencer.</p>
<p>I comedy har jeg lært at elske dem. I stedet for at være bange for, noget ikke skulle gå som planlagt, fandt jeg ret hurtigt ud af, det var nemmere (for mig i hvert fald) at gå ud fra, ting ville gå galt, og når de gjorde, være god til at vende dem til det bedre.</p>
<p>Det er lidt ligesom: Du går rundt hjemme i køkkenet, og har din indre <em>sejhedskonto</em> på nul. Så kommer du til at puffe til et glas, som vælter ud af skabet, og mens det hænger i luften, kan du mærke 2 følelser – den ene er følelsen af, at du er en kløvning og din sejhedskonto, der nærmer sig -50 point. Den anden er følelsen <em>jeg kan gribe det!</em> Og idet du lukker hånden om glasset, inden det splintres mod gulvet, kan du mærke <em>sejhedskontoen</em> eksplodere direkte op i plus 100.</p>
<p>Du lavede en fejl. Så reddede du den. Det føltes lækkert. Fejl. Føles lækkert.</p>
<p>I comedy er dine fejl i bedste fald sjovere end det forberedte og i værste fald skyld i, showet dør. Det lyder som det værste, der nogensinde kunne ske, at man skulle stå der foran folk og se dum ud, men som Thomas Warberg siger: <em>“Du ku’ også være blevet skudt”</em>, så måske er det alligevel ikke så slemt?</p>
<p>I programmering går fejlen sommetider udover folks betalingskort. Det føles bestemt heller ikke rart.</p>
<hr>
<p>Første gang jeg skulle hæve penge med <a href="https://10er.dk" class="external-link">10er</a>, var tilbage i … februar 2015? Jeg havde lavet systemet, så det så vidt muligt var fuldautomatisk, og sat hævemaskinen til at starte den første ugedag i måneden kl. 11. Og så egentlig lagt det lidt i baghovedet.</p>
<p>Pludselig, den første ugedag, så jeg, jeg havde 3 kvitteringer fra 10er i min indbakke. <em>Mærkeligt</em>. Skyndte mig at logge ind på serveren, se hvad der var galt. Det viste sig, <a href="http://sidekiq.org" class="external-link">Sidekiq</a>, som kører mine baggrundsjobs, automatisk forsøger igen, hvis den støder på en fejl.</p>
<p>Bruger nummer 13-14-stykker havde ingen penge på sin konto, og hver gang hævemaskinen kom dertil og ikke forventede fejl, eksploderede den <strong>og startede forfra</strong>.</p>
<img src="https://s3.brnbw.com/money-4-OM8BvmAJ24.gif" alt="JAne his wife" width="250" />
<p>Heldigvis er Stripe nemt at have med at gøre, og heldigvis nåede jeg at stoppe den efter kun 3 runder. Heldigvis havde jeg (endnu) programmeret den til at hæve pengene én tilmelding ad gangen. Det var nemt at sende alle penge tilbage, rette fejlen, og melde ud på Facebook, hvad der skete. Det var dengang kun min egen podcast, der var i systemet, så alle donorerne var folk, der allerede vidste, jeg er en <del>loose canon</del> flink fyr.</p>
<hr>
<p><em>Idempotency</em> betyder, at det ikke gør noget, hvis en opgave kører to gange i træk. Det kan koste et par databasekald med tjek, inden du kører kanonerne i stilling, men sommetider er det godt nok, tingene går lidt langsommere end de kan.</p>
<p>I mit tilfælde betyder det, 10er nu aldrig hæver for den samme udgivelse mere end én gang. Det er nok bredt kendt, at den slags er en god ide til opgaver, der skal køre ad sig selv, men her fik jeg min (første) lektie.</p>
<p>Jeg lærte også, at langt de fleste mennesker tilgiver dig, hvis du bare er ærlig og åben omkring fejlen, og viser at du gør, hvad du kan for at gøre det godt igen. Og det har jeg lært igen adskillige gange siden.</p>
<p>🖥 Mikkel</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/33</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/33</guid>
            <pubDate>Sat, 19 Aug 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Lad være med at gøre dit bedste]]></title>
            <description><![CDATA[<h5 id="%2332-%E2%80%93-2017-08-08-%E2%80%93-lad-v%C3%A6re-med-at-g%C3%B8re-dit-bedste" tabindex="-1">#32 – 2017-08-08 – Lad være med at gøre dit bedste</h5>
<p>Efter 3 ugers ferie <a href="https://www.instagram.com/p/BWUtpdKgwwo" class="external-link">til bryllup i Italien</a>, <a href="https://www.instagram.com/p/BWkSwl-AETj" class="external-link">i solen i Skagen</a> og <a href="https://s3.brnbw.com/cat-hugging-teddy-bear-1X7tp5ZXZo.gif" class="external-link">regnen i København</a> er jeg tilbage til de sidste 2 måneder i min kontrakt hos DR. <a href="https://mikkelmalmberg.dk/october-17" class="external-link"><strong>Jeg er så småt gået i gang med at finde ud af, hvad jeg skal give mig i kast med fra d. 1. oktober</strong></a>. Bonus-info: jeg flytter fra København til Aalborg i tidlig 2018. Sig til, hvis du har et projekt eller et job, der kunne passe til en player. Du har <del>mit nummer</del> min emailadresse.</p>
<figure><img src="https://s3.brnbw.com/audience-member-hey-MinjQbKvRB.gif" alt="Player"></figure>
<hr>
<p>Jeg hader aftensmad. Eller – jeg kan godt lide, når den er lavet og serveret, og jeg putter den ind i min mund. Den del er sjældent problemet. Men de tidspunkter, hvor jeg allermest har mest lyst til at gå direkte i seng og sove til ugen efter, er når jeg står i Netto kl. 16:30, og vi stadig ikke har besluttet os for, hvad <em>vi skal ha’</em>.</p>
<p>Og nu er jeg sød og skriver <em>vi</em>. I virkeligheden er det som regel min kæreste, der ikke kan bestemme sig.</p>
<p>Det er her, jeg igen minder hende om Mikkel Malmbergs beslutningsmantra:</p>
<blockquote>
<p>Det gælder ikke om at finde <strong>det bedste</strong> aftensmad – det gælder bare om at finde <strong>noget</strong> aftensmad<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
</blockquote>
<p>Det kan simpelthen ikke passe at hele vores liv skal gå på pause, fordi vi <em>også fik lasagne</em> i går<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>. Hvis vi bare kan finde på én ting, ingen af os er ved at kaste op over, så lad os dog komme videre.</p>
<hr>
<p>At bygge en ting er tusindvis af små beslutninger. Skal knappen være grøn eller gul? <em>Den</em> her grøn eller <em>den</em> her grøn? Skal den sidde til venstre eller i midten?</p>
<p>Skal man oprette en bruger og så betale? Eller måske betale og bagefter modtage en email med tilbud om at oprette en bruger? Skal vi droppe <em>brugere</em> i det hele taget?</p>
<p>Det er ikke dumme spørgsmål – selfølgelig gør det en forskel, om du vælger det ene eller det andet. Men ofte er forskellen så lille, at det dummeste du kan gøre, er at bruge mere tid på ikke bare at vælge én af dem.</p>
<p>Hvis du fortaber dig i detaljen i starten, risikerer du at bruge alt for lang tid på noget, du måske ender med at fjerne helt. Når hele dit projekt er nærmere sin første, komplette form, kan du også bedre se, om knapfarverne giver mening – og om du overhovedet skal have den knap i det hele taget.</p>
<hr>
<p>Enhver erfaren impro-komiker vil fortælle dig, at når du improviserer, skal du sige det første, du kommer på. Dette er ikke et tidspunkt til at være kritisk. Det er ligegyldigt, om du kunne have fundet på noget sjovere. Det vigtigste er, at showet kører videre, og så skal I nok, som gruppe, finde ud af, hvad I skal bruge det du sagde til.</p>
<p>Første prioritet er, at du skal sige noget. Anden prioritet er, at det skal være sjovt.</p>
<p>Her er et lidt anderledes råd: <strong>Lad være med at gøre dit bedste.</strong> I starten. Bare gør et eller andet. Så kan du altid gøre det til det bedste senere.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Det hjælper ikke. I bedste fald føler jeg mig klog. Ikke ulig dette nyhedsbrev. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>…, og dagen før, og hele sidste uge og det meste af 2016 <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/32</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/32</guid>
            <pubDate>Tue, 08 Aug 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Emailens Ghandi]]></title>
            <description><![CDATA[<h5 id="%2331-%E2%80%93-2017-07-02-%E2%80%93-emailens-ghandi" tabindex="-1">#31 – 2017-07-02 – Emailens Ghandi</h5>
<p>Jeg kan rigtig godt lide at tale med folk, hvis vi taler om os selv. Jeg elsker at lytte til folks bekymringer og hjælpe dem med, hvad de skal gøre ved dem. Sommetider skal man bare lytte, bevares, men andre gange kan man give et par råd, og hvis vi begge er heldige, er der et af dem, der giver en helt ny måde at se tingene på.</p>
<p>Nyhedsbrevet her lugter ofte lidt af <em>hjælp til selvhjælp</em>, og det er også fint i sådan en én-til-mange-facon. Så er det hele lidt abstrakt, og tager som regel udgangspunkt i mig. Når det foregår én-til-én kan man være meget mere konkret og holde sine generelle ideer og principper op imod virkeligheden.</p>
<p>Således tweetede jeg dette:</p>
<figure><a href='https://twitter.com/mikker/status/872078707166523392'><img src="https://s3.brnbw.com/Screen-Shot-2017-07-02-at-13.54.39-BjYWTCthLB.png" alt="@mikkers brevkasse" width='500' /><figcaption>@mikkers brevkasse</figcaption></a></figure>
<p>Det overrasker mig ikke, hvis jeg ender med at blive kaldt emailens Ghandi.</p>
<hr>
<p>Her er en mail jeg fik af David (som jeg har fået lov til at bringe sammen med mit svar):</p>
<blockquote>
<p>Hej Mikkel,</p>
</blockquote>
<blockquote>
<p>Som du selv skriver på Twitter ved jeg ikke helt hvad det er du kan, men noget som jeg kan se fra dine tweets og dit nyhedsbrev at du måske faktiskt er god til, er at komme igang og starte på ting, store som små. Me, not so much. Jeg får en del idéer, men aldrig uden at min hjerne samtidig fylder op med tanker om altings meningsløshed og hvor svært eller dyrt det ville være eller hvordan jeg aldrig faktiskt ville bruge det alligevel. Den lille perfektionist vejer tungt i mit sind.</p>
</blockquote>
<blockquote>
<p>Hvis der ikke er et hackathon hvor jeg presses af at det ville være pinligt at ikke levere noget, eller en betalende kunde som skal have noget, har jeg bare rigtigt svært for at komme igang. Og det er med alt fra programmering og elektronik, til fotografi og tekster jeg gerne vil skrive.</p>
</blockquote>
<blockquote>
<p>Så hvordan overvinder du din indre kritiker? Hvordan får du rent faktiskt lavet alt det du gør, uden at gå i stå?</p>
</blockquote>
<blockquote>
<p>Mvh, David</p>
</blockquote>
<p>Godt spørgsmål! Du har ret i, jeg er god til at starte ting. Og de seneste par år er jeg også blevet bedre til faktisk at gøre nogle af dem færdige. Så begynder det rigtig at tage fart.</p>
<p>Jeg kan sagtens sætte mig ind i dit problem. Jeg har selv en stemme i baghovedet, der sætter i gang typisk en 2-3 timer inde i et nyt projekt. Jeg tror ikke, det er perfektionisme for mig, men mere en realisation af projektets størrelse. “Man kunne nok nemt…” bliver lynhurtigt til “Man kan på omkring et halvt års tid og en millioninvestering…”, så snart man begynder at grave i overfladen.</p>
<p>Jeg tænker, der er 2 ting, der måske kan hjælpe dig.</p>
<ol>
<li>
<p>Lav ting for det at lave tings skyld. Hvis rejsen er målet, behøver målet ikke være perfekt. Hvis målet blot er et sideprodukt til, at du nyder at eksperimentere, gør det ikke så meget, om ideen i sidste ende holder vand, om den kan blive en god forretning eller overhovedet blive færdig. Der er selvfølgelig bonuspoint, hvis den også kan tjekke en eller alle de bokse. Men så har du en historie, du kan fortælle til dig selv, når du bliver i tvivl. Og det kan være overraskende effektivt.</p>
</li>
<li>
<p>Giv dig selv en deadline og annoncer det til verden. Du siger det nærmest selv, når du fortæller, at bare det, at der er et hackathon med et sluttidspunkt og andre deltagere, du kan skuffe, så får du rent faktisk klemt et eller andet forbi kritikeren. Mit nyhedsbrev gav jeg deadlinen “Hver fredag” – det er sjældent hverken “hver” eller “fredag” nu, men det var altafgørende for at blive ved, da jeg allerede et par udgaver inde begyndte at tabe det momentum, der er i starten af et projekt.</p>
</li>
</ol>
<p>Begge råd er en slags selv-hacks (den bedste slags!). De er måder at snyde sig selv på, så på den måde kan en indre kritiker hurtigt feje også dem af banen, hvis man tænker for meget over dem. Men det kan ændre meget for mig, hvad det er for en historie, jeg fortæller mig selv inde i hovedet, om de ting jeg foretager mig. Hvad er konteksten, hvad er det, der er målet, hvad er det ved det, der kilder mig i hjernen, som det kun kan, når det handler om at lave noget.</p>
<p>Din indre kritiker er en virkelig ting. Men han er OGSÅ bare et hack, du ikke selv har sat op, som snyder dig fra nydelsen ved at eksperimentere og skabe for eksperimenteringen og skabelsens skyld.</p>
<p><em>Fuck ham</em>, lad os have det sjovt. Alting ER meningsløst, så hvad bedre at bruge sin tid på, end at udforske vores meningsløse univers gennem nysgerrighed.</p>
<p>🖥 Mikkel</p>
<p>PS. Det blev langt! Må jeg bruge det til nyhedsbrevet? 😀
PPS. Det er i den grad valgfrit at få sit brev bragt i nyhedsbrevet.</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/31</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/31</guid>
            <pubDate>Mon, 03 Jul 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[I hvert fald product]]></title>
            <description><![CDATA[<h5 id="%2330-%E2%80%93-2017-06-25-%E2%80%93-i-hvert-fald-product" tabindex="-1">#30 – 2017-06-25 – I hvert fald <em>product</em></h5>
<p>Mit job i DR går ud på at udvikle koncepter uden faktisk at føre dem ud i livet til sidst. Vi ender med en prototype og en beskrivelse og noget feedback fra <em>rigtige</em>, potentielle brugere, men stort set aldrig et færdigt produkt. Det er nogle andre, der skal føre det ud i livet, hvis alle synes, at det er det, konceptet skal.</p>
<p>Og således har jeg på det sidste befundet mig til møder med chefer i DR Nyheder, forklarende et koncept så godt som jeg har kunnet, og når de har svaret, <em>det lyder godt, hvad nu?</em> har jeg sagt, <em>ja, måske</em>:</p>
<p><em>Der skal som regel nogle journalister til – det har jeg ikke så meget forstand på – og hvis noget skal udvikles: programmører og designere. Men det varierer egentlig meget, for det er ikke altid, noget skal udvikles.</em></p>
<p>Til gengæld råder jeg stort set altid til, at finde en enkel person og lade hende have ansvaret for den overordnede vision.</p>
<p>2 ting:</p>
<ol>
<li>en enkel person</li>
<li>overordnet vision</li>
</ol>
<p>Havde DR været en moderne techvirksomhed (og det er det godt nok ikke), havde personen nok haft et visitkort med en titel a la <em>Product Owner</em>, <em>Product Manager</em>, eller <em>VP Products</em>. I hvert fald <em>“product”</em>.</p>
<hr>
<p>Det er lidt forskelligt, hvordan folk beskriver <em>product</em>-rollen. Sommetider er den besat af en programmør og sommetider af en designer. Sommetider ingen af delene. Sommetider er det en person med noget helt andet stående på visitkortet, der bare <em>tager den</em>.</p>
<p>Sommetider lyder folks beskrivelse af rollen mest som det, jeg ville kalde en projektleder. Som om rollen går ud på at koordinere og komme i mål. Men der er forskel på at blive færdig og blive <em>god</em>.</p>
<p>I DR er der (rigtig, rigtig) mange <del>mellemledere haha!</del> mennesker og hver af dem, jeg har mødt, har været kompetente, handlekraftige og egenrådige. Alligevel går der nemt <em>DR i den</em>, og summen af al evne bliver til en tåge af manglende ejerskab<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>. Ting skal nok blive gjort, men vi falder tilbage på vante metoder og greb. Hvis der skal ske noget nyt, skal nogen holde tungen lige i munden og have en vision – jeg foreslår én.</p>
<hr>
<p>Det er en pudsig evne: <em>at have og formidle en vision</em>. Der er ikke som sådan nogen praktisk egenskab, det kræver. Man skal øve sig, før man kan gå i gang med at kode eller designe, men <em>product</em> kan du stort set begynde på i morgen<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.</p>
<p>Måske er det derfor, der er så mange forsøg på at forklare, hvad det overhovedet er, det går ud på.</p>
<p>I et <a href="https://trackchanges.postlight.com/michael-sippey-on-product-management-and-pivoting-3f8614e0424b" class="external-link">enormt godt interview</a> fra december (i den enormt gode podcast <a href="https://itunes.apple.com/us/podcast/track-changes/id1087659707?mt=2" class="external-link">Track Changes</a> fortæller <a href="http://www.sippey.com" class="external-link">Michael Sippey</a>, Director of Product hos Twitter:</p>
<blockquote>
<p>[…] the product manager, if they’re any good, is really like, some of it is like idea generation but most of it is context setting. The thing that I always have to remind myself and always work to remind product managers of, is that really, you have, as a product manager, three questions that you need to be responsible for answering, which is:</p>
</blockquote>
<blockquote>
<ol>
<li>What problem are we solving?</li>
<li>Who are we solving it for?</li>
<li>And: how are we gonna measure success?</li>
</ol>
</blockquote>
<blockquote>
<p>Everything else, like how are we going to solve the problem, how are we going to bring it to market, what are the needs that it has from a feature perspective or a speed perspective, or where should the button go or how should it look or how should the brand work — that is a team exercise. And you’ll get much better results if you involve the team, but the product manager’s job is to set that context <cite><a href='https://trackchanges.postlight.com/michael-sippey-on-product-management-and-pivoting-3f8614e0424b'>#</a></cite></p>
</blockquote>
<p>Det er et virkelig godt interview. Rich Ziade (den ene af værterne i podcasten) skrev for en uges tid siden, om sin opfattelse af rollen – det sidste af 3 punkter beskriver, hvordan <em>smag</em><sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup> er en vigtig del:</p>
<blockquote>
<p>Steve Jobs was keeping a very different score back in 1995. Microsoft was eating Apple’s lunch but he wasn’t impressed and it wasn’t just bitter envy. He summarized his displeasure with them in one sentence: “they have no taste.” It’s a brutal takedown. Here’s a technology juggernaut changing how the world works — and yet it’s sort of true. A great product manager — no matter how technical or marketing-driven — has an eye for what’s going to look and feel good. This applies across the different layers of design from branding to aesthetic to interaction. <strong>A good product manager cares deeply about how the product looks and feels.</strong> <cite><a href='https://trackchanges.postlight.com/what-makes-a-good-product-manager-8b43743d1958'>#</a></cite></p>
</blockquote>
<hr>
<p>Det er en pudsig rolle, som er svær at håndtere. Men har du den rigtige person med en <em>vision</em> og en <em>smag</em>, så kan det blive altafgørende.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Jeg har jo ikke været der i en evighed, men jeg har set folk, der har, grine og nikke genkendende, når jeg advarer mod det. Så det tager jeg som en godkendelse af præmissen. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Og så aldrig blive færdig med at lære, bevares. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>Du og jeg vidste allerede, at smag er vores styrke: <a href="https://computers.mikkelmalmberg.dk/issues/27" class="external-link">COMPUTERS #27</a> <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/30</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/30</guid>
            <pubDate>Sun, 25 Jun 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Hvis grunden konstant er gyngende, er den så?]]></title>
            <description><![CDATA[<h5 id="%2329-%E2%80%93-2017-06-11-%E2%80%93-hvis-grunden-konstant-er-gyngende%2C-er-den-s%C3%A5%3F" tabindex="-1">#29 – 2017-06-11 – Hvis grunden konstant er gyngende, er den så?</h5>
<p>I mandags skød Apple deres årlige udviklerkonference igang på sædvanligvis med en keynote, hvor de blandt andet annoncerede de nye versioner af deres styresystemer. Og således havde jeg samme aften installeret både iOS 11- og macOS 10.13-betaerne på min eneste computer og eneste telefon.</p>
<p>Begge to var brandvarme, langsomme og havde en resterende batteritid i lodret fald, da jeg gik i seng.</p>
<p><a href="https://twitter.com/mikker/status/871970994679894016" class="external-link">https://twitter.com/mikker/status/871970994679894016</a></p>
<p>De sidste 4-5 år har jeg kørt efter planen: 1) Installer betaerne fra ca. dag ét oveni nuværende installation. 2) Installer macOS helt fra nul, når den færdige version udkommer.</p>
<p>Det er selvfølgelig direkte modstridende advarslerne fra eksperterne. <em>Selvfølgelig</em> skal du ikke installere ufærdigt software på computere, du er afhængig af. Der var betaversioner af iOS, der var helt ubrugelige, og nogle der efterlod folks telefoner <em>bricked</em> – en mursten hvis eneste funktion var som kasteskyts igennem ruden på den Humac, der fortalte dig, det var noget, du selv var ude om.</p>
<p>Nu om dage er det noget mere fredeligt. Nu er det mest bare som at gå på en tvivlsomt udseende hængebro: Man træder varsomt, og er bare taknemmelig for at komme over på den anden side med tørre sko.</p>
<p>Jeg er bare drevet mod nye ting. En drift der tilsyneladende er stærkere end fornuft.</p>
<hr>
<p>Jeg er ikke i tvivl om, at macOS er det bedste operativsystem for mig og for de fleste, men jeg kan ikke lade være med at lege med tanken om at skifte til en linuxdistribution. Bare sådan, <em>fordi</em>.<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
<p>Selvom jeg har mest erfaring i programmeringssproget Ruby, prøver jeg ofte andre af, for at se hvad de kan, og nok også bare lidt fordi, de er noget andet.</p>
<p>Jeg kan ikke forsvare det; Det ville være mest fornuftigt at vente til, ting var klar og havde bevist at de ikke ville implodere den gren, de selv blev installeret på(?). Det ville være mest produktivt at blive på de platforme, jeg nu en gang er vant til og effektiv på. Hvis jeg ville spille sikkert.</p>
<p>Til gengæld tror jeg, min omfavnelse af <em>nyt</em> gør, at jeg føler mig sikker på et mere abstrakt plan: Ved at løbe forud og prøve ting af, før det er decideret nødvendigt, vænner jeg mig til ikke at dvæle for meget ved, hvordan tingene er nu, således at når de skifter, (og det gør de altid - <em>specielt</em> med software,) så føles det ikke som om, nogen river tæppet væk under mig.</p>
<p>Jeg spiller sikkert, ved ikke at bilde mig ind, noget forbliver, som de er.</p>
<p>🖥 Mikkel</p>
<p>Meget apropos: Nyhedsbrevet ser lidt nyt ud.</p>
<p>Jeg kan mærke, jeg skal grave dybere for at finde på noget at skrive om. Hvis du har en ide eller måske et spørgsmål, er jeg meget lydhør. Der er også det her:</p>
<figure><img src="https://s3.brnbw.com/pb-zqqXgQ57TV-ZaaQdiQfjG.png" alt="@mikkers brevkasse"></figure>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Første gang jeg forsøgte, var på familiens computer som 12-13-årig. Det var dengang, der var noget, der hed Mandriva, og det var bestemt før <em>the year of linux on the desktop</em> (vi venter stadig). Det holdt i 2 dage. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/29</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/29</guid>
            <pubDate>Mon, 12 Jun 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Hvad er der nu galt med en lille smule gift?]]></title>
            <description><![CDATA[<h5 id="%2328-%E2%80%93-2017-05-28-%E2%80%93-hvad-er-der-nu-galt-med-en-lille-smule-gift%3F" tabindex="-1">#28 – 2017-05-28 – Hvad er der nu galt med en lille smule gift?</h5>
<p>Når jeg handler, køber jeg altid, så meget som muligt, økologiske varer. Jeg er heldig, at jeg har råd – men på en eller anden (frelst) måde, er det det eneste, vi allesammen har råd til på lang sigt.</p>
<p>De gange jeg har talt med folk fra fødevareindustrien om det<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>, er deres ansigter krummet helt sammen, allerede inden min sætning var færdig. Der var skepticisme på vej. <em>“Økologi i Spanien er jo ikke det samme som i Danmark, og hvordan kan du være sikker på, at de vasker de tomater i rent vand, og hvad er der nu galt med en lille smule gift?”</em></p>
<p>Deres svar er altid en blanding af <em>rolig nu</em> og enkelte eksempler på varer, der ikke er økologiske men så åbenbart bedre på den ene eller den anden måde – eller vice versa.</p>
<p>Sandheden er, at jeg ikke aner, hvad der er det bedste valg. Jeg ved bare, at hvis jeg vælger øko-mærkede varer, så har jeg da gjort <em>et eller andet</em>. Fødevareindustrien er så enorm og rådden (sic) og uoverskuelig, at jeg er nødt til at tage mit ene valg i stedet for individuelt at bedømme en million separate varer.</p>
<p>Økomærket, eller Svanemærket eller Astma-allergiforbundets mærke, er <em>badges of honor</em>, som forbrugerne kender og kigger efter, og som producenterne stræber efter at få.</p>
<p>Det fik mig til at tænke på fakenews. (Jeg ved det. Jeg er også træt af at snakke om det… Sidste gang.)</p>
<figure><img src="https://s3.brnbw.com/pb-8HW7GrKZ5t-4u4KTJ50Xe.png" alt="FakenewzzzZZZ" width="497" /><figcaption>FakenewzzzZZZ</figcaption></figure>
<ol>
<li>OMGTHETRUTH.CLUB er en uafhængig organisation og …</li>
<li>Nyhedssider som gerne vil vise, at de tør stå inde for, at de fortæller sandheden (!), putter en <em>embed</em> fra <em>omgthetruth.club</em> på alle deres historier. En embed er ligesom når du sætter en kodestump fra Twitter eller YouTube på din side, og pludselig opstår der en kasse med indhold fra dem.</li>
<li>Til at starte med står der noget a la “Denne historie er endnu ikke blevet fakta-tjekket.”</li>
<li>Tvivlende læsere kan trykke på “Udfordr denne nyhed”-knap i embeden, og en besked sendes til omgthetruth.club (os) om, at vi skal undersøge historien.</li>
<li>Når en konklusion kan nås om sandheden i indholdet, opdateres <em>embeden</em>, så det fremgår, om historien holder vand.</li>
</ol>
<p>Det kræver selvfølgelig, at …</p>
<ul>
<li>Forbrugerne skal kende, stole på og lede efter OMGTHETRUTH.CLUB-mærket, når de læser nyheder på nettet.</li>
<li>Medierne skal kende, stole på og stræbe efter at have OMGTHETRUTH.CLUB-mærket på deres historier.</li>
</ul>
<p><em>Sandhed</em> er sommetider en svær ting at have med at gøre. Jeg tænker, det er nemmere at tage udgangspunkt i det modsatte: At denne historie i hvert fald ikke er decideret <em>fake</em>.</p>
<hr>
<p>Hver gang jeg kommer på en <em>løsning</em> på fakenews, ender jeg i konklusionen, at den også lider under, at jeg højst sandsynligt ikke kommer til at overtale dem, der tror på de falske historier.</p>
<p>Folk læser Den Korte Avis og stiller ikke nogle spørgsmål, for det bekræfter dem i deres overbevisning om, at 50% af befolkningen er kriminelle og muslimer. Folk læser artikler, der afkræfter deres overbevisning om konspirationsteorier, og går derfra <strong>endnu</strong> mere overbeviste om <a href="https://en.wikipedia.org/wiki/Chemtrail_conspiracy_theory" class="external-link">chemtrails</a>, end de var før<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.</p>
<p>Jeg ender altid i konklusionen, at det eneste der er at gøre, er, at lade folk tale sig selv fra deres forkerte opfattelser. Der findes ikke noget fakta, jeg kan bruge til at overtale typerne, der allerede har takket nej til fakta.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Overraskende ofte det sidste halve års tid. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>The Backfire Effect. Hør evt. <a href="https://youarenotsosmart.com/2017/01/13/yanss-093-the-neuroscience-of-changing-your-mind/" class="external-link">You Are Not So Smarts serie</a> om fænomenet (og græd). <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/28</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/28</guid>
            <pubDate>Mon, 05 Jun 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Så mangler du bare en banjo]]></title>
            <description><![CDATA[<h5 id="%2327-%E2%80%93-2017-05-20-%E2%80%93-s%C3%A5-mangler-du-bare-en-banjo" tabindex="-1">#27 – 2017-05-20 – Så mangler du bare en banjo</h5>
<p>Jeg ved ikke med dig, men min internetoplevelse har det sidste halve års tid været plastret til med reklamer for <a href="https://masterclass.com" class="external-link">MasterClass</a>. Jeg tror, det startede med <a href="https://www.masterclass.com/classes/werner-herzog-teaches-filmmaking" class="external-link">Werner Herzog’s kursus i film</a>. Den første gang jeg overvejede at investere i et, var <a href="https://www.masterclass.com/classes/deadmau5-teaches-electronic-music-production" class="external-link">Deadmau5’ musikproduktionskursus</a>. Da jeg så, <a href="https://www.masterclass.com/classes/steve-martin-teaches-comedy" class="external-link">Steve Martins comedykursus</a>, købte jeg adgang med det samme.</p>
<figure><a href='https://twitter.com/mikker/status/861678548309901314'><img src="https://s3.brnbw.com/Masterclass-6EhchWWrjc.jpeg" alt="Min MasterClass" width='500' /><figcaption>Min MasterClass</figcaption></a></figure>
<p>Kurset var ok. Muligvis mest fordi jeg elsker Steve Martin. <a href="http://amzn.to/2qECEoJ" class="external-link">Steve’s selvbiografi</a> er en af mine favoritbøger. Favorit<em>hvadsomhelst</em>. Så meget at jeg læser den en gang hvert andet år godt og vel. Eller – det er løgn – i virkeligheden <em>hører</em> jeg den i den <a href="http://amzn.to/2pVRSWZ" class="external-link">formidable lydbogsversion</a>, som Steve selv læser op og – ikke mindst – spiller banjo mellem kapitlerne på.</p>
<p>Jeg blev født godt 5 år efter Steves sidste stand-up-optræden, så jeg var slet ikke klar over, det var der, han var startet. Jeg kendte ham kun fra film i <em>fjerneren</em>. Det var først da <a href="http://twitter.com/warberg" class="external-link">Warberg</a> fortalte mig nogle af hans jokes, og jeg piratede nogle af hans gamle stand-up-plader, at jeg blev fan.</p>
<p>Faktisk var det lige præcis, hvad jeg havde brug for på det tidspunkt. Jeg var selv begyndt at optræde, og jeg vidste få ting om, 1) hvad jeg lavede og 2) hvad jeg ville lave. Men jeg vidste, at jeg ville lave noget, der var <em>anderledes</em>.</p>
<p>Og det var Steve. Hans optræden var helt igennem fjollet. Der var ingen <em>rød tråd</em>, ingen større formål, ingen sure miner. Bare dejlig, uskyldig fjol. Og Steve der tydeligvis lavede noget, han selv syntes var morsomt. Den røde tråd (hvis man insisterer på at finde en) var Steves karakter, der, på uforklarlig vis, <em>bare var sjov</em>.</p>
<p>Hvis publikum gik derfra, en anelse i tvivl om, hvorfor de havde grint så meget. Hvis de dagen efter, forsøgte at gengive noget sjovt fra showet, og ikke kunne leve op til det, men var nødt til at feje det til siden igen med et <em>“Ja, man skulle nok have været der”</em>; Så var det perfekt.</p>
<p>Sådan var Steve og sådan ville jeg være.</p>
<p>I en lang periode – måske et år eller mere – tænkte jeg altid på Steve Martin lige inden jeg gik på scenen. Og dengang var det mindst en 2-3 gange om ugen.</p>
<p>Jeg har aldrig hørt fra nogen, at de kunne se, jeg forsøgte at kanalisere så meget Steve Martin som overhovedet muligt, men jeg kunne selv mærke det.</p>
<figure><a href="https://www.youtube.com/watch?v=FLuEytS1f1U"><img src="https://s3.brnbw.com/Screen-Shot-2017-05-20-at-13.35.09-h34lhtkHWU.png" alt="Steve Martin, 1979" /><figcaption>Steve Martin, 1979</figcaption></a></figure>
<p>Det er sådan set også lige meget, om man kunne se Steve Martin gennem mig. Det vigtige var, at jeg havde en, jeg kunne imitere.</p>
<p>Når man først starter på noget, aner man (selvfølgelig) ikke, hvad man laver. Dét afskrækker mange, og så sidder de 10 år efter og siger, de er kede af, de aldrig fik lært at spille klaver. Som om en eller anden ekstern kraft nægtede dem at lære det.</p>
<p>Ira Glass taler om det i <a href="https://www.youtube.com/watch?v=X2wLP0izeJE&amp;list=PLE108783228F1E008&amp;index=3" class="external-link">nogle klip om historiefortælling</a>: Når du starter kan du intet, men du har din <em>smag</em>. Så du laver en masse ting vel vidende, at det ikke endnu er godt. For det fortæller din smag dig. Men med tiden bliver du bedre og bedre, og før eller siden kan du leve op til din smag.</p>
<blockquote>
<p>All of us who do creative work we get into it because we have good taste. Like, you want to make TV because you <em>love</em> TV. Because there’s stuff that you really <em>just love</em>. So you get into this thing like there’s a gap. That for the first couple of years you’re making stuff what you’re making isn’t so good. It’s not that great. It’s trying to be good. It has ambition to be good. But it isn’t.</p>
</blockquote>
<blockquote>
<p>But your taste, the thing that got you into your game – your taste is still killer. And so you can tell that what you’re making still is disappointing to you. You can tell that what you’re making is still sort of crappy. A lot of people never get past that phase. A lot of people they quit. <cite><a href='https://www.youtube.com/watch?v=X2wLP0izeJE&list=PLE108783228F1E008&index=3'>#</a></cite></p>
</blockquote>
<p>Mens du er dårlig, kan det være en stor hjælp med nogen, du kan imitere. Et fyrtårn i mørket, så du i hvert fald har en retning, du kan famle dig i, når du tager skridt efter skridt ud i den fantastiske oplevelse, det er at lære noget nyt.</p>
<p>🖥 Mikkel</p>
<p>Hvem imiterer du?</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/27</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/27</guid>
            <pubDate>Sat, 20 May 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Ny Mappe (1)]]></title>
            <description><![CDATA[<h5 id="%2326-%E2%80%93-2017-05-12-%E2%80%93-ny-mappe-(1)" tabindex="-1">#26 – 2017-05-12 – Ny Mappe (1)</h5>
<p>For nogle uger siden havde jeg et stand-up-job. Jeg har aldrig haft enormt mange af dem, men de sidste par år har det stort set været 0. Og når nogen en sjælden gang spurgte, takkede jeg nej, for jeg syntes ikke rigtig, jeg var <em>varm</em> og kunne leve op til det.</p>
<p>Det her var dog for ligesindede til et arrangement arrangeret af ungdomsafdelingen hos <a href="https://prosa.dk" class="external-link">Prosa</a>. Så da jeg blev spurgt, tænkte jeg, at det kunne være den perfekte lejlighed til at få skrevet lidt af det mest nørdede materiale, som jeg ellers må brænde inde med.</p>
<p>Det gik rigtig fint på aftenen – vi morede os kosteligt på vores egen og Javascripts bekostning. Men noget andet sjovt, jeg oplevede op til dagen, var, at jeg pludselig var nødt til at komme på open mics igen. Jeg havde ligefrem <em>lyst</em> til at optræde. Jeg skrev og skrev, og tænkte hele tiden på jokes ligesom dengang, hvor det var det eneste, jeg havde at tænke på.</p>
<p>Lige indtil dagen efter jobbet.</p>
<p>Ude på den anden side, røg al den momentum, jeg havde følt op til. Det var lige det, jeg havde frygtet.</p>
<p>Det er velsignelsen ved en deadline. Uden en deadline er jeg 100% styret af mine impulser. Det er ikke fordi, der straks går Netflix i den<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>, så snart jeg ikke har min snarlige undergang hængende lige over hovedet; Jeg laver ting, bare ikke altid dem jeg burde.</p>
<p>En uge efter jobbet havde jeg ikke en eneste gang skrevet materiale eller overvejet en open mic. Det var klart, hvad der skulle til: En ny deadline. Så i et øjebliks storhedsvanvid tilmeldte jeg mig dette års Zulu Comedy Festival.</p>
<p>Jeg laver et show på en 40-50 minutter, det skal hedde <strong>Ny Mappe (1)</strong>, og jeg skal virkelig til at gå igang med at skrive det.</p>
<figure><img src='https://s3.brnbw.com/ny-mappe-1-1280h-uqBWnmlFdN.jpg' alt='"Plakat"' width='500' /><figcaption>"Plakat"</figcaption></figure>
<p>Indtil videre skal det kun ske den ene gang. Man kan snart <a href="http://www.ticketmaster.dk/event/430193" class="external-link">købe billetter her</a> (mandag, tror jeg).</p>
<p>Your move, Nemesis.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Jeg skal nærmest planlægge at se film eller serier nu om dage. Det er bare så meget mere underholdning i at lave noget 😎 <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/26</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/26</guid>
            <pubDate>Fri, 12 May 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Totalteatret @mikker]]></title>
            <description><![CDATA[<h5 id="%2325-%E2%80%93-2017-04-30-%E2%80%93-totalteatret-%40mikker" tabindex="-1">#25 – 2017-04-30 – Totalteatret @mikker</h5>
<p>Før forleden havde jeg haft den samme Twitter-avatar siden juni 2011.</p>
<figure><img src="https://s3.brnbw.com/cap-face-red-YpdlvBAQqI.png" alt="cap-face-red.png"></figure>
<p>Jeg skifter sjældent, men det overrasker mig alligevel, det er <em>så</em> længe siden.</p>
<p>Det føles som om, det koster noget at skifte. Jeg læser Twitter mange gange i løbet af dagen<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>, og mange af dem, jeg følger, kender jeg ikke i virkeligheden. Mange af dem jeg kender i virkeligheden, kender jeg fra Twitter først. <a href="http://www.aftertherye.com" class="external-link">Mark</a> fx kalder jeg lige så tit for <em><a href="https://twitter.com/marks" class="external-link">marks</a></em> – selv til hans ansigt. Folk kalder mig for <em>mikker</em> hele tiden.</p>
<p>De personers <em>visuelle form</em> for mig er ikke deres ansigtstræk, håndbevægelser når de gestikulerer, smilehuller, måde at kigge på deres telefon, mens de har en samtale, det at de i virkeligheden <em>ikke</em> en enhjørning. Den består af et kvadratisk billede, de selv har valgt og måske sådan en fornemmelse for, hvordan de vælger at sætte deres tegn, når de skriver dem i bundter af 140 ad gangen.</p>
<p>En ny avatar på en profil, man har fulgt længe kan føles helt <em>off</em>. Som da din klassekammerat kom tilbage fra sommerferie med en helt ny, helt meget …<em>ny</em>… frisure. Det tager lige en dags tid at komme sig over, at det der før var leverpostej nu er ostereje.</p>
<p>Det er derfor jeg ikke tager så let på det. Men nu var det altså blevet tid.</p>
<p>2017-mig er immervæk en anden person end 2011-mig. Der er nok ikke mange af de atomer, jeg bestod af i 2011, som stadig er med. Og mine 2017-atomer har et andet job, en søn – og endnu vildere: et nyhedsbrev.</p>
<hr>
<p>Twitter føles ret meget som <em>mig</em>. Måske det det, der gør, at det er mit foretrukne sociale medie stadigvæk. Facebook synes fx overhovedet ikke som mig. Det gjorde det engang, men når jeg kommer derind nu, er det som dengang, jeg var til Danish DJ Awards<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup> – der <em>er</em> fest, og folk ser ud til at more sig kosteligt, men jeg kan slet ikke finde ud af at befinde mig der OG i min egen krop på samme tid.</p>
<hr>
<p>Inden længe bliver den nye avatar til den man kender, og man glemmer helt tingene var anderledes engang. Billedet bliver det visuelle mærkat på totalteatret <em>@mikker</em>. Der er ikke nogen spørgsmål længere – det er bare sådan, det er.</p>
<figure><img src="https://s3.brnbw.com/mikker-pastel-500-Na9hoiWyiE.jpeg" alt="mikker-pastel.jpeg" width="250" /><figcaption>mikker-pastel.jpeg</figcaption></figure>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Jeg erkender min afhængighed. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Warberg var vært. Jeg gik meget hurtigt igen. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/25</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/25</guid>
            <pubDate>Sun, 30 Apr 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Masser af gode links i kælderen]]></title>
            <description><![CDATA[<h5 id="%2324-%E2%80%93-2017-04-22-%E2%80%93-masser-af-gode-links-i-k%C3%A6lderen" tabindex="-1">#24 – 2017-04-22 – Masser af gode links i kælderen</h5>
<p>Jeg er begyndt at, når jeg husker det, notere de artikler, jeg læser, og de videoer jeg ser, på <a href="https://www.reading.am/mikker" class="external-link">reading.am</a>. Eller det vil sige; en gang imellem husker jeg, at trykke på ✌-knappen i Safari.</p>
<p>Engang brugte jeg ivrigt <a href="https://www.instapaper.com" class="external-link">Instapaper</a> og mine favoritter der, blev lidt det samme. Jeg har også oprettet <a href="http://mikkerrecommends.tumblr.com" class="external-link">mikkerrecommends.tumblr.com</a> for at have et sted, jeg kunne fortælle om mine yndlings-podcast-episoder. Altså dem, jeg markerer med en stjerne inde i <a href="https://overcast.fm" class="external-link">Overcast</a>(s lukkede system).</p>
<p>Der er de få bogmærker, jeg har tilføjet direkte i Safari eller Chrome, og engang imellem tweeter jeg et link.</p>
<p>På <a href="https://github.com/mikker" class="external-link">Github</a> markerer jeg projekter, jeg bruger, eller er interesseret i med stjerner. På <a href="https://reddit.com" class="external-link">Reddit</a> har jeg en bunke <em>saved</em> links, som mest er fra nogle år tilbage. Jeg har en 2-3 Youtube-konti, tror jeg. Og de har vist også favoritter gemt?</p>
<p>Jeg bidrager selv til manien på <a href="https://latr.fm" class="external-link">Latr.fm</a>, hvor man kan markere sine favoritter som public. Hvilket jeg selv <a href="https://latr.fm/mikker" class="external-link">stort set aldrig kunne finde på</a></p>
<p>Og så er der nok kun en 8-9-10 andre services, jeg for længst har glemt, som står og rådner sammen med de links, der måtte være gemt deri.</p>
<p>I virkeligheden var det nok aller smartest at gemme alt i <a href="https://pinboard.in/u:mikker" class="external-link">mine bogmærker på Pinboard</a> – De går helt tilbage til 2008!?</p>
<figure><img src="https://s3.brnbw.com/Screen-Shot-2017-04-22-13-51-19-q4iD4Hxa8v.png" alt="iSync og Nokia: Andre tider"></figure>
<p>Var alt kun ét sted, vidste jeg altid, hvor jeg skulle lede.</p>
<hr>
<p>Det er et vanvid, og det er udelukkende min egen skyld. Jeg kunne bare holde mig til én form for <em>linkscrapbog</em>, men det gør jeg åbenbart ikke.</p>
<p>I virkeligheden går jeg sjældent tilbage for at finde noget. Søgemaskinerne<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> fungerer som bogmærker. Så hvorfor bliver jeg ved, og hvorfor skal jeg nu til at gøre det endnu værre med <a href="http://reading.am" class="external-link">reading.am</a>?</p>
<p>Jeg tror, der er to behov, jeg forsøger at dække:</p>
<p>1: <em>Det her kan jeg helt sikkert bruge senere</em>. Det er det samme behov, som folks lofter og kældre er fyldt op med. <em>Ingen grund til at smide den her helt fine, stort set kun meget ridsede Natalie Imbruglia-CD ud?!</em></p>
<p>2: Det her skal folk vide, var godt. Et behov der stammer fra min opfattelse af, at alle synes, jeg er det mest spændende menneske i verden. Halvt <em>se lige hvad jeg har læst</em>, halvt godhjertet begejstring. Når nogen poster et link med ordene <em>Interessant læsning</em> eller <em>Spændende</em>, så er det nok den her kategori, vi er ovre i.</p>
<hr>
<p>På en måde har jeg haft og været bevidst om denne bekymring så længe, at jeg er i tvivl om, om der faktisk findes en løsning. Det er som om, hvorend de prøver, så er ingen af systemerne generiske nok til at kunne inkludere alle kategorier af links og samtidig ikke automatiske/hurtige/gnidningsfrie nok til, at det ikke er besværligt<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup> at skulle gemme ting.</p>
<p>Jeg er ikke engang sikker på, jeg behøver gemme ting. Der er også noget lækkert i at kigge en ting lige i øjnene, tænke <em>“Tak fordi du var det, du var”</em> – og så kyle den ud over en skrænt for aldrig at tænke på den igen.</p>
<hr>
<p>Hvordan ser dit system ud? Bonuspoint for simpelthed + at det virker for dig.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>DuckDuckGo selvfølgelig! … Eller … Google, faktisk, hvis jeg skal være realistisk. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Besværligt på den der <em>MAX 200 MILISEKUNDER</em>-måde, som vi kender fra livet på internettet. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/24</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/24</guid>
            <pubDate>Sat, 22 Apr 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Den badgerøde, vibrerende lommeslagmark]]></title>
            <description><![CDATA[<h5 id="%2323-%E2%80%93-2017-04-07-%E2%80%93-den-badger%C3%B8de%2C-vibrerende-lommeslagmark" tabindex="-1">#23 – 2017-04-07 – Den badgerøde, vibrerende lommeslagmark</h5>
<p>Notifications er en del af en moderne smartphone-tilværelse. Alle slås om din opmærksomhed – computere og mennesker – og de gør det på lige vilkår, på den samme badge-røde, vibrerende lommeslagmark: Notifications.</p>
<p>Med notifications mener jeg ting, der popper op, popper ned, viser røde <em>ulæst</em>-badges eller bare ryster lidt i lommen, når du bliver udfordret i Wordfeud<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
<p>Hvordan man vælger at håndtere dette blodbad er vidt forskelligt. Nogle slår alting fra, andre slår alting til. De fleste lever nok et sted midt imellem. Et sted hvor de har slået meget fra, og gerne ville slå endnu mere fra, men er bremset af frygt for at gå glip af <em>et eller andet</em>.</p>
<hr>
<p>At slå alting fra er beundringsværdigt. Og også mærkeligt. Selvfølgelig er det rigtigt, når zen-typer siger, at alting godt kan vente. Du har jo ikke tænkt dig at svare på den mail lige nu alligevel? Nu ved du bare, den findes, og kan ikke få indholdet ud af hovedet, selvom du ikke kan gøre noget ved det før i morgen, hvor du er på kontoret igen.</p>
<p>Men der er jo stadig alle de gode notifications. Mentions på Twitter<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>, mails fra dem du godt kan lide, din tur i Wordfeud<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>, påmindelser om at du nu har optjent flere Smølfepoint i <em>Smurf World Mega Party In-App Purchase Extravaganza</em>.</p>
<p>Det svære ligger i, at en notification ikke selv ved, om den er god eller ond. Den ved bare, at den skal ramme dig så hurtigt som muligt. Som en brevdue med kurs direkte mod dit ansigt.</p>
<figure><img src="https://s3.brnbw.com/giphy-EoG6tZF3L5.gif" alt="😫      🕊💨"></figure>
<p>At slå alting til er på en måde lige så beundringsværdigt. Din lomme er aldrig i stilstand, din homescreen et rødt hav af tal, du skal have fulgt op på. Som en overdådig ansvarsbuffet – hvor skal jeg mon først gå hen og se, hvad jeg mangler at lave.</p>
<p>Jeg har set folk med et stort, rødt <em>4000+</em> ovenover deres Mail-app. Hvad i alverden skal det forestille? Hvor skal man overhovedet starte med sådan en mailbox? Her er et forslag: Start med at kyle din telefon i et bål sammen med din totale mangel på selvrespekt.</p>
<hr>
<p>Jeg selv er endt, ja, et sted midt imellem. Jeg kan nok ikke overraske nogen læsere på det her tidspunkt med, at jeg har en holdning til notifications. Jeg kan godt lide nogle af dem, vil ikke have noget som helst at gøre med andre. Nogle af dem får lov til at poppe op (Twitter fx), andre får kun lov til at være <em>ulæst</em>-tal (Mail fx), andre kan få lov at hoppe ud over en skrænt (Wordfeud fx<sup class="footnote-ref"><a href="#fn4" id="fnref4">[4]</a></sup>).</p>
<p>Husk på at man ikke kan overse en notification. Når først den har været der, og du så den, så er dens indhold i din opmærksomhed. Ligesom at du heller ikke kan lade være med at tænke på din tunge, hvordan den ligger i din mund, når du har læst den her sætning til ende. Der er den. Plejer den at virke så stor?</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Seriøst, hvem spiller stadig Wordfeud? Nå okay, jamen så må du hilse din mor. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Med mindre du er <a href="https://medium.com/@kellyellis/im-a-verified-twitter-user-with-11k-followers-here-s-why-i-m-quitting-the-site-76e48d2d5e26" class="external-link">kvinde</a> 😞 <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>Stop nu med at snakke om Wordfeud?! <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn4" class="footnote-item"><p>Jeg spiller altså ikke Wordfeud, jeg sværger, men nu var det jo blevet et callback. <a href="#fnref4" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/23</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/23</guid>
            <pubDate>Sat, 08 Apr 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Smack My Glitch Up]]></title>
            <description><![CDATA[<h5 id="%2322-%E2%80%93-2017-03-31-%E2%80%93-smack-my-glitch-up" tabindex="-1">#22 – 2017-03-31 – Smack My Glitch Up</h5>
<p>I denne uge har jeg kodet live, <em>in public</em> på <a href="https://glitch.com" class="external-link">Glitch</a> et par gange.</p>
<p>Nogle ideer vil ikke rigtig slippe, men kommer alligevel heller aldrig helt i gang. Jeg tænkte, jeg kunne få dem skudt afsted og samtidig både få prøvet Glitch og måske, hvis jeg var helt heldig, introducere nogle af mine mindre teknikvandte følgere til programmering.</p>
<p>Glitch blev til for et år eller to siden. Først hed det Hyperdev. Så hed det noget, jeg har glemt, og nu hedder det altså Glitch.</p>
<p>Konceptet er stort set det samme, men fokus er skiftet fra <em>cool collaberative cloud editor</em> til noget, der handler mere om læring, community og leg. Jeg synes, det er den helt vej at gå.</p>
<p>I virkeligheden har jeg over flere omgange ville lave lige præcis de her to ideer, men er aldrig rigtig kommet i gang, for aller først har jeg skullet blive enig med mig selv om, hvilken teknologi og metode jeg skulle bruge.</p>
<p>Det er en velsignelse og en forbandelse at programmering i 2017 er så mange forskellige ting, som det er.</p>
<p>Computere er så hurtige, programmeringssprogene så sofistikerede, og abstraktionsniveauerne så hævede over 1-taller og 0’er, at man kan stirre sig helt blind på mulighederne.</p>
<p>Hvis det er forvirrende for en erfaren programmør – hvor forvirrende er det så ikke for en nybegynder?</p>
<p>På Glitch forsøgte jeg at gøre brug af så lidt <em>lir</em> som muligt. Hvor lidt skulle der til for at nå til det jeg ville opnå?</p>
<p>Begge gange startede jeg med en <code>README.md</code>, hvori jeg beskrev målet og en kort plan for, hvordan jeg havde tænkt mig at nå derhen.</p>
<p>Og så gik jeg i gang.</p>
<hr>
<p>Når man ser andres projekter, glemmer man sommetider at overveje rejsen dertil. Det er nemt at kigge på en færdig ting og tænke, <em>“Jeg laver aldrig noget så omfattende”</em>. Men foran enhver ting ligger der en masse timer, hvor en frustreret programmør har siddet og gået frem og tilbage, undrende sig over hvor fejlen var, indtil til sidst at finde ud af, det bare var et komma, der sad forkert.</p>
<p>Det er noget af det, jeg har villet vise med Glitch: Rejsen hen mod den ting, man har forestillet sig. Hvordan man sommertider går ud af én vej, kun for at finde ud af, det var den forkerte og må starte forfra. Lige præcis dette skete (heldigvis) begge gange i den her uge.</p>
<hr>
<p>Jeg ved ikke, om det var sjovt at kigge med. Men det var i hvert fald sjovt for mig at se folk kigge forbi. Og hvis ikke andet, fik jeg prøvet de par ideer af, jeg havde uden at finde den store værktøjskasse frem.</p>
<p><strong>Projekterne:</strong></p>
<ul>
<li><a href="http://emojis-on-tv.glitch.me" class="external-link">Emojis on TV</a> <a href="https://glitch.com/edit/#!/emojis-on-tv" class="external-link">koden</a></li>
<li><a href="https://gimme-them-news.glitch.me" class="external-link">Gimme Them News</a> <a href="https://glitch.com/edit/#!/gimme-them-news" class="external-link">koden</a></li>
</ul>
<p>🖥 Mikkel</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/22</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/22</guid>
            <pubDate>Fri, 31 Mar 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Produkt eller Hack]]></title>
            <description><![CDATA[<h5 id="%2321-%E2%80%93-2017-03-26-%E2%80%93-produkt-eller-hack" tabindex="-1">#21 – 2017-03-26 – Produkt eller Hack</h5>
<p>Problemet med at kunne programmere sine egne produkter er, at man ofte glemmer at stoppe inden og overveje, om det overhovedet er en god ide<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
<p>Det er en af de ting, jeg stadig øver mig på: <em>Ikke</em> at begynde på at lave en dims, straks efter jeg får ideen. Det går ok.</p>
<p>Det viser sig som regel, efter den første gnist af opfindsomhed har lagt sig, at ideen slet ikke så genial, og mange af de ting, man i første omgang havde anskuet som værende <em>nemme</em>, havde lidt flere aspekter under overfladen.</p>
<p>Det er én af grundene til, det er så skide svært at anslå, hvor længe noget tager at udvikle. I hvert fald for mig. Når jeg forestiller mig inde i hovedet, hvordan <em>en ting</em> fungerer, så ser det hele meget klarere ud, end det i virkeligheden er. Jeg glemmer, at der til de fleste <code>if</code>’er også er en <code>else</code>, og hver gang stiger kompleksiteten til det dobbelte.</p>
<figure><img src="https://s3.brnbw.com/mathowie_2017-Mar-03-hf6opoufcg.jpg" alt="Hvordan Slack bestemmer sig for, om den bør sende en notification"></figure>
<p>(Nuppet fra <a href="https://twitter.com/mathowie/status/837735473745289218" class="external-link">@mathowie</a>)</p>
<figure><img src="https://s3.brnbw.com/Screen-Shot-2017-03-26-13-01-34-EwFoyBvL6I.png" alt="Via @mentalizer"></figure>
<p>Og det er bare programmeringen. Det er nemt at tro, at hvis man bare laver noget, der er <em>godt nok</em>, så kommer kunderne af sig selv. Det er selvfølgelig meget sjældent tilfældet. Når du har klaret de første 90%, og så de sidste 90%, så har du et produkt, du kan vise til folk, og her kommer der mindst 900% mere<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup><sup>Citation needed</sup>.</p>
<p>Internettet svømmer i gode og dårlige produkter og der er ikke nødvendigvis nogen retfærdighed i, hvilke der bliver brugt kontra hvilke der er gode.</p>
<hr>
<p>Jeg er begyndt at dele ideerne op i <em>hacks</em> og <em>produkter</em>. Hacks har ingen garantier. Hverken for at blive færdige eller for at virke – eller for at tjene penge. Det er derfor ikke så vigtigt, at alt er i orden eller gennemtænkt. Det er meningen, at limen er lidt løs, og at man kan se gaffatapen hist og her. Det er en slags <em>lad os se om den kan stå af sig selv</em>-projekt.</p>
<p>Jeg håber på at kunne finde tid til at lave mere af den slags dimser på <a href="https://glitch.com" class="external-link">Glitch</a>.</p>
<p>Produkter derimod er (stort set) polerede, (stort set) færdige ting, som kræver langt mere tid og en dedikeret indsats og videreudvikling, og nok også en form for forretningsmodel eller i hvert fald en plan for fremtiden – så dem holder jeg mig fra.</p>
<p>Når jeg får en ide, er det første, jeg tænker på kun ideen. Om den er god eller dårlig. Efter jeg har regnet den ud inde i hovedet, husker jeg, at den helt sikkert er mere omfattende, end jeg forestiller mig. I hvert fald hvis den skal være et produkt – men som <em>hack</em> kan den være ovre og prøvet på et par timer, og så er det måske det, den fortjener.</p>
<hr>
<p>Hvis du mere er typen, der står og gerne vil eje et produkt, så må du gerne overtage <a href="https://latr.fm" class="external-link">Latr.fm</a>?</p>
<figure><img src="https://s3.brnbw.com/Screen-Shot-2017-03-26-13-31-17-ZZxbnF73Nu.png" alt="Den kan blive din"></figure>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Det er <strong>så</strong> hårdt. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Godt det her ikke er en matematikprøve. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/21</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/21</guid>
            <pubDate>Sun, 26 Mar 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Og så ku' man ogs']]></title>
            <description><![CDATA[<h5 id="%2320-%E2%80%93-2017-03-17-%E2%80%93-og-s%C3%A5-ku%E2%80%99-man-ogs%E2%80%99" tabindex="-1">#20 – 2017-03-17 – Og så ku’ man ogs’</h5>
<p>I slutningen af sidste uge brugte jeg et par dage på Fyn, for at deltage i en innovationsworkshop<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>. Jeg var glad for at blive inviteret til den slags – jeg tror, jeg stadig er ved at vende mig til min nye rolle som <em>mere end programmør</em>. Jeg var ikke bange for, jeg ikke ville kunne bidrage, <em>innovationsworkshop</em> er nærmest mit fuldtidsjob lige nu, men det er stadig meget uvist for mig, om det er gået op for andre, at jeg har flere tricks i ærmet end min sparsomme Twitter-bio vil fortælle.</p>
<p>Vi var stadig tidligt i processen, så vi havde endnu ikke havde bestemt os for, hvad vi faktisk gerne ville ende med at lave. Men vi skulle til at kredse ind mod et valg, så ideer skulle præsenteres.</p>
<p>I min afdeling i DR bruger vi stort set altid forløbet fra bogen <a href="http://amzn.to/2nhfzqJ" class="external-link">Sprint</a>. Det er svært at slå effektiviteten i 5 dage fra start til testet prototype. 14 dage er på en måde for meget til de fleste prototyper, og grænsen mellem, hvor færdig man har tænkt sig at lave ting, begynder at blive sløret. Med Sprint-forløbet er der én dag (plus det løse) til at lave prototype, så man tvinges til <em>ikke</em> at lave noget færdigt, men i stedet fake så meget som muligt for at nå det. Dét er en kæmpe fordel.</p>
<p>Hele formålet er, at gå fra overordnet problem og ned til helt konkret løsning <em>og</em> ikke mindst en vurdering baseret på rigtige brugere af, om løsningen overhovedet er god – på så kort tid som muligt.</p>
<p>I bedste fald finder vi på noget lækkert. I værste fald har vi brugt 5 dage på at finde ud af, hvad vi <em>ikke</em> skal bruge mange penge og måneder på at udvikle færdigt.</p>
<hr>
<p>En anden fordel ved at skulle holde det til, hvad man kan nå på så kort tid, er at man slipper for <em>“og så ku’ man ogs’”-tendensen</em>.</p>
<p>Nogle synes at stræbe efter et så højt antal features som muligt, når de pitcher en idé. Feature efter feature og integration med service efter service remses op i sætninger startende med <em>“og så kunne man også X, og så kunne man også integrere med Y”</em>, som om formålet er at skabe et så højt bjerg af strøtanker som muligt.</p>
<p>I virvaret af afstikkere kan det blive helt uoverskueligt, hvad der egentlig er kage, og hvad der er krymmel.</p>
<p>Kort tid tvinger dig til at fokusere på så få features som muligt. Du kan kalde det <em>Minimal Viable Product</em>, eller <em>Elevator Pitch</em> eller hvad end du vil; det gælder om at finde fokus – hvad er den helt korte historie om, hvad der er vi kan.</p>
<hr>
<p>Når man fortæller en joke, bliver den som regel bedre, jo færre ord den består af. Jeg har ofte hørt historier om, hvordan et enkelt fjernet eller ændre ord har reddet en joke. Når enkelte ord kan ændre på, om publikum griner eller ej, bliver det meget tydeligt, at der for maximum effekt kræves maximum præcision.</p>
<p>Hvis en joke lister eksempler op, er rådet at holde sig til de tre bedste<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>. Selvom du kan finde 12 eksempler på, hvad lighederne mellem Ghandi og en bregne er, så begynder folk at stoppe med at grine omkring nummer 5.</p>
<p>Jeg tror, det samme råd virker til produktpræsentationer.</p>
<hr>
<p>🖥 Mikkel</p>
<p>Som altid bliver jeg glad, hvis du svarer, og endnu mere, hvis du fortæller en ven om nyhedsbrevet eller <a href="https://twitter.com/intent/tweet?text=https%3A%2F%2Fcomputers.mikkelmalmberg.dk%2Fissues%2F19" class="external-link">tweeter det</a>.</p>
<p>Vi er nu rundet 403 subscribers! Det er jeg stolt af. Hej!</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>I stedet for at skrive og udsende det her nyhedsbrev – <em>the streak is broken nooooo</em> <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Eller endnu bedre de to bedste og en tredje med et twist. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/20</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/20</guid>
            <pubDate>Fri, 17 Mar 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Papirfabrikken]]></title>
            <description><![CDATA[<h5 id="%2319-%E2%80%93-2017-03-04-%E2%80%93-papirfabrikken" tabindex="-1">#19 – 2017-03-04 – Papirfabrikken</h5>
<p>Jeg ved ikke meget, men hvis der er én ting, jeg ved, så er det, at jeg heller ikke husker særligt meget.</p>
<p>Det er en realitet, de fleste komikere (og alle?) har oplevet, at hvis du ikke skriver den ide, du har i hovedet lige nu, ned med det samme, så har du glemt den lige om lidt. Og det er sommetider ikke engang nok.</p>
<p>Utallige gange er jeg vågnet op til kryptiske noter efter en bytur. <em>“Diller i negativ pga Facebookfilter”</em>. Hvad skal det overhovedet betyde? Jeg ved det ikke, men jeg er sikker på, den joke kunne have sendt min karriere direkte mod skyerne, havde jeg dog bare husket <em>resten</em>.</p>
<hr>
<p>Måske har du hørt om systemet <a href="https://www.amazon.com/Getting-Things-Done-Stress-Free-Productivity/dp/0143126563/ref=sr_1_1?ie=UTF8&amp;qid=1488632543&amp;sr=8-1&amp;keywords=getting+things+done" class="external-link"><em>GTD</em></a> eller <a href="https://www.amazon.com/Getting-Things-Done-Stress-Free-Productivity/dp/0143126563/ref=sr_1_1?ie=UTF8&amp;qid=1488632543&amp;sr=8-1&amp;keywords=getting+things+done" class="external-link"><em>Getting Things Done</em></a>? Det er en bog og et system, der handler om, hvordan du får dit meget, meget vigtige, business-agtige liv tilbage på sporet. Det er en fin bog og nogle gode ideer. Men det er også langt mere besværligt end det behøver være<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
<p>En af nøgleideerne i <em>GTD</em> er, at sørge for at få ideerne ud af hovedet og ned på <em>papir</em> så hurtigt som muligt. På den måde kan du med god samvittighed give slip på problemerne, indtil det er tid til at tage hånd om dem. En <em>inbox</em>, kalder han det.</p>
<p>Engang havde man (vel?) en fysisk indbakke på sit skrivebord på papirfabrikken, hvori ting man skulle tage stilling til opstod. Således kunne man, næste gang man var på kontoret, starte fra en ende af, og processere indholdet. Start til slut, og så var der ikke mere post før næste dag.</p>
<p>I dag har du din indbakke med dig i lommen, og med den alle dine bekymringer og ansvar. Den ryster og bipper og blinker sikkert, hver gang nogen putter noget i den – lige meget om det er en reklame, en fødselsdagshilsen eller en besked om, at du er sat på gaden. Det er svært at håndtere, hvad end man er typen, der burde kigge mere eller mindre på sin Todo.</p>
<p>Det er ud af GTD, at konceptet <em>Inbox Zero</em> kom. Det har du måske også hørt om. Ideen er, at din emails Inbox er en <em>indbakke</em> som i gamle, fysiske dage. En bunke nye ting, som du skal arbejde dig igennem. Og når du er færdig, så er du færdig for indbakken er tom og klar til morgendagens post. Hvis du er typen, der har 900+ ulæste mails i din indbakke (de findes!) så er det enten det dummeste, du har hørt om eller din redning fra et mavesår.</p>
<p><a href="https://43folders.com" class="external-link">2009-Merlin Mann</a> er som altid fuld af visdom om <a href="http://www.43folders.com/2004/09/08/getting-started-with-getting-things-done" class="external-link">både GTD</a> og <a href="http://www.43folders.com/izero" class="external-link">Inbox Zero</a> (han opfandt det sidste).</p>
<hr>
<p>Nuvel; som med så meget andet, så har jeg læst gospelen, og er landet et sted omkring 80% implementation.</p>
<p>Min emailindbakke® indeholder i skrivende stund 56 mails. 10 af dem er nogen, jeg har kigget på mindst én gang før, men ikke har taget stilling til endnu. Det betyder i mit tilfælde typisk, at jeg enten skal 1) arkivere dem 2) svare på dem eller 3) huske at gøre noget, der er relateret til dem. Når en email er <em>processeret</em>, så arkiverer jeg den i en mappe, der hedder Arkiv, og hvis jeg skal bruge den igen (usandsynligt), så søger jeg efter den.</p>
<p>Men ideen om indbakker kan nemt bruges flere steder end emails: Når jeg skriver ting ned på min telefon, er det næsten altid fordi, jeg ikke har min computer ved mig, og så vil jeg egentlig helst bare have det overstået så hurtigt som muligt. Jeg har <a href="http://agiletortoise.com/drafts/" class="external-link">Drafts</a> i bunde af min Homescreen og nærmest kun én action: “Add to inbox”, som tilføjer tekst til en tekstfil i min Dropbox, der hedder <code>Inbox.md</code>.</p>
<p>Detaljerne til side, så er det vigtige for mig, at jeg har ét sted, jeg skal skrive i, så jeg er sikker på at huske det. Og dermed også kun ét sted, jeg skal tjekke, når jeg er klar til at tage stilling til, hvad end fulde-mig måtte have syntes var en god ide aftenen før. Hvis jeg altså kan tyde det.</p>
<hr>
<p>🖥 Mikkel</p>
<p>Som altid bliver jeg glad, hvis du svarer, og endnu mere, hvis du fortæller en ven om nyhedsbrevet eller <a href="https://twitter.com/intent/tweet?text=https%3A%2F%2Fcomputers.mikkelmalmberg.dk%2Fissues%2F19" class="external-link">tweeter om det</a></p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>En af mine bekendte har hyret en GTD-coach til at hjælpe sig med at få det op at køre, men i samme sætning som hun fortalte det, brokkede hun sig også over, at hun ikke kunne finde tid til at Skype i 10 minutter med coachen. Det er altså ironi, der er en lille smule for lækkert til, at en Nordjyde som jeg ikke kan andet end at fryde sig lidt. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/19</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/19</guid>
            <pubDate>Sat, 04 Mar 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Untag my heart]]></title>
            <description><![CDATA[<h5 id="%2318-%E2%80%93-2017-02-25-%E2%80%93-untag-my-heart" tabindex="-1">#18 – 2017-02-25 – Untag my heart</h5>
<p>Jeg blev i sin tid inviteret til Facebook af min spejderveninde Julie. Det er nok lidt over 10 år siden? I lang tid var hun min eneste forbindelse på den blå, kedelige version af MySpace.</p>
<p>MySpace var kaos og kaos var lækkert for en ung mand som mig. Jeg var medlem af et indieband og gik i bukser så stramme, at det gjorde en lille smule nas at bukke sig. Dengang kunne man sådan set ikke få for mange muligheder for selviscenesættelse<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>. Fordi MySpace tillod HTML i profilers tekster, kunne du med lidt vold og Notepad tvinge din profil til at se hæslig ud – men hæslig på din helt egen måde.</p>
<p>Ved siden af MySpaces vildskab syntes Facebooks kontrol mærkeligt kedeligt. Det var først da jeg begyndte på universitet i Århus, at mine besøg på Facebook begyndte at tage til. Med et helt nyt sæt venner og helt nye fester at tage til, blev Facebooks billedegallerier det, der trak.</p>
<p>Når man ikke kan kontrollere, hvordan ens profil tager sig ud med rabiate CSS-hacks, må man gøre det med indhold.</p>
<hr>
<p>Jeg har haft en Facebookkonto hele mit voksenliv. Og gudskelov ikke længere tid end det. Tænk sig, at have haft en siden man fyldte 13 og måtte. Og selvom jeg skriver <em>voksen</em>liv, kan jeg alligevel grave det her billede frem af mig, der drikker improviseret ølbong af en bundløs Kildevæld-flaske sammen med Rasmus, der råber <em>Spring Break</em> så højt han overhovedet kan<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.</p>
<figure><img src="https://s3.brnbw.com/10398456_1115615846331_5899788_n-WnAwnBhRDL.jpg" alt="SPRING BREAK" /><figcaption><em>SPRING BREAK!</em></figcaption></figure>
<p>Og det er ikke engang det eneste billede på Facebook af mig, der drikker ølbong. Jeg kan bare ikke finde de andre, for jeg har untagget mig på stort set alt. Jeg har faktisk forsøgt over flere omgange at slette så meget historik som muligt.</p>
<hr>
<p>Jeg ville ønske, jeg kunne slette min Facebookkonto. Jeg har ikke én enkelt grund til den følelse. Men jeg tænker tit på det. Jeg kommer dog altid frem til, at jeg skal bruge den. Jeg bruger deres Messenger, jeg følger min søns dagpleje, og jeg administrerer et par Pages.</p>
<p>Udover det er det faktisk med en underlig form for stolthed, at jeg kan sige, at jeg er ret ligeglad med, hvad der sker på Facebook.</p>
<p>Jeg har mange gange gået mine privatlivsindstillinger igennem. Jeg kan ikke huske, hvad jeg har sat dem til, men jeg er ikke i tvivl om, at jeg har overvejet hver enkel af dem. Jeg poster næsten aldrig på min Timeline og endnu bedre: Jeg ser sjældent, hvad andre poster på deres. Det er lækkert. Så, selvom det piner mig, jeg ikke helt kan hive stikket til platformen, så glæder det mig, at jeg i det mindste kan være bevidst om min egen tilstedeværelse på siden og ligeglad med de fleste andres.</p>
<hr>
<p>Hvis du selv gerne vil holde Facebook lidt ud i strakt arm, kan jeg kun anbefale det. Måden er at gøre en aktiv indsats. Her er et par forslag:</p>
<ul>
<li>Log ud af Facebook i din default browser. Hvis du er logget ind, følger Facebook med dig rundt, hvorend der er <em>Like</em>-knapper, og bruger dataene til at vise dig de helt rigtige <em>super fede</em> reklamer. Og hvis du ikke er logget ind, så gør de det alligevel. Samtidig er det super besværligt at skulle logge ind hver gang, så måske ender du med slet ikke at gøre det.</li>
<li>Lav en dedikeret <a href="http://fluidapp.com" class="external-link">Fluid-app</a> kun til Facebook. Sæt eventuelt dens adresse til <code>facebook.com/messages</code>, så du ikke lander midt i feedet og bliver fristet. Med betalingsversionen af Fluid, kan du sætte den op til at have cookies for sig og ikke dele dem med Safari. På den måde er det lidt sværere for Facebook at tracke dig rundt og lidt sværere for dig, bare at taste adressen ind i den browser, der burde pege på noget, du burde lave.</li>
<li>Brug <code>messenger.com</code> i stedet eller en dedikeret Messenger-app som fx <a href="https://github.com/sindresorhus/caprine/" class="external-link">Caprine</a>.</li>
</ul>
<p>Jeg gør de her ting, og alligevel falder jeg sommetider i. Når jeg ankommer til almindelig, dødelig Facebook med et ærinde, springer et eller andet semi-spændende mig altid i øjnene, og fem minutter senere lukker jeg tab’en uden at have klaret mit ærinde. Aktiv indsats.</p>
<p>Er du endnu mere hardcore/afhængig, kan du med <em>UserStyles</em><sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup> <a href="https://gist.github.com/mikker/e6205262706796da41cc" class="external-link">skjule feedet</a> på Facebook. På den måde skal du manuelt gå ind på profiler for at se, hvad de skriver.</p>
<hr>
<p>Facebook kan være godt. Men de eneste jeg hører det fra, er dem, der har investeret en masse energi i at <em>unfollowe</em> størstedelen af deres bekendtskaber. Det virker mærkeligt at bruge tid på at slibe en distraktion, så den skærer dybest i din opmærksomhed. Men så vil jeg hellere bruge min tid på noget andet<sup class="footnote-ref"><a href="#fn4" id="fnref4">[4]</a></sup>.</p>
<p>🖥 Mikkel</p>
<p>Som altid bliver jeg glad, hvis du svarer, og endnu mere, hvis du fortæller en ven om nyhedsbrevet eller <a href="https://twitter.com/intent/tweet?text=https%3A%2F%2Fcomputers.mikkelmalmberg.dk%2Fissues%2F18" class="external-link">tweeter om det</a>.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>“<em>Dengang</em> jeg var selviscenesættende”, skrev manden i sit nyhedsbrev. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>På billedet lige efter i samme galleri har Rasmus bar mave og et glas rødvin i hånden. God fest. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p><a href="https://en.wikipedia.org/wiki/Stylish" class="external-link">https://en.wikipedia.org/wiki/Stylish</a> <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn4" class="footnote-item"><p>Som jo er meeeeeeget mere produktivt. <a href="#fnref4" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/18</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/18</guid>
            <pubDate>Sat, 25 Feb 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Disable long-press for Hyper on macOS]]></title>
            <description><![CDATA[<p><a href="https://hyper.is" class="external-link">Hyper</a> is great and even though I still cling to iTerm I sometimes try and shake things up by using Hyper for a few days.</p>
<p>macOS has a feature where if you press a character like <em>u</em> and hold it, a popup menu appears that’ll let you pick out a <em>ü</em> instead. Great if you’re writing German prose. Not great if you are undoing a whole day’s work in vim.</p>
<p>So let’s disable that feature only for Hyper. Put this in your term and smoke it:</p>
<pre><code class="hljs language-sh">defaults write co.zeit.hyper ApplePressAndHoldEnabled -bool <span class="hljs-literal">false</span>
</code></pre>
<p>If you want to disable it system wide then use the same command but without the <code>co.zeit.hyper</code> part.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2017/2017-02-19-disable-long-press-for-hyper</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2017/2017-02-19-disable-long-press-for-hyper</guid>
            <pubDate>Sun, 19 Feb 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Din computer er din computer]]></title>
            <description><![CDATA[<h5 id="%2317-%E2%80%93-2017-02-17-%E2%80%93-din-er-computer-er-din" tabindex="-1">#17 – 2017-02-17 – Din er computer er din</h5>
<p>Mens jeg gik og overvejede, hvad jeg skulle skrive om i denne uge, gik det op for mig, det er 10 år siden, jeg fik min første Macintosh.</p>
<p>Mit computerliv startede med MS DOS, blev til Windows, og i mange år fnøs jeg blot af min vens fars blågrønne iMac med hockey-puk-musen.</p>
<p>Min første computer, som var min egen, købte jeg som enkeltdele, som jeg selv satte sammen på mit drengeværelse. Kabinettet var stort og sort og faretruende og præcis som det skulle være.</p>
<p>Nærmest hver måned brændte jeg backup ned på cd’er, og geninstallerede Windows. Det var bare sådan noget, vi gjorde: Formatterede vores harddisk og installerede alt påny. Min ven <em>Clemme</em> var ekstra formatteringskåd og fik tilnavnet <em>Mr. Format</em>, som han bar med 80/20% stolthed og skam. Processen var den bedste måde vi kendte til at holde systemet friskt og lækkert. Sådan var Windows.</p>
<hr>
<p>Pludselig begyndte iBooks<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> at dukke op rundt omkring mig. Små og hvide og umulige at overse. Og langsomt gik mine følelser omkring Macs fra medlidenhed til misundelse. Jeg hørte om <a href="https://qsapp.com" class="external-link">Quicksilver</a>, og så <a href="https://twitter.com/dhh" class="external-link">DHH</a> flyve afsted <a href="https://www.youtube.com/watch?v=Gzj723LkRJY" class="external-link">TextMate</a>, og jeg forsøgte med arme og kløer at få Windows til at se ud som og virke som en Mac. Med Windows XP temaer, halvsuspekte tredjepartsprogrammer og aldrig tilfredsstillende resultat.</p>
<p>Jeg var ung og fattig, så i flere år blev det bare ved drømmene. Indtil jeg i 2007 brugte alle pengene fra hvad jeg tror, var min første større faktura på en af de første Intel Macbooks<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.</p>
<p>…</p>
<p>Hov, nej vent. Det var sgu i 2006. Her er dokumentation fra PhotoBooth:</p>
<figure><img src='https://s3.brnbw.com/Foto-54-6tZWY3kFaa.jpg' alt='Hår.' width='320' /><figcaption>Hår.</figcaption></figure>
<p><em>Lækkert billede.</em> Har du andet godt fra 2006, Mikkel? Selvfølgelig. Her har jeg fx en nakkestøtte fra et IC4-tog på som hat:</p>
<figure><img src='https://s3.brnbw.com/Roskilde2006-23-zNmxoRV8Zf.jpg' alt='Hat.' width='450' /><figcaption>Hat.</figcaption></figure>
<p>Nå, men så er det altså 11 år siden. Så meget for det jubilæum.</p>
<hr>
<p>Når jeg opfordrer til at <a href="https://computers.mikkelmalmberg.dk/issues/7" class="external-link">pakke let</a> og ikke customize dig selv ind i et hjørne, er det bestemt ikke fordi, jeg er imod custimization. Din computer er din.</p>
<p>Her er et par af de ting, jeg gør, som gør min Mac (jeg er på min fjerde<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>) til min:</p>
<h4 id="jeg-har-nul-ting-p%C3%A5-mit-desktop" tabindex="-1">Jeg har nul ting på mit desktop</h4>
<pre><code class="hljs">defaults write com.apple.finder CreateDesktop -<span class="hljs-type">bool</span> <span class="hljs-literal">false</span>
</code></pre>
<p>Du bør have et sted, hvor filer kommer ind inden de bliver sorteret. Men måske er det en dum ide, at det er lige under din næse altid? Gem det væk til du skal bruge det eller tager stilling til det.</p>
<h4 id="jeg-har-slukket-for-dashboard" tabindex="-1">Jeg har slukket for Dashboard</h4>
<pre><code class="hljs">defaults write com.apple.dashboard mcx-disabled -<span class="hljs-type">bool</span> <span class="hljs-literal">true</span>
</code></pre>
<p>Dashboard, hvad laver du her? Gå nu hjem.</p>
<h4 id="jeg-undg%C3%A5r-s%C3%A5-vidt-muligt-at-bruge-musen" tabindex="-1">Jeg undgår så vidt muligt at bruge musen</h4>
<pre><code class="hljs">defaults write NSGlobalDomain AppleKeyboardUIMode -<span class="hljs-type">int</span> <span class="hljs-number">3</span>
</code></pre>
<p>Hvis du kan undgå den, så undgå den. Med den her kan du <code>tab</code>’e fokus rundt mellem knapper og “klikke” på dem med <code>&lt;space&gt;</code>.</p>
<h4 id="jeg-bruger-ikke-rigtig-min-dock" tabindex="-1">Jeg bruger ikke rigtig min Dock</h4>
<pre><code class="hljs">defaults write com<span class="hljs-selector-class">.apple</span><span class="hljs-selector-class">.dock</span> autohide -bool true
defaults write com<span class="hljs-selector-class">.apple</span><span class="hljs-selector-class">.dock</span> autohide-delay -<span class="hljs-attribute">float</span> <span class="hljs-number">0</span>
defaults write com<span class="hljs-selector-class">.apple</span><span class="hljs-selector-class">.dock</span> autohide-time-modifier -<span class="hljs-attribute">float</span> <span class="hljs-number">0</span>
defaults write com<span class="hljs-selector-class">.apple</span><span class="hljs-selector-class">.dock</span> orientation -string <span class="hljs-string">&quot;right&quot;</span>
</code></pre>
<p>Min Dock er ude til højre, helt tom og altid gemt.</p>
<ol>
<li>Min skærm er bredere end den er høj, så hvis jeg skal spilde pixels, giver det mest mening at spilde dem i siderne.</li>
<li>Jeg launcher aldrig apps ved at klikke på dem. Så ingen grund til at have dem i Dock’en. På den her måde virker den mest af alt bare som en Windows Taskbar, men…</li>
<li>Jeg kigger alligevel aldrig på den, for den er gemt.</li>
</ol>
<h4 id="jeg-bruger-(stadig)-quicksilver" tabindex="-1">Jeg bruger (stadig) <a href="https://qsapp.com" class="external-link">Quicksilver</a></h4>
<p>Én af de ting, der overtalte mig til Macs i sin tid, bruger jeg stadig hver eneste dag. Der findes masser af den slags launchere efterhånden. Spotlight er nok for de fleste. Men jeg har endnu ikke fundet en afløser til gode (æld)gamle, stort set uopdaterede Quicksilver.</p>
<h4 id="og-s%C3%A5-er-der-hammerspoon" tabindex="-1">Og så er der <a href="http://www.hammerspoon.org" class="external-link">Hammerspoon</a></h4>
<p>Hammerspoon lader dig kontrollere macOS med programmeringssproget <a href="https://en.wikipedia.org/wiki/Lua_(programming_language)" class="external-link">Lua</a>. På den måde kan du (forholdsvist) nemt skrive dine egne utility apps i stedet for at købe 10 små.</p>
<p>Jeg bruger Hammerspoon til…</p>
<ol>
<li>At <a href="https://github.com/mikker/dotfiles/blob/master/hammerspoon/hammerspoon.symlink/init.lua#L76-L92" class="external-link">launche apps</a> med hotkeys. (Afløser ofte Quicksilver, faktisk)</li>
<li>At <a href="https://github.com/mikker/dotfiles/blob/master/hammerspoon/hammerspoon.symlink/init.lua#L9-L71" class="external-link">resize vinduer</a> med hotkeys. (Afløser fx <a href="https://manytricks.com/moom/" class="external-link">Moom</a>)</li>
<li>At <a href="https://github.com/mikker/dotfiles/blob/master/hammerspoon/hammerspoon.symlink/init.lua#L101-L120" class="external-link">holde min computer vågen</a>. (Afløser fx <a href="http://lightheadsw.com/caffeine/" class="external-link">Caffeine</a>)</li>
</ol>
<hr>
<p>Hvis der er nogle af tingene, apps’ne eller koncepterne, du vil høre mere om, så sig til. Du ved (efterhånden), at jeg har en holdning til det meste - men også argumenter for, hvorfor jeg har ret. Som en ægte hvid mand skal have.</p>
<p>Der er nok meget mere, jeg gør, som er så indgroet, at jeg nu glemmer at nævne det. Hvad gør du?</p>
<p>🖥 Mikkel</p>
  <img alt='iBook' src='https://s3.brnbw.com/pb-mukILA3KZC-F9a90xkuRH.png' width='230' />
  <img alt='Macbook' src='https://s3.brnbw.com/pb-CMSEQZi1gB-AiMIqSLWuw.png' width='250' />
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"> <a href="#fnref1" class="footnote-backref">↩︎</a></li>
<li id="fn2" class="footnote-item"> <a href="#fnref2" class="footnote-backref">↩︎</a></li>
<li id="fn3" class="footnote-item"><p>Femte hvis man tælder den med, jeg kun havde i et par uger, før jeg dræbte den med et glas vand. RIP. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/17</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/17</guid>
            <pubDate>Fri, 17 Feb 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Pust i den hullede ballon]]></title>
            <description><![CDATA[<h5 id="%2316-%E2%80%93-2017-02-10-%E2%80%93-pust-i-den-hullede-ballon" tabindex="-1">#16 – 2017-02-10 – Pust i den hullede ballon</h5>
<p>Stand-up<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> er en vanvittig disciplin: Alle andre tidspunkter, hvor nogen bliver bedt om at sige noget sjovt, er det umuligt. Det er lidt som, hvis nogen prikkede hul i en slap ballon, gav dig den, og bad dig om at puste den op. Det kommer ikke til at ske, lige meget hvor lidt eller hvor meget, du forsøger.</p>
<p>Alligevel kan det lade sig gøre. Og det er i sig selv lidt vildt.</p>
<p>Det er på en måde optrædekunstens ekstremsport. Du er helt alene, folk forventer alt, og bare den mindste smule synlige nervøsitet kan ødelægge hele stemningen. Det føles helt fuldstændigt vanvittigt, de første gange det går bare nogenlunde godt. Hvis du har bare det mindste lyst til at prøve, så gør det.</p>
<p>Fordi det er så ekstremt, famler de fleste efter det mindste, de kan holde fast i, mens de kaster sig ud på open mic efter open mic med deres første 5 minutter. Gode råd bliver delt flittigt rundt og hver eneste måned er det som om, du har opdaget et nyt bedste råd, som du klamrer dig til, mens du ikke aner, hvad det i virkeligheden er, du gør godt. Eller skidt.</p>
<hr>
<p>Da jeg havde optrådt i et par måneder bemærkede jeg, at det var som om, jeg var bedre, når jeg havde cardigan på<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>. <a href="https://www.youtube.com/watch?v=-s0H0jUvP14" class="external-link">Jonas Mogensen</a> havde oplevet det samme, og ret hurtigt begyndte vi begge at møde op, hver aften, i cardigans. Som en form for ulden følelsesbrynje med knapper og dyb v-udskæring.</p>
<p>Jeg fortalte om mit nye, lune <em>spirit animal</em> til <a href="https://www.facebook.com/photo.php?fbid=10209568074622977&amp;set=rpd.532846002&amp;type=3&amp;theater" class="external-link">Thomas Warberg</a>, og han smilede skævt og svarede, at så skulle jeg da helt sikkert <a href="http://yeswaynoway.net/post/496171712/then-dont-wear-a-cardigan" class="external-link"><em>ikke</em> have cardigan på næste gang</a>.</p>
<hr>
<p>Thomas styrede dengang det Århusianske stand-up-vækstlag med hård hånd. Ikke på sådan en trynende måde, men en fair og ærlig måde. Thomas bestemte, hvor længe folk måtte optræde. Om man var i 5-, 10- eller 15-minutters-gruppen. Når man kunne imponere i alle 5 minutter, fik man lov at rykke op til 10 og så videre. Hvis nogen havde travlt, og gerne ville <em>rykke op</em>, havde Thomas altid en ærlig og velbegrundet forklaring på, hvorfor de måske ikke helt var der endnu, og hvad de eventuelt kunne forbedre. Så vidt jeg ved, kører det system (eller noget lignende) stadigvæk blandt de nye komikere i Århus. Dog uden Warberg.</p>
<p>Thomas havde et lignende system for sine egne jokes. Kun de allerbedste var gode nok, og det smittede af på alle os nye. I stedet for at holde fast i materiale, som ikke var bedst, var vi benhårde, og kastede mellemgodt materiale væk til højre og venstre.</p>
<p>Jeg er helt sikker på, at havde jeg ikke fulgt Thomas’ råd om at skære ned og spidse til og hele tiden kun samle på det allerbedste materiale, så var der gået Malmberg-hygge i den. Og så var jeg ikke blev god (nok), så hurtigt som jeg blev.</p>
<hr>
<p>Når du er på ukendt grund, kan de små, enkle råd virke som sat i sten. Og det kan være en hjælp. Men vær ikke bange for at smide dem og cardiganen. I virkeligheden er der ikke meget, der er enkelt. Men det betaler sig altid at gøre sig umage.</p>
<p>🖥 Mikkel</p>
<div style='background:#f1f1f1;padding:16px;font-size:90%;margin: 16px 0;'><p style='color:gray;margin:0'>Denne uges nyhedsbrev er sponsoreret af:</p><p style='margin:6px 0;'><a href='https://airtame.com' style='color: black;'><img src='https://s3.brnbw.com/favicon-k0QggReUb6.ico' alt='Airtame' width='32' height='32' style='border-radius: 5px;margin-right: 8px;margin-top:4px;float:left' /><b>Airtame</b><br />The wireless way to present</a></p>    <p style='margin:0'>Hvad der ikke er blevet tabt af momentum, fordi det at sende slides op på en projektor tilsyneladende er det sværeste problem i verden. Airtame har virket med det samme, hver eneste gang, jeg har brugt det. Få 10% på dit første køb med rabatkoden <code>computers</code>. Tak til Airtame!</p></div>
<p>Hey – en annonce! Jeg er rigtig glad for, at Airtame vil være med til at prøve det af. Men det skal også kun være, hvis det kan være på en måde, der ikke er for meget i vejen. Har du en holdning fra eller til om annoncen ovenfor, så vil jeg rigtig gerne høre den.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Hvis du nogensinde har sagt, at du ikke kan lide stand-up, så lad mig lige give dig et stort, tekstbaseret <em>tsk</em> lige her. Stand-up er mange forskellige ting, så det er ikke helt ulig at mene, man ikke kan lide musik. Hvis det virkelig er fordi, du ikke kan lide konceptet “én person underholder på scene”, så ok. Men hvis det bare er fordi, du engang halvt så Mick Øgendal til en julefrokost, og siden har afvist alt, så snyder du måske dig selv. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Belejligt nok var det dengang de var moderne. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/16</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/16</guid>
            <pubDate>Fri, 10 Feb 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Conditionally load local plugs in vim]]></title>
            <description><![CDATA[<p>If you’re using vim (you should) and vim-plug for plugins (you should) and you have some plugins locally (you might) but still want your setup to be portable (you should) then you might want to only load plugins locally if they exist (here’s how).</p>
<pre><code class="hljs language-vim"><span class="hljs-keyword">function!</span> <span class="hljs-title">s</span>:maybeLocalPlug<span class="hljs-params">(args)</span>
  <span class="hljs-keyword">let</span> <span class="hljs-variable">l:localPath</span> = $HOME . <span class="hljs-string">&quot;/dev/&quot;</span> . <span class="hljs-built_in">expand</span>(<span class="hljs-variable">a:args</span>)

  <span class="hljs-keyword">if</span> <span class="hljs-built_in">isdirectory</span>(<span class="hljs-variable">l:localPath</span>)
    Plug <span class="hljs-variable">l:localPath</span>
  <span class="hljs-keyword">else</span>
    Plug <span class="hljs-string">&#x27;mikker/&#x27;</span> . <span class="hljs-built_in">expand</span>(<span class="hljs-variable">a:args</span>)
  <span class="hljs-keyword">endif</span>
<span class="hljs-keyword">endfunction</span>

<span class="hljs-keyword">call</span> <span class="hljs-variable">s:maybeLocalPlug</span>(<span class="hljs-string">&#x27;lightline-theme-pencil&#x27;</span>)
<span class="hljs-keyword">call</span> <span class="hljs-variable">s:maybeLocalPlug</span>(<span class="hljs-string">&#x27;vim-rerunner&#x27;</span>)
<span class="hljs-keyword">call</span> <span class="hljs-variable">s:maybeLocalPlug</span>(<span class="hljs-string">&#x27;vim-dimcil&#x27;</span>)
<span class="hljs-keyword">call</span> <span class="hljs-variable">s:maybeLocalPlug</span>(<span class="hljs-string">&#x27;vim-colors-paramount&#x27;</span>)
</code></pre>
<p>This checks to see if the plugin exists locally at <code>~/dev/plugin-name</code> and if it doesn’t it loads from good old Github.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2017/2017-02-06-conditionally-load-local-plugs-in-vim</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2017/2017-02-06-conditionally-load-local-plugs-in-vim</guid>
            <pubDate>Mon, 06 Feb 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Vælg én, bare én]]></title>
            <description><![CDATA[<h5 id="%2315-%E2%80%93-2017-02-03-%E2%80%93-v%C3%A6lg-%C3%A9n%2C-bare-%C3%A9n" tabindex="-1">#15 – 2017-02-03 – Vælg én, bare én</h5>
<p>For nogle år siden lavede jeg en app for en ven og ikke mindst hans daværende manager. Jeg har vist altid været typen, der har udfordret konceptet deadlines<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>, og også her var jeg gået over mindst et par af dem. Det var mens jeg stadig levede primært af stand-up og en enkelt freelanceopgave hist og her.</p>
<p>Det morsomme med travlhed og arbejde er, at det som regel er mens du har mest om ørene, at du får lavet mest. Og når du har fri hele tiden, at du kun kan lave ingenting. Det er som om, det er en rille, man kører i. Når du arbejder, er det nemt at blive ved med at arbejde. Når du ikke arbejder, er det nemt at blive ved med at spille Diablo.</p>
<p><em>Fun fact</em>: Hvis du bare sådan næsten overholder dine deadlines, men leverer et godt produkt, kan du få utroligt lang snor.</p>
<p>Og alligevel var det til sidst blevet for meget for den kære manager. Det endte ikke brat, så der kom aldrig en definitiv email, der afbrød samarbejdet. Men jeg husker i hvert fald en email, der indeholdt sætningen: <em>Jeg er ikke sur; jeg er skuffet</em>.</p>
<hr>
<p>En måneds tid eller to senere mødte jeg manageren til et arrangement. Han smilede, og det var tydeligt, at det havde været sandt nok – han var ikke sur, han var skuffet. Sådan måske på mine egne vegne. <em>“Du er nok nødt til at vælge, om du vil være komiker eller programmør”</em>, sagde han.</p>
<p>Det er en ting, jeg aldrig har gjort. At vælge bare én ting.</p>
<p>Jeg kan sætte mig med en guitar, ved et klaver eller et trommesæt, og få det til at lyde af et eller andet. Men jeg er ikke rigtig god til nogen af delene. Jeg har aldrig haft det kald, som nogen har, om at blive komiker, fordi det er <strong>det eneste</strong>, de vil. Jeg har lyst til det hele. Jeg elsker at programmere, men jeg kan også godt lide at designe. Jeg nyder endda den smule kundeservice, jeg har. Og i denne uge formidlede jeg en hel uges workshop, og var overraskende tilfreds med rollen.</p>
<p>Men det er helt ok. Jeg føler ikke, jeg behøver vælge. Jeg kan godt prøve det hele og være mellem-god til alt.</p>
<p>Der er stadig en samlende tendens, og det er, at jeg lærer ting og laver ting.</p>
<hr>
<p>Tilfældigvis læste jeg to gamle indlæg på <a href="https://m.signalvnoise.com" class="external-link">Basecamps blog, Signals v. Noise</a> i denne uge, som bekræftede mig i min (manglende) plan:</p>
<ul>
<li>I <a href="https://m.signalvnoise.com/ive-never-had-a-goal-c89219aedddf#.xc8kjk1ed" class="external-link">“I Never Had A Goal”</a> skriver Jason Fried om, hvordan han mest bare koncentrerer sig om at lave ting.</li>
</ul>
<blockquote>
<p>I do things, I try things, I build things, I want to make progress, I want to make things better for me, my company, my family, my neighborhood, etc. but I have never set a goal. It’s just not how i approach things. <a href="https://m.signalvnoise.com/ive-never-had-a-goal-c89219aedddf#.xc8kjk1ed" class="external-link">#</a></p>
</blockquote>
<ul>
<li>I <a href="https://m.signalvnoise.com/all-or-something-9831830b3b9#.3owdll493" class="external-link">“All or Something”</a> skriver David Heinemeier Hansson om, hvordan man sagtens kan have en start-up uden at <a href="https://computers.mikkelmalmberg.dk/issues/5" class="external-link">sove under sit skrivebord</a>.</li>
</ul>
<blockquote>
<p>One of the most pervasive myths of startup life is that it has to be all consuming. That unless you can give your business all your thoughts and hours, you don’t deserve success. You are unworthy of the startup call. <a href="https://m.signalvnoise.com/all-or-something-9831830b3b9#.3owdll493" class="external-link">#</a></p>
</blockquote>
<hr>
<p>Som altid modtager jeg svar og kommentarer med glæde. <a href="https://fupifarvandet.dk" class="external-link">Vi</a> vandt ikke Zulu Awarden i øvrigt, men tak alligevel, hvis du stemte.</p>
<p>Du kan også gøre mig glad, ved at videresende dette nyhedsbrev til en, du tror, vil få glæde af det. Eller hvis du <a href="https://twitter.com/intent/tweet?text=https%3A%2F%2Fcomputers.mikkelmalmberg.dk%2Fissues%2F15" class="external-link">tweeter om det</a>.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Skrev han i sit nyhedsbrev, der for tredje uge i træk var en dag forsinket. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/15</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/15</guid>
            <pubDate>Fri, 03 Feb 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Plads til at falde direkte på røven]]></title>
            <description><![CDATA[<h5 id="%2314-%E2%80%93-2017-01-28-%E2%80%93-plads-til-at-falde-direkte-p%C3%A5-r%C3%B8ven" tabindex="-1">#14 – 2017-01-28 – Plads til at falde direkte på røven</h5>
<p>Én dag for sent er stadig 6 dage for tidligt til ikke at gøre det. Som man siger…?</p>
<p>Jeg formoder, man (læs: du) stadig kan nå at <a href="http://tv.tv2.dk/zulu-awards/2017-01-10-stem-paa-aarets-radioprogram" class="external-link">stemme på min podcast</a>, <a href="https://fupifarvandet.dk" class="external-link">Fup i Farvandet</a>, til Zulu Awards, så hvis du ikke har gjort det endnu, så… Sådan. Tak!</p>
<hr>
<p>Ingen har ikke hørt om den norske serie Skam. Den er god, synes jeg, men det har du jo nok allerede din egen holdning til, om den er. Drittsekk.</p>
<p>Jeg hørte Julie Andem, som har skrevet og instrueret serien, i sidste uge tale om, hvordan serien er blevet til. Budgettet var lille, og det var forventningerne også. Men Julies ambitioner var ikke. Hun har en klar holdning til alt og en klar vision for sin serie. På mange måder <em>er</em> hun Skam og Skam <em>er</em> hende, og det siger jeg på trods af, jeg godt selv kan høre, hvor <em>cheasy</em> den sætning lyder.</p>
<p>Dagen før konferencen havde DR scoret sig et besøg af hende og hendes redaktør. Skam-feberen har været intens i DR, og det går selvfølgelig ikke ubemærket hen, når en søster-organisation scorer sig sådan en success – og så endda på NETTET. Flow-tv er dødt, kom lad os straks holde et par møder.</p>
<p>Min kollega nævnte et par dage efter, at det var klart, hvad der var skyld i seriens succes: Det var Julie Andem, geniet bag, med den klare vision. Og det er jeg bestemt ikke i tvivl om. Min kollegas konklusion var, at det derfor ikke var noget, man som sådan kan gøre NRK efter – de var heldige og scorede et geni. Men det synes jeg, er at konkludere for hurtigt.</p>
<p>For én ting er Julie Andem. En anden ting er hendes chef.</p>
<p>En ting man nemt kan kopiere er Julies omstændigheder: Lille budget, stor kunstnerisk frihed.</p>
<p>På mange måder det komplet modsatte af lørdag aften på flow-bananen. Og der er selvfølgelig en tid til lørdag aftens slikskålsunderholdning OG tid til <em>innovation</em> (hvad så end det skal betyde). Og hvis du skal lave det første, er der mange seere og store forventninger og store budgetter, og så er det rigtig svært, at give helt los for den kunstneriske frihed.</p>
<p>Men hvis man i stedet giver dem med drømmene en lille pose penge, albuerum og lov til at sigte efter stjernerne – og ikke mindst, plads til at falde lige direkte på røven igen, så tror jeg sagtens, man kan score sig selv et geni eller to eller tres.</p>
<hr>
<p>På den anden side, har jeg ikke prøvet at være chef, så jeg aner ikke, hvad jeg taler om. Men hvis ikke det er mens jeg er ung, jeg har ret til at være naiv hvornår så?</p>
<p>Det hjælper som regel, når jeg skriver, at jeg med glæde modtager svar på nyhedsbrevet. Så her er opfordringen igen: Jeg synes, det er dejligt.</p>
<p>🖥 Mikkel</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/14</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/14</guid>
            <pubDate>Sat, 28 Jan 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Min Første Hjemmeside]]></title>
            <description><![CDATA[<h5 id="%2313-%E2%80%93-2017-01-20-%E2%80%93-min-f%C3%B8rste-hjemmeside" tabindex="-1">#13 – 2017-01-20 – Min Første Hjemmeside</h5>
<p>I torsdags til konferencen <a href="http://cphtransform.com" class="external-link">CPH Transform</a><sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> mødte jeg en ung mand, der for nyligt havde lært at kode. Jeg blev nysgerrig, for jeg har længe ikke vidst, hvor jeg skulle pege folk hen, når jeg fortalte dem, at de burde gøre det samme.</p>
<p>Han havde i forvejen en interesse for computere, bevares, men han havde ikke programmeret noget som helst, før han gav sig i kast med et kursus på <a href="https://codeacademy.com" class="external-link">Code Academy</a>. Det var et halvt år siden, nu har han kunder.</p>
<hr>
<p>Jeg bliver ofte mødt med overraskede øjenbryn, når jeg fortæller,jeg er programmør. Og når jeg tilmed fortæller, at jeg har lært det <em>af mig selv</em>, ender brynene nærmest helt ovre i nakken. Omtumlede og forvirrede over konceptet, vender min samtalepartner snarligt tilbage med et “Det kunne jeg slet ikke – jeg kan slet ikke finde ud af matematik!”</p>
<p>Det er – og det ved vi – selvfølgelig en misforståelse, at man behøver være det mindste god til matamatik for at kunne lære at kode. Men jeg kan godt forstå, det kan synes en smule som utilnærmelig magi udefra.</p>
<p>Som 12-årig var jeg en dag med min far henne på skolen, hvor han arbejdede. Det må have været i 97 eller 98. De færreste havde internet hjemme, men på skolen havde de, og min fætter, som var med, viste mig sin egen hjemmeside. Som han selv havde lavet. Den havde en skrigende grøn baggrund, rød tekst og en gif af en tændstikmand i røde bukser, der tissede på Uffe Ellemann.</p>
<figure><img src="https://s3.brnbw.com/piss-1-uGwKoOUkEl.gif" alt="The original and best tissegif" title="The original and best tissegif"></figure>
<p>Jeg var solgt. Dét ville jeg også have.</p>
<p>Et par dage efter havde min far en bog med hjem fra biblioteket. Den hed <em>Min Første Hjemmeside</em> eller i hvert fald noget lige så naivt. Jeg havde også en forkærlighed for computere, var vant til at starte mine spil på disketter fra MS DOS, men havde aldrig kodet noget som helst før.</p>
<p>Det var før CSS og <code>table</code>s blev ikke brugt til andet end tabeller. Det var <code>&lt;frameset&gt;</code> og <code>&lt;marquee&gt;</code> og fuld fart derudaf. <em>Fuld fart</em>, dengang, var lidt noget andet end i dag, men immervæk nok til at fange min lyst. Som jeg husker det, brugte jeg hele den weekend på at lave min egen hjemmeside. Jeg havde intet at fortælle, men det var heller ikke pointen. Det fede var, at skrive noget ét sted, og se det komme til live et andet.</p>
<p>Kort tid efter fandt jeg ud af, at et par af mine spejderkammerater havde opdaget samme interesse, og i de følgende år fulgtes vi ad med hele tiden at lave vores Personlige Hjemmeside om og om igen og hver gang one-up’e hinanden. Pludselig fandt en af de andre ud af at sætte en gæstebog på sin side, og så var jeg jo <em>nødt til</em> at lære om Microsoft Access-databaser og sproget ASP for at kunne få min egen, fuldstændigt øde, men dog fungerende gæstebog.</p>
<hr>
<p>Min historie, hvor aldeles bjergtagende den end er, hjælper selvfølgelig ikke nye tilkommere til faget. Tiden er en anden. Teknologierne er blevet mere avancerede. ASP blev til PHP blev til Ruby blev til mange forskellige sprog og alt ind i mellem, og sommetider virker det som om, al den viden man får opbygget er forældet 6 måneder senere<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>.</p>
<p>Jeg ville have elsket at kunne starte i interaktive miljøer som Code Academy eller Code School eller en af de mange tilbud, der findes i dag. Men den måde jeg havde, var også fin: Et papirhæfte fra biblioteket, Notepad.exe, Internet Explorer 5 og masser af nysgerrighed.</p>
<p>Pointen er, at det både nu som altid er nemt at dyppe tæerne i kode. Det tager mange år at blive god og endnu flere at blive ekspert. Det er umuligt at nå til enden. Men det tager ikke meget mere end en weekend at gå fra nul til at kunne lave sin egen hjemmeside.</p>
<hr>
<p>Én dag for sent er så godt som til tiden i min verden<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>.</p>
<p>Sommetider svarer nogle af jer på de her mails. Det er rart, så det må I endelig blive ved med. Både med kommentarer til det konkrete indhold, men også meget gerne til retningen COMPUTERS går i, eller hvad I godt kunne tænke jer at høre om?</p>
<p>Det også glæde mig meget, hvis du fortæller dine venner om nyhedsbrevet. Jeg er glad for, at I allerede er 282, som modtager det. Men <em>the more the merrier</em>, som man siger, og hvis vi nogensinde skal starte en kult, er vi nok nødt til at være et par mere.</p>
<p>Glem heller ikke, at <a href="https://fupifarvandet.dk/episodes/225" class="external-link">lytte til min podcast, som er tilbage</a> og ikke mindst <a href="http://tv.tv2.dk/zulu-awards/2017-01-10-stem-paa-aarets-radioprogram" class="external-link">stemme på den til Zulu Awards</a>!</p>
<p>Du ér god!<br>
🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Så godt som en konference kan blive. Vel eksekveret, spændende indhold. Anbefalet. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Javascript, har jeg ret? <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>En verden hvor folk er ret irriterede over min måde at komme til tiden på. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/13</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/13</guid>
            <pubDate>Sat, 21 Jan 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Sprinkling React]]></title>
            <description><![CDATA[<p>A beautiful thing about jQuery was how you could sprinkle it on top of an already working site. With all of today’s SPAs and what nots this seems like a distant past. We’ve all drunk the Kool Aid and the benefits of React (and the like) are just too huge to ever look back.</p>
<p>Still, there’s no reason we can’t still sprinkle instead SPA-ing. That was a horrible sentence. Let’s move on.</p>
<p>Here’s what I do on <a href="https://10er.dk" class="external-link">10er.dk</a>.</p>
<p>The api is basically as follows. You have a div with some <code>data-</code> props that we’ll catch later and switch in the magic.</p>
<pre><code class="hljs language-html"><span class="hljs-tag">&lt;<span class="hljs-name">article</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">data-react</span>=<span class="hljs-string">&quot;NumberWang&quot;</span> <span class="hljs-attr">data-props</span>=<span class="hljs-string">&#x27;{&quot;numbers&quot;:[1,2,3,5,68]}&#x27;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">article</span>&gt;</span>
</code></pre>
<p>Ok, so that means <em>look up the component called <code>NumberWang</code>, render it with these props and throw it back in here</em>.</p>
<p>Here’s <code>sprinkleComponents.js</code>. It uses Webpack and its <a href="https://webpack.github.io/docs/context.html" class="external-link"><code>require.context</code></a>:</p>
<pre><code class="hljs language-js"><span class="hljs-keyword">import</span> <span class="hljs-title class_">React</span> <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;react&quot;</span>;
<span class="hljs-keyword">import</span> { render } <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;react-dom&quot;</span>;

<span class="hljs-keyword">let</span> context = <span class="hljs-built_in">require</span>.<span class="hljs-title function_">context</span>(<span class="hljs-string">&quot;./components&quot;</span>, <span class="hljs-literal">true</span>, <span class="hljs-regexp">/\.(\/index)?js$/</span>);

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-keyword">function</span> <span class="hljs-title function_">sprinkleComponents</span>(<span class="hljs-params"></span>) {
  <span class="hljs-keyword">const</span> nodes = <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">querySelectorAll</span>(<span class="hljs-string">&quot;[data-react]&quot;</span>);

  <span class="hljs-keyword">for</span> (<span class="hljs-keyword">const</span> node <span class="hljs-keyword">of</span> nodes) {
    <span class="hljs-keyword">const</span> regexp = <span class="hljs-keyword">new</span> <span class="hljs-title class_">RegExp</span>(node.<span class="hljs-property">dataset</span>.<span class="hljs-property">react</span> + <span class="hljs-string">&quot;(/index)?\\.js&quot;</span>);
    <span class="hljs-keyword">const</span> match = context.<span class="hljs-title function_">keys</span>().<span class="hljs-title function_">find</span>(<span class="hljs-function">(<span class="hljs-params">path</span>) =&gt;</span> path.<span class="hljs-title function_">match</span>(regexp));
    <span class="hljs-keyword">const</span> <span class="hljs-title class_">Comp</span> = <span class="hljs-title function_">context</span>(match).<span class="hljs-property">default</span>;
    <span class="hljs-keyword">const</span> props = node.<span class="hljs-property">dataset</span>.<span class="hljs-property">reactProps</span>
      ? <span class="hljs-title class_">JSON</span>.<span class="hljs-title function_">parse</span>(node.<span class="hljs-property">dataset</span>.<span class="hljs-property">reactProps</span>)
      : {};
    props.<span class="hljs-property">children</span> = node.<span class="hljs-property">innerHTML</span>;

    <span class="hljs-title function_">render</span>(<span class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">Comp</span> {<span class="hljs-attr">...props</span>} /&gt;</span></span>, node);
  }
}

<span class="hljs-comment">// We can even get hot module reload (so dx am I right?)</span>
<span class="hljs-keyword">if</span> (<span class="hljs-variable language_">module</span>.<span class="hljs-property">hot</span>) {
  <span class="hljs-variable language_">module</span>.<span class="hljs-property">hot</span>.<span class="hljs-title function_">accept</span>(context.<span class="hljs-property">id</span>, <span class="hljs-function">(<span class="hljs-params">upd</span>) =&gt;</span> {
    context = <span class="hljs-built_in">require</span>.<span class="hljs-title function_">context</span>(<span class="hljs-string">&quot;./components&quot;</span>, <span class="hljs-literal">true</span>, <span class="hljs-regexp">/\.(\/index)?js$/</span>);
    <span class="hljs-title function_">sprinkleComponents</span>();
  });
}
</code></pre>
<p>This expects to find the component <code>NumberWang</code> at either <code>./components/NumberWang.js</code> or <code>./components/NumberWang/index.js</code> relative to <code>sprinkleComponents.js</code>.</p>
<p>Let’s make it – <code>./components/NumberWang.js</code>:</p>
<pre><code class="hljs language-js"><span class="hljs-keyword">import</span> <span class="hljs-title class_">React</span> <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;react&quot;</span>;

<span class="hljs-keyword">export</span> <span class="hljs-title function_">default</span> ({ numbers }) =&gt; (
  <span class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>{numbers[Math.floor(Math.random() * numbers.length)]}<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
);
</code></pre>
<p>And finally in your <code>main.js</code> or <code>index.js</code> or <code>client.js</code> or whatever:</p>
<pre><code class="hljs language-js"><span class="hljs-variable language_">document</span>.<span class="hljs-title function_">addEventListener</span>(<span class="hljs-string">&quot;DOMContentLoaded&quot;</span>, <span class="hljs-function">() =&gt;</span> {
  <span class="hljs-title function_">sprinkleComponents</span>();
});
</code></pre>
<p>This is the technique that I use to selectively apply some js sauce on <a href="https://10er.dk" class="external-link">10er.dk</a>, a mostly server rendered Rails app.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2017/2017-01-16-sprinkling-react</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2017/2017-01-16-sprinkling-react</guid>
            <pubDate>Mon, 16 Jan 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Tomato/Tomato]]></title>
            <description><![CDATA[<h5 id="%2312-%E2%80%93-2017-01-13-%E2%80%93-tomato%2Ftomato" tabindex="-1">#12 – 2017-01-13 – Tomato/Tomato</h5>
<p>🙏🏻 Først det allervigtigste: <a href="https://fupifarvandet.dk" class="external-link">Min podcast</a> er nomineret til en Zulu Award som “<a href="http://tv.tv2.dk/zulu-awards/2017-01-10-stem-paa-aarets-radioprogram" class="external-link">Årets Radioprogram</a>”. Det er ikke rigtig noget radioprogram. Men jeg vil gerne vinde alligevel, så du må meget gerne <a href="http://tv.tv2.dk/zulu-awards/2017-01-10-stem-paa-aarets-radioprogram" class="external-link">stemme</a>.<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup></p>
<hr>
<p>Gang på gang har jeg installeret <a href="https://culturedcode.com" class="external-link">Things.app</a> eller et andet todoprogram. Gang på gang har jeg sat det op med projekter, tasks og kategorier, prioriteter og alt det, der lige præcis ikke er den opgave, jeg vil holde styr på.</p>
<p>Siden <a href="http://merlinmann.com" class="external-link">Merlin Mann</a> læste <a href="http://www.43folders.com/2004/09/08/getting-started-with-getting-things-done" class="external-link">Getting Things Done</a> for mig<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup> har jeg kendt til systemet, som har givet stressfyldte forretningsmænd verden over livet tilbage.</p>
<p>Gang på gang har jeg stirret på de 3-4 todos jeg kunne finde på og måttet sande, at det nok i virkeligheden ikke var kvantitet, jeg druknede i. Det er til gengæld ingen grund til ikke at bruge et par minutter ekstra på at forsikre sig, at de 4 punkter nu også står i prioriteret rækkefælge inden man, Gud forbyde det, skal til at udføre én af dem.</p>
<p>Når man kigger på en prioriteret, farvekodet, kategoriseret, tidsskønnet todoliste med blot 4 punkter på, og alligevel ikke rigtig føler man kan gå i gang, føles det ikke just som om, man er på grænsen til et gennembrud.</p>
<hr>
<p>Min Kamp(™) er ikke en kamp mod en rindende vandhane af opgaver, der langsomt kryber mig op over næsen, hvis jeg ikke konstant øser vand ud. Det er mere bare sådan 4 rolige træer, jeg burde gå i gang med at fælde. Min økse er bare ikke liiiige skarp nok og måske skulle jeg lige spille i en enkelt runde Hearthstone inden jeg går i gang og trænger jeg ikke til at støvsuge og hvad mon der sker på Twitter?</p>
<p>For mig kan MAXIMUM PRODUKTIVITET koges ned til to ting:</p>
<ul>
<li><strong>LAD VÆR</strong> med at skrue på setup’et</li>
<li><strong>GÅ I GANG</strong> med at lave ting</li>
</ul>
<figure><img src="https://s3.brnbw.com/kl7ajlgl9cc-caspar-rubin-QxuY5U6KgR.jpg" alt="#thoughtleader" /><figcaption>#thoughtleader</figcaption></figure>
<hr>
<p>En ting som hjælper, er <a href="http://cirillocompany.de/pages/pomodoro-technique/" class="external-link">Pomodoro</a>.</p>
<p>Ideen er simpel. Simplere end at den egentlig behøvede et fancy navn: Sæt et æggeur til 25 minutter. Luk alt andet ude. Arbejd i de 25 minutter. Når uret ringer, holder du en kort pause, sætter et stort, fedt checkmark på et stykke papir, og stiller uret på ny.</p>
<p>Pomodoro betyder tomat på italiensk. Hver 25-minutters periode er en tomat. 🍅</p>
<p>Jeg er ham, der helst skal have en deadline, og på den her måde har jeg en lille bitte deadline hver 25. minut. Kommer jeg for langt ud af en tangent i den ene tomat, synes jeg ikke, jeg fortjener et checkmark. Til gengæld kan jeg tage revanche lige bagefter i den næste.</p>
<p>Når æggeuret kører, er tiden knap, og jeg dropper at slibe mere på øksen. Mit todo-program er fint. Det er ikke bedre med en anden font på min editor. Der er sådan set ikke tid til meget andet end at gå i gang.</p>
<p>Todos føles alligevel også bedre på <em>papir</em>.</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Hvis du ikke er interesseret i at få din emailadresse i TV2s system, kan du jo altid bruge en <em><a href="http://www.throwawaymail.com" class="external-link">burner</a></em> til formålet. Så længe du kun bruger én, er der vel ingen snyd i det. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Som i, jeg har aldrig læst den, men har fået ideerne gennemgået hvad der føles som en milliard gange. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/12</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/12</guid>
            <pubDate>Fri, 13 Jan 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Business Time]]></title>
            <description><![CDATA[<h5 id="%2311-%E2%80%93-2017-01-06-%E2%80%93-business-time" tabindex="-1">#11 – 2017-01-06 – Business Time</h5>
<p>Jeg er ikke bleg for at gøre nar af <a href="https://computers.mikkelmalmberg.dk/issues/5" class="external-link">Business School-typer</a>. Det bunder garanteret i, hvor dårlig jeg selv er til alt, der hører til.</p>
<p>Jeg blev momsregistreret i 2007. 7-8 år senere kulminerede det i et skattesmæk på 80.000 kr, bestående af restsjatter fra alle 7-8 år. Det har taget mig godt 10 år at få bare det mindste styr på mit eget regnskab.</p>
<p>Det er noget, jeg nemt kommer til: At synes noget er latterligt, fordi jeg i bund og grund bare ikke har sat mig ind i, hvad det handler om.</p>
<p>Derfor har jeg planlagt at dyppe et par tæer i hele forretningsaspektet af øhm, <em>min forretning</em> i 2017. Jeg håber, at det kan få den lille interesse, jeg har i den slags til at blive til en marginalt større interesse. Hvis alt går vel, forstår jeg til sidst nok til, at mine fravalg ikke kommer af naivitet og frygt for det ukendte.</p>
<p>(Hvis du kender til en <em>Gratis E-bog</em> eller en <em>“Bog”(?!)</em> eller whatever, om budgettering, regnskab og den slags, som jeg bør læse, så sig til!)</p>
<hr>
<p>Jeg har i min forretning, <a href="https://brnbw.com" class="external-link">Brainbow</a>, flere projekter kørende. Den mest lovende lige nu er donationsmaskinen <a href="https://10er.dk" class="external-link">10er</a>. Der er også downloadbutikken Motherload. Og en række projekter, som ikke har nogen forretningsmodel.</p>
<p>10er blev oprindeligt bygget til min egen comedy-podcast <a href="https://fupifarvandet.dk" class="external-link">Fup i Farvandet</a>. Sidenhen har jeg åbnet for andres projekter, og i skrivende stund er der <a href="https://10er.dk/projects" class="external-link">33 tilmeldte projekter</a>. De fleste er podcasts. Der er også et par blogs, <a href="https://articulate.10er.dk" class="external-link">et magasin</a> og <a href="https://larsen.10er.dk" class="external-link">en digter</a>.</p>
<p>I 2. halvår af 2016 hævede 10er i alt 8210 gange på tilmeldte betalingskort. 251.646,41 kr er løbet igennem maskinen. Deraf beholder jeg 10%, så med moms betyder det, 10er havde en indtjening på 31.455,80 kr. 5.242,63 om måneden.</p>
<p>10er kører på en mellem-stor, delt server<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>, der også hoster andre projekter. Jeg har købt noget grafik, brugt lidt penge på <a href="https://blog.10er.dk" class="external-link">Pelles blogposts</a> men langt den største <em>omkostning</em>, er min egen tid, som “heldigvis” er gratis. Endnu.</p>
<p>Min opmærksomhed er flygtig og kan kun delvist købes for penge. Jeg <em>er</em> et unikt snefnug og jeg er klar over, hvor priviligeret det lyder, men det er immervæk noget, jeg har måttet sande gang på gang.</p>
<hr>
<p>Det er så utroligt nemt at starte et projekt, at jeg nogle dage skal holde mig selv i kragen, for ikke at gøre det igen. Serverplads er billigt. Værktøjerne, frameworks og services gør de sværeste dele knapt så svære. Teknisk kan du være flyvende lynhurtigt. Forretningsaspekterne er til gengæld sværere – for mig i det mindste – men det kan umuligt være <strong>så</strong> meget sværere.</p>
<p>Kan du hjælpe mig eller irettesætte mig? Det kan være, du gerne vil høre noget mere om det tekniske i projekterne? Det kan også være, du ikke kunne forestille dig noget mere kedeligt?</p>
<p>🖥 Mikkel</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>VPS hos DigitalOcean til $80 om måneden. Jeg kunne sagtens nøjes med en halvt så stor. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/11</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/11</guid>
            <pubDate>Fri, 06 Jan 2017 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[No matter how anybody says it is]]></title>
            <description><![CDATA[<h5 id="%2310-%E2%80%93-2016-12-29-%E2%80%93-no-matter-how-anybody-says-it-is" tabindex="-1">#10 – 2016-12-29 – No matter how anybody says it is</h5>
<p>Det nye år er lige rundt om hjørnet, og med det mener jeg, at om 2 dage er det allerede 2017. Det er imidlertid rigeligt tid til at lade sig transformere til en produktivitetsguru. Hvor er min trimmer, jeg skal være Stadil-skaldet og det kan kun gå or langsomt.</p>
<hr>
<p>Jeg har aldrig været typen med mange nytårsforsæt. Jeg har heller aldrig været ryger, så det er måske forklaringen. Jeg har dog, som så mange, følt mig draget til ideen om at lade kalenderskiftet være anledning til en eller anden ændring. I stedet for at have dårlig samvittighed hele tiden, kan man lige udskyde det et par dage/uger/måneder, til et arbitrært, fire-cifret tal også skifter og lade det være startskuddet. Så kan jeg både ryge nu OG, i sådan en fremtidsgaranteret selvopfattelse, være stoppet med det på samme tid.</p>
<p>Problemet med årsskifte som startskud er både, at det ikke er <em>lige nu</em>, og at det ikke sker igen før om et år.</p>
<p>Hvis enhver livsændring kræver, at det sker sideløbende med den helt rigtige talskifte, har du utroligt få muligheder. Og når du den fjerde-femte januar falder i og tager en smøg, har du givet op et helt år frem.</p>
<p>Forandring er svært. Svære ting tager mere end ét forsøg.</p>
<p>Jeg blev for nyligt mindet om <a href="http://www.43folders.com/2011/01/07/first-pancake" class="external-link">Merlin Manns fremragende, 6 år gamle blogpost</a> om nytårsforsæt. Hvis du én gang har prøvet at lave pangekager, så ved du, at den første altid er lort. For meget eller for lidt fedtstof. For meget eller for lidt varme. Den er altid lort. Men det betyder ikke, de følgende også er. Du laver bare en pandekage mere, og henad nummer 4-5 er det som om, det umuligt kan gå galt igen.</p>
<p>Ligesådan er det med forandring: Det er svært, men bare fordi du fejler i starten (eller nogensinde) betyder det ikke, du behøver give op. Stå ved, at du faldt i, ryg den smøg, og stop med at ryge <em>igen</em> lige bagefter. Eller vent til næste dag, hvis du absolut skal have et startskud.</p>
<hr>
<p>En dag for måske 10 år siden, var min bedstefar ved lægen, hvor han fik at vide, at han skulle stoppe med at ryge nu, hvis han ikke ville dø af det. Det er sådan en slags <em>home safe</em>-besked man kan give som læge: Det vil, før eller siden blive sandt, lige meget hvem man siger det til. Efter et helt liv med pibe, stoppede min bedstefar med at ryge fra det sekund han trådte ud af lægens dør den dag.</p>
<hr>
<p>Når alt det er sagt, så lad mig alligevel foreslå et forsæt for os to:</p>
<p><strong>Lad 2017 være et år, hvor vi fokuserer på at <em>lave</em> i stedet for at <em>synes</em>.</strong></p>
<figure><a href='http://favstar.fm/users/_why/status/881768089'><img src="https://s3.brnbw.com/Screen-Shot-2016-12-29-14-26-27-iIe6iOzgG1.png" alt="@_why" width="480" /></a><figcaption>Den forsvundne(!) programmør _why var klog</figcaption></figure>
<p>Det er så nemt at fortabe sig i et Facebook-feed. Som en slags ålerose betrukket med babybilleder og ligegyldige holdninger, bliver du lokket derind af nysgerrighed, og ender med at bruge timer på at nusse din trackpad, mens <em>lige akkurat underholdende</em> updates snegler sig forbi. Og i det øjeblik, du skriver en kommentar, kan det næsten føles som om, du bidrager med noget. Og det gør du måske også. Men i virkeligheden nok ikke.</p>
<p>Så, lad os i stedet prøve, <em>prøve igen</em> om nødvendigt, at lave noget. Du finder ud af, hvad det er. Det har på alle måder aldrig været så nemt at komme i gang med noget som helst, så lad os gøre det.</p>
<p>Begynd at blogge igen. Mal noget på iPaden. Indspil noget musik på din telefon. Start et hobbyprojekt.</p>
<p>Lav noget, fordi det føles dejligt. Lav noget, kun fordi du kan og vil.</p>
<figure><a href='https://twitter.com/GORDYLAND/status/813263712492474369'><img src='https://s3.brnbw.com/pb-SH11qZGoWT-LLR4VqyPCq.png' alt='via @GORDYLAND' /></a><figcaption>No matter how anybody says it is</figcaption></figure>
<p>Hvis du er med på den, vil jeg gerne høre fra dig. Lad mig være din <em>partner in crime</em>, din mailingliste, din boksebold. Så længe du er med på, at gøre et forsøg på at lave noget.</p>
<p>Så lover jeg at gøre det samme og fortælle dig om det her. Det her nyhedsbrev er allerede et forsøg på lige præcis dette, og det går stadigvæk, selvom jeg startede før det blev 2017.</p>
<p><a href='https://twitter.com/hotdogsladies/status/814731283741876224'><img src='https://s3.brnbw.com/pb-mSTRQyIPF5-AHOq3YMGrz.png' alt='Merlin igen' width='420' /></a></p>
<p>🖥 Mikkel</p>
]]></description>
            <link>https://mikkelmalmberg.com/issues/10</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/10</guid>
            <pubDate>Thu, 29 Dec 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Som gavepapir på en lille, højtrøstet, lunken lort]]></title>
            <description><![CDATA[<h5 id="%239-%E2%80%93-2016-12-23-%E2%80%93-som-gavepapir-p%C3%A5-en-lille%2C-h%C3%B8jtr%C3%B8stet%2C-lunken-lort" tabindex="-1">#9 – 2016-12-23 – Som gavepapir på en lille, højtrøstet, lunken lort</h5>
<p>For en uges tid siden (to? tre? Tiden løber, når Glögg hældes ned) var der hele balladen med Den Korte Avis’ annoncører, der eksplicit fravalgte “avisen” fra deres “annoncepakke”.</p>
<p>Jeg kigger aldrig på deres racistiske blogting, og har kun set indholdet gennem screeshots (sagde han i en form for koldhøgen ros til sig selv) men jeg havde eddermame heller ikke villet have mit navn derpå.</p>
<p>Selv mente de, det var et angreb på deres <em>ytringsfrihed</em>. Konceptet der efterhånden er enhver klovns undskyldning for ikke at kunne tåle, at andre siger <em>luk røven</em> til dem. Selvfølgelig må du sige, lige hvad du har lyst til, men det kan kun overraske idioter, at ingen virksomheder gider have deres logo pakket pænt rundt om idioter. Som gavepapir på en lille, højtrøstet, lunken lort.</p>
<p>Det hele endte smukt med, at <a href="https://twitter.com/abdelstweet" class="external-link">Abdel</a>, der på Twitter berettede fra fronten af annoncørflugten, fik en reklame for sin bog på Den Lunkne Lorteavis. (Og fik også lov til at skrive <a href="https://denkorteavis.dk/2016/giv-en-kop-kaffe/" class="external-link">en kronik</a> derpå.)</p>
  <figure><a href='https://twitter.com/michaeljeppesen/status/808312260636581888'><img src="https://s3.brnbw.com/pb-sDhQiKDf6t-fGmFpcK7qK.png" alt="@michaeljeppesen" width="480" /></a><figcaption>@michaeljeppesen laver fis og ballade</figcaption></figure>
<p>Reklamer på nettet er en enorm industri. Det startede som helt simple, uskyldige bannere. Så var det mere lukrativt at narre læseren med at skulle “Punch the monkey” eller være “besøgende nummer 1 million”. Så kom popups. Nu om dage involverer det både mikroauktioner, overvågning og <em>annoncepakker</em>.</p>
<p>Hvis det her kommer til at lyde som en splejset version af <a href="https://twitter.com/baconmeteor" class="external-link">Maciej Ceglowski</a>’s oplæg til Fremtidens Internet i 2015, <a href="http://idlewords.com/talks/what_happens_next_will_amaze_you.htm" class="external-link">What Happens Next Will Amaze You</a>, så er det fordi, det er det. Det er godt halvandet år siden og stadig så deprimerende relevant. Stor anbefaling herfra til <a href="http://idlewords.com/talks" class="external-link">alle hans foredrag</a>.</p>
<p>Det er så smart med computere. Som indehaver af en hjemmeside reserverer du blot nogle af dine pixels til reklamer (lad os være ærlige: <em>de fleste pixels</em>), og så får du Google eller en anden mellemmand til at fylde dem med billeder, og småpengene triller ind. Øre efter øre.</p>
<p>Mellemmanden sørger for at finde nogle billeder, der passer bedst til dig, den uskyldige besøgende. Og for at finde det, har han fulgt efter dig rundt. Han kender til alle sider, du har været på, som bruger hans annoncenetværk. Det viser sig, du er på markedet efter en ny cykel (eller måske dildo? Din frækkert.)</p>
<p>Her begynder auktionen: Adskillige cykelhandlere har tilmeldt sig i den anden ende. Så mellemmanden svinger lynhurtigt hammeren og finder den cykelhandler, der betaler flest håndører, og du kan nu læse artiklen <em>Her Får Du Den Bedste Sylte</em>, som du har glædet dig så meget til.</p>
<p>Alt dette sker, uden du lægger mærke til det. Uden du sansynligvis ved det.</p>
<p>Men det er da smart, at du får <del>dildo</del>cykelreklamer, når nu du er på markedet efter en cykel!?</p>
<p>… Bortset fra at det er super klamt. Jeg har hørt fra flere, der helt reelt er i tvivl om, om Facebook lytter med på deres samtaler ude i <em>virkeligheden</em>. De har talt i telefon med deres mor om skinkesalat mens Facebook har stået åben i baggrunden, og pludselig begynder de at modtage reklamer for skinkesalat.</p>
<figure><img src="https://s3.brnbw.com/wait-what-wVkW5x4vpC.gif" alt="wait what?"></figure>
<p>Jeg tror ikke, Facebook lytter på den måde — Men det ville da være en super relevant skinkesalat, hvis de gjorde? Og <strong>mega klammo</strong>.</p>
<hr>
<p>Lige så nemt som en computer kan finde et bannerkasse, der kan passe, kan den også besøge en hjemmeside og klikke på et par af dem - eller måske nogle tusinde - i minuttet.</p>
<p>Man kan sige meget om russiske lømler, men de forpasser aldrig en mulig <em>forretning</em>. Og således findes der nu en enorm industri på den anden side af forbindelsen, der bruger mere og mere avancerede metoder til at snyde reklamerne. I denne uge kom det frem, at <a href="http://www.nytimes.com/2016/12/20/technology/forgers-use-fake-web-users-to-steal-real-ad-revenue.html" class="external-link">nogle af de frække russiske lømler svindler for godt 35 mio kr. om dagen</a>.</p>
<p>Dette er selvfølgelig ikke noget nyt problem, så reklamesælgerne bruger oceaner af tid på at sørge for, at det <em>nok, højst sansyndligt</em> er et rigtigt menneske, der klikker på deres reklamer. Svindlerne svarer igen med mere avancerede metoder, og sådan kører dødsspiralen bare nedad og nedad i flere og flere lag avanceret JavaScript, der skal eksekveres hver eneste gang hvert eneste banner skal vises.</p>
<figure><img src="https://s3.brnbw.com/hacking-in-progress-pfTqVvLaql.gif" alt="HACKING IN PROGRESS"></figure>
<p>Svindlen retfærdiggør oceanerne af tid, og spiralen vil ingen ende tage.</p>
<blockquote>
<p><em>The fraud, which began in September and is still going on, represents a new level of sophistication among criminals who seek to profit by using bots — computer programs that pretend to be people — to cheat advertisers.</em> <a href="http://www.nytimes.com/2016/12/20/technology/forgers-use-fake-web-users-to-steal-real-ad-revenue.html" class="external-link">#</a></p>
</blockquote>
<p>Det viser sig imidlertid, at den nemmeste måde at ligne et menneske på, er ved at narre et rigtigt et af slagsen. Fang en sagesløs gammel dame med en forældet version af Flash Player’en og brug hendes computer med dugfrisk IP, ægte, hjemmelavet browserhistorik og du vil være stort set umulig at kende som robot.</p>
<hr>
<p><a href="http://boingboing.net/2016/12/07/for-two-years-criminals-stole.html" class="external-link">Den her artikel</a> detaljerer, hvordan ondsindede frækkerter brugte lige netop bannere til at inficere computere:</p>
<p>Et `.png`-billede kan være mere eller mindre gennemsigtigt. Fra <em>0 til 255 point gennemsigtigt</em> for at være præcis. Lad os sige, du har købt en prangende bannerplads på hele 3x1 pixel størrelse, og du gerne vil skrive “ABE” til nogen, hemmeligt shhh, så lad os fx bestemme, at `0` point gennemsigtigt er et `A`, `1` point er `B` og så videre. For at skrive ABE på dine tre pixels, skal du bare gøre dem 0, 1 og 4 point gennemsigtige.</p>
<p>Det er groft gengivet, men det er stort set det, de har gjort. Bannerkode må selvfølgelig ikke være ondsindet for at komme i omløb, men det må åbenbart godt kigge på billeders gennemsigtighed, og på den måde slap den frække, frække kode alligevel igennem. Og for det ikke skal være løgn, <strong>var</strong> det, den onde kode gjorde, at opdage og udnytte en gammel version af Flash<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>.</p>
<hr>
<p>Så, hvad gør vi? Maciej har <a href="http://idlewords.com/six_fixes.htm" class="external-link">seks ideer</a>, og der er ingen af dem, der er dumme. Jeg vil ikke liste dem her, men i stedet endnu engang opfordre til at lytte til manden selv. Jeg formoder, de fleste af jer læsere allerede bruger en Adblocker, som jeg selv. Men når alle Vi Unge(™) og rige bruger Adblockers, og annoncørnetværk og lømler bliver helt desperate, hvad skal der så ikke blive af alle de sagesløse, gamle damer og deres forældede Flash Playere?</p>
<p>Det eneste IT-politik jeg hører om, er hvor meget politikerne og politiet kan få lov til at udspionere os på internettet. Jeg synes i stedet, de burde bruge noget af energien på at sørge for, reklamenetværk ikke må gøre det samme.</p>
<p>🖥 Mikkel<br>
🎄 God jul!</p>
  <img src="https://s3.brnbw.com/COMPUTERS-512.jpg" alt="COMPUTERS" width='256' />
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>For Guds skyld: Afinstaller lortet. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/9</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/9</guid>
            <pubDate>Fri, 23 Dec 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Serving a Keybase.io claim with Next]]></title>
            <description><![CDATA[<p>I recently moved my personal website to <a href="https://github.com/zeit/next.js" class="external-link">next.js</a> because why not. The people at <a href="https://zeit.co" class="external-link">▲ Zeit</a> are on a roll and I want in on it.</p>
<p><a href="https://keybase.io" class="external-link">Keybase</a> quickly started complaining about me removing my <em>claim</em>. You’re supposed to host a file at <code>/keybase.txt</code> with specific content to claim a domain is truly yours. So how do we do that with Next?</p>
<p>Here’s <code>pages/keybase.txt.js</code>:</p>
<pre><code class="hljs language-javascript"><span class="hljs-keyword">import</span> <span class="hljs-title class_">React</span>, { <span class="hljs-title class_">Component</span> } <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;react&quot;</span>;

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">KeybaseTxt</span> <span class="hljs-keyword">extends</span> <span class="hljs-title class_ inherited__">Component</span> {
  <span class="hljs-keyword">static</span> <span class="hljs-title function_">getInitialProps</span>(<span class="hljs-params">{ res }</span>) {
    res.<span class="hljs-title function_">end</span>(claim);
  }

  <span class="hljs-title function_">render</span>(<span class="hljs-params"></span>) {
    <span class="hljs-keyword">return</span> <span class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>We&#x27;ll never get this far<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>;
  }
}

<span class="hljs-keyword">const</span> claim = <span class="hljs-string">`=====...long long claim thing...`</span>;
</code></pre>
<p><code>getInitialProps</code> is Next’s way of fetching data before render so it works both on the server and the client. During server render it’s passed <code>req</code> and <code>res</code> from node and apparently we can just end it right there. So dumb it’s smart.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2016/2016-12-16-serving-a-keybase-claim-with-next</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2016/2016-12-16-serving-a-keybase-claim-with-next</guid>
            <pubDate>Fri, 16 Dec 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Feedback]]></title>
            <description><![CDATA[<h5 id="%238-%E2%80%93-2016-12-16-%E2%80%93-feedback" tabindex="-1">#8 – 2016-12-16 – Feedback</h5>
<p>Grundet lidt tumult i privaten, vil jeg i denne uge overlade gulvet til jer. Her er lidt af responsen til spørgsmålet fra sidste uge.</p>
<p>Det her er også din mulighed for at læse et af de andre nyhedsbreve, som nu har deres eget hjem på <a href="https://computers.mikkelmalmberg.dk" class="external-link">computers.mikkelmalmberg.dk</a>.</p>
<hr>
<h4 id="hvilken-del-af-dit-setup-(software%2C-hardware)-er-du-mest-begejstret-for%3F-hvorfor%3F" tabindex="-1">Hvilken del af dit setup (software, hardware) er du mest begejstret for? Hvorfor?</h4>
<p><a href="https://twitter.com/marks" class="external-link">@marks</a> er glad for sit backup-setup:</p>
<blockquote>
<p>Hele disken er backet up via 1) Backblaze og 2) Time Machine. De vigtigste mapper (billeder, dokumenter etc.) er desuden backet up på 3) Dropbox og 4) Amazon Glacier (via <a href="https://www.arqbackup.com" class="external-link">Arq</a>). Desuden har jeg også lavet en manuel backup for ikke så længe siden til 5) en anden S3 bucket end den jeg bruger i Arq. Sidst, men ikke mindst, så 6) indekserer Google Photos også alle billeder på hele disken, hvilket er både skræmmende og vidunderligt på samme tid</p>
</blockquote>
<p>Jeg er imponeneret!</p>
<blockquote>
<p>Jeg bruger også HyperTerm og Atom fordi de var sjove og kan skinnes næsten lige så meget som WinAmp</p>
</blockquote>
<p>WinAmp-faktoren skal ikke undervurderes.</p>
<p><a href="https://twitter.com/jacquesmourier" class="external-link">@jacquesmourier</a> laver mange æg?:</p>
<blockquote>
<p>en app der hedder <a href="https://itunes.apple.com/us/app/tadam-stay-focused-at-work/id531349534?mt=12" class="external-link">Tadam</a> til macOS. Det er egentlig bare et æggeur i topbaren, men jeg bruger den hele tiden hver dag uafbrudt</p>
</blockquote>
<p><a href="https://twitter.com/krestenjj" class="external-link">@krestenjj</a> ser TV:</p>
<blockquote>
<p>Jeg er til gengæld enormt glad for vores hardware setup i vores to tv med chromecasts. Det fungerer mega godt og gør at vi udelukkende ser tv via streaming nu. Også super nemt med en lille størrelse i huset, hun kan se det hun har lyst til</p>
</blockquote>
<p>Same.</p>
<p><a href="https://twitter.com/spiri" class="external-link">@spiri</a> deler sin Dock og maler graffiti om det:</p>
<blockquote>
<p>min opdeling af min Dock på mine Macs. Det gør en verden til forskel, at have mellemrum mellem grupper af ikoner. Det er et hack jeg skrev om <a href="https://spiri.dk/2010/dock-dividers-2/" class="external-link">på min bolig</a> [sic] for mange år siden</p>
</blockquote>
<p><em>Jonas</em> skriver noter:</p>
<blockquote>
<p>Både privat men i særdeleshed arbejdsrelateret vil jeg gerne slå et slag for Microsofts Onenote. Den er jeg faktisk blevet ret begejstret for med tiden. Det er nemt, alsidigt, hurtigt og kan deles med andre</p>
</blockquote>
<p>Office-programmerne har altid kunnet deles med andre. Via torrents.</p>
<p><a href="https://twitter.com/claus" class="external-link">@claus</a> har en fyldepen:</p>
<blockquote>
<p>Pilot V-pen, engangsfyldepen + notesbog. […] Har 3000-4000 sider skrevet på den måde. Det virker ikke lige så godt med en kuglepen. Grimt blæk, der bare klistres ud på papiret. Fyldepennen lækker et vådt, sort spor på papiret, der så sætter sig og bliver permanent. […] Pointen med V-pennen er ikke at det <em>skal</em> være den - men den koster 30 kr og vejer ingenting</p>
</blockquote>
<p>Ultrahipster! Jeg kan ikke gå forbi papir/kuglepen-afdelingen uden at have lyst til at købe dem allesammen, så det her rammer mig lige i fetishen.</p>
<p><a href="https://twitter.com/jimmyhartington" class="external-link">@jimmyhartington</a> foreslår [Keyboard Maestro][]:</p>
<blockquote>
<p>I mit setup er jeg mest begejstret for programmet [Keyboard Maestro][]. Det gør det muligt at automatisere en masse ting på min mac. […] Programmet prøver at anslå, hvor lang tid det har sparet mig. Og den påstår <strong>6 år</strong>.</p>
</blockquote>
<p>Det er da også en slags besparelse.</p>
<p><a href="https://twitter.com/jenslykkebrandt" class="external-link">@jenslykkebrandt</a> programmerer:</p>
<blockquote>
<p>Jeg er (naturligvis) begejstret for mit setup med git, npm, babel, grunt, webpack (med mere) til dev, stage og prod: det er relativt simpelt og hurtigt. Jeg laver næsten kun relativt små projekter, så setup skal være en meget lille del af processen: at starte et nyt op med alt tager &lt;15 minutter.</p>
</blockquote>
<p>Jens må være den eneste, der kan sætte Webpack op på &lt;15 min. Jeg plejer at bruge et par dage på setup, før jeg kan programmere i en halv time.</p>
<p><em>Kristoffer</em> smider lortet i skyen:</p>
<blockquote>
<p>Jeg er primært glad for at bruge de fleste googleværktøjer + at have alle vigtige mapper og billeder i mine (betalte) dropbox-mapper.</p>
</blockquote>
<p>Det behøver ikke være sværere end det.</p>
<p><em>Jens</em> klarer det i terminalen:</p>
<blockquote>
<p>Pt. er det iTerm2 og zsh, som jeg endelig har fået til at spille som jeg ønsker. Det er klart en vanity ting at det bare er lækkert, men også autocomplete sparer mig mange taste-fejltryk i løbet af dagen.</p>
</blockquote>
<p><a href="http://quoteinvestigator.com/2014/03/29/sharp-axe/" class="external-link">Abraham Lincoln sagde ikke</a>:</p>
<blockquote>
<p>Give me six hours to chop down a tree and I will spend the first four sharpening the axe.</p>
</blockquote>
<p>… men uanset hvem, så er det ikke så dumt. I hvert fald til en grænse.</p>
<hr>
<p>På genlæs (dét siger man) i næste uge, hvor COMPUTERS forhåbentlig er tilbage i lidt mere normal form.</p>
<p>🖥 Mikkel</p>
<img src="https://s3.brnbw.com/COMPUTERS-512.jpg" alt="COMPUTERS" width='256' />
]]></description>
            <link>https://mikkelmalmberg.com/issues/8</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/8</guid>
            <pubDate>Fri, 16 Dec 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Pak let]]></title>
            <description><![CDATA[<h5 id="%237-%E2%80%93-2016-12-09-%E2%80%93-pak-let" tabindex="-1">#7 – 2016-12-09 – Pak let</h5>
<p>Julen nærmer sig. Da jeg var barn, var jeg på intet tidspunkt i tvivl om, hvilket nummer under 24, vi var nået til i december. I går fik jeg et chok over, det allerede var d. 8.</p>
<p>Den første januar efter jeg var flyttet hjemmefra udgav jeg en EP med 5 sange på. Jeg var flyttet til Århus, væk fra familien i Aalborg, og var decideret på røven i januar. Ikke sådan på en global målestok, men så meget som man nu kan være det, mens man får gratis skolepenge af staten. Jeg drak the og den billige appelsinsodavand(!) og spiste gulerødder til. Jeg har altid været glad for sukker, men omstændighederne havde simpelthen tvunget mig til vanvid.</p>
<p>Jeg læste på Århus Universitet, og vi havde fri hele januar. Så jeg havde masser af tid til at sidde til klokken 3 om natten og komponere musik. Dengang spillede jeg trommer i et <a href="https://web.archive.org/web/20071230163457/http://www.soundvenue.com/band.asp?id=2606" title="Charlie Don't Surf-artikel på Soundvenue" class="external-link">indieband</a>, men jeg var også begyndt at optage små demoer med mine egne sange. Den januar færdiggjorde jeg 5 styks, som jeg udgav under <a href="https://en.wikipedia.org/wiki/Good_Girl_Gone_Bad" title="Wikipedia: Good Girl Gone Bad" class="external-link">samme titel</a> som Rihanna. Jeg tegnede et cover på en Wacomtablet, jeg havde lånt af min daværende kærestes storebror, postede dem på Twitter og Facebook – og så gik jeg i gang med de næste sange.</p>
<figure><img src="https://s3.brnbw.com/the-north-1KAjC5JiSc.png" alt="Good Girl Gone Bad" width="250" /><figcaption>2008: Good Girl Gone Bad</figcaption></figure>
<p>Jeg kan ikke åbne de sange i Logic i dag, for i dem bruger jeg alle mulige absurde plugins, jeg havde downloadet ulovligt eller gratis, og ingen af dem virker eller er til at støve op længere.</p>
<hr>
<p>De følgende 4 år udgav jeg hver december/januar en EP med 3-5 sange på. Og hvert år brugte jeg færre og færre plugins. Både fordi Logics medfølgende indhold blev bedre, men også fordi det gik op for mig, at der var større værdi i ikke at være afhængig af obskure plugins, end der var i de dyre plugins selv.</p>
<figure><img src="https://s3.brnbw.com/KaboomConnoiseur-9AmLxTfF9l.jpg" alt="Good Girl Gone Bad" width="250" /><figcaption>2012: Kaboom Connoiseur</figcaption></figure>
<p>Det er blevet et mål for mig at <em>“pakke let”</em>, som jeg kalder det. Jeg forsøger, ikke at arbejde mig ind i et hjørne af komplicerede setups og settings, som jeg ikke kan finde ind i igen. Hvis din computer skulle blive stjålet i morgen, ville du så kunne sætte den nye op som den gamle? Ét er dine fotos og dokumenter, som du selvfølgelig har backup af<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>, men et andet er dine settings og arbejdsgange.</p>
<p>Hvert år når Apple lancerer næste version af deres styresystem, installerer jeg betaerne oveni mit gamle. Fra beta 1 og helt til <em>GM</em><sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>. Det er dumt – jeg vil ikke råde nogen til det samme – men jeg er simpelthen for nysgerrig til at lade være. Når <em>GM</em> er klar, så sletter jeg alt og installerer alt fra nul.</p>
<p>Det er et levn fra en forsvunden tid, hvor Windows nærmest forlangte at blive nulstillet engang imellem. Men lige så meget som det rydder op i egentlig filrod, så rydder det op i min forståelse af mit setup, og det tvinger mig til at være opmærksom på, hvordan mit setup er anderledes end det, der følger med ud af kassen.</p>
<p>Hvis min computer blev stjålet i morgen, ville jeg kunne have en ny med stort set samme setup og indhold inden dagen var omme. Tæt nok på, i hvert fald. Jeg er sikkert fjollet – men jeg kan stadig åbne de sidste 2 EP’ers Logic-projekter uden problemer.</p>
<hr>
<p>Sidste uge bad jeg jer svare på mailen med et yndlingsafsnit. <a href="https://s3.brnbw.com/computers-6/index.html" title="COMPUTERS #6 med respons" class="external-link">Her kan i se resultatet</a>. Det er jo faktisk ikke helt dumt! Jeg er glad for spredningen – nogle kan lide jokes, andre kan lide pointer. Alle kan lide mig: Perfekt.</p>
<p>I denne uge kører vi decideret nørd-kommentarfelt:</p>
<h3 id="hvilken-del-af-dit-setup-(software%2C-hardware)-er-du-mest-begejstret-for%3F-hvorfor%3F" tabindex="-1">Hvilken del af dit setup (software, hardware) er du mest begejstret for? Hvorfor?</h3>
<p>Er det et kedeligt spørgsmål? Lad os se.</p>
<p>Hvis du er nysgerrig på musikken, kan alle 5 EP’er, jeg nåede at udgive, findes på <a href="http://themilkrun.detersmart.dk" class="external-link">den her side</a>. Det meste er også på Spotify og iTunes. Hvis du bare skal høre én sang, så kan jeg godt lide <a href="https://soundcloud.com/mikker/inside-my-pants" class="external-link">den her</a>.</p>
<p>Hvis du er nysgerrig på mit setup, så er mine <a href="https://github.com/mikker/dotfiles" title="mikker/dotfiles.git" class="external-link">dotfiles tilgængelige på Github</a>. Hvis du ikke ved, hvad dotfiles er, kan du roligt ignorere det her.</p>
<p>🖥 Mikkel</p>
<img src="https://s3.brnbw.com/COMPUTERS-512.jpg" alt="COMPUTERS" width='256' />
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>En kollega på DR fik for et par uger siden stjålet sin laptop direkte fra sin cykelkurv på vej til DR Byen. Havde ingen backup af hverken dokumenter eller fotos. Seriøst: Installer nu bare <a href="https://backblaze.com" title="BackBlaze.com" class="external-link">Backblaze</a> eller noget lignende, så det sker automatisk. Det er 2016, behøver du flere rædselshistorier? <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p><em>Golden Master</em>: Den færdige, klar-til-print-version. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/7</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/7</guid>
            <pubDate>Fri, 09 Dec 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[💛]]></title>
            <description><![CDATA[<h5 id="%236-%E2%80%93-2016-12-01-%E2%80%93-%F0%9F%92%9B" tabindex="-1">#6 – 2016-12-01 – 💛</h5>
<p>I starten af ugen havde jeg fornøjelsen af at besøge Finland. Jeg var til en Social Media-konference med repræsentanter fra Norge, Sverige, Finland og en enkelt pige fra Island. Det var hende, der fandt på <a href="https://www.youtube.com/watch?list=PLze65Ckn-WXZvcgxpN_q1h17uW8_JFDOD&amp;v=G54tllj-SKI" class="external-link">Sigur Rós’ 24 timers slow-TV-tur rundt om Island</a>.</p>
<figure><img src="https://s3.brnbw.com/giphy-663PmLyg5x.gif" alt="&quot;Du følger bare vulkanen&quot;"></figure>
<p>Der var mange tal. Det fede ved Social Media er, at man har tal på det hele – hvor mange har set, rørt, følt din reklame. SÅ mange? Hvor gamle var de? Hvilken farve var de?</p>
<p>Så det hørte vi. Hvordan forbruget gik op og ned i Europæiske lande, blandt gamle og unge. Og vi udvekslede erfaringer fra arbejdsgange og tips til storbrug. DR har mange Pages og de har mange likes og de bliver holdt styr på af mange <em>Community Managers</em>.</p>
<p><em>Community Manager</em> er et job, man kan få som ung voksen, der består af at fortælle knapt så unge voksne, at de skal opføre sig ordentligt i offentligheden.</p>
<hr>
<p>Og så var der den unge svenske kvinde, som stod for <a href="https://www.facebook.com/fragadoktorn/?hc_ref=SEARCH&amp;fref=nf" class="external-link">Fråga Doktorns Facebook Page</a>.</p>
<p>Fråga Doktorn er et slags svensk Lægens Bord. Flere surströmningulykker og elgangreb. Ellers det samme.</p>
<p>Fråga Doktorn har i dette øjeblik 21.785 fans. Community Manageren (som jeg aldrig fik fat i hvad hed, så lad os kalde hende Astrid Lindgren) stod for siden, og havde hele 20% af sin arbejdstid dedikeret til det. Hun klarede det ved at samle arbejdet i bunker, svarede hun, da nogen spurgte, så hun havde også tips til storbrug, men det der skilte hende ud, var i virkeligheden, at hun som den eneste lagde vægt på, at bruge Social Media som … <em>Social</em> Media.</p>
<p>Måske på grund af programmets emne (sygdom? Ej, gamle mennesker) og dets målgruppe (syge? Ej, gamle mennesker) var deltagelsen på siden for det meste kommentarer fra rigtige mennesker, der delte rigtige historier. Folk postede kommentarer om deres bekendte, der fejlede ting, programmerne nævnte. Andre skrev trøstende og støttende ord til dem, der var syge. God stemning midt i elendigheden.</p>
<p>Man kan fristes til at tro, at det kommer helt automatisk med emnet. Men jeg tror, det er Astrid Lindgrens fortjeneste.</p>
<p>Da nogen i salen spurgte hende, hvilken form for <em>engagement</em> hun foretrak – et <em>like</em> eller en <em>comment</em> eller et <em>share</em> – var det nærmest som om, hun ikke forstod spørgsmålet. <em>“Det afhænger af så meget”</em>. Men et share er jo <em>mest værd</em>, var der en anden, der sagde. Det havde Astrid ikke rigtig nogen holdning til.</p>
<p>Da jeg roste hende og spurgte, om hun troede programmets og sidens beskedne størrelse, var det, der tillod den gode stemning, havde hun intet svar, og spurgte mest bare udi salen, om andre mon havde nogen holdning til det.</p>
<p>Hun var i det hele taget meget beskeden. På den der <em>pakker-sig-helt-ind-i-sig-selv</em>-måde.</p>
<p>I virkeligheden havde emnet nok intet med stemningen at gøre – og alt med hendes håndtering at gøre. Hun talte med dem, der bidrog på siden. Hun sørgede for at underbygge stemningen af, at her var det sikkert at dele sin historie og sine kvaler. Hun tog sig tid til at tage de besøgende seriøst.</p>
<p>Hun havde endda en holdning til, at det var det gule emoji-hjerte, de brugte, for det var <em>det glade hjerte</em> og det røde var alt, alt for <em>voldsomt</em>.</p>
<p>❤️? Slap af, ro på.
💛! Meget bedre.</p>
<hr>
<figure><img src="https://s3.brnbw.com/1024px-Helsinki_July_2013-27a-TC1VYWZxPF.jpg" alt="Helsinkis kirkers svar på et rødt emoji-hjerte: Voldsom!"></figure>
<p>Der er ingen der siger, at bare fordi man er en virksomhed eller et brand eller <a href="https://www.facebook.com/pages/Ducks/110502202311170" class="external-link">konceptet ænder</a>, at man ikke kan have en holdning til, hvordan ens Facebook page fungerer. Som min gode ven, den kloge <a href="https://twitter.com/rankenberg" title="@rankenberg" class="external-link">Susanna Rankenberg</a> siger, så er Social Media dårligst, når det bliver brugt som et marketingværktøj. Og bedst når det bliver brugt til at bygge et community. Skabe samtale. Dialog. Venskaber for livet. Ægte kærlighed.</p>
<p>Okay, det blev vist min fortolkning af hendes ord. Lidt for ❤️</p>
<hr>
<p>I sidste uge bad jeg jer om at svare med én emoji. Nogen gjorde det – her er resultaterne:</p>
<table>
<thead>
<tr>
<th style="text-align:center">👔</th>
<th style="text-align:center">👏</th>
<th style="text-align:center">🐼</th>
<th style="text-align:center">💯</th>
<th style="text-align:center">👌</th>
<th style="text-align:center">📳</th>
<th style="text-align:center">🦄</th>
<th style="text-align:center">😏</th>
<th style="text-align:center">👍</th>
<th style="text-align:center">🤘</th>
<th style="text-align:center">🤔</th>
<th style="text-align:center">❤️</th>
<th style="text-align:center">👊</th>
<th style="text-align:center">🙃</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align:center">2</td>
<td style="text-align:center">2</td>
<td style="text-align:center">1</td>
<td style="text-align:center">1</td>
<td style="text-align:center">1</td>
<td style="text-align:center">1</td>
<td style="text-align:center">1</td>
<td style="text-align:center">1</td>
<td style="text-align:center">1</td>
<td style="text-align:center">1</td>
<td style="text-align:center">1</td>
<td style="text-align:center">1</td>
<td style="text-align:center">1</td>
<td style="text-align:center">1</td>
</tr>
</tbody>
</table>
<p>… Så det lærte vi jo ikke meget af. Andet end at der findes mange måder at sige “Helt fint” på med emojis. Og ingen af jer har modtaget memoet om, at det gule hjerte, er det passende hjerte. Psykopater.</p>
<p>Denne uges feedback-eksperiment:</p>
<h3 id="marker-en-passage-i-teksten%2C-du-godt-kan-lide-(eller-ikke-kan)-og-svar-p%C3%A5-denne-mail-med-den." tabindex="-1">Marker en passage i teksten, du godt kan lide (eller ikke kan) og svar på denne mail med den.</h3>
<p>Lidt ligesom Mediums markeringskommentarting.<br>
Igen, forklaring er tilladt men ikke påkrævet.</p>
<p>🖥 Mikkel</p>
<img src="https://s3.brnbw.com/COMPUTERS-512.jpg" alt="COMPUTERS" width={256} />
]]></description>
            <link>https://mikkelmalmberg.com/issues/6</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/6</guid>
            <pubDate>Thu, 01 Dec 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Iværksætter]]></title>
            <description><![CDATA[<h5 id="%235-%E2%80%93-2016-11-25-%E2%80%93-%E2%80%9Civ%C3%A6rks%C3%A6tter%E2%80%9D" tabindex="-1">#5 – 2016-11-25 – “Iværksætter”</h5>
<p>Jeg så <a href="https://www.dr.dk/tv/se/meyer-dok/-/meyers-madeventyr-pa-manhattan" class="external-link">DR2s dokumentar</a> om Claus Meyers <a href="http://www.nytimes.com/2016/06/29/dining/great-northern-food-hall-grand-central.html?_r=0" class="external-link">projekt på Manhattan</a> efter opfordring fra <a href="https://twitter.com/tveskov/status/800813876145221637" class="external-link">@tveskov</a>. Den var pragtfuld. Vi følger Claus Meyer mens han forbereder åbningen af en restaurant og en food hall midt i Grand Central Station i New York. Hele familien inklusiv tre døtre er flyttet til en (enorm) lejlighed i Manhattan, og hele byen er sat på den anden ende. Nok ikke i virkeligheden, men man får indtrykket. Claus går fra helt begejstret til helt udkørt og tilbage igen – og <em>selvfølgelig</em> bliver lortet udskudt flere gange.</p>
<figure><img src="https://s3.brnbw.com/2016-11-25-10_35_50-6CGHgqPE3Q.gif" alt="Meyermobilen"></figure>
<p>Claus er i sandhed en <em>iværksætter</em>. Et ord hvis betydning er udvisket totalt, nu hvor enhver med udvidet selvangivelse får trykt visitkort, hvorpå der står IVÆRKSÆTTER, deres navn og resten er deres CV (tomt.)</p>
<p>Der bliver uddannet en milliard Engelsk/International Business/Marketing-kandidater på CBS hvert år, som allesammen bare lige skal have fundet en “teknisk co-founder”, så er de klar til deres <a href="https://ourincrediblejourney.tumblr.com" class="external-link">incredible journey</a>. Startups!</p>
<hr>
<p>I komikerbranchen er det ofte en debat blandt det nyligst tilkomne, hvornår man egentlig med rette kan kalde sig <em>komiker</em>. Det viser sig: Dem der er hurtigst til at få trykt visitkortene, er sjældent dem, der er sjovest.</p>
<p>I den anden lejr er dem, der når at leve af det i nogle år og stadigvæk ikke helt vil tilkende sig titlen. Martin Høgsted fx fortæller i <a href="http://flyverpod.dk/?podcast=martin-hogsted-pik-og-patter-komik-er-ogsa-samfundsrelevant" class="external-link">Pelles podcast Flyverskjul</a>, at han stadig ikke helt kalder sig selv det. Martin har vundet DM i Stand-up for 8 år siden og har levet af det lige siden.</p>
<p>Forestil dig at sidde til middagsselskab og skulle fortælle, at du har levet af at være sjov i 8 år, men ikke rigtig lige ved, hvad du er.</p>
<figure><img src="https://s3.brnbw.com/dZZ83-w0IEAG492y.gif" alt="Jeg vidste, den gif ville komme mig til gode en dag"></figure>
<p>Svaret må, som så ofte, findes et sted i midten. Det kan være rigtig afklarende både for en selv og ikke mindst ens uforstående familie (“hvad skal der dog ikke blive af dig!”), når man når til et punkt, hvor det føles rigtigt at kalde sig komiker, så også at gøre det.</p>
<p>Det er på måde en socialt beskyttet titel: Endnu værre er det at sidde til middagsselskab og kalde sig selv komiker, hvis man ikke også kan leve op til det.</p>
<hr>
<p>Når man ser unge <em>iværksættere</em> i TV Avisen, er det stort set altid en stolt, ung mand, der helt begejstret fortæller, at det går så <em>godt</em>, at han har sovet under skrivebordet i et par uger – er det ikke bare fedt!</p>
<p>En sand rejse. Dårlige sengeforhold. Drømmen lever.</p>
<p>Man kan nemt høre det i <a href="http://mortenresen.dk/podcast" class="external-link">Morten Resens podcast</a>, hvori han dypper tæerne dybere og dybere i startup-verdenen. Den der nysgerrighed efter, hvad det mon er, der foregår i den der startup-verden. Hvor helt almindelige, hvide mænd ændrer verden og bliver millionærer imens.</p>
<p>Startups er det nye punk, står der i en overskrift til <a href="http://magasinet.f5.dk/startupmiljoeet-er-det-nye-punk/" class="external-link">en artikel</a>. Det var sådan set det, der er skyld i, at du nu skal høre på mig fylde glasset halvt med lunken pis. Man kan ikke blive overrasket over, at folk, der kun bruger deres computer til Facebook og <a href="http://eb.dk" class="external-link">eb.dk</a>, kan tro, det er magisk, hvad startups kan med deres.</p>
<p>Tænk sig, at jeg føler det nødvendigt at nævne, at selvom dit arbejde involverer <em>en app</em>, så er det altså stadigvæk bare et arbejde. Det er ikke så mærkeligt, at din chef som har startet virksomheden ikke går op i meget andet. Men hverken du eller hun behøver blive overrasket, når du går hjem kl. 16 for, ikke mindst, at sove i en almindelig seng.</p>
<p>Det er fedt med ung virksomhedskultur, entreprenante unge mennesker og iværksættere. Der ér nogle af dem, som ændrer verden og bliver millionærer. Men husk på, at det bare er et arbejde og ikke en identitet. Der er ingen magi. Ro på, CBS.</p>
<p>Startup-kulturen må gerne lære lidt af stand-up og vente lidt med alle visitkortene. Måske er det dem, der holder ud længst uden at sove under et skrivebord, som holder bedst i længden. <strong>Startups er fandme ikke punk</strong>. Startups er bare virksomheder med dårligere sengeforhold.</p>
<hr>
<p>Det blev vist lidt bittert i den her uge. Her er en reparationskat:</p>
<figure><img src="https://s3.brnbw.com/cat-hugging-teddy-bear-2Xi9SoXuwm.gif" alt="Det går nok"></figure>
<p>Jeg bliver altid glad for respons (du kan bare svare på denne mail!), men jeg forstår også godt, hvis det virker lidt omstændigt. Jeg har et par ideer til, hvordan jeg kan inkorporere feedback på i COMPUTERS. Jeg tænker, vi kan prøve et par koncepter af de næste par gange. I denne uge:</p>
<h4 id="svar-p%C3%A5-denne-mail-med-den-ene-emoji%2C-der-bedst-passer-p%C3%A5-dine-tanker-om-indholdet." tabindex="-1">Svar på denne mail med den ene emoji, der bedst passer på dine tanker om indholdet.</h4>
<p>Forklaring ikke påkrævet men selvfølgelig tilladt.</p>
<p>🖥 Mikkel</p>
<img src="https://s3.brnbw.com/COMPUTERS-512.jpg" alt="COMPUTERS" width={256} />
]]></description>
            <link>https://mikkelmalmberg.com/issues/5</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/5</guid>
            <pubDate>Fri, 25 Nov 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Licens er noget vi giver til Netflix]]></title>
            <description><![CDATA[<h5 id="%234-%E2%80%93-2016-11-18-%E2%80%93-licens-er-noget-vi-giver-til-netflix" tabindex="-1">#4 – 2016-11-18 – Licens er noget vi giver til Netflix</h5>
<p>Jeg arbejder i øjeblikket i DR Nyheder. Ikke at det har noget med min holdning at gøre, men det er nok godt nok at få med.</p>
<hr>
<p>Min søn, lidt over 2 år gammel, har lært selv at betjene Netflix på den ældgamle iPad Mini, vi har. Han ved endda, at det hedder Netflix.</p>
<p>Hvad skal der dog ikke blive af os.</p>
<p>Han ved, at hans profil er den med fuglen. <em>Bertil er fuglen</em>, som han siger. Som regel vælger han én af de ting, han er igang med. Som regel er det Rasmus Klump. Eller Mascha og Bjørnen. Sommetider går han på opdagelse og finder et eller andet med eksplosioner eller overdubbede amerikanske teenagere. Engang gik han i gang med sæson 3 af Black Mirror. De par minutter, han nåede at se, var gode, syntes han.</p>
<p>Jeg, den ansvarlige forælder, gad godt, han så flere af DRs programmer i stedet. Han har set rigtig meget <a href="https://www.dr.dk/tv/se/boern/ramasjang/kalles-danmarks-tour/-/kalles-danmarks-tour-faborg" class="external-link">Kalles Danmarks Tour</a>. Så meget at jeg har hentet alle afsnittene ned<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> og lagt dem ind i VLC.app, så de kunne komme med på en flyvetur uden Wifi. Nu ved han, at han kan gå ind i trafikkeglen og finde Kalle.</p>
<p>Han kan ikke betjene DRs egen player-app. Den er ikke responsiv nok til hans små, ivrige fingre, som tapper 1.000 gange, indtil de får utvetydig respons. Desuden er den fuld af DRs andre programmer. Hvadend de har af Børnelås, så starter den altid op, langsomt, ude på oversigten. Og man kan ikke tilføje en fuglekonto, han kan vælge.</p>
<p>Løsningen er selvfølgelig, at DR udvikler den bedste app. En app der kan konkurrere på verdensplan mod Netflix og HBO og hvad ellers alle taberne hedder. En app, der er grundigt testet på nysgerrige 2-årige Klump-fans såvel som ældgamle, helt rynkede, smøggule fingre. En app, der er bedst til ALLE. Unge og gamle. Den bedste app, med det bedste indhold, med de bedste 2-årige testere, med de bedste mellemledere – DEN BEDSTE APP FAT DET.</p>
<hr>
<p>Public Service er vigtigt, og det lyder ikke som om, der er mange, der mener det modsatte. Hvis der fortsat skal produceres indhold på dansk, er vi nok nødt til at gå sammen om at finansiere det.</p>
<p>Vi betaler allesammen penge forud, og så laver DR noget indhold. Også <a href="https://tv2.dk" class="external-link">nogen</a> <a href="https://radio24syv.dk" class="external-link">andre</a> men mest DR. Indholdet er altså betalt. Hvis vi er utilfredse med de programmer, der blev lavet, så kan vi diskutere, hvad vi skal lave fremover. Men de programmer, vi har købt, har vi købt og lavet, og de findes nu.</p>
<p>Hvorfor er de programmer ikke tilgængelige for os allesammen? Nu findes de jo. Ligger som filer <em>et eller andet sted</em>.</p>
<p>Jeg er ikke overbevist om, hvorfor de ikke lige så godt kunne ligge på min harddisk, hos Netflix, på Pirate Bay og <a href="http://dr.dk" class="external-link">dr.dk</a>. Jeg kan sagtens forestille mig nogle grunde til, de ikke gør lige nu – men ikke hvorfor, de ikke kunne.</p>
<p>Rigtig mange programmer, som vises på DR, er ikke udviklet af DR. De er udviklet af producentfirmaer (Metronome, blu, Pineapple, den slags), og mange af dem er udenlandske koncepter, DR har købt rettighederne til at vise X gange på TV og X måneder på nettet. DR køber ikke programmerne, men rettighederne til at sende dem. Den største (eneste) grund til, Netflix’ indhold varierer verden rundt er rettigheder. Grunden til at Bagedysten udløber på <a href="http://dr.dk" class="external-link">dr.dk</a> er rettigheder.</p>
<p>Fucking rettigheder.</p>
<p>Og hvis jeg bare kan hente DRs programmer ned i min trafikkegle, kan de jo ikke lade dem udløbe, når rettighederne gør. Så er vi nødt til at fjerne dem igen. Kunne vi købe rettighederne til at vise dem for evigt? Ja, men politikerne er blevet enige om, at dr.dks rolle ikke er et arkiv, så det gør vi ikke.</p>
<hr>
<p>Lad os bare antage, at vi ikke behøver bekymre os om rettigheder, fordi vi har købt dem eller har lavet programmerne selv. Og med vi, mener jeg DR på vegne af os allesammen.</p>
<p>Jeg synes, DR skal have en <em>Platform</em>, vi allesammen kan tilgå, hvor deres <em>indhold</em> kan opleves. Men jeg synes ikke nødvendigvis, <em>platformen</em> skal have monopol på <em>indholdet</em>.</p>
<p>Hvis vi adskiller de to, behøver indholdet heller ikke lide under en haltende platform. Jeg er vild med Jonatan Spangs serie <em>Lillemand</em>, men TV 2’s Play er forfærdelig. Som det er lige nu, inde i mit hovede, så vil jeg gerne se Lillemand. Jeg vil gerne betale for det, men jeg orker næsten ikke, at det skal ske gennem Play. Jeg udskyder <em>Indholdet</em>, fordi jeg ikke kan overskue at skulle betjene <em>Platformen</em>. Det er synd for Jonatan. Og mig.</p>
<p>TV 2 kunne sælge deres indhold til Netflix. Det er muligt, det tager livet af Play. Men det tager ikke livet af TV 2. Lige nu er indholdet kun på Play, fordi hvorfor skulle folk ellers komme og bruge vores rædderlige service?</p>
<p>Hvorfor, hvis vi (igen, DR) nu har købt og betalt for Bagedysten, skal den tages som gidsel på DRs platforme?</p>
<hr>
<p>Hvad nu hvis det her ikke behøvede at være virkeligheden:</p>
<p><a href='https://twitter.com/akappel/status/647665945985593344'><img src='https://s3.brnbw.com/Screen-Shot-2016-11-17-09-56-50-JU57jq6Nnr.png' alt='@akappel' width='500' /></a></p>
<p>Public Services rolle er at lave noget dansk, bredt perspektiveret, repræsentativt indhold af og for danskere. Både det indhold vi allesammen gerne vil have, og det indhold som kun nogle få af os <strong>virkelig</strong> gerne vil have. Det ér X Factor. Og det ér Antikjægerne.</p>
<p>Den næste der bliver fornærmet over, at <em>min licens skal betale DET her</em>, kan få lov til at lave et program, hvis eksistens ingen ville synes overflødig. Store idiot.</p>
<p>Jeg ville ønske, at vi var mere åbne og omfavnende af det magiske i, at <em>Licens er noget vi giver til hinanden™</em>. I stedet for at give det til hinanden, og derefter spære det inde og lade det udløbe om 30 dage, kunne vi fejre, at vi nu allesammen ejer yderligere 24 afsnit Antikjægerne, som vi frit kunne se, hente, remixe[^creative commons] som gif’er, uden at skulle bekymre os om Fucking Rettigheder.</p>
<p>Netflix kunne købe rettighederne til at videresælge dem. Og TV2 Play kunne også, for den sags skyld. Vi kunne bare smide det på YouTube for min skyld. Jeg er så ligeglad. Nu ER de jo købt og betalt af os allesammen.</p>
<p>Fucking rettigheder, mand.</p>
<hr>
<p>Hvis du kan lide det du læser, så del det med en ven!</p>
<p>🖥 Mikkel</p>
<img src="https://s3.brnbw.com/COMPUTERS-512.jpg" alt="COMPUTERS" width={256} />
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Det er bare et eksempel på noget, du <a href="https://dldr.brnbw.com" class="external-link">kan</a>, men nok ikke skal gøre.
[^creative commons]: Creative Commons Share Alike? <a href="https://creativecommons.org" class="external-link">https://creativecommons.org</a> <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/4</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/4</guid>
            <pubDate>Fri, 18 Nov 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Filterbobbelkongen Bobbel]]></title>
            <description><![CDATA[<h5 id="%233-%E2%80%93-2016-11-11-%E2%80%93-filterbobbelkongen-bobbel" tabindex="-1">#3 – 2016-11-11 – Filterbobbelkongen Bobbel</h5>
<p>Jeg ved ikke med dig, men jeg var 100% overbevist om, at Trump ikke ville vinde. Måske fordi folk med forstand på den slags (skulle man tro), havde fortalt mig igen og igen, at det var så usandsynligt – nærmest latterligt.</p>
<p>Jeg fik også at vide, at der var masser af steder på Facebook, hvor folk var helt overbeviste om, at han ville vinde. Ekkokamre, sagde de, hvor uoplyste racister råbte af omverdenen og tog forskud på deres sejr over <em>de etablerede</em> og <em>eliten</em>.</p>
<p><em>Filterboblen</em> gjorde, at de kunne blive så overbeviste. Fordi Facebook kun viser dem deres venners holdninger, ser de kun pro-Trump-nyheder, og overbeviser derfor sig selv om, at det går perfekt. Ha ha, hvor er de dumme, at de ikke kan se ud af deres skøre boble og kigge i aviserne. Alle os, der læser aviser ved, at Trump ikke har en jordisk chance for at vinde. Vi ved det! Vi er oplyste!</p>
<p><a href="http://fivethirtyeight.com" class="external-link">FiveThirtyEight</a> sendte meningsmålinger ud med Hillary på 80%. Det er så sikker, som man kan være, uden at satse hele biksen – ligesom de gjorde det på The Guardian med <a href="http://www.huffingtonpost.com/entry/polls-hillary-clinton-win_us_5821074ce4b0e80b02cc2a94" class="external-link">99%</a>. Selv Hillary var så godt som sikker:</p>
<p><a href='https://twitter.com/SabrinaSiddiqui/status/796445011218939904'><img src='https://s3.brnbw.com/Screen-Shot-2016-11-10-09-26-23-am4kw5iwpv.png' alt='@SabrinaSiddiqui' width={500} /></a></p>
<p>Jeg har trofast lyttet til <a href="http://www.slate.com/articles/podcasts/trumpcast.html" class="external-link">Trumpcast</a> det sidste halve års tid. I en blanding af, at være totalt fyldt op af valgkamp og stadigvæk føle mig forpligtet til at følge med, var Trumpcast mit ene tilvalg, så jeg kunne retfærdiggøre at fravælge de fleste andre artikler. Det har flydt med indhold, om hvor klam Trump er, og hvor latterligt det ville være, hvis man overhovedet kunne forestille sig han vandt.</p>
<p>Da jeg tændte for DR2 onsdag morgen, var min første følelse: “Det er løgn?!”. Og den næste var følelsen af, at min egen klamme filterbobbel punkterede og kollapsede omkring mig, som et klamt, koldt, halvvådt tæppe. Hold da kæft, så var det krafteddeme MIG, der ikke kunne se virkeligheden.</p>
<p>Jeg, aviserne, mit Twitterfeed, hele min omgangskreds, de danske medier, de udenlandske medier.</p>
<p><a href='https://twitter.com/angeist/status/796443929789005824'><img src='https://s3.brnbw.com/Screen-Shot-2016-11-10-09-44-16-cNdyaoCNNi.png' alt='@angeist' width={500} /></a></p>
<p>Så hvad gør jeg? Jeg har ikke lyst til at være i en bobbel? Jeg har bestemt heller ikke lyst til at skulle holde øje med 4chan eller <a href="https://en.wikipedia.org/wiki/Gab_(social_network)" class="external-link">Gab.ai</a> for at kunne føle mig oplyst.</p>
<hr>
<p>Det føles vildt mærkeligt at se andres Facebook-feed. Eller Twitter-feed for den sags skyld. Man danner sig en forståelse af sit feed, for man kigger på det hundredevis af gange i løbet af ugerne, og hver eneste stemme har man selv inviteret indenfor.</p>
<p>Twitter <em>er</em> mit Twitterfeed. Jeg kalder det Twitter, og du kalder det Twitter, men i virkeligheden er det to forskellige ting. Så når jeg ser andres Twitterfeeds, så føles det næsten som en parallelverden. Som om tjenesten er mig utro. Som i <a href="http://www.imdb.com/title/tt1798709/?ref_=fn_al_tt_1" class="external-link">Her</a>, da han finder ud af, alle har en affære med Scarlett Johansson. (📯 SPOILER ALertnej, nu er det vist for sent.)</p>
<p>Filterboblen er tydelig, når man er indeni andres. Selv dem jeg er allernærmest både netværks- og meningsmæssigt. Deres bobbel er en anden. Og dermed deres virkelighed. Men er det virkeligheden?</p>
<hr>
<p>Det er mærkeligt at lytte til podcasts udgivet før tirsdag nat, så selvom jeg (altid) er bagud i min podcastkø, er jeg hoppet frem i et par, for at høre reaktioner. Her er et par interessante:</p>
<ul>
<li><a href="https://overcast.fm/+GPM8ydYtM" class="external-link">Slate’s Trumpcast: The Morning After</a> – Sårene bliver slikket. 1) Han vandt og 2) Nu skal vi køre i 4 år mere.</li>
<li><a href="https://overcast.fm/+FpphUw8" class="external-link">On The Media: Now What?</a> – On The Media var heller ikke fans. Hvad gør medierne nu efter at have taget så meget fejl?</li>
<li><a href="https://overcast.fm/+BP58jq2M4" class="external-link">Planet Money: The Trump Indicators</a> – Hvad skete der med det amerikanske marked, da det gik op for alle, at Trump ville vinde?</li>
</ul>
<hr>
<img src='https://s3.brnbw.com/kermit-on-a-keyboard-As9RWop85n.gif' alt='Kermit on a keyboard' width={350} />
<p>Jeg overvejer at tilføje en slags <em>comments section</em> til COMPUTERS, så hvis du har kommentarer, kan du bare svare her. Så vil jeg eventuelt inkludere dem i næste udgave. Læserbreve, hva? Nu har jeg aldrig.</p>
<p>🖥 Mikkel</p>
<img src="https://s3.brnbw.com/COMPUTERS-512.jpg" alt="COMPUTERS" width={256} />
]]></description>
            <link>https://mikkelmalmberg.com/issues/3</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/3</guid>
            <pubDate>Fri, 11 Nov 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Jeg er indehaver af en udsøgt kollektion]]></title>
            <description><![CDATA[<h5 id="%232-%E2%80%93-2016-11-04-%E2%80%93-jeg-er-indehaver-af-en-uds%C3%B8gt-kollektion" tabindex="-1">#2 – 2016-11-04 – Jeg er indehaver af en udsøgt kollektion</h5>
<p>Jeg skriver det her med Chance The Rapper<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> i ørerne, afspillet med Voltra<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>. Voltra er en ny musikafspiller, som med vilje ikke er nogen streamingtjeneste.</p>
<p>Min musiksamling bestod engang af mange gigabyte mp3-filer. Det første jeg gjorde, når jeg kom hjem med en nyindkøbt CD, var at putte den i mit cd-drev for at rippe den. Jeg sørgede for, at den fik det rigtige metadata med sig. Cover, titler, den slags. Jeg havde stort set ingen alenestående numre i min samling. Kun albums. For det var albums, jeg lyttede til. Som regel fra ende til anden, én ad gangen.</p>
<p>Min ven Mads købte cd’er for at have cd’er. Han havde, hvad der syntes som millioner af plastikbeholdere, som han slæbte med, når vi DJ’ede på 1000fryd. Cd’en var for mig mere en form for transportbeholder mellem butikken og min harddisk.</p>
<p>Havde jeg ikke mulighed for, eller råd til, at købe en cd, fandt jeg den som torrent, og hentede den ulovligt. Som sådan var der ikke noget, andet end dårlig samvittighed over ikke at betale, der holdt mig tilbage fra at skabe min egen lokale Spotify med størstedelen af al udgivet musik. Men sådan var min samling ikke.</p>
<p>Ingen plade blev i samlingen, hvis jeg ikke sommetider fandt den frem og lyttede til den. Plader røg ikke bare derind for at blive glemt. Det var meningen, at jeg skulle have et forhold til hver enkelt.</p>
<p>Prøv lige at høre mig, kalde et bundt data for “plader”.</p>
<figure><img src="https://s3.brnbw.com/whatever-2-SbbhKU5U0Z.gif" alt="Eyes be rolling"></figure>
<p>Samtidig var der et narturligt loft ved enden af min harddiskplads. Før Netflix og iCloud Photos. Før fiberforbindelser og Dropbox. Dengang alt lå på din egen harddisk eller fastfrosset i tid på en udbrændt (ja) cd i en skuffe.</p>
<p>Jeg elskede Rdio<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>, for det lugtede lidt af det samme. Fokus på samling og albums. Hvor Spotify fokuserer på hits, singles, blandede playlister, millenials, Major Lazer, kattepis, “Sommerhits”-- handlede Rdio om albums. Rdio overtalte mig til at give slip på mine mp3-filer. Først røg de på en ekstern harddisk og næst, i et uopmærksomt øjeblik, blev de slettet under en backupaktion.</p>
<p>Så døde Rdio. Og Apple Music er (stadig) lort. Så min samling er nu endt, til låns, hos Spotify. Hvor meget jeg end stadig gør en dyd ud af kun at tilføje albums - og ikke for mange af dem - så føles det ikke som en samling. Udfordringen af begrænsningerne er væk. Det føles mere som en form for add and forget bogmærkeservice.</p>
<p>Når jeg åbner Voltra og ser, at der kun er en 3-4 albums tilbage bliver jeg næsten flov. Det provokerer nostalgien frem i mig, og jeg begynder at ønske mig tilbage til de dage, hvor jeg blev tvunget til at barbere samlingen, hver gang jeg skulle opdatere OS X, og min harddisk næsten flød over.</p>
<figure><img src="https://s3.brnbw.com/wait-what-chinese-4REChLYrVa.gif" alt="wait"></figure>
<p>Burde programmer have flere begrænsninger? Hvad er meningen med at have en samling på Spotify? Hvad er meningen med at have en My List på Netflix, hvis du bare tilføjer alt, du nogensinde kunne forestille dig at se til den.</p>
<p>Hvad hvis jeg højst kunne tilføje ét album til min Spotifysamling om dagen? Ét om ugen? Måneden? Ville jeg ende op med en samling, jeg syntes bedre om?</p>
<img src="https://s3.brnbw.com/Screen-Shot-2016-10-25-at-23.03.41.png" alt="Verdens oftest tweetede joke" width={320} />
<p>Hvad hvis Apple Photos slettede alle mine fotos efter et par måneder, med mindre jeg markerede dem som favoritter. Det føles farligt. Som far til en to-årig, der allerede sidder pænt stille og smiler artigt, når far eller mor peger en telefon mod ham, suger det næsten i maven på mig, når bare jeg tænker på, at mine tusindvis af billeder skulle blive slettet automatisk.</p>
<p>På den anden side har jeg ikke meget overblik over billederne. Jeg gør dog en dyd ud af at markere de bedste af dem som favoritter.</p>
<hr>
<p>Som altid: Kommentarer, ris og ros modtages gerne! Bare svar på denne mail. 👍🏼</p>
<p>Mikkel</p>
<img src="https://s3.brnbw.com/COMPUTERS-512.jpg" alt="COMPUTERS" width={256} />
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Chance The Rapper’s Coloring Book (REMASTERED) – <a href="https://www.reddit.com/r/ChanceTheRapper/comments/4jfvnj/coloring_book_mastered_zip_inside/" class="external-link">https://www.reddit.com/r/ChanceTheRapper/comments/4jfvnj/coloring_book_mastered_zip_inside/</a> <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p><a href="https://voltra.co" class="external-link">https://voltra.co</a> <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p><a href="https://en.wikipedia.org/wiki/Rdio" class="external-link">https://en.wikipedia.org/wiki/Rdio</a> <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/2</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/2</guid>
            <pubDate>Fri, 04 Nov 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Mit nyhedsbrev handler mest om ugler]]></title>
            <description><![CDATA[<h5 id="%231-%E2%80%93-2016-10-28-%E2%80%93-mit-nyhedsbrev-handler-mest-om-ugler" tabindex="-1">#1 – 2016-10-28 – Mit nyhedsbrev handler mest om ugler</h5>
<p>Jeg havde egentlig bare skrevet et blogindlæg i tirsdags. Jeg kunne bare have postet det til Medium. I stedet lod jeg det være anledning til at følge op på en nysgerrighed, jeg har haft det sidste års tid eller to. Det nye, gamle: <em>Nyhedsbreve</em>.</p>
<p>Der er så udmattende mange ølkasser, man kan stille sig op på i dag. De fleste af dem har endda et praktisk lille hjerteikon nedenunder, som folk kan klikke på, hvis de føler sig den mindste smule underholdt. Hvis du er heldig, når en eller andens moster at kommentere “Godt brølt” nedenunder, inden hun, som alle andre, har glemt alt om det, du var så oprevet over.</p>
<p>Hver gang jeg har skrevet et tweet, kigger jeg konstant på Tweetbots<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> activity-page for at følge med i reaktionerne. Hver gang jeg ikke får nogle likes (<em>faves, harjegret?</em>) er det som om, jeg har gjort noget forkert. Hvorfor er der ingen, der kan lide de 82 tegn, jeg lige smed oveni bunken af millioner andre strøtanker?</p>
<p>Facebooks reklameinterface ligner efterhånden cockpittet i et rutefly. Der er så mange grafer, der kan vise dig, hvilket segment du skyder forbi. Men ligesom når du laver din karakter i et rollespil kan du ikke skrue på den ene parameter uden at slække på den anden. Du kan ikke få BÅDE magi og råstyrke.</p>
<p>Det er de grafer, vi ender med at fokusere på. Det er <em>engagement</em> lige så snart, folk klikker på din artikel og lander i din, eller endnu værre: en andens, sump af bannerreklamer.</p>
<p>Alle blogs’ og onlineavisers overskrifter er provokerende tillokkende i deres click-baitet-hed. Selvom jeg for det meste kan undgå det, så er det ikke altid nemt at sige nej til dem. Og jeg føler mig så uendeligt dum, når jeg i mere end et par sekunder overvejer at klikke på “17 Adorable Products You Need If You Love Owls”. 17 produkter! Der er selvfølgelig mange flere, men det er <em>kun</em> de her 17, som du BEHØVER i dit syge, ugleelskende liv.</p>
<img src="https://s3.brnbw.com/owl.gif" alt="Ugle" />
<p>Et nyhedsbrev er velsignet i dets dumhed. Det verdens tusinder af mailklienter har til fælles, er intet. De er allesammen mærkelige på hver deres egen måde. Min strategi for emailindhold har længe været, at jo mere simpelt det er, jo mere kan du være sikker på, det ikke ligner lort hos modtageren. Det er fantastisk.</p>
<p>Det er måske dette naive kaos, der har tilladt mails at være forholdsvis uden tracking og reklamer. Selvom indholdet kan være multimedielt med HTML (både tekst OG billeder), er der ingen Javascript til at lave ballade. Det er kun de simpleste metoder, der virker. Man kan tjekke, hvem der åbner mailen<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup> og hvad de klikker på<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>. Man kan se, når de unsubscriber. Man kan ikke meget mere end det.</p>
<p>Du kan <em>ikke</em> se, hvilke andre nyhedsbreve modtageren er tilmeldt, eller hvilke websites, hun er logget ind på<sup class="footnote-ref"><a href="#fn4" id="fnref4">[4]</a></sup>. Du kan ikke tilføje heat maps eller bugner af JavaScript-kode, der kun har til formål at finde lige præcis dén reklame, der kan overtale en fuldstændig reklamremættet internetforbruger.</p>
<p>Den vigtigste <em>engagement</em> der er at finde i et nyhedsbrev, er om folk taler til dig eller andre om dit nyhedsbrev. Og så selvfølgelig om de forbliver <em>subscribed</em>.</p>
<p>Det er to helt forskellige tal, Likes og Subscribers.</p>
<p>Det første lader de enkelte artikler være hver deres fluelampe, der med løftet om at svare på et banalt, men lokkende spørgsmål, forsøger at lokke fluer til at komme og kigge på deres reklamer. Og deres indhold, bevares, men mest deres reklamer. Fokus er på at tiltrække. Og når du har fået dit click, kan du for så vidt være fuldstændig ligeglad med oplevelsen. Det kan vise sig at være 17 rædderlige ugleprodukter, og at du er gået i en fælde, dumrian.</p>
<p><a href="http://da-bu-di-bu-da.deviantart.com/art/ugly-owl-490758726" title="So ugly it's cute"><img src="https://s3.brnbw.com/ugly_owl_by_da_bu_di_bu_da-d846nuu.jpg" alt="Ugle" width={300} /></a></p>
<p>Med et nyhedsbrev har folk allerede tilmeldt sig. Fokus er i stedet på at fastholde. På at lade det være opmærksomheden værd. Fra du åbner denne mail til du når enden (eller stopper inden? Er der nogen?) er det simpleste mål, at du ikke trykker afmeld. Og det eneste jeg kan stille op indtil da, er at bringe noget indhold, der var de 2 minutter værd. Det er hårde kår, man lad os ikke glemme at jeg er oppe imod 17 FULDSTÆNDIGT UUNDVÆRLIGE ugleprodukter.</p>
<p>Nyhedsbreve er et fokus på kvalitet fremfor kvantitet.</p>
<p>Dét er helt klart mig, der presser mit argument til det yderste. Men lad os da bare være store i slaget fra starten af. Og om ikke andet er det da et godt udgangspunkt, at jeg skulle tage at gøre mig umage.</p>
<hr>
<p>Okay, men det her var slet ikke, det blogindlæg jeg havde skrevet. Efter så mange (wow!) tilmeldte sig, følte jeg, det kunne være en naturlig start at tale lidt om formatet og hvorfor.</p>
<p>Hver eneste gang jeg har haft en blog (I’ve lost count), har folk jeg ikke kendte, fortalt mig, at jeg skulle blive ved. Og alligevel flader indlægsfrekvensen ud hver eneste gang. Det har ærgret mig i mange år, at jeg har skrevet så lidt, selvom jeg har tænkt så meget. (Jeg har en holdning til alt – spørg bare min kæreste.)</p>
<p><strong>COMPUTERS</strong> er en undskyldning for at give mig selv en ugentlig deadline, et (vagt defineret, men alligevel tilstedeværende) emne og ikke mindst: Nogen der gider lytte (dig).</p>
<p>Jeg vil rigtig gerne høre, hvad du tænker om <strong>COMPUTERS</strong>, nyhedsbreve, og hvad du godt kunne tænke dig, jeg skal skrive om. Indtil videre tænker jeg, <strong>COMPUTERS</strong> er mest tekst, mest tanker, lidt links, sommetider tips og tricks.</p>
<p>Tusind tak fordi du har samlet papkruset med den anden ende af snoren op 👌🏼</p>
<p>Mikkel</p>
<hr>
<ul>
<li><a href="http://nextdraft.com" class="external-link">Next Draft</a> er Dave Pell’s nyhedsoverblik. Én gang om dagen links og kommentarer.</li>
<li><a href="http://www.theskimm.com" class="external-link">theSkimm</a> er det samme, bare skrevet af to piger.</li>
<li>Og mens vi taler om 2 piger, så er <a href="http://www.cloverletter.com" class="external-link">Clover</a> et nyhedsbrev af 2 piger, henvendt til teenagepiger. Det er superfint, og du kan høre et godt bonusinterview med dem i <a href="https://soundcloud.com/postlighttrackchanges/0032-clover-newsletterturning-over-a-new-leaf-or-four-with-founders-liza-darwin-and-casey-lewis" class="external-link">Track Changes</a>.</li>
</ul>
<p><a href="https://tinyletter.com/mikker" title="COMPUTERS"><img src="https://s3.brnbw.com/COMPUTERS-512.jpg" width={256} /></a></p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p><a href="http://tapbots.com/tweetbot/" class="external-link">http://tapbots.com/tweetbot/</a> <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Ved at indsætte et billede fra din hjemmeside, som tæller visninger. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>Ved at lade links gå omkring din hjemmeside. Ligesom i den her mail fx. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn4" class="footnote-item"><p>Your Social Media Fingerprint - <a href="https://robinlinus.github.io/socialmedia-leak/" class="external-link">https://robinlinus.github.io/socialmedia-leak/</a> <a href="#fnref4" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>
]]></description>
            <link>https://mikkelmalmberg.com/issues/1</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/issues/1</guid>
            <pubDate>Fri, 28 Oct 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Control-h in NeoVim on macOS]]></title>
            <description><![CDATA[<p><a href="https://github.com/neovim/neovim/issues/2048" class="external-link">Apparently</a> <code>&lt;c-h&gt;</code> sends <code>&lt;BS&gt;</code> to <code>xterm256-screen</code> terminals and your binding doesn’t work in Neovim.</p>
<p>There’s a few fixes, but I like <a href="https://github.com/neovim/neovim/issues/2048#issuecomment-98307896" class="external-link">this one</a> that does it in iTerm:</p>
<ol>
<li>Edit -&gt; Preferences -&gt; Keys</li>
<li>Press <code>+</code></li>
<li>Press <code>Ctrl+h</code> as <em>Keyboard Shortcut</em></li>
<li>Choose <em>Send Escape Sequence</em> as <em>Action</em></li>
<li>Type <code>[104;5u</code> for <em>Esc+</em></li>
</ol>
]]></description>
            <link>https://mikkelmalmberg.com/2016/2016-09-29-control-h-in-neovim-on-macos</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2016/2016-09-29-control-h-in-neovim-on-macos</guid>
            <pubDate>Thu, 29 Sep 2016 21:04:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Read marks with Ecto and Phoenix]]></title>
            <description><![CDATA[<p>As always, Rails has an easy, pluggable way to do this with <a href="https://github.com/ledermann/unread" class="external-link">unread</a> but it isn’t too hard to add the same to your Phoenix app. Let’s try!</p>
<p>First we’ll generate the table and schema that holds the read marks. This assumes you have two tables: <code>users</code> and <code>stories</code>.</p>
<pre><code class="hljs language-sh">mix phoenix.gen.model ReadMark read_marks \
  user_id:references:<span class="hljs-built_in">users</span> \
  story_id:references:stories
</code></pre>
<p>Open up the newly generated <code>web/models/read_mark.ex</code> and set up the associations:</p>
<pre><code class="hljs language-elixir"><span class="hljs-class"><span class="hljs-keyword">defmodule</span> <span class="hljs-title">MyApp.ReadMark</span></span> <span class="hljs-keyword">do</span>
  <span class="hljs-keyword">use</span> <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Web</span>, <span class="hljs-symbol">:model</span>

  schema <span class="hljs-string">&quot;read_marks&quot;</span> <span class="hljs-keyword">do</span>
    belongs_to <span class="hljs-symbol">:user</span>, <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">User</span>
    belongs_to <span class="hljs-symbol">:story</span>, <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Story</span>

    timestamps()
  <span class="hljs-keyword">end</span>
<span class="hljs-keyword">end</span>
</code></pre>
<p>And in the existing models:</p>
<pre><code class="hljs language-elixir"><span class="hljs-class"><span class="hljs-keyword">defmodule</span> <span class="hljs-title">MyApp.User</span></span> <span class="hljs-keyword">do</span>
  schema <span class="hljs-string">&quot;users&quot;</span> <span class="hljs-keyword">do</span>
    has_many <span class="hljs-symbol">:read_marks</span>, <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">ReadMark</span>, <span class="hljs-symbol">on_delete:</span> <span class="hljs-symbol">:delete_all</span>
  <span class="hljs-keyword">end</span>
<span class="hljs-keyword">end</span>

<span class="hljs-class"><span class="hljs-keyword">defmodule</span> <span class="hljs-title">MyApp.Story</span></span> <span class="hljs-keyword">do</span>
  schema <span class="hljs-string">&quot;stories&quot;</span> <span class="hljs-keyword">do</span>
    has_many <span class="hljs-symbol">:read_marks</span>, <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">ReadMark</span>, <span class="hljs-symbol">on_delete:</span> <span class="hljs-symbol">:delete_all</span>
  <span class="hljs-keyword">end</span>
<span class="hljs-keyword">end</span>
</code></pre>
<p>This is all the setup we need.</p>
<p>We can now get unread stories for a user with a query like:</p>
<pre><code class="hljs language-elixir"><span class="hljs-class"><span class="hljs-keyword">defmodule</span> <span class="hljs-title">MyApp.Story</span></span> <span class="hljs-keyword">do</span>
  <span class="hljs-comment">#...</span>

  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">unread_by</span></span>(query, user) <span class="hljs-keyword">do</span>
    from s <span class="hljs-keyword">in</span> query,
      <span class="hljs-symbol">left_join:</span> rm <span class="hljs-keyword">in</span> assoc(s, <span class="hljs-symbol">:read_marks</span>),
      <span class="hljs-symbol">on:</span> rm.user_id == ^user.id,
      <span class="hljs-symbol">where:</span> is_nil(rm.id)
  <span class="hljs-keyword">end</span>
  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">unread_by</span></span>(user), <span class="hljs-symbol">do:</span> unread_by(<span class="hljs-title class_">DRBot</span>.<span class="hljs-title class_">Story</span>, user)
<span class="hljs-keyword">end</span>
</code></pre>
<p>And use it like:</p>
<pre><code class="hljs language-elixir">user = <span class="hljs-title class_">Repo</span>.get(<span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">User</span>, <span class="hljs-number">1</span>)
unread_stories = <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Story</span>.unread_by(user) |&gt; <span class="hljs-title class_">Repo</span>.all
</code></pre>
<p>We can even chain it with other queries:</p>
<pre><code class="hljs language-elixir">query = from s <span class="hljs-keyword">in</span> <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Story</span>, <span class="hljs-symbol">where:</span> s.published_on == ^today

unread_stories_published_today =
  <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Story</span>.unread_by(query, user)
  |&gt; <span class="hljs-title class_">Repo</span>.all

<span class="hljs-comment"># or the other way around</span>

query = <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Story</span>.unread_by(user)

unread_stories_published_today =
  (from s <span class="hljs-keyword">in</span> query, <span class="hljs-symbol">where:</span> s.published_on == ^today)
  |&gt; <span class="hljs-title class_">Repo</span>.all
</code></pre>
]]></description>
            <link>https://mikkelmalmberg.com/2016/2016-09-29-read-marks-in-ecto-and-phoenix</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2016/2016-09-29-read-marks-in-ecto-and-phoenix</guid>
            <pubDate>Thu, 29 Sep 2016 14:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Podcast Mixtapes]]></title>
            <description><![CDATA[<p>Here’s an idea for a web thing that you should make and afterwards figure out how to make money from. Bonus points if it doesn’t include VC or ads. (Minus points if both.)</p>
<p>One day, sitting at work, you laugh out loud because Greg the host of your favourite podcast “Tim &amp; Greg’s Lazy Hour” says he’s been biking during the weekend and, well, if one knows Greg like you do, that would be what Greg would have been up to, so you simply cannot hold it back. You crack open with a half spitting / half laughing noise.</p>
<p>Seconds later coming back to reality you look up and notice your coworker looking at you, tainted by your spit, hinting at you to take off your headphones.</p>
<p>“What are you listening to?” she asks. Oh, where to begin.</p>
<p>Podcasts come in feeds. This is one of the best things about them. Over time you build a relationship with each one. You are there when all the internal jokes come to life and by now you feel like you and the hosts should just rent a cabin some time and be best pals because it feels like you already are.</p>
<p>But you can’t instruct your coworker to listen to the prior 136 episodes and then she’ll know. You have to point her to something that will ease her into it.</p>
<img src="https://s3.brnbw.com/1_LzJxriTKP94IpMDCfqb2Og-OXV49tt7A8UZCnumce66gPQ1COoosYmRnhPEdPMA3XVXyL1ot3g00L4Ki9GDHavSl5DRBdK1dmhxx7t1hmcZGKwlt3zGB4OwZvH2.png" alt="podcastmixtapes.sexy" class="bg-white">
<p>Luckily there’s podcastmixtapes.sexy (not a real thing. Yet.)</p>
<ol>
<li>Coworker wants in on the funnies.</li>
<li>You create a mixtape, pick the 4–5 episodes that’ll give her the best intro, give it the title “Up to speed on Tim &amp; Greg”.</li>
<li>After the first episode there are a few things that you should probably explain so you type in a few curator’s notes. These get added to the feed in between the episodes.</li>
<li>You share the address of the mixtape with coworker.</li>
<li>Coworker subscribes to the mixtape with her podcast player (like a decent person) or listens to it directly in her browser (like an animal.)</li>
</ol>
<p>Your coworker is now better suited to either subscribe to the real deal - or judge you and your weird ass humour.</p>
<p>Other mixtape ideas:</p>
<ul>
<li>Episodes that’ve made me cry in public</li>
<li>Intro to Roderick on the Line and the #supertrain movement</li>
<li>Best of This American Life pre episode 500</li>
<li>You Look Nice Today episodes mentioning Adam’s drumming</li>
<li>For Lisa ❤️🎧 (ongoing, made by Lisa’s boyfriend)</li>
<li>Siracusa Setting Things Straight (3+ new episodes each week)</li>
</ul>
<p>Now go seize this fortune that I’ve left in your hands.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2016/podcast-mixtapes</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2016/podcast-mixtapes</guid>
            <pubDate>Tue, 30 Aug 2016 08:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Using legacy Devise records in Phoenix]]></title>
            <description><![CDATA[<p>If you, like me, are <em>having fun</em> with rebuilding a Rails app in Phoenix then you might also have to deal with User records made with devise. Here’s how to use them with no update to the data required.</p>
<p>First we have our <code>user.ex</code> schema file:</p>
<pre><code class="hljs language-elixir"><span class="hljs-class"><span class="hljs-keyword">defmodule</span> <span class="hljs-title">MyApp.User</span></span> <span class="hljs-keyword">do</span>
  <span class="hljs-keyword">use</span> <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Web</span>, <span class="hljs-symbol">:model</span>

  schema <span class="hljs-string">&quot;users&quot;</span> <span class="hljs-keyword">do</span>
    field <span class="hljs-symbol">:email</span>, <span class="hljs-symbol">:string</span>
    field <span class="hljs-symbol">:encrypted_password</span>, <span class="hljs-symbol">:string</span>
    field <span class="hljs-symbol">:password</span>, <span class="hljs-symbol">:string</span>, <span class="hljs-symbol">virtual:</span> <span class="hljs-literal">true</span>
    field <span class="hljs-symbol">:password_confirmation</span>, <span class="hljs-symbol">:string</span>, <span class="hljs-symbol">virtual:</span> <span class="hljs-literal">true</span>

    timestamps <span class="hljs-symbol">inserted_at:</span> <span class="hljs-symbol">:created_at</span>
  <span class="hljs-keyword">end</span>

  <span class="hljs-variable">@allowed</span> [<span class="hljs-symbol">:email</span>, <span class="hljs-symbol">:password</span>, <span class="hljs-symbol">:password_confirmation</span>]
  <span class="hljs-variable">@required</span> [<span class="hljs-symbol">:email</span>, <span class="hljs-symbol">:password</span>, <span class="hljs-symbol">:password_confirmation</span>]

  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">changeset</span></span>(model attrs \\ %{}) <span class="hljs-keyword">do</span>
    model
    |&gt; cast(attrs, <span class="hljs-variable">@allowed</span>)
    |&gt; validate_required(<span class="hljs-variable">@required</span>)
    |&gt; <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Crypto</span>.encrypt_password
  <span class="hljs-keyword">end</span>
<span class="hljs-keyword">end</span>
</code></pre>
<p>Notice the two <em>virtual</em> fields and the last function in the changeset pipeline. This will encrypt whatever’s in <code>password</code> and save it to <code>encrypted_password</code>. Let’s see how it looks in <code>web/crypto.ex</code>.</p>
<pre><code class="hljs language-elixir"><span class="hljs-class"><span class="hljs-keyword">defmodule</span> <span class="hljs-title">MyApp.Crypto</span></span>
  <span class="hljs-keyword">import</span> <span class="hljs-title class_">Ecto</span>.<span class="hljs-title class_">Changeset</span>, <span class="hljs-symbol">only:</span> [<span class="hljs-symbol">put_change:</span> <span class="hljs-number">3</span>]

  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">encrypt_password</span></span>(changeset) <span class="hljs-keyword">do</span>
    password = changeset.data.password || changeset.chages.password
    put_change(changeset, <span class="hljs-symbol">:encrypted_password</span>, encrypt(password))
  <span class="hljs-keyword">end</span>

  <span class="hljs-function"><span class="hljs-keyword">defp</span> <span class="hljs-title">encrypt</span></span>(password) <span class="hljs-keyword">do</span>
    pepper = <span class="hljs-title class_">Application</span>.get_env(<span class="hljs-symbol">:my_app</span>, <span class="hljs-symbol">:pepper</span>)
    <span class="hljs-title class_">Comeonin</span>.<span class="hljs-title class_">Bcrypt</span>.haspwsalt(password &lt;&gt; pepper)
  <span class="hljs-keyword">end</span>
<span class="hljs-keyword">end</span>
</code></pre>
<p>A few things: Devise uses <a href="https://www.youtube.com/watch?v=ydrtF45-y-g" class="external-link">both</a> a <a href="https://en.wikipedia.org/wiki/Salt_(cryptography)" class="external-link">salt</a> and a <a href="https://en.wikipedia.org/wiki/Pepper_(cryptography)" class="external-link">pepper</a>. We use <a href="https://github.com/elixircnx/comeonin" class="external-link">Comeonin</a> for actually bcrypting the string.</p>
<p>Now to authenticate users when they log in we make a <code>Session</code> module in <code>web/session.ex</code>.</p>
<pre><code class="hljs language-elixir">defmoudle <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Session</span> <span class="hljs-keyword">do</span>
  <span class="hljs-keyword">alias</span> <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Repo</span>

  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">authenticate</span></span>(schema, %{<span class="hljs-symbol">email:</span> email, <span class="hljs-symbol">password:</span> password}) <span class="hljs-keyword">do</span>
    <span class="hljs-keyword">case</span> get_resource(schema, email) <span class="hljs-keyword">do</span>
      {<span class="hljs-symbol">:ok</span>, resource} -&gt; check_password(resource, password)
      {<span class="hljs-symbol">:error</span>, _} -&gt; {<span class="hljs-symbol">:error</span>, <span class="hljs-literal">nil</span>}
    <span class="hljs-keyword">end</span>
  <span class="hljs-keyword">end</span>

  <span class="hljs-function"><span class="hljs-keyword">defp</span> <span class="hljs-title">check_password</span></span>(resource, password) <span class="hljs-keyword">do</span>
    <span class="hljs-keyword">case</span> <span class="hljs-title class_">Comeonin</span>.<span class="hljs-title class_">Bcrypt</span>.checkpw(password &lt;&gt; pepper, resource.encrypted_password)
      <span class="hljs-literal">true</span> -&gt; {<span class="hljs-symbol">:ok</span>, resource}
      _ -&gt; {<span class="hljs-symbol">:error</span>, <span class="hljs-literal">nil</span>}
    <span class="hljs-keyword">end</span>
  <span class="hljs-keyword">end</span>

  <span class="hljs-function"><span class="hljs-keyword">defp</span> <span class="hljs-title">pepper</span></span> <span class="hljs-keyword">do</span>
    <span class="hljs-title class_">Applicaion</span>.get_env(<span class="hljs-symbol">:my_app</span>, <span class="hljs-symbol">:pepper</span>)
  <span class="hljs-keyword">end</span>

  <span class="hljs-function"><span class="hljs-keyword">defp</span> <span class="hljs-title">get_resource</span></span>(schema, email) <span class="hljs-keyword">do</span>
    <span class="hljs-keyword">case</span> <span class="hljs-title class_">Repo</span>.get_by(schema, <span class="hljs-symbol">email:</span> email) <span class="hljs-keyword">do</span>
      <span class="hljs-literal">nil</span> -&gt; {<span class="hljs-symbol">:error</span>, <span class="hljs-literal">nil</span>}
      resource -&gt; {<span class="hljs-symbol">:ok</span>, resource}
    <span class="hljs-keyword">end</span>
  <span class="hljs-keyword">end</span>
<span class="hljs-keyword">end</span>
</code></pre>
<p>Use them like <code>MyApp.Repo.insert(MyApp.User.changeset(%{ ... }))</code> and <code>MyApp.Session.authenticate(User, %{email: ..., password: ...})</code>.</p>
<p>This is actually all it takes. Now you can both create new users using the same techiques as devise and authenticate everybody, both new and old.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2016/2016-06-26-using-legacy-devise-records-in-phoenix</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2016/2016-06-26-using-legacy-devise-records-in-phoenix</guid>
            <pubDate>Sun, 26 Jun 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Sign in as a user in a Phoenix controller test]]></title>
            <description><![CDATA[<p>First I spent a few hours piecing this together. And then I spent a few months searching through projects several times to find where I had used it because I needed it again. So here it goes now, into my public scratch pad.</p>
<p>To put something into a <code>conn</code> session in a Phoenix test you first have to go through you app’s router and then back. So for example if you want to sign in as a user before hitting an endpoint use this:</p>
<pre><code class="hljs language-elixir"><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">sign_in</span></span> conn, user <span class="hljs-keyword">do</span>
  conn
  |&gt; bypass_through(<span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Router</span>, <span class="hljs-symbol">:browser</span>)
  |&gt; get(<span class="hljs-string">&quot;/&quot;</span>)
  |&gt; put_session(<span class="hljs-symbol">:current_user</span>, user.id)
  |&gt; send_resp(<span class="hljs-symbol">:ok</span>, <span class="hljs-string">&quot;&quot;</span>)
  |&gt; recycle()
<span class="hljs-keyword">end</span>
</code></pre>
<p>To have it available in all your <code>ConnCase</code>s put it in <code>test/support/conn_case.ex</code>.</p>
<pre><code class="hljs language-elixir"><span class="hljs-class"><span class="hljs-keyword">defmodule</span> <span class="hljs-title">MyApp.ConnCase</span></span> <span class="hljs-keyword">do</span>
  <span class="hljs-comment"># ...</span>
  using <span class="hljs-keyword">do</span>
    <span class="hljs-keyword">quote</span> <span class="hljs-keyword">do</span>
      <span class="hljs-comment"># ...</span>
      <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">sign_in</span></span> conn, user <span class="hljs-keyword">do</span>
        <span class="hljs-comment"># ...</span>
      <span class="hljs-keyword">end</span>
    <span class="hljs-keyword">end</span>
  <span class="hljs-keyword">end</span>
<span class="hljs-keyword">end</span>
</code></pre>
]]></description>
            <link>https://mikkelmalmberg.com/2016/2016-05-14-sign-in-as-a-user-in-phoenix-controller-tests</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2016/2016-05-14-sign-in-as-a-user-in-phoenix-controller-tests</guid>
            <pubDate>Sat, 14 May 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[-webkit-user-select: none; disables input and Javascript events]]></title>
            <description><![CDATA[<p>I could’ve spared two hours of googling if I had just known this.</p>
<p>I had this in my css file to disable text selection in my mobile-targeted <em>web app</em>:</p>
<pre><code class="hljs language-css">* {
  -webkit-<span class="hljs-attribute">user-select</span>: none;
}
</code></pre>
<p>This is nice and makes what is actually a website behave more like apps do. What I didn’t know was that this also disables text input on iOS.</p>
<p>Fast forward two hours: Either remove the <code>*</code> rule above or re-enable <code>user-select</code> for input fields:</p>
<pre><code class="hljs language-css"><span class="hljs-selector-tag">input</span> {
  -webkit-<span class="hljs-attribute">user-select</span>: auto;
}
</code></pre>
]]></description>
            <link>https://mikkelmalmberg.com/2016/2016-04-19-webkit-user-select-disables-events</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2016/2016-04-19-webkit-user-select-disables-events</guid>
            <pubDate>Tue, 19 Apr 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Cycle an array using ES2015]]></title>
            <description><![CDATA[<p>ES2015 is fun and allows you to write more concise Javascript.</p>
<p>Here’s how to cycle an array of values. Use it to zebra stripe a table or whatever:</p>
<pre><code class="hljs language-js"><span class="hljs-keyword">function</span> <span class="hljs-title function_">cycle</span>(<span class="hljs-params">...args</span>) {
  <span class="hljs-keyword">return</span> <span class="hljs-function">(<span class="hljs-params">i</span>) =&gt;</span> args[i % args.<span class="hljs-property">length</span>];
}
</code></pre>
<p>And we can still make it shorter:</p>
<pre><code class="hljs language-js"><span class="hljs-keyword">const</span> <span class="hljs-title function_">cycle</span> =
  (<span class="hljs-params">...args</span>) =&gt;
  <span class="hljs-function">(<span class="hljs-params">i</span>) =&gt;</span>
    args[i % args.<span class="hljs-property">length</span>];
</code></pre>
<p>Use it in React like this:</p>
<pre><code class="hljs language-js"><span class="hljs-keyword">function</span> <span class="hljs-title function_">Table</span>(<span class="hljs-params">{ posts }</span>) {
  <span class="hljs-keyword">const</span> cls = <span class="hljs-title function_">cycle</span>(<span class="hljs-string">&quot;odd&quot;</span>, <span class="hljs-string">&quot;even&quot;</span>);

  <span class="hljs-keyword">return</span> (
    <span class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">table</span>&gt;</span>
      {posts.map((post, i) =&gt; (
        <span class="hljs-tag">&lt;<span class="hljs-name">tr</span> <span class="hljs-attr">key</span>=<span class="hljs-string">{i}</span> <span class="hljs-attr">className</span>=<span class="hljs-string">{cls(i)}</span>&gt;</span>
          <span class="hljs-tag">&lt;<span class="hljs-name">td</span>&gt;</span>{post.title}<span class="hljs-tag">&lt;/<span class="hljs-name">td</span>&gt;</span>
        <span class="hljs-tag">&lt;/<span class="hljs-name">tr</span>&gt;</span>
      ))}
    <span class="hljs-tag">&lt;/<span class="hljs-name">table</span>&gt;</span></span>
  );
}
</code></pre>
<p>Compare it to regular ES5:</p>
<pre><code class="hljs language-js"><span class="hljs-keyword">function</span> <span class="hljs-title function_">cycle</span>(<span class="hljs-params"></span>) {
  <span class="hljs-keyword">var</span> args = <span class="hljs-title class_">Array</span>.<span class="hljs-property"><span class="hljs-keyword">prototype</span></span>.<span class="hljs-property">slice</span>.<span class="hljs-title function_">call</span>(<span class="hljs-variable language_">arguments</span>);

  <span class="hljs-keyword">return</span> <span class="hljs-keyword">function</span> (<span class="hljs-params">i</span>) {
    <span class="hljs-keyword">return</span> args[i % args.<span class="hljs-property">length</span>];
  };
}
</code></pre>
<p>Not that much longer but definitely less fun. We can have fun.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2016/2016-04-18-cycle-array-using-es2015</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2016/2016-04-18-cycle-array-using-es2015</guid>
            <pubDate>Mon, 18 Apr 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Updated Elixir Phoenix 1.1.4 with Webpack and React Hot Module Reload]]></title>
            <description><![CDATA[<p><strong>Updated instructions for Phoenix 1.1.4 and custom Webpack dev server</strong></p>
<p>Generate your new app without brunch:</p>
<pre><code class="hljs language-sh">$ mix phoenix.new my_app --no-brunch
$ <span class="hljs-built_in">cd</span> my_app
</code></pre>
<p>This is file that we want to be able to compile, <code>web/static/js/index.js</code>:</p>
<pre><code class="hljs language-js"><span class="hljs-comment">// Phoenix&#x27; dependencies</span>
<span class="hljs-keyword">import</span> <span class="hljs-string">&quot;../../../deps/phoenix/priv/static/phoenix&quot;</span>;
<span class="hljs-keyword">import</span> <span class="hljs-string">&quot;../../../deps/phoenix_html/priv/static/phoenix_html&quot;</span>;

<span class="hljs-comment">// Shiny new, hot React component</span>
<span class="hljs-keyword">import</span> <span class="hljs-title class_">React</span>, { <span class="hljs-title class_">Component</span> } <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;react&quot;</span>;
<span class="hljs-keyword">import</span> { render } <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;react-dom&quot;</span>;

<span class="hljs-keyword">class</span> <span class="hljs-title class_">Root</span> <span class="hljs-keyword">extends</span> <span class="hljs-title class_ inherited__">Component</span> {
  <span class="hljs-title function_">render</span>(<span class="hljs-params"></span>) {
    <span class="hljs-keyword">return</span> <span class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>omg so hot<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span></span>;
  }
}

<span class="hljs-title function_">render</span>(<span class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">Root</span> /&gt;</span></span>, <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">getElementById</span>(<span class="hljs-string">&quot;root&quot;</span>));
</code></pre>
<p>Install the required js dependencies using <code>npm</code>:</p>
<pre><code class="hljs language-sh">$ <span class="hljs-built_in">echo</span> <span class="hljs-string">&#x27;{&quot;private&quot;: true}&#x27;</span> &gt; package.json
$ npm install --save babel-core babel-polyfill babel-loader babel-preset-es2015 babel-preset-react react react-dom webpack
$ npm install --save-dev webpack-dev-middleware webpack-hot-middleware express cors babel-preset-react-hmre babel-preset-stage-0 babel-preset-es2015
</code></pre>
<p>A lot of stuff, right?</p>
<p>We need a webpack config. Here’s <code>webpack.config.js</code>:</p>
<pre><code class="hljs language-javascript"><span class="hljs-keyword">var</span> path = <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;path&quot;</span>);
<span class="hljs-keyword">var</span> webpack = <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;webpack&quot;</span>);
<span class="hljs-keyword">var</span> publicPath = <span class="hljs-string">&quot;http://localhost:4001/&quot;</span>;

<span class="hljs-keyword">var</span> env = process.<span class="hljs-property">env</span>.<span class="hljs-property">MIX_ENV</span> || <span class="hljs-string">&quot;dev&quot;</span>;
<span class="hljs-keyword">var</span> prod = env === <span class="hljs-string">&quot;prod&quot;</span>;

<span class="hljs-keyword">var</span> entry = <span class="hljs-string">&quot;./web/static/js/index.js&quot;</span>;
<span class="hljs-keyword">var</span> hot = <span class="hljs-string">&quot;webpack-hot-middleware/client?path=&quot;</span> + publicPath + <span class="hljs-string">&quot;__webpack_hmr&quot;</span>;

<span class="hljs-keyword">var</span> plugins = [
  <span class="hljs-keyword">new</span> webpack.<span class="hljs-property">optimize</span>.<span class="hljs-title class_">OccurrenceOrderPlugin</span>(),
  <span class="hljs-keyword">new</span> webpack.<span class="hljs-title class_">NoErrorsPlugin</span>(),
  <span class="hljs-keyword">new</span> webpack.<span class="hljs-title class_">DefinePlugin</span>({
    <span class="hljs-attr">__PROD</span>: prod,
    <span class="hljs-attr">__DEV</span>: env === <span class="hljs-string">&quot;dev&quot;</span>,
  }),
];

<span class="hljs-keyword">if</span> (env === <span class="hljs-string">&quot;dev&quot;</span>) {
  plugins.<span class="hljs-title function_">push</span>(<span class="hljs-keyword">new</span> webpack.<span class="hljs-title class_">HotModuleReplacementPlugin</span>());
}

<span class="hljs-variable language_">module</span>.<span class="hljs-property">exports</span> = {
  <span class="hljs-attr">devtool</span>: prod ? <span class="hljs-literal">null</span> : <span class="hljs-string">&quot;cheap-module-eval-source-map&quot;</span>,
  <span class="hljs-attr">entry</span>: prod ? entry : [hot, entry],
  <span class="hljs-attr">output</span>: {
    <span class="hljs-attr">path</span>: path.<span class="hljs-title function_">resolve</span>(__dirname) + <span class="hljs-string">&quot;/priv/static/js&quot;</span>,
    <span class="hljs-attr">filename</span>: <span class="hljs-string">&quot;index.bundle.js&quot;</span>,
    <span class="hljs-attr">publicPath</span>: publicPath,
  },
  <span class="hljs-attr">plugins</span>: plugins,
  <span class="hljs-attr">module</span>: {
    <span class="hljs-attr">loaders</span>: [
      {
        <span class="hljs-attr">test</span>: <span class="hljs-regexp">/\.jsx?$/</span>,
        <span class="hljs-attr">loaders</span>: [<span class="hljs-string">&quot;babel&quot;</span>],
        <span class="hljs-attr">exclude</span>: path.<span class="hljs-title function_">resolve</span>(__dirname, <span class="hljs-string">&quot;node_modules&quot;</span>),
      },
    ],
  },
};
</code></pre>
<p>And we need a node server for development, <code>webpack.dev.js</code>:</p>
<pre><code class="hljs language-javascript"><span class="hljs-meta">#!/usr/bin/env node</span>
<span class="hljs-keyword">var</span> express = <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;express&quot;</span>);
<span class="hljs-keyword">var</span> webpack = <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;webpack&quot;</span>);
<span class="hljs-keyword">var</span> config = <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;./webpack.config&quot;</span>);

<span class="hljs-keyword">var</span> compiler = <span class="hljs-title function_">webpack</span>(config);
<span class="hljs-keyword">var</span> app = <span class="hljs-title function_">express</span>();
app.<span class="hljs-title function_">use</span>(<span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;cors&quot;</span>)());

app.<span class="hljs-title function_">use</span>(
  <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;webpack-dev-middleware&quot;</span>)(compiler, {
    <span class="hljs-attr">noInfo</span>: <span class="hljs-literal">true</span>,
    <span class="hljs-attr">publicPath</span>: config.<span class="hljs-property">output</span>.<span class="hljs-property">publicPath</span>,
  }),
);

app.<span class="hljs-title function_">use</span>(
  <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;webpack-hot-middleware&quot;</span>)(compiler, {
    <span class="hljs-attr">log</span>: <span class="hljs-variable language_">console</span>.<span class="hljs-property">log</span>,
  }),
);

app.<span class="hljs-title function_">listen</span>(<span class="hljs-number">4001</span>, <span class="hljs-string">&quot;localhost&quot;</span>, <span class="hljs-keyword">function</span> (<span class="hljs-params">err</span>) {
  <span class="hljs-keyword">if</span> (err) <span class="hljs-keyword">return</span> <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(err);
  <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">&quot;dev server running on localhost:4001&quot;</span>);
});

<span class="hljs-comment">// Exit on end of STDIN</span>
process.<span class="hljs-property">stdin</span>.<span class="hljs-title function_">resume</span>();
process.<span class="hljs-property">stdin</span>.<span class="hljs-title function_">on</span>(<span class="hljs-string">&quot;end&quot;</span>, <span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) {
  process.<span class="hljs-title function_">exit</span>(<span class="hljs-number">0</span>);
});
</code></pre>
<p>Allow it to be executed:</p>
<pre><code class="hljs language-sh">$ <span class="hljs-built_in">chmod</span> +x webpack.dev.js
</code></pre>
<p>Babel 6 needs a <code>.babelrc</code> so let’s add it:</p>
<pre><code class="hljs language-json"><span class="hljs-punctuation">{</span>
  <span class="hljs-attr">&quot;presets&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-string">&quot;es2015&quot;</span><span class="hljs-punctuation">,</span> <span class="hljs-string">&quot;react&quot;</span><span class="hljs-punctuation">,</span> <span class="hljs-string">&quot;stage-0&quot;</span><span class="hljs-punctuation">]</span><span class="hljs-punctuation">,</span>
  <span class="hljs-attr">&quot;env&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
    <span class="hljs-attr">&quot;development&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">{</span>
      <span class="hljs-attr">&quot;presets&quot;</span><span class="hljs-punctuation">:</span> <span class="hljs-punctuation">[</span><span class="hljs-string">&quot;react-hmre&quot;</span><span class="hljs-punctuation">]</span>
    <span class="hljs-punctuation">}</span>
  <span class="hljs-punctuation">}</span>
<span class="hljs-punctuation">}</span>
</code></pre>
<p>Make your app run that script as a watcher in <code>dev</code>. <code>config/dev.exs</code>:</p>
<pre><code class="hljs language-elixir">config <span class="hljs-symbol">:speaker</span>, <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Endpoint</span>,
  <span class="hljs-symbol">http:</span> [<span class="hljs-symbol">port:</span> <span class="hljs-number">4000</span>],
  <span class="hljs-symbol">debug_errors:</span> <span class="hljs-literal">true</span>,
  <span class="hljs-symbol">code_reloader:</span> <span class="hljs-literal">true</span>,
  <span class="hljs-symbol">check_origin:</span> <span class="hljs-literal">false</span>,
  <span class="hljs-symbol">watchers:</span> [{<span class="hljs-title class_">Path</span>.expand(<span class="hljs-string">&quot;webpack.dev.js&quot;</span>), []}]

<span class="hljs-comment"># ...</span>

config <span class="hljs-symbol">:speaker</span>, <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Endpoint</span>,
  <span class="hljs-symbol">live_reload:</span> [
    <span class="hljs-symbol">patterns:</span> [
      <span class="hljs-comment"># ~r{priv/static/.*(js|css|png|jpeg|jpg|gif|svg)$},</span>
      <span class="hljs-regex">~r{priv/gettext/.*(po)$}</span>,
      <span class="hljs-regex">~r{web/views/.*(ex)$}</span>,
      <span class="hljs-regex">~r{web/templates/.*(eex)$}</span>
    ]
  ]
</code></pre>
<p>And finally add this to the bottom of <code>web/templates/layout/app.html.eex</code>:</p>
<pre><code class="hljs language-erb"><span class="language-xml">&lt;%=</span><span class="language-ruby"> <span class="hljs-keyword">if</span> <span class="hljs-title class_">Mix</span>.env == <span class="hljs-symbol">:dev</span> <span class="hljs-keyword">do</span> </span><span class="language-xml">%&gt;
  <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">&#x27;http://localhost:4001/index.bundle.js&#x27;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
&lt;%</span><span class="language-ruby"> <span class="hljs-keyword">else</span> </span><span class="language-xml">%&gt;
  <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">&quot;&lt;%=</span></span></span><span class="language-ruby"> static_path(<span class="hljs-variable">@conn</span>, <span class="hljs-string">&quot;/js/index.bundle.js&quot;</span>) </span><span class="language-xml"><span class="hljs-tag"><span class="hljs-string">%&gt;&quot;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
&lt;%</span><span class="language-ruby"> <span class="hljs-keyword">end</span> </span><span class="language-xml">%&gt;
</span></code></pre>
<p>And <code>web/templates/page/index.html.eex</code> is just:</p>
<pre><code class="hljs language-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">&quot;root&quot;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<h3 id="building-for-production" tabindex="-1">Building for production</h3>
<p>Add <code>lib/mix/tasks/digest.ex</code>:</p>
<pre><code class="hljs language-elixir"><span class="hljs-class"><span class="hljs-keyword">defmodule</span> <span class="hljs-title">Mix.Tasks.MyApp.Digest</span></span> <span class="hljs-keyword">do</span>
  <span class="hljs-keyword">use</span> <span class="hljs-title class_">Mix</span>.<span class="hljs-title class_">Task</span>

  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">run</span></span>(args) <span class="hljs-keyword">do</span>
    <span class="hljs-title class_">Mix</span>.<span class="hljs-title class_">Shell</span>.<span class="hljs-title class_">IO</span>.cmd <span class="hljs-string">&quot;NODE_ENV=production ./node_modules/webpack/bin/webpack.js -p&quot;</span>
    <span class="hljs-symbol">:ok</span> = <span class="hljs-title class_">Mix</span>.<span class="hljs-title class_">Tasks</span>.<span class="hljs-title class_">Phoenix</span>.<span class="hljs-title class_">Digest</span>.run(args)
  <span class="hljs-keyword">end</span>
<span class="hljs-keyword">end</span>
</code></pre>
<p>And in <code>mix.exs</code>:</p>
<pre><code class="hljs language-elixir"><span class="hljs-class"><span class="hljs-keyword">defmodule</span> <span class="hljs-title">MyApp.Mixfile</span></span> <span class="hljs-keyword">do</span>
  <span class="hljs-comment"># ...</span>
  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">project</span></span> <span class="hljs-keyword">do</span>
    [ <span class="hljs-comment"># ...</span>
      <span class="hljs-symbol">aliases:</span> [<span class="hljs-string">&quot;phoenix.digest&quot;</span>: <span class="hljs-string">&quot;my_app.digest&quot;</span>]]
  <span class="hljs-keyword">end</span>
  <span class="hljs-comment"># ...</span>
<span class="hljs-keyword">end</span>
</code></pre>
]]></description>
            <link>https://mikkelmalmberg.com/2016/2016-02-04-updated-phoenix-webpack-react-setup</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2016/2016-02-04-updated-phoenix-webpack-react-setup</guid>
            <pubDate>Thu, 04 Feb 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Bookmarklet to control Netflix' playback rate]]></title>
            <description><![CDATA[<p>Who has time to watch ANYTHING at regular speed? Not this guy.</p>
<blockquote class="twitter-tweet" lang="en"><p lang="da" dir="ltr">Gad godt Netflix kunne afspille med 1.5x hastighed. Ved ikke helt om det er feature request til dem eller bug report til min opmærksomhed.</p>&mdash; Mikkel Malmberg (@mikker) <a href="https://twitter.com/mikker/status/689743941458071552">January 20, 2016</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>Netflix’ player is just a HTML5 <code>&lt;video&gt;</code> element and those have a <a href="http://www.w3schools.com/tags/av_prop_playbackrate.asp" class="external-link"><code>playbackRate</code> property</a>.</p>
<p>Thank God for Javascript, right: Use this bookmarklet to control Netflix’ playback rate and never look back.</p>
<p><a href='javascript:function%20main()%7Bvar%20t=document,a=t.body,e=t.createElement(%22script%22);try%7Bif(!a)throw%200;e.setAttribute(%22src%22,%22http://s3.brnbw.com/netflix.com.js%22),a.appendChild(e)%7Dcatch(r)%7Balert(%22Please%20wait%20till%20page%20has%20loaded...%22)%7D%7Dmain();' style='background: #ccc; color: #555; border-radius: 999px; padding: 2px 10px'>NetflixSpeed</a> ← Drag this to your bookmarks bar</p>
]]></description>
            <link>https://mikkelmalmberg.com/2016/2016-01-21-bookmarklet-to-control-netflix-playback-rate</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2016/2016-01-21-bookmarklet-to-control-netflix-playback-rate</guid>
            <pubDate>Thu, 21 Jan 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Upgrading PostgreSQL data from 9.4 to 9.5 with homebrew]]></title>
            <description><![CDATA[<p>I got this in my <code>server.log</code>:</p>
<pre><code class="hljs"><span class="hljs-attribute">The</span> data directory was initialized by PostgreSQL version <span class="hljs-number">9</span>.<span class="hljs-number">4</span>, which is not compatible with this version <span class="hljs-number">9</span>.<span class="hljs-number">5</span>.<span class="hljs-number">0</span>.
</code></pre>
<p>So we have to upgrade our data. Luckily there’s <a href="http://www.postgresql.org/docs/9.5/static/pgupgrade.html" class="external-link"><code>pb_upgrade</code></a>.</p>
<p>First we need to have a version of 9.4 installed.</p>
<pre><code class="hljs language-sh"><span class="hljs-comment"># move 9.5 out of the way</span>
<span class="hljs-comment"># - don&#x27;t worry - your data will not be removed</span>
$ brew uninstall postgres

<span class="hljs-comment"># the last version of the postgres bottle with 9.4</span>
$ brew install https://github.com/Homebrew/homebrew/raw/f8509e62904a055f085579aed47fca1faa7a810f/Library/Formula/postgresql.rb

<span class="hljs-comment"># move 9.4 away but keep it</span>
$ brew <span class="hljs-built_in">unlink</span> postgres

<span class="hljs-comment"># install 9.5</span>
$ brew install postgres
</code></pre>
<p>Now we can follow <a href="https://kkob.us/2016/01/09/homebrew-and-postgresql-9-5/" class="external-link">Keita’s instructions</a>:</p>
<pre><code class="hljs language-sh"><span class="hljs-comment"># initialize a new 9.5 db</span>
$ initdb /usr/local/var/postgres9.5 -E utf8

<span class="hljs-comment"># upgrade our data</span>
$ pg_upgrade -d /usr/local/var/postgres -D /usr/local/var/postgres9.5 -b /usr/local/Cellar/postgresql/9.4.5_2/bin/ -B /usr/local/Cellar/postgresql/9.5.0/bin/ -v

<span class="hljs-comment"># move 9.4 data away and the new data into place</span>
$ <span class="hljs-built_in">mv</span> /usr/local/var/postgres /usr/local/var/postgres9.4
$ <span class="hljs-built_in">mv</span> /usr/local/var/postgres9.5 /usr/local/var/postgres

<span class="hljs-comment"># remove 9.4</span>
$ brew cleanup
</code></pre>
<p>And for good measure:</p>
<pre><code class="hljs language-sh">$ gem uninstall pg
$ gem install pg
</code></pre>
]]></description>
            <link>https://mikkelmalmberg.com/2016/2016-01-11-10-44-upgrading-postgresql-data-to-9-5-with-homebrew</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2016/2016-01-11-10-44-upgrading-postgresql-data-to-9-5-with-homebrew</guid>
            <pubDate>Mon, 11 Jan 2016 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Recreating DuckDuckGo's "I'm Feeling Lucky" bang method on Google]]></title>
            <description><![CDATA[<p>DuckDuckGo has a <a href="">slew of bang methods</a> that let you do all sorts of things with your search terms. One of them is just the <em>bang</em> (!) that’ll automatically go to the topmost result. Like Google’s “I’m Feeling Lucky”.</p>
<p>How can we do that on Google aswell? Using <a href="">dotjs</a>! Long story short, dotjs let’s you write javascript files that run after sites load eg. <code>~/.js/google.com.js</code> in this instance.</p>
<pre><code class="hljs language-javascript">(<span class="hljs-keyword">function</span> (<span class="hljs-params"><span class="hljs-variable language_">window</span>, <span class="hljs-variable language_">document</span></span>) {
  <span class="hljs-string">&quot;use strict&quot;</span>;

  <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">&quot;dotjs&quot;</span>);

  <span class="hljs-comment">// Parse the search string to an object</span>
  <span class="hljs-keyword">var</span> params = <span class="hljs-variable language_">window</span>.<span class="hljs-property">location</span>.<span class="hljs-property">search</span>
    .<span class="hljs-title function_">replace</span>(<span class="hljs-regexp">/^\?/</span>, <span class="hljs-string">&quot;&quot;</span>)
    .<span class="hljs-title function_">split</span>(<span class="hljs-string">&quot;&amp;&quot;</span>)
    .<span class="hljs-title function_">reduce</span>(<span class="hljs-keyword">function</span> (<span class="hljs-params">params, kv</span>) {
      kv = kv.<span class="hljs-title function_">split</span>(<span class="hljs-string">&quot;=&quot;</span>);
      params[kv[<span class="hljs-number">0</span>]] = kv[<span class="hljs-number">1</span>];
      <span class="hljs-keyword">return</span> params;
    }, {});

  <span class="hljs-comment">// See if the ?q param contains a bang</span>
  <span class="hljs-keyword">if</span> (params.<span class="hljs-property">q</span>.<span class="hljs-title function_">match</span>(<span class="hljs-regexp">/\!/</span>)) {
    <span class="hljs-comment">// Click the topmost result</span>
    <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">querySelector</span>(<span class="hljs-string">&quot;h3.r a&quot;</span>).<span class="hljs-title function_">click</span>();
  }
})(<span class="hljs-variable language_">window</span>, <span class="hljs-variable language_">document</span>);
</code></pre>
]]></description>
            <link>https://mikkelmalmberg.com/2015/2015-10-28-recreating-duckduckgos-bang-method</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2015/2015-10-28-recreating-duckduckgos-bang-method</guid>
            <pubDate>Wed, 28 Oct 2015 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[El Capitan GM update notes]]></title>
            <description><![CDATA[<p><strong>UPDATE 2015-10-11:</strong> Turns out, on a clean install <code>/usr/local</code> is still writable – even with SIP turned on.</p>
<hr>
<p>I’ve been running the beta of OS X 10.11 <em>El Capitan</em> for some months and there’ve been very few hiccups. So full sail ahead on the update I say.</p>
<p>Upgrading to the GM broke my <a href="http://brew.sh" title="Homebrew" class="external-link">homebrew</a> though. I think the days of using <code>/usr/local</code> might be over as El Capitan does some stuff to enforce even stricter permissions than a simple <code>chown</code> can get rid of.</p>
<p>So I’m moving out! Someone (forgot who or where – sorry!) mentioned in a Github issue thread how he’d been running his homebrew out of <code>/Users/Shared/Developer</code> for some months with no problems, so that’s what I did:</p>
<h3 id="installing-homebrew-outside-of-%2Fusr%2Flocal" tabindex="-1">Installing Homebrew outside of <code>/usr/local</code></h3>
<pre><code class="hljs language-sh">$ git <span class="hljs-built_in">clone</span> https://github.com/Homebrew/homebrew.git /Users/Shared/Developer
</code></pre>
<p>Now, that directory’s <code>bin</code> directory isn’t in your <code>$PATH</code> (like <code>/usr/local/bin</code> is automatically) so we need to add it. Open up <code>~/.bashrc</code> or <code>~/.zshrc</code> – whatever your preference – and add this:</p>
<pre><code class="hljs language-sh"><span class="hljs-built_in">export</span> BREW_PATH=/Users/Shared/Developer
<span class="hljs-built_in">export</span> PATH=<span class="hljs-string">&quot;<span class="hljs-variable">$BREW_PATH</span>/bin:<span class="hljs-variable">$PATH</span>&quot;</span>
</code></pre>
<p>Done. Run <code>brew doctor</code> to confirm.</p>
<h3 id="install-taglib-ruby-gem-with-homebrew-outside-%2Fusr%2Flocal" tabindex="-1">Install <code>taglib-ruby</code> gem with Homebrew outside <code>/usr/local</code></h3>
<pre><code class="hljs language-sh">$ brew install taglib
$ gem install taglib-ruby -- --with-tag-dir=<span class="hljs-variable">$BREW_PATH</span>/Cellar/taglib/1.9.1/
</code></pre>
]]></description>
            <link>https://mikkelmalmberg.com/2015/2015-09-10-el-capitan-update-notes</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2015/2015-09-10-el-capitan-update-notes</guid>
            <pubDate>Thu, 10 Sep 2015 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Use webpack-dev-server and react-hot-loader with Phoenix]]></title>
            <description><![CDATA[<p><strong>NB: Here’s an <a href="/2016/02/04/updated-phoenix-webpack-react-setup.html">updated setup</a>.</strong></p>
<p><a href="http://www.phoenixframework.org" class="external-link">Phoenix</a> has built-in livereload and it works right out of the box. But if you’ve ever had the joy of working with <a href="https://github.com/facebook/react" class="external-link">React</a> and <a href="https://gaearon.github.io/react-hot-loader/" class="external-link">react-hot-loader</a> you know you need to have that with you anywhere.</p>
<p>Phoenix uses <a href="http://brunch.io" class="external-link">Brunch</a> to build it’s assets so we’ll have to pull that out and jam in a <a href="http://webpack.github.io/docs/webpack-dev-server.html" class="external-link">webpack-dev-server</a> wherever it was. Luckily that’s quite easy.</p>
<p><strong>The completed example is <a href="http://github.com/mikker/phoenix-react-hot-loader" title="mikker/phoenix-react-hot-loader" class="external-link">available on Github</a></strong>.</p>
<p>First, let’s create a new app:</p>
<pre><code class="hljs language-sh">$ mix phoenix.new my_app
$ <span class="hljs-built_in">cd</span> my_app
</code></pre>
<p>We could’ve generated the app without Brunch but let’s keep it in, to see what we’re actually substituting.
Let’s start by pulling out Brunch and it’s dependencies and then add our new ones:</p>
<pre><code class="hljs language-sh">$ npm uninstall --save babel-brunch brunch clean-css-brunch css-brunch javascript-brunch sass-brunch uglify-js-brunch
$ npm install --save babel-loader react react-hot-loader webpack webpack-dev-server
</code></pre>
<p>Now, webpack needs to be told what to build and how, so let’s make a config file. Here’s <code>webpack.config.js</code>:</p>
<pre><code class="hljs language-javascript"><span class="hljs-keyword">var</span> path = <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;path&quot;</span>);
<span class="hljs-keyword">var</span> webpack = <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;webpack&quot;</span>);

<span class="hljs-keyword">var</span> env = process.<span class="hljs-property">env</span>.<span class="hljs-property">MIX_ENV</span> || <span class="hljs-string">&quot;dev&quot;</span>;
<span class="hljs-keyword">var</span> prod = env === <span class="hljs-string">&quot;prod&quot;</span>;

<span class="hljs-keyword">var</span> entry = <span class="hljs-string">&quot;./web/static/js/bundle.js&quot;</span>;
<span class="hljs-keyword">var</span> plugins = [<span class="hljs-keyword">new</span> webpack.<span class="hljs-title class_">NoErrorsPlugin</span>()];
<span class="hljs-keyword">var</span> loaders = [<span class="hljs-string">&quot;babel&quot;</span>];
<span class="hljs-keyword">var</span> publicPath = <span class="hljs-string">&quot;http://localhost:4001/&quot;</span>;

<span class="hljs-keyword">if</span> (prod) {
  plugins.<span class="hljs-title function_">push</span>(<span class="hljs-keyword">new</span> webpack.<span class="hljs-property">optimize</span>.<span class="hljs-title class_">UglifyJsPlugin</span>());
} <span class="hljs-keyword">else</span> {
  plugins.<span class="hljs-title function_">push</span>(<span class="hljs-keyword">new</span> webpack.<span class="hljs-title class_">HotModuleReplacementPlugin</span>());
  loaders.<span class="hljs-title function_">unshift</span>(<span class="hljs-string">&quot;react-hot&quot;</span>);
}

<span class="hljs-variable language_">module</span>.<span class="hljs-property">exports</span> = {
  <span class="hljs-attr">devtool</span>: prod ? <span class="hljs-literal">null</span> : <span class="hljs-string">&quot;eval-sourcemaps&quot;</span>,
  <span class="hljs-attr">entry</span>: prod
    ? entry
    : [
        <span class="hljs-string">&quot;webpack-dev-server/client?&quot;</span> + publicPath,
        <span class="hljs-string">&quot;webpack/hot/only-dev-server&quot;</span>,
        entry,
      ],
  <span class="hljs-attr">output</span>: {
    <span class="hljs-attr">path</span>: path.<span class="hljs-title function_">join</span>(__dirname, <span class="hljs-string">&quot;./priv/static/js&quot;</span>),
    <span class="hljs-attr">filename</span>: <span class="hljs-string">&quot;bundle.js&quot;</span>,
    <span class="hljs-attr">publicPath</span>: publicPath,
  },
  <span class="hljs-attr">plugins</span>: plugins,
  <span class="hljs-attr">module</span>: {
    <span class="hljs-attr">loaders</span>: [{ <span class="hljs-attr">test</span>: <span class="hljs-regexp">/\.jsx?/</span>, <span class="hljs-attr">loaders</span>: loaders, <span class="hljs-attr">exclude</span>: <span class="hljs-regexp">/node_modules/</span> }],
  },
};
</code></pre>
<p>I will not go into too much detail but notice the address <code>http://localhost:4001</code>. That’s where <code>webpack-dev-server</code> will be running from when we’re developing.</p>
<p>Next, let’s set up the dev server in <code>webpack.devserver.js</code>:</p>
<pre><code class="hljs language-js"><span class="hljs-meta">#!/usr/bin/env node</span>
<span class="hljs-keyword">var</span> webpack = <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;webpack&quot;</span>);
<span class="hljs-keyword">var</span> <span class="hljs-title class_">WebpackDevServer</span> = <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;webpack-dev-server&quot;</span>);
<span class="hljs-keyword">var</span> config = <span class="hljs-built_in">require</span>(<span class="hljs-string">&quot;./webpack.config&quot;</span>);

<span class="hljs-keyword">new</span> <span class="hljs-title class_">WebpackDevServer</span>(<span class="hljs-title function_">webpack</span>(config), {
  <span class="hljs-attr">contentBase</span>: <span class="hljs-string">&quot;http://localhost:4001&quot;</span>,
  <span class="hljs-attr">publicPath</span>: config.<span class="hljs-property">output</span>.<span class="hljs-property">publicPath</span>,
  <span class="hljs-attr">hot</span>: <span class="hljs-literal">true</span>,
}).<span class="hljs-title function_">listen</span>(<span class="hljs-number">4001</span>, <span class="hljs-string">&quot;0.0.0.0&quot;</span>, <span class="hljs-keyword">function</span> (<span class="hljs-params">err, result</span>) {
  <span class="hljs-keyword">if</span> (err) <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">error</span>(err);
  <span class="hljs-variable language_">console</span>.<span class="hljs-title function_">log</span>(<span class="hljs-string">&quot;webpack-dev-server running on port 4001&quot;</span>);
});

<span class="hljs-comment">// Exit on end of STDIN</span>
process.<span class="hljs-property">stdin</span>.<span class="hljs-title function_">resume</span>();
process.<span class="hljs-property">stdin</span>.<span class="hljs-title function_">on</span>(<span class="hljs-string">&quot;end&quot;</span>, <span class="hljs-keyword">function</span> (<span class="hljs-params"></span>) {
  process.<span class="hljs-title function_">exit</span>(<span class="hljs-number">0</span>);
});
</code></pre>
<p>That last last bit is there to make the process shut down properly when Phoenix shuts down. (A big thank you to <a href="http://twitter.com/josevalim" class="external-link">josevalim</a> for guiding me in figuring that out, for being such a seemingly nice guy and of course for making Elixir!)</p>
<p>Don’t forget to make it executable:</p>
<pre><code class="hljs language-sh">$ <span class="hljs-built_in">chmod</span> +x webpack.devserver.js
</code></pre>
<p>We need to tell Phoenix to run this instead of Brunch, so open up <code>config/dev.exs</code> and the change <code>watchers:</code> line to include our dev server instead:</p>
<pre><code class="hljs language-elixir">config <span class="hljs-symbol">:my_app</span>, <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Endpoint</span>,
  <span class="hljs-symbol">http:</span> [<span class="hljs-symbol">port:</span> <span class="hljs-number">4000</span>],
  <span class="hljs-symbol">debug_errors:</span> <span class="hljs-literal">true</span>,
  <span class="hljs-symbol">code_reloader:</span> <span class="hljs-literal">true</span>,
  <span class="hljs-symbol">cache_static_lookup:</span> <span class="hljs-literal">false</span>,
  <span class="hljs-symbol">watchers:</span> [{<span class="hljs-title class_">Path</span>.expand(<span class="hljs-string">&quot;webpack.devserver.js&quot;</span>), []}]
</code></pre>
<p>And let’s just cut Phoenix some slack and tell it not to watch the assets:</p>
<pre><code class="hljs language-elixir">config <span class="hljs-symbol">:my_app</span>, <span class="hljs-title class_">MyApp</span>.<span class="hljs-title class_">Endpoint</span>,
  <span class="hljs-symbol">live_reload:</span> [
    <span class="hljs-symbol">patterns:</span> [
      <span class="hljs-comment"># ~r{priv/static/.*(js|css|png|jpeg|jpg|gif)$},</span>
      <span class="hljs-regex">~r{web/views/.*(ex)$}</span>,
      <span class="hljs-regex">~r{web/templates/.*(eex)$}</span>
    ]
  ]
</code></pre>
<p>OK, let’s make our entry file, <code>web/static/js/bundle.js</code>:</p>
<pre><code class="hljs language-js"><span class="hljs-keyword">import</span> <span class="hljs-title class_">React</span> <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;react&quot;</span>;
<span class="hljs-keyword">import</span> <span class="hljs-title class_">App</span> <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;./App&quot;</span>;

<span class="hljs-title class_">React</span>.<span class="hljs-title function_">render</span>(<span class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">App</span> /&gt;</span></span>, <span class="hljs-variable language_">document</span>.<span class="hljs-title function_">getElementById</span>(<span class="hljs-string">&quot;root&quot;</span>));
</code></pre>
<p>This renders our App (that we haven’t made yet) to an element with the id <code>root</code> (that we also haven’t made yet). Splitting your React components into separate files let’s react-hot-loader reload them independently from each other.</p>
<p>Here’s a simple <code>web/static/js/App.js</code>:</p>
<pre><code class="hljs language-js"><span class="hljs-keyword">import</span> <span class="hljs-title class_">React</span>, { <span class="hljs-title class_">Component</span> } <span class="hljs-keyword">from</span> <span class="hljs-string">&quot;react&quot;</span>;

<span class="hljs-keyword">export</span> <span class="hljs-keyword">default</span> <span class="hljs-keyword">class</span> <span class="hljs-title class_">App</span> <span class="hljs-keyword">extends</span> <span class="hljs-title class_ inherited__">Component</span> {
  <span class="hljs-title function_">render</span>(<span class="hljs-params"></span>) {
    <span class="hljs-keyword">return</span> (
      <span class="language-xml"><span class="hljs-tag">&lt;<span class="hljs-name">div</span>&gt;</span>
        <span class="hljs-tag">&lt;<span class="hljs-name">h1</span>&gt;</span>This app is hot!<span class="hljs-tag">&lt;/<span class="hljs-name">h1</span>&gt;</span>
      <span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span></span>
    );
  }
}
</code></pre>
<p>So far, so good. Now we just need some html document to render it in.</p>
<p>Edit <code>web/templates/layout/app.html.eex</code>:</p>
<pre><code class="hljs language-html"><span class="hljs-meta">&lt;!DOCTYPE <span class="hljs-keyword">html</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">html</span> <span class="hljs-attr">lang</span>=<span class="hljs-string">&quot;en&quot;</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">head</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">charset</span>=<span class="hljs-string">&quot;utf-8&quot;</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">http-equiv</span>=<span class="hljs-string">&quot;X-UA-Compatible&quot;</span> <span class="hljs-attr">content</span>=<span class="hljs-string">&quot;IE=edge&quot;</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">&quot;viewport&quot;</span> <span class="hljs-attr">content</span>=<span class="hljs-string">&quot;width=device-width, initial-scale=1&quot;</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">&quot;description&quot;</span> <span class="hljs-attr">content</span>=<span class="hljs-string">&quot;&quot;</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">&quot;author&quot;</span> <span class="hljs-attr">content</span>=<span class="hljs-string">&quot;&quot;</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>Hello Phoenix!<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">head</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">body</span>&gt;</span>
    &lt;%= @inner %&gt;
    &lt;%= if Mix.env == :dev do %&gt;
      <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">&#x27;http://localhost:4001/bundle.js&#x27;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
    &lt;% else %&gt;
      <span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">src</span>=<span class="hljs-string">&quot;&lt;%= static_path(@conn, &quot;</span>/<span class="hljs-attr">js</span>/<span class="hljs-attr">bundle.js</span>&quot;) %&gt;</span>&quot;&gt;<span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
    &lt;% end %&gt;
  <span class="hljs-tag">&lt;/<span class="hljs-name">body</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">html</span>&gt;</span>
</code></pre>
<p>Remember that our dev server is running on <code>:4001</code>. We want to use it’s <code>bundle.js</code> in dev and a built one in production.</p>
<p>The only thing left is the element with id <code>root</code>. Let’s put it in <code>web/templates/pages/index.html.eex</code>:</p>
<pre><code class="hljs language-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">&quot;root&quot;</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>And we’re done! Now go open <code>http://localhost:4000</code>, edit <code>App.js</code> and behold the magic of our hot reloading gods!</p>
<h3 id="addendum%3A-production" tabindex="-1"><a href="#production" name='production'>Addendum: Production</a></h3>
<p>Phoenix compiles all it’s assets with the task <code>phoenix.digest</code> which you’re supposed to run before deploying. We can just remember to run <code>webpack</code> beforehand — or we can make our own digest task.</p>
<p>Here’s <code>lib/mix/tasks/digest.ex</code>:</p>
<pre><code class="hljs language-elixir"><span class="hljs-class"><span class="hljs-keyword">defmodule</span> <span class="hljs-title">Mix.Tasks.MyApp.Digest</span></span> <span class="hljs-keyword">do</span>
  <span class="hljs-keyword">use</span> <span class="hljs-title class_">Mix</span>.<span class="hljs-title class_">Task</span>

  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">run</span></span>(args) <span class="hljs-keyword">do</span>
    <span class="hljs-title class_">Mix</span>.<span class="hljs-title class_">Shell</span>.<span class="hljs-title class_">IO</span>.cmd <span class="hljs-string">&quot;./node_modules/webpack/bin/webpack.js&quot;</span>
    <span class="hljs-symbol">:ok</span> = <span class="hljs-title class_">Mix</span>.<span class="hljs-title class_">Tasks</span>.<span class="hljs-title class_">Phoenix</span>.<span class="hljs-title class_">Digest</span>.run(args)
  <span class="hljs-keyword">end</span>
<span class="hljs-keyword">end</span>
</code></pre>
<p>Let’s be fancy and override the original task so new developers or deployment scripts don’t need to know about our special setup. Open <code>mix.exs</code> and alias the original to our new task:</p>
<pre><code class="hljs language-elixir"><span class="hljs-class"><span class="hljs-keyword">defmodule</span> <span class="hljs-title">MyApp.Mixfile</span></span> <span class="hljs-keyword">do</span>
  <span class="hljs-comment"># ...</span>
  <span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">project</span></span> <span class="hljs-keyword">do</span>
    [ <span class="hljs-comment"># ...</span>
      <span class="hljs-symbol">aliases:</span> [<span class="hljs-string">&quot;phoenix.digest&quot;</span>: <span class="hljs-string">&quot;my_app.digest&quot;</span>]]
  <span class="hljs-keyword">end</span>
  <span class="hljs-comment"># ...</span>
<span class="hljs-keyword">end</span>
</code></pre>
<p>Try <code>mix phoenix.digest</code> and see that webpack runs first.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2015/2015-07-16-react-hot-loader-and-phoenix</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2015/2015-07-16-react-hot-loader-and-phoenix</guid>
            <pubDate>Thu, 16 Jul 2015 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Force-update text shortcuts in OS X Yosemite]]></title>
            <description><![CDATA[<p>My text shortcuts never synced when I recently set up my new Macbook and so I was left inserting <em>all my emojis</em> using <code>ctrl+space</code> and using my mouse like you would if you weren’t communicating primarily by thumbs-up emoji like me 👍🏼</p>
<p>So, to force a refresh:</p>
<ol>
<li>Turn off <strong>iCloud Drive</strong></li>
<li><code>rm -rf ~Library/Mobile Documents/com~apple~TextInput</code></li>
<li>Turn <strong>iCloud Drive</strong> back on</li>
</ol>
]]></description>
            <link>https://mikkelmalmberg.com/2015/2015-05-12-force-update-os-x-text-shortcuts</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2015/2015-05-12-force-update-os-x-text-shortcuts</guid>
            <pubDate>Tue, 12 May 2015 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Open every link in Safari's Reading List in tabs]]></title>
            <description><![CDATA[<p><strong>Use Safari’s Reading List as an <em>inbox</em>.</strong></p>
<p>When you come across some link or page that you would like to look into at some point just not right now, hit <code>cmd+shift+d</code> on your mac or use the share sheet available almost everywhere on your iOS device and add it to Reading List.</p>
<p>Then when the time is right explode that thing into separate tabs and purge through them.</p>
<pre><code class="hljs language-ruby"><span class="hljs-meta">#!/usr/bin/env ruby</span>
<span class="hljs-comment"># $ gem install CFPropertyList</span>
<span class="hljs-keyword">require</span> <span class="hljs-string">&#x27;cfpropertylist&#x27;</span>

path = <span class="hljs-title class_">File</span>.expand_path <span class="hljs-string">&#x27;~/Library/Safari/Bookmarks.plist&#x27;</span>
plist = <span class="hljs-title class_">CFPropertyList::List</span>.new <span class="hljs-symbol">file:</span> path

list = plist.value.value[<span class="hljs-string">&quot;Children&quot;</span>].value.select <span class="hljs-keyword">do</span> |<span class="hljs-params">item</span>|
  <span class="hljs-keyword">if</span> title = item.value[<span class="hljs-string">&quot;Title&quot;</span>]
    title.value == <span class="hljs-string">&#x27;com.apple.ReadingList&#x27;</span>
  <span class="hljs-keyword">end</span>
<span class="hljs-keyword">end</span>.first.value[<span class="hljs-string">&quot;Children&quot;</span>].value

bookmarks = list.map <span class="hljs-keyword">do</span> |<span class="hljs-params">item</span>|
  item.value[<span class="hljs-string">&quot;URLString&quot;</span>].value
<span class="hljs-keyword">end</span>.reverse

puts <span class="hljs-string">&quot;Opening <span class="hljs-subst">#{bookmarks.count}</span> tabs &quot;</span>

bookmarks.each <span class="hljs-keyword">do</span> |<span class="hljs-params">url</span>|
  <span class="hljs-string">`osascript -e &#x27;tell application &quot;Safari&quot; to tell window 1 to make new tab with properties {URL:&quot;<span class="hljs-subst">#{url}</span>&quot;}&#x27;`</span>
  print <span class="hljs-string">&#x27;.&#x27;</span>
<span class="hljs-keyword">end</span>

puts <span class="hljs-string">&#x27;&#x27;</span>
</code></pre>
<p><em>Clear all items</em> in Reading List and just re-add any linkif you’re still undecided about it.</p>
<p>The script also works perfectly inside <em>Run Shell Script</em> in Automator if you want a .app.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2015/2015-04-23-open-every-link-in-safari-s-reading-list-in-tabs</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2015/2015-04-23-open-every-link-in-safari-s-reading-list-in-tabs</guid>
            <pubDate>Thu, 23 Apr 2015 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[foundation-grid]]></title>
            <description><![CDATA[<p>For years I’ve been using <a href="http://zurb.com" class="external-link">ZURB</a>’s <a href="http://foundation.zurb.com" class="external-link">Foundation</a> as a starting point for new sites. It’s really great — but also kind of huge. And the internals are very advanced so picking out parts isn’t as easy as it probably could be. But here’s the grid for your blocky pleasure:</p>
<figure><img src="http://s3.brnbw.com/68747470733a2f2f63646e2e7261776769742e636f6d2f6d696b6b65722f666f756e646174696f6e2d677269642f6d61737465722f73637265656e73686f742e706e67.png" alt="screenshot"></figure>
<p>Get it: <a href="http://github.com/mikker/foundation-grid" class="external-link">foundation-grid</a></p>
]]></description>
            <link>https://mikkelmalmberg.com/2015/2015-04-21-foundation-grid</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2015/2015-04-21-foundation-grid</guid>
            <pubDate>Tue, 21 Apr 2015 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[blank]]></title>
            <description><![CDATA[<p>Oh, where do I even start.</p>
<p>Now and then I like to sport a completely stripped down Safari, hiding the toolbar and everything else:</p>
<figure><img src="http://s3.brnbw.com/Screen-Shot-2015-04-17-10-52-27.png" alt="Stripfari"></figure>
<p>Look at that! <em>Just</em> the content. Just me and my one million tabs. Only problem: when I make a new tab, the address bar isn’t focused as it is, when the toolbar is visible. So you need to press <code>cmd + l</code> yourself like an animal.</p>
<p>So we make a start-page for new tabs. But there’s no api for focusing the browser chrome. But there <em>is</em> AppleScript (there’s always AppleScript).</p>
<p>We’ll just make a tiny server that serves a page with one button that it clicks itself. And then make that button call some Applescript. That’s definately not an insane solution to a very serious <em>problem</em>.</p>
<p>Sounds good? You should <a href="https://github.com/mikker/blank" class="external-link">try it out</a>.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2015/2015-04-17-blank</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2015/2015-04-17-blank</guid>
            <pubDate>Fri, 17 Apr 2015 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Make Github responsive with 9 lines of CSS]]></title>
            <description><![CDATA[<p>My browser windows are seldomly as wide as Github’s layout. This works great for most of the websites that I visit - yay responsive - but Github’s layout is still too wiiiiiiide.</p>
<p>Taking matters into my own hands I opened up Web Inspector and found out that you can make it (naively) responsive with relatively few lines of css:</p>
<script src="https://gist.github.com/mikker/bcdabb91dbdb8fbe38a7.js"></script>
<p>Please do fork it and improve it.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2014/2014-11-12-make-github-responsive-with-9-lines-of-css</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2014/2014-11-12-make-github-responsive-with-9-lines-of-css</guid>
            <pubDate>Wed, 12 Nov 2014 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Getting your locales in line before going on your dokku adventure]]></title>
            <description><![CDATA[<p><strong>Update 2015-05-12:</strong> Seems the correct file to edit is <code>/etc/default/locale</code>:</p>
<pre><code class="hljs language-sh"><span class="hljs-built_in">export</span> LANGUAGE=<span class="hljs-string">&quot;en_US.UTF-8&quot;</span>
<span class="hljs-built_in">echo</span> <span class="hljs-string">&#x27;LANGUAGE=&quot;en_US.UTF-8&quot;&#x27;</span> &gt;&gt; /etc/default/locale
<span class="hljs-built_in">echo</span> <span class="hljs-string">&#x27;LC_ALL=&quot;en_US.UTF-8&quot;&#x27;</span> &gt;&gt; /etc/default/locale
</code></pre>
<p>Then reboot.</p>
<hr>
<p>I’m really digging <a href="https://github.com/dokku-alt/dokku-alt" title="dokku-alt/dokku-alt" class="external-link">dokku-alt</a>. Dokku is a simple way of setting up a deployment setup as easy as Heroku’s. Dokku-alt is that plus some bundled plugins.</p>
<p>I had some troubles though with the Postgresql databases being created with ASCII encodings. So before you install and setup dokku get your locales in order - make your <code>/etc/locales</code> look like:</p>
<pre><code class="hljs language-sh">LANG=en_US.utf-8
LANGUAGE=en_US.utf-8
LC_CTYPE=<span class="hljs-string">&quot;en_US.utf-8&quot;</span>
LC_NUMERIC=<span class="hljs-string">&quot;en_US.utf-8&quot;</span>
LC_TIME=<span class="hljs-string">&quot;en_US.utf-8&quot;</span>
LC_COLLATE=<span class="hljs-string">&quot;en_US.utf-8&quot;</span>
LC_MONETARY=<span class="hljs-string">&quot;en_US.utf-8&quot;</span>
LC_MESSAGES=<span class="hljs-string">&quot;en_US.utf-8&quot;</span>
LC_PAPER=<span class="hljs-string">&quot;en_US.utf-8&quot;</span>
LC_NAME=<span class="hljs-string">&quot;en_US.utf-8&quot;</span>
LC_ADDRESS=<span class="hljs-string">&quot;en_US.utf-8&quot;</span>
LC_TELEPHONE=<span class="hljs-string">&quot;en_US.utf-8&quot;</span>
LC_MEASUREMENT=<span class="hljs-string">&quot;en_US.utf-8&quot;</span>
LC_IDENTIFICATION=<span class="hljs-string">&quot;en_US.utf-8&quot;</span>
LC_ALL=en_US.utf-8
</code></pre>
<p>Source it (or reboot) and then set up dokku.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2014/2014-11-11-getting-your-locales-in-line-before-dokku</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2014/2014-11-11-getting-your-locales-in-line-before-dokku</guid>
            <pubDate>Tue, 11 Nov 2014 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Install Qt on OS X Yosemite (Beta 3)]]></title>
            <description><![CDATA[<p>To install <a href="http://qt-project.org/" class="external-link">Qt</a> on Yosemite (Beta 3 right now) using <a href="http://brew.sh/" class="external-link">homebrew</a>, just act as if you’re on Mavericks and it will work fine:</p>
<p>Edit <code>/usr/local/Library/Homebrew/os/mac/version.rb</code>:</p>
<pre><code class="hljs language-ruby"><span class="hljs-keyword">def</span> <span class="hljs-title function_">to_sym</span>
  <span class="hljs-keyword">return</span> <span class="hljs-symbol">:mavericks</span> <span class="hljs-comment"># &lt;-- stupid hack.</span>
  <span class="hljs-variable constant_">SYMBOLS</span>.invert.fetch(<span class="hljs-variable">@version</span>) { <span class="hljs-symbol">:dunno</span> }
<span class="hljs-keyword">end</span>
</code></pre>
<p>Then when you’re done; clean up after yourself!</p>
]]></description>
            <link>https://mikkelmalmberg.com/2014/2014-07-15-install-qt-on-os-x-yosemite</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2014/2014-07-15-install-qt-on-os-x-yosemite</guid>
            <pubDate>Tue, 15 Jul 2014 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Rename current TMUX session to current directory's basename]]></title>
            <description><![CDATA[<p>I like having a seperate TMUX session per project I’m currently working on. So a numbered list of sessions quickly becomes unhandy.</p>
<pre><code class="hljs language-sh">tmux rename-session `<span class="hljs-built_in">basename</span> $(<span class="hljs-built_in">pwd</span>)`
</code></pre>
<p><code>ctrl-b s</code> and we get this:</p>
<pre><code class="hljs"><span class="hljs-attribute">(0) + angular-firmafon</span><span class="hljs-punctuation">:</span> <span class="hljs-string">1 windows (attached)</span>
<span class="hljs-attribute">(1) + blog</span><span class="hljs-punctuation">:</span> <span class="hljs-string">3 windows (attached)</span>
<span class="hljs-attribute">(2) + wallboard</span><span class="hljs-punctuation">:</span> <span class="hljs-string">2 windows</span>
</code></pre>
<p>Bonus tip: Put <code>bind ^S switch-client -l</code> in your <code>.tmux.conf</code>. Now <code>ctrl-b ctrl-s</code> toggles between the current and last session.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2014/2014-05-05-rename-current-tmux-session-to-current-directorys-basename</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2014/2014-05-05-rename-current-tmux-session-to-current-directorys-basename</guid>
            <pubDate>Mon, 05 May 2014 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Open photo GPS location in Apple Maps using ruby]]></title>
            <description><![CDATA[<p>Dr. Drang posted a <a href="http://www.leancrew.com/all-this/2014/02/photo-locations-with-apple-maps/" class="external-link">lengthy article and script</a> to open a given photo’s EXIF GPS location in Apple Maps. He’s using python and a library called “PIL”. I liked the idea but couldn’t, no matter what I tried, get the damn thing to install and what is python anyway? I like ruby! I’m sure there’s an easier way?</p>
<p>Turns out there was.</p>
<p>The rubygem <code>exifr</code> reads EXIF data like a champ, so let’s get it:</p>
<pre><code class="hljs language-sh">$ <span class="hljs-built_in">sudo</span> /usr/bin/gem install exifr
</code></pre>
<p>I’m using the absolute path to <code>gem</code>, because we want to end up using this as a system service, and system services use system ruby.</p>
<p>Now, here’s the script. Save it as something like <code>~/bin/map.rb</code>:</p>
<pre><code class="hljs language-ruby"><span class="hljs-meta">#!/usr/bin/env ruby</span>
<span class="hljs-keyword">begin</span>
  <span class="hljs-keyword">require</span> <span class="hljs-string">&#x27;exifr&#x27;</span>
<span class="hljs-keyword">rescue</span> <span class="hljs-title class_">LoadError</span>
  <span class="hljs-keyword">require</span> <span class="hljs-string">&#x27;rubygems&#x27;</span>
  <span class="hljs-keyword">require</span> <span class="hljs-string">&#x27;exifr&#x27;</span>
<span class="hljs-keyword">end</span>

usage = <span class="hljs-string">&lt;&lt;-USAGE
usage: map.rb IMAGE_PATH
USAGE</span>

path = <span class="hljs-variable constant_">ARGV</span>.shift

<span class="hljs-keyword">if</span> path.<span class="hljs-literal">nil</span>?
  puts usage
  exit(<span class="hljs-number">0</span>)
<span class="hljs-keyword">end</span>

exif = <span class="hljs-variable constant_">EXIFR</span><span class="hljs-symbol">:</span><span class="hljs-symbol">:JPEG</span>.new(path)
<span class="hljs-keyword">if</span> coords = exif.gps
  system <span class="hljs-string">&quot;open &#x27;http://maps.apple.com/?q=<span class="hljs-subst">#{coords.latitude}</span>,<span class="hljs-subst">#{coords.longitude}</span>&#x27;&quot;</span>
<span class="hljs-keyword">else</span>
  puts <span class="hljs-string">&quot;No GPS data for <span class="hljs-subst">#{path}</span>&quot;</span>
<span class="hljs-keyword">end</span>
</code></pre>
<p>Remember to <code>chmod +x</code> it and call it like the Doctor does in a service like this, substituting the path to where you saved the script:</p>
<figure><img src="http://farm4.staticflickr.com/3712/12409785794_6f3b45c9fd_o.png" alt=""></figure>
]]></description>
            <link>https://mikkelmalmberg.com/2014/2014-02-13-open-photo-gps-location-in-apple-maps-using-ruby</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2014/2014-02-13-open-photo-gps-location-in-apple-maps-using-ruby</guid>
            <pubDate>Thu, 13 Feb 2014 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Update Safari from vim with AppleScript]]></title>
            <description><![CDATA[<p>When Livereload is too much and cmd-tab’ing too little, there’s always this AppleScript.</p>
<pre><code class="hljs language-sh"><span class="hljs-meta">#!/bin/sh</span>
osascript -e <span class="hljs-string">&#x27;tell application &quot;Safari&quot;
  set _url to URL of current tab of front window
  set URL of current tab of front window to _url
end tell&#x27;</span>
</code></pre>
<p>Put it in your PATH, chmod it +x, and map it to what you like in vim:</p>
<pre><code class="hljs language-vim"><span class="hljs-keyword">map</span> ,r :<span class="hljs-keyword">call</span> <span class="hljs-built_in">system</span>(<span class="hljs-string">&quot;update_safari.sh&quot;</span>)
</code></pre>
<p>You could even auto-run it when you save the current buffer:</p>
<pre><code class="hljs language-vim"><span class="hljs-keyword">autocmd</span> BufWritePost <span class="hljs-symbol">&lt;buffer&gt;</span> :<span class="hljs-keyword">call</span> <span class="hljs-built_in">system</span>(<span class="hljs-string">&quot;update_safari.sh&quot;</span>)
</code></pre>
<p>Replace <code>&lt;buffer&gt;</code> with <code>*</code> to do it in every buffer.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2014/2014-01-14-update-safari-from-shell-with-applescript</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2014/2014-01-14-update-safari-from-shell-with-applescript</guid>
            <pubDate>Tue, 14 Jan 2014 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[OS X's open with support for STDIN]]></title>
            <description><![CDATA[<p>OS X’s <code>open</code> command is great and I use it many times a day. But several times I’ve stumbled through some command that outputs something only to be reminded once again that <code>open</code> doesn’t support piping of input. Let’s fix that.</p>
<pre><code class="hljs language-sh"><span class="hljs-meta">#!/bin/sh</span>
<span class="hljs-comment"># Put a dash at the end of open to use stdin as arguments</span>
<span class="hljs-comment"># usage: echo &quot;TextEdit&quot; | open -a -</span>
<span class="hljs-keyword">for</span> last; <span class="hljs-keyword">do</span> <span class="hljs-literal">true</span>; <span class="hljs-keyword">done</span>
<span class="hljs-keyword">if</span> [ <span class="hljs-string">&quot;<span class="hljs-variable">$last</span>&quot;</span> == <span class="hljs-string">&#x27;-&#x27;</span> ]; <span class="hljs-keyword">then</span>
  arg=`<span class="hljs-built_in">cat</span>`
  cmd=`<span class="hljs-built_in">echo</span> <span class="hljs-variable">$@</span> | sed -e <span class="hljs-string">&quot;s/-$/<span class="hljs-variable">${arg}</span>/&quot;</span>`
  /usr/bin/open <span class="hljs-variable">$cmd</span>
<span class="hljs-keyword">else</span>
  /usr/bin/open <span class="hljs-variable">$@</span>
<span class="hljs-keyword">fi</span>
</code></pre>
<p>This add a check to open: If the last argument is a dash (-), then use STDIN as the argument to the original <code>open</code>.</p>
<p>Put it somewhere that’s in your <code>$PATH</code> before <code>/usr/bin</code> is and you’re good!</p>
]]></description>
            <link>https://mikkelmalmberg.com/2014/2014-01-07-os-x-s-open-with-stdin</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2014/2014-01-07-os-x-s-open-with-stdin</guid>
            <pubDate>Tue, 07 Jan 2014 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Get the true mime type of a file in Ruby]]></title>
            <description><![CDATA[<p>I was kind of disappointed to find out that the ruby <a href="http://mime-types.rubyforge.org" class="external-link">mime-type gem</a> just looks at the file extension instead of getting the true mime type. This can cause trouble. Say we’re having the user upload files to our webpage - but we only want .mp3s. Without checking the true mime-type the user will be let through if he just renames his file to .mp3.</p>
<p>If you’re lucky enough to be on Unix though, you can get the true mime type by using the shell command <code>file</code>.</p>
<pre><code class="hljs language-ruby">true_mime_type = <span class="hljs-string">`file --mime -b mp4-renamed-to.mp3`</span>.chomp
  <span class="hljs-comment"># =&gt; video/mp4; charset=binary</span>
</code></pre>
<p>There we are.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2013/2013-10-30-get-the-true-mime-type-of-a-file-in-ruby</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2013/2013-10-30-get-the-true-mime-type-of-a-file-in-ruby</guid>
            <pubDate>Wed, 30 Oct 2013 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[MobilePay's undocumented URL schemes]]></title>
            <description><![CDATA[<p>I made a <a href="https://twitter.com/mikker/status/395153819904270336" class="external-link">request on
Twitter</a> for url schemes
in the Danish app for easy mobile money transfers
<a href="http://www.danskebank.dk/da-dk/privat/selvbetjening/produkter/pages/mobilepay.aspx" class="external-link">MobilePay</a>.
Turns out it already had
<a href="https://twitter.com/f0gh/status/395155698101026816" class="external-link">some</a>.</p>
<pre><code class="hljs"><span class="hljs-attribute">mobilepay</span>://send?amount=<span class="hljs-number">100</span>&amp;phone=<span class="hljs-number">88888888</span>
<span class="hljs-attribute">mobilepay</span>://request?amount=<span class="hljs-number">100</span>&amp;phone=<span class="hljs-number">88888888</span>
</code></pre>
<p>Perfect! This makes for perfect <a href="http://contrast.co/launch-center-pro/" class="external-link">Launch Center
Pro</a> actions.</p>
<p>![Action](/images/2013-10-30 at 16.02.33.png)</p>
]]></description>
            <link>https://mikkelmalmberg.com/2013/2013-10-30-mobilepays-undocumented-url-schemes</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2013/2013-10-30-mobilepays-undocumented-url-schemes</guid>
            <pubDate>Wed, 30 Oct 2013 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Completely turn off Mac OS X Dashboard]]></title>
            <description><![CDATA[<p>Mavericks brings yet another version of Apple’s OS X and the continued existence of Dashboard confuses everyone. Here’s how to completely turn it off:</p>
<pre><code class="hljs language-sh">$ defaults write com.apple.dashboard mcx-disabled -boolean YES
</code></pre>
<p>Also for the hardcore — Completely turn off Desktop:</p>
<pre><code class="hljs language-sh">$ defaults write com.apple.desktopservices DSDontWriteNetworkStores -bool <span class="hljs-literal">true</span>
</code></pre>
<p>The folder will still exist it just wont be your <em>desktop</em>. You might have to re-log in for it to take effect. With these two power-settings you’re ready to concentrate and do your best procrastination on something better than <em>files</em> or <em>widgets</em> – fx Twitter.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2013/2013-10-27-completely-turn-off-mac-os-x-dashboard</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2013/2013-10-27-completely-turn-off-mac-os-x-dashboard</guid>
            <pubDate>Sun, 27 Oct 2013 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Editorial workflow: extend selection one word backwards]]></title>
            <description><![CDATA[<p><a href="http://omz-software.com/editorial/" title="Editorial for iPad" class="external-link">Editorial</a> is my favourite iPad editor. Here’s <a href="http://www.editorial-workflows.com/workflow/5245546637819904/EPQ8ocEnB0w" title="Extend backwards" class="external-link">a workflow</a> that I made. It extends the current selection one word backwards.</p>
<p><a href="http://www.editorial-workflows.com/workflow/5245546637819904/EPQ8ocEnB0w" title="Extend backwards" class="external-link">![Screenshot](/images/2013-10-20 at 20.23.png)</a></p>
<p>Because of how Editorial workflows work I had to do a bit of hackery to make it work. The idea is to find the starting position of the word just before the current selection. My first version looped through every single word up till the selection but that was unusably slow on large documents. So this version only loops through every word in the 50 letters leading up to the selection. A hack, but it works really well.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2013/2013-10-20-editorial-workflow-extend-selection-one-word-backwards</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2013/2013-10-20-editorial-workflow-extend-selection-one-word-backwards</guid>
            <pubDate>Sun, 20 Oct 2013 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[A favourite from my vimrc: Full-height and full-width splits]]></title>
            <description><![CDATA[<p>I use vim split windows all the time. Instead of tabbing between files I just open another split. Especially if the change is small.</p>
<p>Here’s to of my favourties from my <code>vimrc</code>: <code>&lt;c-w&gt;S</code> to open a full-width, horizontal split topmost and <code>&lt;c-w&gt;V</code> to open a full-height, vertical split rightmost.</p>
<pre><code class="hljs language-vim"><span class="hljs-comment">&quot; Open splits at top level</span>
<span class="hljs-keyword">map</span> <span class="hljs-symbol">&lt;c-w&gt;</span>V :<span class="hljs-keyword">botright</span> :<span class="hljs-keyword">vertical</span> :<span class="hljs-keyword">split</span><span class="hljs-symbol">&lt;cr&gt;</span>
<span class="hljs-keyword">map</span> <span class="hljs-symbol">&lt;c-w&gt;</span>S :<span class="hljs-keyword">topleft</span> :<span class="hljs-keyword">split</span><span class="hljs-symbol">&lt;cr&gt;</span>
</code></pre>
<p>This is what it could look like:</p>
<p>![Vim](/images/2013-10-19 15_14_27.gif)</p>
<p>Pretty simple. Pretty neat.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2013/2013-10-19-a-favourite-from-my-vimrc-full-height-and-full-width-splits</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2013/2013-10-19-a-favourite-from-my-vimrc-full-height-and-full-width-splits</guid>
            <pubDate>Sat, 19 Oct 2013 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[nb - a zsh function to change or create new git feature branches (with completion)]]></title>
            <description><![CDATA[<p><code>nb</code> (<strong>n</strong>ew <strong>b</strong>ranch) is my very simplified method of creating new feature og fix branches in git.</p>
<p>When I’m working on fixes or features in an existing project, I check out a new branch. This also makes it way easier to create easily understood <a href="/2013/10/14/one-shot-command-to-create-a-github-pull-request-and-open-it-in-your-browser.html">pull-requests</a> when you need to get it reviewed.</p>
<pre><code class="hljs language-sh"><span class="hljs-comment"># nb.zsh</span>
<span class="hljs-function"><span class="hljs-title">nb</span></span> () {
  <span class="hljs-keyword">if</span> [[ <span class="hljs-variable">$#</span> &gt; 0 ]]
  <span class="hljs-keyword">then</span>
    <span class="hljs-keyword">if</span> [[ $(git branch | <span class="hljs-built_in">tr</span> -d <span class="hljs-string">&#x27;* &#x27;</span> | grep <span class="hljs-string">&quot;<span class="hljs-variable">$1</span>&quot;</span>) != <span class="hljs-string">&quot;&quot;</span> ]]
    <span class="hljs-keyword">then</span>
      git checkout <span class="hljs-variable">$1</span>
    <span class="hljs-keyword">else</span>
      git checkout master &amp;&amp; git checkout -b <span class="hljs-variable">$1</span>
    <span class="hljs-keyword">fi</span>
  <span class="hljs-keyword">else</span>
    git branch | <span class="hljs-built_in">tr</span> -d <span class="hljs-string">&#x27;* &#x27;</span>
  <span class="hljs-keyword">fi</span>
}
<span class="hljs-comment"># completion</span>
<span class="hljs-function"><span class="hljs-title">_nb</span></span>() { reply=($(git branch | <span class="hljs-built_in">tr</span> -d <span class="hljs-string">&#x27;* &#x27;</span> | xargs <span class="hljs-built_in">echo</span>)) }
<span class="hljs-built_in">compctl</span> -K _nb nb
</code></pre>
<p>Without any arguments it just lists the current, existing, local branches. These are the ones it will tab-complete. If the argument is an existing branch then check it out, if it’s not then create it based on master.</p>
<p>I’m using zsh and I’m not sure what it would take to make it work in bash. Probably not too much.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2013/2013-10-15-nb-a-zsh-function-to-change-or-create-new-git-feature-branches-with-completion</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2013/2013-10-15-nb-a-zsh-function-to-change-or-create-new-git-feature-branches-with-completion</guid>
            <pubDate>Tue, 15 Oct 2013 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[One-shot command to create a Github pull-request and open it in your browser]]></title>
            <description><![CDATA[<p>At <a href="https://firmafon.dk" class="external-link">Firmafon</a> we almost always concentrate updates into <a href="https://help.github.com/articles/using-pull-requests" class="external-link">Github</a>’s pull reqeusts. This provides a nice overview of the changes and an obvious place to discuss them. Here’s two scripts that I use to make this process even easier.</p>
<p>The first one’s called <code>last_commit_message</code>:</p>
<pre><code class="hljs"><span class="hljs-meta">#!/bin/sh</span>
git --no-pager <span class="hljs-built_in">log</span> -1 --pretty=%B | sed -e <span class="hljs-string">&quot;s/^ *//g&quot;</span> -e <span class="hljs-string">&quot;s/ *$//g&quot;</span> | <span class="hljs-built_in">tr</span> -d <span class="hljs-string">&quot;\n&quot;</span>
</code></pre>
<p>This outputs the last commit’s message, inline without anything else but the message.</p>
<p>The other is called <code>prl</code>:</p>
<pre><code class="hljs language-sh"><span class="hljs-meta">#!/bin/sh -x</span>
<span class="hljs-built_in">set</span> -e

last_msg=<span class="hljs-string">&quot;`last_commit_message`&quot;</span>
git push -u
url=`hub pull-request <span class="hljs-string">&quot;<span class="hljs-variable">$last_msg</span>&quot;</span>`
open <span class="hljs-string">&quot;<span class="hljs-variable">$url</span>&quot;</span>
</code></pre>
<p>This get’s the last commit’s message for use as the pull request’s title. Then it pushes to a remote branch.</p>
<p>Then using Github’s <a href="https://github.com/github/hub" class="external-link">hub</a> command (<code>brew install hub</code>) it creates a pull request from the current HEAD, catches the returned url and <code>open</code>’s it.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2013/2013-10-14-one-shot-command-to-create-a-github-pull-request-and-open-it-in-your-browser</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2013/2013-10-14-one-shot-command-to-create-a-github-pull-request-and-open-it-in-your-browser</guid>
            <pubDate>Mon, 14 Oct 2013 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Copy the URL of the current page and return - using Drafts for iOS and this bookmarklet]]></title>
            <description><![CDATA[<p>When I’ve read something and want to link to it or send it to a friend I need to grab the URL from Safari. This consists of tapping the minimized address bar, then tap the address bar, then tap a million times to make the Copy/Paste popup show, then copy. This is not easy.</p>
<p>With this bookmarklet in your Favorites folder, it’s as easy as tap, tap, tap and you’re done.</p>
<pre><code class="hljs"><span class="hljs-keyword">var</span> a=<span class="hljs-built_in">encodeURI</span>(<span class="hljs-variable language_">window</span>.<span class="hljs-property">location</span>.<span class="hljs-property">href</span>);<span class="hljs-variable language_">window</span>.<span class="hljs-property">location</span>=<span class="hljs-string">&#x27;drafts://x-callback-url/create?text=&#x27;</span>+a+<span class="hljs-string">&#x27;&amp;action=Copy%20to%20Clipboard&amp;x-success=&#x27;</span>+a;
</code></pre>
<p><a href="https://itunes.apple.com/en/app/drafts/id502385074?mt=8" class="external-link">Drafts</a> opens up, copies the url and sends you back to Safari.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2013/2013-10-13-copy-the-url-of-the-current-page-and-return-using-drafts-for-ios</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2013/2013-10-13-copy-the-url-of-the-current-page-and-return-using-drafts-for-ios</guid>
            <pubDate>Sun, 13 Oct 2013 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[Upload to imgur from Quicksilver]]></title>
            <description><![CDATA[<p>I’ve become very fond of attaching animated GIF’s of new UI elements when I create pull requests at <a href="http://firmafon.dk" class="external-link">Firmafon</a>. Recording a part of the screen is very easy using Quicksilver’s built-in screen recording and trimming features. Then when done, open the file in <a href="http://gifbrewery.com" class="external-link">GIF Brewery</a> and make it a gif. I usually lock the FPS to 15 and use the Simple Palette.</p>
<p>So far so good, we have a gif. Let’s put it somewhere we can reference. <a href="http://imgur.com" class="external-link">Imgur</a> is great and keeps the images around for a long enough time for our colleagues to see it on Github. Luckily a command-line client for imgur already exists so <a href="https://github.com/FigBug/imguru" class="external-link">grab imguru</a> from Github and put it in <code>~/bin</code> (or anywhere you’d like).</p>
<p>Quicksilver knows Applescript and supports custom actions in <code>~/Library/Application Support/Quicksilver/Actions</code>, so open up AppleScript Editor.app and make a script with the following:</p>
<pre><code class="hljs language-applescript">using terms <span class="hljs-keyword">from</span> <span class="hljs-built_in">application</span> <span class="hljs-string">&quot;Quicksilver&quot;</span>
  <span class="hljs-keyword">on</span> open theFile
    <span class="hljs-keyword">try</span>
      <span class="hljs-keyword">set</span> filePath <span class="hljs-keyword">to</span> <span class="hljs-keyword">POSIX path</span> <span class="hljs-keyword">of</span> theFile
      <span class="hljs-keyword">set</span> theCommand <span class="hljs-keyword">to</span> <span class="hljs-string">&quot;~/bin/imguru &#x27;&quot;</span> &amp; filePath &amp; <span class="hljs-string">&quot;&#x27;&quot;</span>
<span class="hljs-built_in">      return</span> <span class="hljs-built_in">do shell script</span> theCommand
    <span class="hljs-keyword">on</span> <span class="hljs-keyword">error</span> e <span class="hljs-built_in">number</span> n
<span class="hljs-built_in">      return</span> e
    <span class="hljs-keyword">end</span> <span class="hljs-keyword">try</span>
  <span class="hljs-keyword">end</span> open

  <span class="hljs-comment">-- Tell Quicksilver we only work with files</span>
  <span class="hljs-keyword">on</span> <span class="hljs-keyword">get</span> direct types
<span class="hljs-built_in">    return</span> {<span class="hljs-string">&quot;NSFilenamesPboardType&quot;</span>}
  <span class="hljs-keyword">end</span> <span class="hljs-keyword">get</span> direct types
<span class="hljs-keyword">end</span> using terms <span class="hljs-keyword">from</span>
</code></pre>
<p>Save it as <code>Upload to imgur.scpt</code> or something like it and you might have to restart Quicksilver and you’re there.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2013/2013-10-10-upload-to-imgur-from-quicksilver</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2013/2013-10-10-upload-to-imgur-from-quicksilver</guid>
            <pubDate>Thu, 10 Oct 2013 00:00:00 GMT</pubDate>
        </item>
        <item>
            <title><![CDATA[New day, new blog]]></title>
            <description><![CDATA[<p>A place for releasing stuff and explaining Gists.</p>
]]></description>
            <link>https://mikkelmalmberg.com/2013/2013-07-13-new-day-new-blog</link>
            <guid isPermaLink="false">https://mikkelmalmberg.com/2013/2013-07-13-new-day-new-blog</guid>
            <pubDate>Sat, 13 Jul 2013 19:04:22 GMT</pubDate>
        </item>
    </channel>
</rss>