<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>0atman</title>
    <description></description>
    <link>/</link>
    <atom:link href="/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Wed, 09 Feb 2022 13:32:55 +0000</pubDate>
    <lastBuildDate>Wed, 09 Feb 2022 13:32:55 +0000</lastBuildDate>
    <generator>Jekyll v3.9.1</generator>
    
      <item>
        <title>So You Want To Make A Fiction Podcast?</title>
        <description>&lt;p&gt;&lt;label for=&quot;lt logo&quot; class=&quot;margin-toggle&quot;&gt;⊕&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;lt logo&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;marginnote&quot;&gt;&lt;img class=&quot;fullwidth&quot; src=&quot;https://i.imgur.com/yUiuyWd.png&quot; /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;I started my first podcast, &lt;a href=&quot;http://lostterminal.com&quot;&gt;Lost Terminal&lt;/a&gt;, exactly a year ago, and I have now published four, ten-episode seasons, four patreon-exclusive special episodes, and shipped dozens of shirts and posters to fans.
This post contains everything I can think of to help you do the same.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h1 id=&quot;part-0-podcasts-are-fantastic&quot;&gt;Part 0: Podcasts are FANTASTIC.&lt;/h1&gt;

&lt;p&gt;They’re almost as simple as a blog to produce, but allow you to present your story or information in a much more evocative and personal medium: Voice, sound, and music.
Additionally, and unlike something like Youtube or Spotify, you retain total control. All you need, essentially, is a website to host MP3s, and an XML file that tells people where those MP3s are. There are plenty of services that will do this for you for a few dollars a month (I use Spreaker&lt;label for=&quot;spreaker&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;spreaker&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;&lt;a href=&quot;https://spreaker.com&quot;&gt;https://spreaker.com&lt;/a&gt; &lt;/span&gt;), but that’s what it boils down to: No gatekeepers, no monopolies, no algorithms.&lt;/p&gt;

&lt;p&gt;When you think of podcasts, you might think of the million talking-head interview or discussion shows. That’s not what I’m going to talk about here. For those to work, I think, you need a very different set of skills. I am going to talk about FICTION podcasts. Drama. Radio plays: Scripted, meaningful, careful, stories.
Think Welcome to Night Vale&lt;label for=&quot;wtnv&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;wtnv&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;&lt;a href=&quot;https://www.welcometonightvale.com&quot;&gt;https://www.welcometonightvale.com&lt;/a&gt; &lt;/span&gt;, Within the Wires&lt;label for=&quot;wtw&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;wtw&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;&lt;a href=&quot;https://www.nightvalepresents.com/withinthewires&quot;&gt;https://www.nightvalepresents.com/withinthewires&lt;/a&gt; &lt;/span&gt;, or Moonbase Theta, Out&lt;label for=&quot;mto&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;mto&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;&lt;a href=&quot;https://monkeymanproductions.com/moonbase-theta-out/&quot;&gt;https://monkeymanproductions.com/moonbase-theta-out/&lt;/a&gt; &lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;This essay is in two parts, a case study and a summary of what I’ve learned along the way.&lt;/p&gt;

&lt;h1 id=&quot;part-1-a-case-study&quot;&gt;Part 1: A Case Study&lt;/h1&gt;

&lt;p&gt;In July of 2020 I was burnt out. I took a week off from my job to get my head straight, and by thursday of that week I had decompressed enough to start thinking properly. I realised that I could make a really great fiction experience using the technology I had developed to make a few of my music videos, such as my cover of Want You Gone, by Jonathan Coulton, the Portal 2 credits song&lt;label for=&quot;drums&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;drums&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Fans of Lost Terminal may notice that I used the same drum pattern for the credits at the end of the episodes! &lt;/span&gt;:
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;iframe src=&quot;https://www.youtube.com/embed/zvLGFe_8yWU&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;The look of this 80s scrolling text on a CRT REALLY inspired me. I could make something retro, but futuristic! And so I started brainstorming what would become my podcast, Lost Terminal&lt;label for=&quot;ltbrainstorm&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;ltbrainstorm&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;&lt;a href=&quot;http://lostterminal.com&quot;&gt;http://lostterminal.com&lt;/a&gt; &lt;/span&gt;.&lt;/p&gt;

&lt;h2 id=&quot;working-within-my-constraints&quot;&gt;Working Within My Constraints&lt;/h2&gt;

&lt;p&gt;I had the seed of an idea: A computer that communicated through a text terminal. I’d never seen anything like that. But what of the story, and of the world? I had never done something like this before, so I took stock of my experience, both good and bad:&lt;/p&gt;

&lt;h3 id=&quot;good&quot;&gt;Good&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;I’m a music producer&lt;label for=&quot;namtao&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;namtao&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;&lt;a href=&quot;http://oat.sh/namtao-spotify&quot;&gt;http://oat.sh/namtao-spotify&lt;/a&gt; &lt;/span&gt;, writing music and, probably, sound effects would be possible&lt;/li&gt;
  &lt;li&gt;I love public-speaking, so I could voice whatever I write, and&lt;/li&gt;
  &lt;li&gt;The scrolling terminal video method was ready to go&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;bad&quot;&gt;Bad&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;I have no video production experience&lt;/li&gt;
  &lt;li&gt;Nor much story writing experience&lt;/li&gt;
  &lt;li&gt;And I’m not a very emotional person - could I even write impactful stories?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So I put these constraints together to build the setting of a single-person-narrator, who speaks to us through a computer. The character would use text-to-speech, so we can’t hear his environment, so he would be an A.I. - that would release me from recording sound effects as a typical radio show would include.&lt;/p&gt;

&lt;p&gt;Also, and I must get a little personal here, I realised that my non-neuraltypical condition, autism, could be turned into an asset, not a liability. Though I feel very under-qualified to talk about emotions and mental-health issues, I do feel uniquely qualified to write about a computer who is slowly understanding human emotion. You gotta work with what you’ve got!&lt;/p&gt;

&lt;p&gt;I started with these constraints and wrote and recorded&lt;label for=&quot;badmic&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;badmic&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;With a TERRIBLE microphone! &lt;/span&gt; a 5-minute pilot episode of a little satellite talking to us from orbit, shopped it around to my friends, then re-wrote it and published, with my partner Lucy recording some credits promising that “Lost Terminal will return next week”. There was no going back now!&lt;/p&gt;

&lt;h1 id=&quot;part-2-what-i-have-learned-along-the-way&quot;&gt;Part 2: What I have Learned Along The Way&lt;/h1&gt;

&lt;h2 id=&quot;production-advice&quot;&gt;Production Advice&lt;/h2&gt;
&lt;p&gt;A summary of my advice in the next few sections is simply to write for yourself. Write the stories you, or perhaps your younger self, want or wanted to hear. It’s much easier to know what will be well-received if you are both audience and author.&lt;/p&gt;

&lt;h2 id=&quot;genre-and-setting&quot;&gt;Genre and setting&lt;/h2&gt;

&lt;p&gt;First, you must choose a genre, which is often closely linked to the setting. This can be anything from sci-fi to satire or horror. This is the canvas you will frame your story on. In many ways, both the genre and setting are unrelated to the story and themes you want to explore. Star Wars could be rewritten in Renaissance Venice and it would have just the same message of hope and rebellion.&lt;label for=&quot;sw&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;sw&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;And, as a bonus, it would still have cool swords! &lt;/span&gt;
Choose a genre you are familiar with; choose one you like.&lt;/p&gt;

&lt;p&gt;As well as the setting, also consider the way you present the story in terms of narration. There are many options for you to consider:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Present tense or past tense?&lt;/li&gt;
  &lt;li&gt;Will you have a single-person narrator, or a full cast of voice actors?&lt;/li&gt;
  &lt;li&gt;How about bespoke background music?&lt;/li&gt;
  &lt;li&gt;what of sound effects?&lt;/li&gt;
  &lt;li&gt;etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We must all work to our constraints. If you’ve got enthusiastic and talented friends, you’ve got a ready-made cast! Recording will be more complicated, but you will manage. However if it’s just you with a microphone in your bedroom, that’s also fine.&lt;/p&gt;

&lt;p&gt;My recommendation is to understand your constraints and let them shape the setting. Some of the best and most influential stories are told by a single person whispering in to a microphone - and you can always add more people later! The most important thing is to START.&lt;/p&gt;

&lt;h2 id=&quot;themes-and-topics&quot;&gt;Themes and topics&lt;/h2&gt;

&lt;p&gt;This is what your story is REALLY about. Not the location, not the framing, not even the story and characters&lt;label for=&quot;character&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;character&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Though you could write a character-heavy exploration story, I suppose? Not my cup of tea &lt;/span&gt;.
The BIG THEMES your characters explore within the framing of the world are what you will be writing about mostly: Environmentalism, class struggle, slavery, mental health, the meaning of art, the meaning of LIFE. The topics are the reason you want to write. The topics are the reason you NEED to write.&lt;/p&gt;

&lt;p&gt;The topic and themes should get you out of bed in the morning. They should make you proud of what you write, make you hunger to learn more about it, so you can better distil that information down into your work; and here’s the most important thing: To leave people richer and better for experiencing your story.&lt;/p&gt;

&lt;p&gt;It’s OK to start with a simple story concept or a character concept that you think is fun, but that won’t keep you going. As you’re writing your first draft or pilot episode, look for the themes and topics that are creeping in to your work. Your brain won’t let you write about anything else. Seize them.&lt;/p&gt;

&lt;h2 id=&quot;story&quot;&gt;Story&lt;/h2&gt;
&lt;p&gt;You may know how to write a story, you may not. When I started writing &lt;a href=&quot;http://www.lostterminal.com&quot;&gt;Lost Terminal&lt;/a&gt; I certainly didn’t. But I have good news for you, if you believe Kurt Vonnegut&lt;label for=&quot;kv&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;kv&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;In his lecture &lt;em&gt;On The Shapes Of Stories&lt;/em&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=oP3c1h8v2ZQ&quot;&gt;https://www.youtube.com/watch?v=oP3c1h8v2ZQ&lt;/a&gt; &lt;/span&gt; there are only 6 stories in the world.&lt;/p&gt;

&lt;p&gt;They are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Rags to riches&lt;/strong&gt; (a story that follows a rise in happiness)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Tragedy&lt;/strong&gt;, or &lt;strong&gt;riches to rags&lt;/strong&gt; (one that follows a fall in happiness)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Man in a hole&lt;/strong&gt; (fall–rise)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Icarus&lt;/strong&gt; (rise–fall)&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Cinderella&lt;/strong&gt; (rise–fall–rise), and,&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Oedipus&lt;/strong&gt; (fall–rise–fall).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Write one of these if you are having trouble coming up with your own&lt;label for=&quot;guardian&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;guardian&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;The Guardian has more on the subject at &lt;a href=&quot;https://www.theguardian.com/books/booksblog/2016/jul/13/three-six-or-36-how-many-basic-plots-are-there-in-all-stories-ever-written&quot;&gt;https://www.theguardian.com/books/booksblog/2016/jul/13/three-six-or-36-how-many-basic-plots-are-there-in-all-stories-ever-written&lt;/a&gt; &lt;/span&gt; - it doesn’t matter. As I said before, the real impact isn’t the plot arc, it’s the themes of your podcast. Sure, it’s fun to have a cute satellite protagonist, but the deep themes will be what people come back for again and again.&lt;/p&gt;

&lt;h1 id=&quot;writing&quot;&gt;Writing&lt;/h1&gt;

&lt;p&gt;How to write, according to Neil Gaiman, is that “You sit down at the keyboard and you put one word after another until its done. It’s that easy, and that hard.”&lt;/p&gt;

&lt;p&gt;Writing to the regular schedule required by a serialised podcast can take two forms:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Write it all beforehand and record to your schedule.&lt;/li&gt;
  &lt;li&gt;Write it just in time to your recording schedule.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Though the former is more relaxing and safer, I’m going to argue you do the latter.&lt;/p&gt;

&lt;p&gt;Like many of us, I struggle with getting things done. When there are no deadlines other than those I create, it seems like I can finish my projects whenever, which of course actually means ‘never’. There are tools and projects that helped me in the past, the only novel I’ve ever finished was because I committed, very loudly and publicly, to &lt;a href=&quot;https://nanowrimo.org&quot;&gt;NaNoWriMo&lt;/a&gt;, and smashed 1600 words into my laptop every day for a month. Though I’m very proud of what I wrote, I don’t think the pace is sustainable for a podcast, and I certainly didn’t have fun.
I recommend a much more sedentary 500 words per day. This allows you, if you like, to have a 20-minute podcast completed in one week.
My schedule, for your interest, is simply:&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;DAY&lt;/td&gt;
      &lt;td&gt;TASKS&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Tuesday-Friday&lt;/td&gt;
      &lt;td&gt;edit this week’s episode, and write next week’s episode.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Saturday&lt;/td&gt;
      &lt;td&gt;Record this week’s episode&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Sunday&lt;/td&gt;
      &lt;td&gt;Edit audio and music.&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Monday&lt;/td&gt;
      &lt;td&gt;Publish episode&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;Tuesday&lt;/td&gt;
      &lt;td&gt;Do it all again&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;I get up early and do this before my day job. It only takes an hour, and means that I give my best, most focused time to my project. Some of you will be night owls and can do this at night, others have busy lives and can only spare a lunch break - choose a schedule that works for you.&lt;/p&gt;

&lt;p&gt;You can bunch those up and record a whole season of them, or as I’ve said, you could release them straight away. Why would we subject ourselves to this hectic schedule? Motivation and feedback.&lt;/p&gt;

&lt;h3 id=&quot;motivation&quot;&gt;Motivation&lt;/h3&gt;

&lt;p&gt;Motivation for me relates to the thrill of FINISHING something. &lt;em&gt;“But what if I’m not finished editing”&lt;/em&gt; I hear you cry. I have good news: The work is never finished. As Bill Condon says, simply, &lt;em&gt;“No piece of writing is ever finished. It’s just due.”&lt;/em&gt;.
So, you get it as good as you can do, and then you record. The act of recording, of speaking the script out loud, is a huge advantage that book authors do not always have. It’s a great check, in my experience, and errors are corrected either consciously or unconsciously, while speaking.&lt;/p&gt;

&lt;p&gt;&lt;label for=&quot;Seth&quot; class=&quot;margin-toggle&quot;&gt;⊕&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;Seth&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;marginnote&quot;&gt;&lt;img class=&quot;fullwidth&quot; src=&quot;https://i.imgur.com/5PDPWwZ.png&quot; /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3 id=&quot;feedback&quot;&gt;Feedback&lt;/h3&gt;

&lt;p&gt;Feedback is VERY USEFUL, espicially when you’re starting out. If you keep your script to yourself, you’ll never improve. If you get an editor, you’ll have two heads to improve it. But releasing it to the world for comment will get you 1,000x that.
You also might find aspects of the story people pick up on that you didn’t even notice. Maybe they love the background character you put in for just one paragraph - Time to give that person their own arc!&lt;/p&gt;

&lt;p&gt;And, of course, positive feedback and praise is very motivating.&lt;/p&gt;

&lt;h2 id=&quot;planning&quot;&gt;Planning&lt;/h2&gt;

&lt;p&gt;If you, as I recommend, record and publish early episodes before later episodes have been written, you may worry about how to guarantee continuity.
While I made some small mistakes in my pilot episode&lt;label for=&quot;pilot&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;pilot&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;See if you can spot them: &lt;a href=&quot;https://www.youtube.com/watch?v=p3bDE9kszMc&quot;&gt;https://www.youtube.com/watch?v=p3bDE9kszMc&lt;/a&gt; &lt;/span&gt;, both factual and plot-related, no-one cares. Not ONE person has pointed out the errors. They have, I imagine, forgotten them under the weight of subsequent episodes. This happens all the time, to professionals in every industry, from TV shows to movie series.
You can even, and this is another advantage of retaining ownership of your mp3s, CORRECT THINGS AFTER PUBLICATION! I’ve only had to do this once, where I somehow duplicated a sentence and didn’t pick it up in editing. It’s such a relief to be working in a forgiving medium.&lt;/p&gt;

&lt;p&gt;Allow yourself leniency in the pilot for small errors. You have to, otherwise you’d never get the damn thing out the door!&lt;/p&gt;

&lt;p&gt;But, for the rest of your story, you must plan.&lt;/p&gt;

&lt;p&gt;A good friend of mine, Neil Murton&lt;label for=&quot;mt&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;mt&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Do buy his wonderful book of 100-word stories here  &lt;a href=&quot;https://www.amazon.co.uk/Magpie-Tales-Mr-Neil-Murton/dp/1500287849&quot;&gt;https://www.amazon.co.uk/Magpie-Tales-Mr-Neil-Murton/dp/1500287849&lt;/a&gt; &lt;/span&gt;, gave me some advice when I was starting out:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Knowing the destination is a big help when planning the trip.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;YOU. MUST. PLAN.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once you’ve chosen your plot arc (or chosen one of the 6 plots) write it down in a table, and sketch out for yourself what happens for each of the plotlines in your series (there can be overlapping plots).
My advice for this is to start at the end, the resolution, then the start, then the mid-point, then fill in the details.&lt;label for=&quot;dw&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;dw&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Dan Wells has a great video on his take on story structure you should watch. &lt;a href=&quot;https://www.youtube.com/watch?v=KcmiqQ9NpPE&quot;&gt;https://www.youtube.com/watch?v=KcmiqQ9NpPE&lt;/a&gt; &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;That’s it! Those are all my secrets!&lt;/p&gt;

&lt;p&gt;🛰️❤️🌍&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;h1 id=&quot;appendix-tools&quot;&gt;Appendix: Tools&lt;/h1&gt;
&lt;p&gt;Here’s a dump of the tools and services I’ve used (chosen for PRICE mostly, but they also work well)&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://Spreaker.com&quot;&gt;http://Spreaker.com&lt;/a&gt; - podcast publishing.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/Swordfish90/cool-retro-term&quot;&gt;Cool Retro Term&lt;/a&gt; - this is a fun old-fashioned CRT-themed command line for mac and linux. Saved me doing any complex video FX for the videos.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://obsproject.com/&quot;&gt;OBS&lt;/a&gt; - Open Broadcaster Software, fantastic screen and camera recording/streaming software, which I use for capturing the terminal&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.lwks.com/&quot;&gt;Lightworks&lt;/a&gt; - very inexpensive video editing software, I chose this because it’s professional software that supports Linux. I’m ALWAYS happy to support companies that make great software for linux! Works on mac and windows too, of course.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://bitwig.com&quot;&gt;Bitwig&lt;/a&gt; - my digital audio workstation, all my music is produced using this. If you know about Ableton, it’s an Ableton clone, half the price, and works on Linux.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.rode.com/microphones/procaster&quot;&gt;RØDE Procaster&lt;/a&gt; - microphone. Every podcaster needs a nice mic to whisper into! And this one is a modern, good-value broadcast-quality mic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You should also check out the podcast &lt;a href=&quot;https://www.nightvalepresents.com/startwiththis&quot;&gt;Start With This&lt;/a&gt;, from the creators of Welcome To Night Vale, both which were a HUGE inspiration.&lt;/p&gt;

</description>
        <pubDate>Mon, 28 Jun 2021 10:30:00 +0100</pubDate>
        <link>/articles/21/make-fiction-podcast</link>
        <guid isPermaLink="true">/articles/21/make-fiction-podcast</guid>
        
        
        <category>audio</category>
        
      </item>
    
      <item>
        <title>Sleep: One Month On</title>
        <description>&lt;p&gt;It’s been a month since I started waking up at 3am&lt;label for=&quot;everyman&quot; class=&quot;margin-toggle&quot;&gt;⊕&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;everyman&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;marginnote&quot;&gt;&lt;img class=&quot;fullwidth&quot; src=&quot;https://i.imgur.com/xVVXNAf.png&quot; /&gt;&lt;br /&gt;My Everyman 2 Schedule.&lt;/span&gt; and taking two naps during the day, as detailed in &lt;a href=&quot;/articles/20/sleep-experiment&quot;&gt;my previous post&lt;/a&gt; in this series.&lt;/p&gt;

&lt;p&gt;I’m still keeping up my practice. I’m still overjoyed at the extra day’s-worth of free time it gives me, early in the morning, when there is nothing pressing to do. This time is truly my own.&lt;/p&gt;

&lt;p&gt;Though I have moments of tiredness now and then, they’re diminishing every day, and it was a very small price to pay for getting 5 hours of productive time in the morning before I have to start work. For example, last Thursday, I arranged a cover of &lt;a href=&quot;https://www.youtube.com/watch?v=W1meeqQRR28&quot;&gt;Tangerine Dream’s &lt;em&gt;Love On A Real Train&lt;/em&gt;&lt;/a&gt;, and published it to YouTube the next day, all work done before sunrise:
&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube-nocookie.com/embed/W1meeqQRR28&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;timeline&quot;&gt;Timeline&lt;/h1&gt;

&lt;h2 id=&quot;100420&quot;&gt;10/04/20&lt;/h2&gt;
&lt;p&gt;I woke up at 3:00 and hit Everyman 2 cold turkey. I didn’t prepare in advance, other than setting a silent alarm on my watch. My routine is to get up, shower, and sit in front of my computer. During this first weekend, I knew I’d need to have strategies to keep myself awake, so I mostly played video games&lt;label for=&quot;fo76&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;fo76&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Fallout 76, mostly. &lt;/span&gt; during this time. I think this worked well, as it didn’t require much brainpower (which I was lacking in the first weekend), but kept me awake through the adaptation period.&lt;/p&gt;

&lt;h2 id=&quot;140420&quot;&gt;14/04/20&lt;/h2&gt;
&lt;p&gt;First day at work after the long weekend’s adaptation. I had no problem getting back to it. My tiredness was now much reduced, and I was in no danger of falling asleep while working! (I have never fallen asleep during times I’d not scheduled a nap, though I occasionally nap for an extra 10 minutes).&lt;/p&gt;

&lt;p&gt;My first nap at 7:00 and second at 13:00 fits well into my work schedule. The first doesn’t affect my 8am start time, and the second I take during my lunchbreak.&lt;/p&gt;

&lt;p&gt;Everyman 2 is flexible enough that I’ve moved my afternoon nap +/- 1h without much difficulty. I do note that I feel a little tiredness the next day if I move it a lot.&lt;/p&gt;

&lt;h2 id=&quot;200420&quot;&gt;20/04/20&lt;/h2&gt;

&lt;p&gt;2 weeks in, I feel 90%&lt;label for=&quot;ish&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;ish&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Or thereabouts. &lt;/span&gt; adapted, and have survived missing a nap, poor sleep quality due to sickness, and the constant clamour of people telling me that this is a bad idea. Nothing can persuade me to go back now, but I’m confident that if I need to break routine (say, for a holiday), I can easily pick it up again.
&lt;label for=&quot;asym&quot; class=&quot;margin-toggle&quot;&gt;⊕&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;asym&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;marginnote&quot;&gt;&lt;img class=&quot;fullwidth&quot; src=&quot;https://upload.wikimedia.org/wikipedia/commons/thumb/4/43/Hyperbola_one_over_x.svg/1024px-Hyperbola_one_over_x.svg.png&quot; /&gt;&lt;br /&gt;It seems to take a long time to get back to 100%&lt;/span&gt;&lt;/p&gt;
&lt;h2 id=&quot;100520&quot;&gt;10/05/20&lt;/h2&gt;

&lt;p&gt;That brings us to today. I feel 95% adapted, and slowly, day by day, asymptotically approaching 100%.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;a-typical-day&quot;&gt;A Typical Day&lt;/h1&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Time&lt;/th&gt;
      &lt;th style=&quot;text-align: right&quot;&gt;Activity&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;3:00&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;Wake up &amp;amp; shower&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;3:30&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;Tea &amp;amp; music projects&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;5:00&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;Teabreak &amp;amp; chores&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;6:30-6:50&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;E2 Nap 1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;7:00&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;Breakfast (weekday)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;8:00&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;Start work (weekday)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;13:00&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;E2 Nap 2&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;13:20&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;Lunch &amp;amp; workout&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;14:00&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;Back to work (weekday)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;18:30&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;Dinner&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;21:30&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;Wind down, maybe read in bed&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;22:00&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;E2 Core Sleep&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;03:00&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;Do it all again!&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;life-changes&quot;&gt;Life Changes&lt;/h1&gt;

&lt;h2 id=&quot;insomnia&quot;&gt;Insomnia&lt;/h2&gt;

&lt;p&gt;As I mentioned in my &lt;a href=&quot;/articles/20/sleep-experiment&quot;&gt;previous post&lt;/a&gt;, I used to have insomnia. I’d be in bed before 23:00, but not asleep before 1:00. As I hoped, the upheaval of Everyman 2 has cured me of this. I’m really good at sleeping now!&lt;/p&gt;

&lt;h2 id=&quot;bedtime-strictness&quot;&gt;Bedtime Strictness&lt;/h2&gt;

&lt;p&gt;The other side of the &lt;em&gt;being-cured-of-insomnia&lt;/em&gt; coin is that I’m VERY tired at the end of the day: After 21:30 I’m falling asleep, and am ready to drop at 22:00.&lt;/p&gt;

&lt;p&gt;While I understand this is quite normal for early-birds, it’s a novel experience for me!&lt;/p&gt;

&lt;h2 id=&quot;social-life-impact&quot;&gt;Social Life Impact&lt;/h2&gt;

&lt;p&gt;My tiredness at the end of the day means that I’m keen to wind up social gatherings before 22:00. Though this isn’t much different to how I was before, I’m now completely disciplined about logging off at 22:00.&lt;/p&gt;

&lt;h2 id=&quot;partner-impact&quot;&gt;Partner Impact?&lt;/h2&gt;

&lt;p&gt;Lucy’s been very accommodating to my new schedule. I built my timetable to suit her, to minimise disruption. This is easy, as she sleeps soundly, I often don’t wake her when getting up at 3:00.&lt;/p&gt;

&lt;h2 id=&quot;health-changes&quot;&gt;Health Changes&lt;/h2&gt;

&lt;p&gt;As with many Polyphasic experiments, I’ve found that my caffeine and calorie consumption has gone up dramatically. These two tools are very useful for waking yourself up in the adaptation period. I am now making a conscious effort to cut both down to the previous norms, as would be more healthy. I’ve gained about 3KG, and it’ll be difficult to lose that. However, assuming I can get that under control, it’ll have been a worthwhile step.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;advice-for-the-curious&quot;&gt;Advice For The Curious&lt;/h1&gt;

&lt;h2 id=&quot;well-meaning-friends--family&quot;&gt;Well-Meaning Friends &amp;amp; Family&lt;/h2&gt;

&lt;p&gt;Many things have surprised me during this experiment. The biggest one has been that about half the people I talk to ABSOLUTELY HATE it:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“I don’t think it is a good idea. In fact, it might be construed as heuristic to the point of being selfish”&lt;label for=&quot;dad&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;dad&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Oatpa &lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is a very typical attitude. Sleep is a topic similar to diet and exercise - everyone has an opinion because we’re all familiar with the subject matter.&lt;/p&gt;

&lt;p&gt;My advice is to experiment quietly, telling only those around you that you need to nap during the day. You’ll either succeed or fail, and both will be a valuable learning experience. You can then confidently &lt;em&gt;come out&lt;/em&gt; in a big way!&lt;label for=&quot;comeout&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;comeout&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;By writing the longest blog post of your life, for instance. &lt;/span&gt; I’m reminded of one of the rules of the Cult Of Done&lt;label for=&quot;cod&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;cod&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;&lt;a href=&quot;https://medium.com/@bre/the-cult-of-done-manifesto-724ca1c2ff13&quot;&gt;https://medium.com/@bre/the-cult-of-done-manifesto-724ca1c2ff13&lt;/a&gt; &lt;/span&gt; that states:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Those without dirty hands are wrong.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;h2 id=&quot;things-that-helped-me-during-adaptation&quot;&gt;Things That Helped Me During Adaptation&lt;/h2&gt;

&lt;p&gt;Pick your schedule (Everyman&lt;label for=&quot;everypoly&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;everypoly&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;&lt;a href=&quot;https://polyphasic.net/schedules/everyman/&quot;&gt;polyphasic.net/schedules/everyman/&lt;/a&gt; &lt;/span&gt; works well, with 3 different options to suit your schedule).&lt;/p&gt;

&lt;p&gt;Listening to brown noise while napping, if you are a light sleeper&lt;label for=&quot;brown&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;brown&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=Q6MemVxEquE&amp;amp;t=31825s&quot;&gt;This one&lt;/a&gt; is my favourite. Mmm, brown flavour. &lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Start on a weekend you can isolate yourself from obligations.&lt;/p&gt;

&lt;p&gt;Programme some low-effort distractions for the first few days, and don’t worry that you’re not productive; that’ll come.&lt;/p&gt;

&lt;p&gt;Don’t eat breakfast at night. I found after a week of NEEDING to eat to stay awake, I preferred to wait until after my first nap to have breakfast. My digestion seemed slow and uncomfortable at night&lt;label for=&quot;circadian&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;circadian&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Something something circadian rhythm. &lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;I found that having meals after each nap (breakfast and lunch, respectively), washing my face, and having a drink of water, really helped me bounce back into wakefulness.&lt;/p&gt;

&lt;p&gt;If you are able to get blackout curtains or blinds for your bedroom, that’s a great way of helping you nap.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h1&gt;

&lt;p&gt;If you would like to talk about it, get advice, or tell me I’m wrong, hit me up on Twitter, I’m &lt;a href=&quot;http://twitter.com/0atman&quot;&gt;@0atman&lt;/a&gt;. If you want community advice, drop a line to the &lt;a href=&quot;http://reddit.com/r/polyphasic&quot;&gt;r/polyphasic&lt;/a&gt; community, they’re friendly, helpful people!&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;further-reading&quot;&gt;Further Reading&lt;/h1&gt;

&lt;p&gt;It’s all at &lt;a href=&quot;http://polyphasic.net&quot;&gt;http://polyphasic.net&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Sun, 10 May 2020 03:30:00 +0100</pubDate>
        <link>/articles/20/polyphase-one-month</link>
        <guid isPermaLink="true">/articles/20/polyphase-one-month</guid>
        
        
        <category>life</category>
        
      </item>
    
      <item>
        <title>The Iterate-and-Mutate Antipattern</title>
        <description>&lt;p&gt;Names are powerful things. To name something is to control it. For years, I’ve been cautioning friends and colleagues about the following, which I consider a code smell:&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;
&lt;span class=&quot;n&quot;&gt;enabled_users&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;[]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;&lt;label for=&quot;filter&quot; class=&quot;margin-toggle&quot;&gt; ⊕&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;filter&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;marginnote&quot;&gt;This code can be dramatically improved with many functional methods, in this case, a simple filter:&lt;br /&gt; &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;filter(users, is_user_enabled)&lt;/code&gt;  &lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;for&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;user&lt;/span&gt; &lt;span class=&quot;ow&quot;&gt;in&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;users&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;enabled&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;
        &lt;span class=&quot;n&quot;&gt;enabled_users&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;append&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;user&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The part that makes me narrow my eyes, and the way you can identify this, is setting a variable to a null-y value, then opening up a for loop. I’ll go into why I consider this bad practice in this article.&lt;/p&gt;

&lt;p&gt;Until 3 days ago, I had no name for this pattern. Since Robb Shecter’s &lt;a href=&quot;https://dogsnog.blog/2020/04/23/the-iterate-and-mutate-programming-anti-pattern/&quot;&gt;post&lt;/a&gt;, I have one: &lt;em&gt;Iterate-and-mutate&lt;/em&gt;.&lt;/p&gt;

&lt;h2 id=&quot;every-language-is-c-and-other-lies&quot;&gt;Every language is C (and other lies)&lt;/h2&gt;

&lt;p&gt;Programming languages aren’t just ways to communicate instructions to machines, the are frameworks for thought.&lt;label for=&quot;sapier&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;sapier&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;In natural languages, this is called the &lt;a href=&quot;https://en.wikipedia.org/wiki/Linguistic_relativity&quot;&gt;Sapir–Whorf hypothesis&lt;/a&gt; &lt;/span&gt; Every language (nearly) supports &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;if&lt;/code&gt; statements and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;for&lt;/code&gt; loops, so it is easy to solve your programming problems with these constructs. However, it’s NOT easy to read this code after it has been written.&lt;/p&gt;

&lt;p&gt;We’ve all seen nested &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;if&lt;/code&gt;s and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;for&lt;/code&gt;s&lt;label for=&quot;nested&quot; class=&quot;margin-toggle&quot;&gt;⊕&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;nested&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;marginnote&quot;&gt;&lt;img class=&quot;fullwidth&quot; src=&quot;https://imgur.com/AMZYrnM.png&quot; /&gt;&lt;br /&gt;You get the idea&lt;/span&gt;, it’s a famous way of writing spaghetti code. To understand the result of the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;for&lt;/code&gt; loop, the whole body must be inspected. Whoever looks at your code next must read many lines of code before they understand what is happening, because it can execute arbitrary, mutating, side-effecting code.&lt;/p&gt;

&lt;h2 id=&quot;think-about-it&quot;&gt;Think about it&lt;/h2&gt;

&lt;p&gt;If you were to analyse the flow and swap out &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;if&lt;/code&gt;s and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;for&lt;/code&gt;s with higher-level alternatives, they will more readable. Let’s look at my toy example above: Switching the filtering &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;for&lt;/code&gt; loop with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;filter&lt;/code&gt; function, allows the reader a hint to what KIND of iteration we are doing.&lt;/p&gt;

&lt;div class=&quot;language-python highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;n&quot;&gt;enabled_users&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;filter&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;users&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;is_user_enabled&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Immediately they can reason more about the code, they know that:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;the new collection will have up to N items&lt;label for=&quot;nitems&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;nitems&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Where N is the size of the original collection, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;users&lt;/code&gt; in my example &lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;it will be a subset of the original collection&lt;/li&gt;
  &lt;li&gt;with some elements filtered out by some test code&lt;label for=&quot;filterfn&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;filterfn&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;The well-named function &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;is_user_enabled&lt;/code&gt; &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If we’d used a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;for&lt;/code&gt; loop, the reader would know that it’s a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;for&lt;/code&gt; loop. Thanks, I hate it.&lt;/p&gt;

&lt;h2 id=&quot;conclusion-and-invocation&quot;&gt;Conclusion and Invocation&lt;/h2&gt;

&lt;p&gt;Once you are aware of the iterate-and-mutate pattern, you’ll be able to think more critically at what kind of problems you’re solving. Nearly all problems we face as programmers are iteration problems. &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;for&lt;/code&gt;s don’t help us much, we need to subcategorise. You’ll start using not just functional methods more,&lt;label for=&quot;fnmethods&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;fnmethods&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Such as &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;map&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;filter&lt;/code&gt;, and list comprehensions &lt;/span&gt; but the other high-level features of your language: Higher-order functions, closures, recursion, fluent interfaces, dependent types - OH MY!&lt;/p&gt;

&lt;p&gt;In short, you might start enjoying again the great features that made you learn your language in the first place.&lt;/p&gt;
</description>
        <pubDate>Sun, 26 Apr 2020 05:00:00 +0100</pubDate>
        <link>/articles/20/iterate-and-mutate</link>
        <guid isPermaLink="true">/articles/20/iterate-and-mutate</guid>
        
        
        <category>coding</category>
        
      </item>
    
      <item>
        <title>My Polyphasic Sleep Experiment</title>
        <description>&lt;p&gt;&lt;label for=&quot;snorlax&quot; class=&quot;margin-toggle&quot;&gt;⊕&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;snorlax&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;marginnote&quot;&gt;&lt;img class=&quot;fullwidth&quot; src=&quot;https://cdn.bulbagarden.net/upload/f/fb/143Snorlax.png&quot; /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;It is 3:30am as I write this, I have just woken up from my core sleep of 4h 30mins, and I feel fantastic. It will be 5 hours before I need to start work at my day job, and I feel like I have unlocked an extra day’s worth of productive free time, accessed through my practice of Polyphasic sleep. But how did I get here?&lt;/p&gt;

&lt;h2 id=&quot;early-experiments&quot;&gt;Early Experiments&lt;/h2&gt;

&lt;p&gt;In 2007 I learned about Polyphasic sleep, which is the largely-untested hypothesis that if you sleep more often during a 24-hour cycle, you need less overall sleep than if you just slept once. We observe that cultures who have a midday sleep&lt;label for=&quot;biphasic&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;biphasic&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Such as the Spanish siesta. This is called &lt;em&gt;biphasic&lt;/em&gt;, two phases of sleep, one at night, one during the day. &lt;/span&gt; tend to require less overall sleep than cultures with one block of nighttime sleep.&lt;label for=&quot;monophasic&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;monophasic&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;&lt;em&gt;Monophasic&lt;/em&gt; sleep. &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;The cited examples in support of the polyphasic hypothesis include cross-Atlantic sailors sleeping in short bursts, military personnel on watch, parents of newborn babies, and Buckminster Fuller’s famous &lt;em&gt;“twenty-two thinking hours a day”&lt;/em&gt;.&lt;label for=&quot;dymaxion&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;dymaxion&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;The Dymaxion schedule: 30 minutes nap every 6 hours. &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;The method I tried in 2007 is the &lt;em&gt;Uberman&lt;/em&gt; schedule. This method is simple: Take a 20-minute nap every 4 hours. No other sleep. 
&lt;label for=&quot;uberman&quot; class=&quot;margin-toggle&quot;&gt;⊕&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;uberman&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;marginnote&quot;&gt;&lt;img class=&quot;fullwidth&quot; src=&quot;http://thumb.napchart.com:1771/api/getImage?width=600&amp;amp;height=600&amp;amp;chartid=gd3dk&quot; /&gt;&lt;br /&gt;The Uberman Schedule.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;This is the most talked-about schedule in Polyphasic circles because of the tantalising potential to achieve Fuller-levels of waking time. In Uberman, you take a 20-minute nap at 12, 4 and 8 - both AM and PM. This (and Dymaxion) is the most extreme polyphasic sleep schedule, and the one that requires the least actual sleep - 2 hours in every 24!&lt;/p&gt;

&lt;p&gt;Where does this 2 hours come from? It comes from the observation that we only have about two hours of REM, of dreaming, in every night of sleep. The polyphasers hypothesise that it’s only the REM phase that is useful for the brain&lt;label for=&quot;trickuberman&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;trickuberman&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;The trick with Uberman is to get the brain to drop into REM, to dream, for the whole of the 20 minute nap. That is a hell of a trick. &lt;/span&gt;, the rest of the time is spent in deep sleep. Deep sleep is restful for the body, but no more so than waking forms of rest.&lt;/p&gt;

&lt;p&gt;Back to Uberman: My brother and I tried it for a week, it was MISERABLE and I crashed out HARD.&lt;label for=&quot;lewis2&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;lewis2&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;He stuck with it for about another week. &lt;/span&gt; The problem with Uberman is its brutal adaptation period: You basically don’t nap the first few days, because you’re not used to sleeping during the day, and this means you’re immediately sleep deprived. It takes two weeks for your brain to start squeezing in REM into your naps, to avoid permanent damage.&lt;label for=&quot;records&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;records&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Record-breaking sleepers seldom can stay awake for &lt;a href=&quot;https://en.wikipedia.org/wiki/Sleep_deprivation&quot;&gt;longer than a week&lt;/a&gt;. &lt;/span&gt; The second problem, which also caused Buckminster Fuller to fall back to monophasic sleeping, is how society is rigidly built around sleeping at nighttime.&lt;label for=&quot;other-men&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;other-men&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;In Fuller’s words, &lt;em&gt;“[my] business associates […] insisted on sleeping like other men”.&lt;/em&gt; &lt;/span&gt;
Thus disillusioned with Polyphasic sleep, I forgot about it for a decade.&lt;/p&gt;

&lt;h2 id=&quot;my-history-with-sleep&quot;&gt;My History With Sleep&lt;/h2&gt;

&lt;p&gt;I’ve had fairly standard sleep experience in life: Though a 3am bedtime was perfectly normal at university, that’s unthinkable now that I’ve had a decade of 7am alarms for work. I have always needed lots of sleep: My friends joke that once the clock gets past 11pm, I’m at risk of turning into a pumpkin.&lt;label for=&quot;Cinderella&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;Cinderella&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;You know, like Cinderella’s carriage. &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;I’d always been a light sleeper, but in 2017 I developed mild insomnia, adding the inability to fall asleep to my already-impressive inability to &lt;strong&gt;stay&lt;/strong&gt; asleep. Ugh! Despite being in bed before 11pm, I’d only fall asleep between 1-2am. This then put pressure on my wake-up time in the morning, making me groggy, late for work, and feeling like I was wasting the day.&lt;/p&gt;

&lt;h2 id=&quot;covid-19&quot;&gt;Covid-19&lt;/h2&gt;

&lt;p&gt;Many times during the past decade, I’ve thought about trying Polyphasic sleeping again&lt;label for=&quot;overhaul&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;overhaul&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Especially as a way to overhaul my dysfunctional sleep schedule &lt;/span&gt;, but my plans were always tempered by Fuller’s experience that you have to live in a society of offices, trains, evening get-togethers, and constant interruptions.&lt;/p&gt;

&lt;p&gt;Perhaps you can see where this is going. As I write this, I am 44 days into the Covid lockdown here in London. I’ve been very fortunate to be able to work from home, and because much of my socialising is digital anyway, things are going as well as can be hoped for.&lt;/p&gt;

&lt;p&gt;On the 10th of April, 2 weeks ago, we had a long weekend of two national holidays&lt;label for=&quot;holidays&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;holidays&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Good Friday and Easter Monday. &lt;/span&gt; and I realised that the stars had aligned for a polyphasic experiment: Not only did I no longer live in a world of offices and the forced exodus of commuting, I had 4 days where I wasn’t even expected to be webcam-present at my work.&lt;/p&gt;

&lt;p&gt;That day, I had come across &lt;a href=&quot;http://polyphasic.net&quot;&gt;polyphasic.net&lt;/a&gt;. I was going to try Uberman again, indeed that search led me to the site, but they categorise it as &lt;em&gt;“VERY HARD”&lt;/em&gt; and &lt;em&gt;“NOT RECOMMENDED”&lt;/em&gt; and go as far as saying that only people with a genetic predisposition can do it!&lt;label for=&quot;everyman&quot; class=&quot;margin-toggle&quot;&gt;⊕&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;everyman&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;marginnote&quot;&gt;&lt;img class=&quot;fullwidth&quot; src=&quot;http://thumb.napchart.com:1771/api/getImage?width=600&amp;amp;height=600&amp;amp;chartid=9zmeq&quot; /&gt;&lt;br /&gt;My Everyman 2 Schedule.&lt;/span&gt;
Also, they found 0% success rate, based on trawling reddit data. They couldn’t find a single account of someone sticking with it. They recommended a much more successful schedule: Everyman.&lt;/p&gt;

&lt;p&gt;Reading the excellent guide on the Everyman sleep schedule (at &lt;a href=&quot;https://polyphasic.net/schedules/everyman/&quot;&gt;polyphasic.net/schedules/everyman/&lt;/a&gt;), I realised this was much more approachable. There are three variants of Everyman, E1, E2, E3. They are numbered based on how many naps you have during the day. They represent a gradient between efficiency and easy-of-adaptation. E1 is effectively a siesta schedule, and E3 requires only double Uberman’s sleep total. I resolved to try Everyman 2 (E2):&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Schedule&lt;/th&gt;
      &lt;th style=&quot;text-align: right&quot;&gt;Total Sleep&lt;/th&gt;
      &lt;th style=&quot;text-align: right&quot;&gt;Core Sleep&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Everyman 1&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;6h 20m&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;6h 0m&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Everyman 2&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;5h 10m&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;4h 30m&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;Everyman 3&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;4h 0m&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;3h 0m&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;p&gt;After a late-night explanation to my partner&lt;label for=&quot;partner&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;partner&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;She has the patience of a saint. &lt;/span&gt;, I set a silent alarm on my watch to 3am, and began the experiment!&lt;/p&gt;

&lt;h2 id=&quot;easter-adaptation&quot;&gt;Easter Adaptation&lt;/h2&gt;

&lt;p&gt;What a dream the adaptation has been! The first 24h of any polyphasic experiment are always best: Even if you can’t hack it, your sleep debt won’t catch up to you on the first day, and you’ll feel like you’re breaking out of a stupid societal default. It’s very profound to be pulling an all-nighter with the knowledge that this isn’t a one-off, and these are hours that will be permanently available to you, rather than being borrowed from the next day.&lt;/p&gt;

&lt;p&gt;Compared to my memory of the constant-sleepiness of Uberman, Everyman 2 was so much easier, even right at the start. I certainly felt tired, and during the first few days I had to keep busy&lt;label for=&quot;fallout&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;fallout&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Luckily, a big update to Fallout 76 made that easy! &lt;/span&gt; and be aware that to lie down was to risk sleeping (which would have ruined adaptation). But by the 4th day, back at work, I had basically transitioned. I was astonished how easy it was. I have been on a stable E2 schedule for 12 days today, and I will keep it up at least through the lockdown period.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://thumb.napchart.com:1771/api/getImage?width=600&amp;amp;height=600&amp;amp;chartid=9zmeq&quot; alt=&quot;Everyoat&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;further-reading&quot;&gt;Further Reading&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://polyphasic.net/&quot;&gt;polyphasic.net&lt;/a&gt;&lt;/p&gt;
</description>
        <pubDate>Wed, 22 Apr 2020 03:30:00 +0100</pubDate>
        <link>/articles/20/sleep-experiment</link>
        <guid isPermaLink="true">/articles/20/sleep-experiment</guid>
        
        
        <category>life</category>
        
      </item>
    
      <item>
        <title>0atman's WFH Advice</title>
        <description>&lt;p&gt;To achieve remote bliss, you need two things: Good software and good hardware.&lt;/p&gt;

&lt;h1 id=&quot;good-software&quot;&gt;Good Software&lt;/h1&gt;

&lt;p&gt;Tl;dr: Use &lt;a href=&quot;https://meet.jit.si/&quot;&gt;Jitsi&lt;/a&gt;, if you can, Google Meet is great too.&lt;/p&gt;

&lt;p&gt;A lot of people know about Zoom&lt;label for=&quot;zoom&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;zoom&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Especially those of us in the &lt;a href=&quot;https://www.theregister.co.uk/2020/04/03/dont_use_zoom_if_privacy/&quot;&gt;security industry&lt;/a&gt; &lt;/span&gt;, but it’s not my first choice because it isn’t web-based. You have to download a client. It’s not a disaster, they release clients for Windows, OSX, Linux, Android, and IOS - but what about Chromebooks, Raspberry Pi, or weird or old platforms? Outta luck buddy.&lt;/p&gt;

&lt;p&gt;The web is the default interface, it’s crazy that in 2020 Zoom don’t have a native webapp. This could have been partially solved by an open-source client, but it’s closed.&lt;label for=&quot;class&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;class&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;F-, see me after class. &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;Google Meet is good, as is Discord, GoToMeeting, etc. Anything web-based. But Jitsi is my recommendation, for the following reasons:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;1 Web-based (with mobile apps for convenience)&lt;/li&gt;
  &lt;li&gt;2 Peer-to-peer&lt;label for=&quot;p2p&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;p2p&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;This is great for privacy, but also might be why it’s the most high-quality video I’ve seen: No middleware servers. &lt;/span&gt;&lt;/li&gt;
  &lt;li&gt;3 No registration required&lt;/li&gt;
  &lt;li&gt;4 Open source, but backed by a commercial company&lt;label for=&quot;8x8&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;8x8&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;&lt;a href=&quot;https://www.8x8.com/&quot;&gt;8x8.com&lt;/a&gt; &lt;/span&gt; that provide a free server (&lt;a href=&quot;meet.jit.si&quot;&gt;Jitsi Meet&lt;/a&gt;) so you don’t have to set up your own&lt;/li&gt;
  &lt;li&gt;5 Supports every feature I’ve heard of, except for Zoom’s break-out rooms.&lt;/li&gt;
  &lt;li&gt;6 Even supports push-to-talk, a feature I’ve only seen on Discord before.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So, if you have a choice, use &lt;a href=&quot;https://meet.jit.si/&quot;&gt;Jitsi&lt;/a&gt;, if not, Google Meet.&lt;/p&gt;

&lt;h1 id=&quot;good-hardware&quot;&gt;Good Hardware&lt;/h1&gt;

&lt;p&gt;Tl;dr: Just use some comfy headphones.&lt;/p&gt;

&lt;p&gt;I’m a music producer&lt;label for=&quot;namtao&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;namtao&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;&lt;a href=&quot;https://www.namtao.com/&quot;&gt;namtao.com!&lt;/a&gt; &lt;/span&gt; and remote-working evangelist, so you KNOW I have OPINIONS! Here are the things everyone can do to improve their voicechat experience:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;1 Good Headphones&lt;/li&gt;
  &lt;li&gt;2 Good microphone&lt;/li&gt;
  &lt;li&gt;3 Good lighting&lt;/li&gt;
  &lt;li&gt;4 Good webcam&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;good-headphones&quot;&gt;Good Headphones&lt;/h2&gt;
&lt;p&gt;Everyone must wear headphones.&lt;/p&gt;

&lt;p&gt;Headphones are 90% of the deal. If you only do one thing in this list - PLEASE DO THIS!
It’s not even about what you hear - it’s about not using speakers. Speakers are the BANE of voice communications. The problem is that videoconferencing software is CLEVER. Too clever.&lt;/p&gt;

&lt;p&gt;Lets look at an example: This is Sam. Sam is not using headphones.&lt;label for=&quot;sam&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;sam&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Classic Sam. &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.imgur.com/EZt6qV7.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When another person on Sam’s call (the bubble in blue, perhaps) is speaking, their voice is picked up by Sam’s microphone. The clever software detects this and mutes sams’s mic, otherwise it would transmit back the speaker’s voice to them, like an echo.&lt;/p&gt;

&lt;p&gt;However, notice that Sam (in yellow) is speaking too. Tough luck Sam, the clever algorithm has muted your microphone.&lt;/p&gt;

&lt;p&gt;The upshot is, if &lt;strong&gt;you&lt;/strong&gt; don’t use headphones, &lt;strong&gt;you&lt;/strong&gt; will be cutting out and won’t be able to participate. Everyone must wear headphones.
I recommend comfortable over-the-ear cans that don’t squash your ears. You’ll be able to wear these all day. Get the cheapest you like - comfort is king, they’ll all be fine quality.&lt;/p&gt;

&lt;p&gt;Once you’ve got headphones, you’re almost there, to be honest. The following tasks are small upgrades.&lt;/p&gt;

&lt;h2 id=&quot;good-microphone&quot;&gt;Good Microphone&lt;/h2&gt;
&lt;p&gt;Getting a microphone that isn’t in your laptop won’t increase quality much, but not being physically attached to your keyboard is a GREAT thing. What’s the closest thing to your laptop’s mic? It ain’t your mouth. Sound obeys the inverse square law&lt;label for=&quot;isq&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;isq&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Inverse-square_law&quot;&gt;wikipedia:Inverse-square_law&lt;/a&gt; &lt;/span&gt; , and it’s a harsh mistress. Get a microphone that can be close to your mouth: A headset or mic on a stand is a great option.&lt;/p&gt;

&lt;h2 id=&quot;good-lighting&quot;&gt;Good lighting&lt;/h2&gt;
&lt;p&gt;The webcam you’re currently using is probably fine. What isn’t fine is how bad it looks. Webcams perform TERRIBLY in dimly-lit environments. Like your home. While I don’t recommend putting your monitor in front of a window, that &lt;em&gt;would&lt;/em&gt; fix it. Try an LED light ring/grid, or some other diffuse light.
If you want proof that your webcam is great quality, go outside during the day and make a call. The sun is very bright!&lt;/p&gt;

&lt;h2 id=&quot;good-webcam&quot;&gt;Good webcam&lt;/h2&gt;
&lt;p&gt;As mentioned, quality is not a problem with good lighting. But, positioning can be tricky if you’re using your laptop’s cam. A USB webcam can be positioned wherever you like. If using an external monitor, you can put it up there. The place to put it is as close to the videochat window you’ll have your friends&lt;label for=&quot;friend&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;friend&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;A real friend would send them this article, too. &lt;/span&gt; on. You’ll naturally look at their faces when speaking to them, and it’s nicest if they feel you’re looking at them too.&lt;/p&gt;

&lt;h1 id=&quot;further-reading&quot;&gt;Further Reading&lt;/h1&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.hanselman.com/blog/BrainBytesBackBunsTheProgrammersPriorities.aspx&quot;&gt;Brain Bytes Back Buns&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.hanselman.com/blog/GoodBetterBestCreatingTheUltimateRemoteWorkerWebcamSetupOnABudget.aspx&quot;&gt;Ultimate Remote Worker Webcam Setup&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Thu, 09 Apr 2020 15:00:00 +0100</pubDate>
        <link>/articles/20/wfh-advice</link>
        <guid isPermaLink="true">/articles/20/wfh-advice</guid>
        
        
        <category>life</category>
        
      </item>
    
      <item>
        <title>Two Lessons Thanos Can Teach Us</title>
        <description>&lt;p&gt;In &lt;em&gt;Avengers: Infinity War&lt;/em&gt;, Thanos brings the Infinity Stones together to complete his “life’s purpose”: Extinguishing half of all life in an overcrowded universe. He’s an environmentalist&lt;label for=&quot;environmentalist&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;environmentalist&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;emphasis on the &lt;em&gt;mentalist&lt;/em&gt; &lt;/span&gt;, you see.&lt;/p&gt;

&lt;h1 id=&quot;lesson-1-decide-then-do&quot;&gt;Lesson 1: Decide, Then Do&lt;/h1&gt;

&lt;p&gt;When watching our heroes try to stop him over the course of the film, I couldn’t help but be impressed with Thanos’s singular focus. He isn’t a normal comic book villain, he’s not specifically cruel or murderous&lt;label for=&quot;notexist&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;notexist&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;With, of course, with the one exception that he wants 50% of the universe to not exist &lt;/span&gt;, he has weighed the options, and decided to fix overpopulation in a very direct&lt;label for=&quot;exponentialgrowth&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;exponentialgrowth&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;and short-term, if you know anything about exponential growth &lt;/span&gt; way. He then, through the course of the movie, finds all the stones and ends the movie completing his mission and retiring to a garden planet to live out his days.&lt;/p&gt;

&lt;p&gt;In clashes with the superheroes, he demonstrates this focus very clearly. Although his minons are murderous, at every point he resists the distractions of our crew of Iron Man, Doctor Strange, The Hulk, and co. When he has defeated one, he moves on, always keeping his objective, not revenge, in mind.&lt;/p&gt;

&lt;p&gt;Though his goal is of course abhorrent, Thanos’s &lt;em&gt;methods&lt;/em&gt; are worthy of study. The example of research, decision, focus, and singular action are ones we all could learn from: Do as much research as you can to make you convinced of the right course, then go do it!&lt;/p&gt;

&lt;h1 id=&quot;lesson-2-dont-wait-for-retirement&quot;&gt;Lesson 2: Don’t Wait For Retirement&lt;/h1&gt;

&lt;p&gt;This lesson comes from the next film: &lt;em&gt;Avengers Endgame&lt;/em&gt;. In &lt;em&gt;Endgame&lt;/em&gt;, The world is reeling from the loss of half of the population. Our heroes are down to half their number, too&lt;label for=&quot;half&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;half&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Basically, those who sided with Capt. in &lt;em&gt;Civil War&lt;/em&gt; survive, the other side don’t. Co-incidence? You decide! &lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;Our heroes rally, and find Thanos on his retirement planet. They’re somewhat surprised to find no defences, no minions, and the man himself whiling away his life in a solitary, agrarian, life.&lt;/p&gt;

&lt;p&gt;They overpower him trivially, taking him by surprise, and Thor kills him in a moment of rage.&lt;label for=&quot;15-minutes&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;15-minutes&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;This is all in the first 15 minutes of the film! &lt;/span&gt;&lt;/p&gt;

&lt;p&gt;The rest of the film focuses on getting the Infinity Stones back, and bringing back the 50% of life that Thanos snapped out of existence. The lesson is in the first 15 minutes of the film.&lt;/p&gt;

&lt;p&gt;This lesson is much simpler than the first. Supposedly all Thanos wanted was to live a simple life on his homestead. HE COULD HAVE DONE THIS AT ANY TIME! He was &lt;strong&gt;so&lt;/strong&gt; focused on a task that wasn’t a prerequisite of his happy retirement that he didn’t see he could just… retire!&lt;/p&gt;

&lt;p&gt;And of course, he only was able to enjoy retirement for a short while before he was killed.&lt;/p&gt;

&lt;p&gt;Friends, this is a violent parable of our society’s retirement norms. Working full-time at jobs that don’t make us happy just to die a few short years into retirement? Don’t do this.&lt;/p&gt;

&lt;p&gt;Ask yourself what you would like to do in retirement, and then, using the focus we learned about in lesson 1, take steps to get to that point AS QUICKLY AS POSSIBLE. If you imagine retiring to a campervan in the sun, YOU CAN DO THAT NOW! Budget how much you need for the van, food and comfort for the rest of your life, then start saving. It’ll be less than you think&lt;label for=&quot;work-optional&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;work-optional&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;a good book on this topic is &lt;em&gt;Work Optional&lt;/em&gt; by Tanja Hester: https://tanjahester.com/books/ &lt;/span&gt;, and you can stop working the moment you’ve got that amount stashed in the bank.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decide what the minimum you need to do to succeed is, do it, then stop.&lt;/strong&gt;&lt;/p&gt;
</description>
        <pubDate>Sun, 29 Sep 2019 15:00:00 +0100</pubDate>
        <link>/articles/19/thanos-focus</link>
        <guid isPermaLink="true">/articles/19/thanos-focus</guid>
        
        
        <category>life</category>
        
      </item>
    
      <item>
        <title>0-days And Humility</title>
        <description>&lt;p&gt;So imagine you’re me.&lt;label for=&quot;&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Stop crying &lt;/span&gt; Now imagine you’ve accidentally removed yourself from the sudo group&lt;label for=&quot;&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Docker’s fault &lt;/span&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“No problem”&lt;/em&gt;, you might reasonably think, &lt;em&gt;I’ll just reboot into a root shell and fix that”.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Not so fast, hotshot. Your fancy Surface Go has EFI, which means the GRUB menu doesn’t show, and this machine has a bug that doesn’t initialise the keyboard until after Ubuntu starts booting. This means pressing escape or holding shift, doesn’t bring up the GRUB menu to boot into single-user mode.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“OK, can we boot the drive in another machine?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Great question: It’s superglued on to the motherboard. This is, effectively, a tablet.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;“FSCK IT I’ll REINSTALL LINUX”&lt;/em&gt;, you might reasonably exclaim.&lt;/p&gt;

&lt;p&gt;I’ve got news for you, it’s stopped booting from USB for unknown, spooky, EFI reasons.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No reinstall, no single-user mode, no sudo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I despaired for a month before realising I now work in the Cybersecurity department of the Government Digital Service. So, the next day, I talked to one of our ethical hackers, and after 30 minutes of searching, we used a 0-day&lt;label for=&quot;&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;&lt;a href=&quot;&quot;&gt;https://www.exploit-db.com/exploits/47163&lt;/a&gt; &lt;/span&gt; to get me root.
Which, after a quick bit of C++ compiling, was SO EASY:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://i.imgur.com/i6Ko9Pb.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;After that, it was a simple matter to restore my membership in the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;sudo&lt;/code&gt; group and get back up and running with my little Linux tablet.&lt;/p&gt;

&lt;p&gt;The whole matter has opened my eyes to just how trivial &lt;em&gt;privilege escalation&lt;/em&gt; can be, even with a very modern, patched system.&lt;/p&gt;
</description>
        <pubDate>Thu, 05 Sep 2019 17:00:00 +0100</pubDate>
        <link>/articles/19/0day</link>
        <guid isPermaLink="true">/articles/19/0day</guid>
        
        <category>hax</category>
        
        <category>security</category>
        
        <category>exploits</category>
        
        
      </item>
    
      <item>
        <title>A More Rational Time</title>
        <description>&lt;h2 id=&quot;abstract&quot;&gt;Abstract&lt;/h2&gt;

&lt;p&gt;&lt;span class=&quot;newthought&quot;&gt;Time,&lt;/span&gt;  as anyone who works with it&lt;label for=&quot;se&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; id=&quot;se&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;This is especially true for software engineering, a field that your author is well-aquainted with. &lt;/span&gt; will tell you, is BIZARRE.
Though days and weeks are fine&lt;label for=&quot;&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;fine-ISH. &lt;/span&gt;, once you start talking about months and years, there are some really sharp edges. This article identifies the problems, potential solutions, and if there’s anything we can do about it.&lt;/p&gt;

&lt;h1 id=&quot;the-problem&quot;&gt;The Problem&lt;/h1&gt;

&lt;h2 id=&quot;the-year&quot;&gt;The Year&lt;/h2&gt;

&lt;p&gt;The fault is in our stars&lt;label for=&quot;&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Not just a great book by John Green, but also paraphrasing Shakespere’s &lt;em&gt;Julius Caeser&lt;/em&gt;. &lt;/span&gt;. Or rather, our planet and nearest heavenly body, the Moon. If we planned our calendars by just one of these, it would be easier. Our planet’s rotation around the sun, a year, does not divide equally into whole-numbered days, as measured by the rotation of our planet. This is what causes leap years, the formula for which is byzantine and unhelpful.&lt;label for=&quot;&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;A year in the Gregorian calendar is a leap year, if the year number is divisible by 4 UNLESS it is valso divisible by 400 &lt;/span&gt;.&lt;/p&gt;

&lt;h2 id=&quot;the-month&quot;&gt;The Month&lt;/h2&gt;

&lt;p&gt;A lunar month &lt;label for=&quot;&quot; class=&quot;margin-toggle&quot;&gt; ⊕&lt;/label&gt;&lt;input type=&quot;checkbox&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;marginnote&quot;&gt;Our word for &lt;em&gt;month&lt;/em&gt; comes from &lt;em&gt;moon&lt;/em&gt;, and in many cultures the word is still exactly the same. In Chinese, for example, it’s 月 (&lt;em&gt;yuè&lt;/em&gt;, in Mandarin), which looks like a crescent moon (and indeed in older forms WAS a crescent moon). &lt;/span&gt; (the time between sucessive full or new moons) is between 29 and 30 days. It varies because, though the moon is orbiting the earth at a continuous rate, the interplay with the sun (and therefore the phase of the moon) is more complex. It was a good enough measure for our ancestors, but hardly one hard-headed civilisations could build a calendar around.&lt;/p&gt;

&lt;h3 id=&quot;an-example&quot;&gt;An Example&lt;/h3&gt;

&lt;p&gt;Our curent calendar is unhelpful in ways that we all sort-of ignore. Consider the simple question: &lt;em&gt;“what date is in a month’s time?”&lt;/em&gt;. Imagine today is the 10th of September. Is a month’s time the 10th of October? that’s 30 days later, but is another month’s time the 10th of November? that’s not another 30 days later, as October has 31 days. So the two intervals have different durations. If I pay you a fixed amount for a month’s work, you’re probably doing a day of work for free in October. I say &lt;em&gt;probably&lt;/em&gt; because we now need to talk about Weeks.&lt;/p&gt;

&lt;h2 id=&quot;weeks&quot;&gt;Weeks&lt;/h2&gt;

&lt;p&gt;Ah, weeks. I love weeks. They have problems&lt;label for=&quot;&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;Not least because their duration is a prime number of days! &lt;/span&gt;, but at least they are REGULAR. Up until the end of the year, when you find that 365 doesn’t divide by 7 equally. But for the OTHER 51 weeks of the year, you can ignore that.&lt;/p&gt;

&lt;p&gt;It is in their interplay with months that they fall down. Not all weekdays are equal. 5 days of work, followed by the 2-day weekend is a nightmare for figuring out how many work days there are in a month.&lt;/p&gt;

&lt;p&gt;If the 1st of January is a Monday, then the 31st is a Wednesday, and the 1st of February is a Thursday.&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: left&quot;&gt;Month&lt;/th&gt;
      &lt;th style=&quot;text-align: right&quot;&gt;Duration&lt;/th&gt;
      &lt;th style=&quot;text-align: right&quot;&gt;Workdays (2019)&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;January&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;30&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;23&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;February&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;28&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;21&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;March&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;31&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;21&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;April&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;30&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;22&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;May&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;31&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;23&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;June&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;30&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;23&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;July&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;31&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;23&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;August&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;31&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;22&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;September&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;30&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;21&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;October&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;31&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;23&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;November&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;30&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;21&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;December&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;31&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;22&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Average&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;&lt;strong&gt;30.42&lt;/strong&gt;&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;&lt;strong&gt;22.08&lt;/strong&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;em&gt;Who came up with this!? F–, see me after class.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h1 id=&quot;solutions&quot;&gt;Solutions&lt;/h1&gt;

&lt;p&gt;In short, there are none, because calendars are for interacting and scheduling with the world. HOWEVER, the revolution, dear reader, could start with YOU.&lt;/p&gt;

&lt;p&gt;An example of where it can work in isolation is in the Kodak company. From 1928 to 1989, Kodak ran their business on a calendar with 13 months of 28 days. The astute reader will note that only accounts for 364 days. The 13-month calendar handles this in the same way as the gregorian calendar handles different workdays every month, in that it ignores it. Specifically, it is a long weekend, a sort of new year holiday that belongs to no month and no week. The same happens on a leap year&lt;label for=&quot;&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;which is still needed, as the planet’s rotation around the sun isn’t exactly 365 days &lt;/span&gt;, and we all get a 4-day weekend.&lt;/p&gt;

&lt;p&gt;This calendar&lt;label for=&quot;&quot; class=&quot;margin-toggle sidenote-number&quot;&gt;&lt;/label&gt;&lt;input type=&quot;checkbox&quot; class=&quot;margin-toggle&quot; /&gt;&lt;span class=&quot;sidenote&quot;&gt;And those materially like it. &lt;/span&gt;, is known as the International Fixed Calendar. Every month looks like a Febuary that starts on a Monday, like this:&lt;/p&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th style=&quot;text-align: right&quot;&gt;Mon&lt;/th&gt;
      &lt;th style=&quot;text-align: right&quot;&gt;Tue&lt;/th&gt;
      &lt;th style=&quot;text-align: right&quot;&gt;Wed&lt;/th&gt;
      &lt;th style=&quot;text-align: right&quot;&gt;Thu&lt;/th&gt;
      &lt;th style=&quot;text-align: right&quot;&gt;Fri&lt;/th&gt;
      &lt;th style=&quot;text-align: right&quot;&gt;Sat&lt;/th&gt;
      &lt;th style=&quot;text-align: right&quot;&gt;Sun&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;1&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;2&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;3&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;4&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;5&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;6&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;7&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;8&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;9&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;10&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;11&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;12&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;13&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;14&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;15&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;16&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;17&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;18&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;19&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;20&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;21&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;22&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;23&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;24&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;25&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;26&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;27&lt;/td&gt;
      &lt;td style=&quot;text-align: right&quot;&gt;28&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;NYD&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;Leap Day&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;Why not join me in trying out this interesting calendar for privately organising your life?&lt;/p&gt;
</description>
        <pubDate>Fri, 05 Jul 2019 16:00:00 +0100</pubDate>
        <link>/articles/19/rational-time</link>
        <guid isPermaLink="true">/articles/19/rational-time</guid>
        
        
      </item>
    
      <item>
        <title>0atman's Rule Zero</title>
        <description>&lt;h2 id=&quot;read-the-error-message-again&quot;&gt;Read the error message again.&lt;/h2&gt;

&lt;p&gt;Error messages are the ghosts of the engineers who came before you trying to tell you something - listen to them!&lt;/p&gt;
</description>
        <pubDate>Mon, 05 Nov 2018 15:20:00 +0000</pubDate>
        <link>/articles/18/rule-zero</link>
        <guid isPermaLink="true">/articles/18/rule-zero</guid>
        
        
        <category>coding</category>
        
      </item>
    
      <item>
        <title>Streaming with Icecast</title>
        <description>&lt;p&gt;After years of no satisfactory music radio solution, I researched in earnest how to set up my own broadcast setup, and it was easier than I thought!&lt;/p&gt;

&lt;p&gt;In essense:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Darkice redirects the sound from your speakers to a remote server&lt;/li&gt;
  &lt;li&gt;Icecast re-broadcasts that audio to n clients&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thanks to Ruggero “infiniteproject”, we have a &lt;a href=&quot;https://hub.docker.com/r/infiniteproject/icecast/&quot;&gt;dockerized icecast server&lt;/a&gt;, run it on your favourite container platform with these settings:&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;
&lt;span class=&quot;n&quot;&gt;ICECAST_SOURCE_PASSWORD&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;yourpassword&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ICECAST_ADMIN_PASSWORD&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;yourpassword&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ICECAST_RELAY_PASSWORD&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;yourpassword&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ICECAST_ADMIN_USERNAME&lt;/span&gt;  &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;DJ_Schmumu&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ICECAST_ADMIN_EMAIL&lt;/span&gt;     &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;dj_schmumu&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ICECAST_LOCATION&lt;/span&gt;        &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;Spaaaace&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ICECAST_HOSTNAME&lt;/span&gt;        &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;your&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;server&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;here&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ICECAST_MAX_CLIENTS&lt;/span&gt;     &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ICECAST_MAX_SOURCES&lt;/span&gt;     &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;mi&quot;&gt;10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Then on your local machine, run &lt;a href=&quot;http://darkice.org/&quot;&gt;Darkice&lt;/a&gt;, or the ui, Darksnow, with these settings:&lt;/p&gt;

&lt;div class=&quot;language-ini highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;
&lt;span class=&quot;nn&quot;&gt;[general]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;duration&lt;/span&gt;        &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;0      # duration in s, 0 forever&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;bufferSecs&lt;/span&gt;      &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;1      # buffer, in seconds&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;reconnect&lt;/span&gt;       &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;yes    # reconnect if disconnected&lt;/span&gt;

&lt;span class=&quot;nn&quot;&gt;[input]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;device&lt;/span&gt;          &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;default # or `pulse' for Pulseaudio&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;sampleRate&lt;/span&gt;      &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;44100   # sample rate 11025, 22050 or 44100&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;bitsPerSample&lt;/span&gt;   &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;16      # bits&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;channel&lt;/span&gt;         &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;2       # 2 = stereo&lt;/span&gt;

&lt;span class=&quot;nn&quot;&gt;[icecast2-0]&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;bitrateMode&lt;/span&gt;     &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;vbr       # variable bit rate (`cbr' constant, `abr' average)&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;quality&lt;/span&gt;         &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;1.0       # 1.0 is best quality&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;format&lt;/span&gt;          &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;mp3       # format. Choose `vorbis' for OGG Vorbis&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;bitrate&lt;/span&gt;         &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;256       # bitrate&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;server&lt;/span&gt;          &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;your.icecast.server # or IP&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;port&lt;/span&gt;            &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;8000      # port for IceCast2 access&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;password&lt;/span&gt;        &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;very secure password # source password to the IceCast2 server&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;mountPoint&lt;/span&gt;      &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;your_radio_station.mp3  # mount point on the IceCast2 server .mp3 or .ogg&lt;/span&gt;
&lt;span class=&quot;py&quot;&gt;name&lt;/span&gt;            &lt;span class=&quot;p&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;Your Radio Station Name&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Then tune in with your favourite streaming client, or even just hitting your.icecast.server:8000 in a browser, the mp3 will stream!&lt;/p&gt;

&lt;p&gt;You shouldn’t use this to stream spotify to your friends, as that’s in breach of their single-listener license, before you ask.&lt;/p&gt;
</description>
        <pubDate>Fri, 23 Feb 2018 10:00:00 +0000</pubDate>
        <link>/articles/18/icecast</link>
        <guid isPermaLink="true">/articles/18/icecast</guid>
        
        
        <category>coding</category>
        
      </item>
    
  </channel>
</rss>
