Just my blogroll - BlogFlock2025-11-23T09:16:13.201ZBlogFlockProtesilaos Stavrou: News and Announcements, Justin Barclay, Arialdo Martini, BuzzMachine, Irreal, GamingOnLinux Latest Articles, The Emacs Cat, Sacha Chua, MacAdie Web Blog, Emacs@ Dyerdwelling, Xah Lee, Jeff Kreeftmeijer, Karthinks, Philip KALUDERCIC, Bowmansarrow, Take on Rules, manuel uberti, Wilfred Hughes::Blog, Bicycle For Your Mind, LWN.net, Rock Paper Shotgun Latest Articles Feed, McSweeney’sCelebrate the fictitious 35th anniversary of Ruin, a faux point-and-click adventure game that never was - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/celebrate-the-fictitious-35th-anniversary-of-ruin-a-faux-point-and-click-adventure-game-that-never-was2025-11-22T22:54:43.000Z<img src="https://assetsio.gnwcdn.com/ruin.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
Gosh, can you believe it? It's already the 35th anniversary of Ruin! It came out before I was born, but even I'm feeling the passage of time with this one. With such a momentous occasion upon us, a special 35th anniversary edition of the legendary <a href="https://www.rockpapershotgun.com/best-rpgs">RPG</a> has been released by its developer Official Electric, split across just four floppy disks… except, well, you've definitely already clocked that Ruin isn't quite real. At least not in the way it's been presented.
</p> <p><a href="https://www.rockpapershotgun.com/celebrate-the-fictitious-35th-anniversary-of-ruin-a-faux-point-and-click-adventure-game-that-never-was">Read more</a></p>Who knows if we'll ever get another Hollow Knight, but if we do, you can expect it to be as standalone as Silksong - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/who-knows-if-well-ever-get-another-hollow-knight-but-if-we-do-you-can-expect-them-to-be-as-standalone-as-silksong2025-11-22T21:42:54.000Z<img src="https://assetsio.gnwcdn.com/silksong_XIi8oj7.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
Let's get something real clear here right off the bat: I couldn't possibly tell you if Team Cherry are planning to make any more <a href="https://www.rockpapershotgun.com/games/hollow-knight">Hollow Knight</a> games. That isn't to say there isn't more Hollow Knight on the way, as <a href="https://www.rockpapershotgun.com/games/hollow-knight-silksong">Silksong</a> will be getting… <a href="https://www.rockpapershotgun.com/silksong-will-get-dlc-for-years-some-of-the-plans-for-that-stuff-are-kind-of-ambitious-as-well">something</a>, at some point, in the future. However! Studio heads William Pellen and Ari Gibson have at least floated a hypothetical idea around how the world of Hollow Knight might get bigger.
</p> <p><a href="https://www.rockpapershotgun.com/who-knows-if-well-ever-get-another-hollow-knight-but-if-we-do-you-can-expect-them-to-be-as-standalone-as-silksong">Read more</a></p>Varsapura adds some flashy-but-plain-looking, pyschic action to miHoYo's Genshin Impact formula in its first gameplay trailer - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/varsapura-adds-some-flashy-but-plain-looking-pyschic-action-to-mihoyos-genshin-impact-formula-in-its-first-gameplay-trailer2025-11-22T18:57:43.000Z<img src="https://assetsio.gnwcdn.com/varsapura_vwGsW7K.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
I think miHoYo might just have a bit too much money. Somehow, they have yet another game on the way called Varsapura, yet another anime-looking, <a href="https://www.rockpapershotgun.com/the-best-open-world-games">open-world</a> action game, this time by way of psychic mishappenings. As many have pointed out, there's a vague Control-like quality to it, at least in its newly shown off, lengthy gameplay demo.
</p> <p><a href="https://www.rockpapershotgun.com/varsapura-adds-some-flashy-but-plain-looking-pyschic-action-to-mihoyos-genshin-impact-formula-in-its-first-gameplay-trailer">Read more</a></p>Hytale gets a cheap price point, all because its devs don't think the game is good yet - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/hytale-gets-a-cheap-price-point-all-because-its-devs-dont-think-the-game-is-good-yet2025-11-22T18:02:25.000Z<img src="https://assetsio.gnwcdn.com/former-hytale-dev-claims-internal-mismanagement-following-cancellation-01.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
<a href="https://www.rockpapershotgun.com/games/hytale">Hytale</a> has had a bit of a rough go of it, given how it's been in the works for a decade, still isn't finished, and was unceremoniously cancelled. Not to worry though, <a href="https://www.rockpapershotgun.com/in-a-rare-bit-of-good-news-hytale-lives-on-with-its-original-devs-buying-the-rights-off-of-riot">as it's back</a>! And it's in the hands of its developer's original co-founders. With the announcement that Hytale will live on, it was also noted that the game's pricing would be revealed soon, and soon it was as it's already been confirmed.
</p> <p><a href="https://www.rockpapershotgun.com/hytale-gets-a-cheap-price-point-all-because-its-devs-dont-think-the-game-is-good-yet">Read more</a></p>Warhammer: Vermintide 2 is free to keep forever on Steam, as long as you're quick about it - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/warhammer-vermintide-2-is-free-to-keep-forever-on-steam-as-long-as-youre-quick-about-it2025-11-22T17:01:12.000Z<img src="https://assetsio.gnwcdn.com/vermintide-2-co-op.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
It's been 10 years since Fatshark's Warhammer Tide years kicked off, starting with <a href="https://www.rockpapershotgun.com/games/warhammer-end-times-vermintide">Warhammer: End times - Vermintide</a>, and to celebrate that anniversary the developer has been offering up various in-game events and updates in both Vermintide 2 and Darktide. Earlier this week <a href="https://www.rockpapershotgun.com/games/warhammer-vermintide-2">Vermintide 2</a> received a free new level, a point we'll come back to, but the big thing you should know first is that you can pick up the co-op dark fantasy game for free on Steam right now, and keep it forever.
</p> <p><a href="https://www.rockpapershotgun.com/warhammer-vermintide-2-is-free-to-keep-forever-on-steam-as-long-as-youre-quick-about-it">Read more</a></p>Infix Versus Prefix Operators - Irrealhttps://irreal.org/blog/?p=134262025-11-22T15:32:48.000Z<p>
Over at the Lisp subreddit, Combinatorilliance asks if <a href="https://www.reddit.com/r/lisp/comments/1p38okw/looking_for_empirical_studies_comparing_reading/">there are any studies addressing the question of whether infix or prefix notation is easier to read and understand</a>. There are, of course, fierce partisans on both sides of the question. We certainly hear lots of complaints from the anti-Emacs brigade about how hard Elisp is to read and in particular how prefix notation is an abomination.
</p>
<p>
I can read either notation with equal facility so I’m not going to enlist in either camp. At the end of the day, I’m pretty sure that it’s just a matter of what you’re used to. That gives the infix camp a huge advantage because, of course, we all learned to do arithmetic that way. But once you’ve used Elisp—or any Lisp—for a while you get used to prefix notation too and mostly don’t care which you’re reading.
</p>
<p>
I say “mostly” but truth to tell, I slightly prefer prefix. It is, after all, unambiguous and doesn’t require parenthesis that aren’t already there for other reasons. The precedence is always explicit. And an interesting, if anecdotal, data point is that Lisp originally envisioned an eventual infix notation but the original users liked and preferred S-expressions with their prefix notation.
</p>
<p>
As for Combinatorilliance’s question, it’s far too underspecified as stated. It’s like asking whether English or Italian is easier to read. You’ll get widely different answers if you ask the question in the United States or Italy. To be well-formed, the question would have to be something of the sort, “Do people with equal facility in reading infix and prefix find one or the other easier to read?” You can already see the problems. Now you have to have an reliable of measure of facility in reading the two notations and once you do, the question seems to lose some of it’s interest. Again, it will come down to a matter of preference rather than inherent lucidity.
</p>
<p>
Most Emacs users in a programming position are going to have to be adept at both notations so the whole thing boils down to just another holy war like Vim versus Emacs.</p>
What are we all playing this weekend? - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/what-are-we-all-playing-this-weekend-3512025-11-22T08:00:00.000Z<img src="https://assetsio.gnwcdn.com/monstre-balloon-1600.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Saturdays are for trying to befriend the local foxes. There are a bunch living under the hedge by the flat. I saw a big fat fox sitting in the road this week, like a cross between a rising bollard and a garden gnome. I wonder if I can entice them into gathering outside my window with slices of Hovis. Anyway - any weekend plans? Here's what we're clicking on.</p> <p><a href="https://www.rockpapershotgun.com/what-are-we-all-playing-this-weekend-351">Read more</a></p>Proton Experimental for SteamOS / Linux gets fixes for Marvel Rivals, BlazBlue Centralfiction and more - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2025/11/proton-experimental-for-steamos-linux-gets-fixes-for-marvel-rivals-blazblue-centralfiction-and-more/2025-11-22T00:26:17.000ZA fresh Proton Experimental update from Valve for the weekend with various game fixes for SteamOS / Linux.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/1208425816id28059gol.jpg" alt />.</p><p>Read the full article on <a href="https://www.gamingonlinux.com/2025/11/proton-experimental-for-steamos-linux-gets-fixes-for-marvel-rivals-blazblue-centralfiction-and-more/">GamingOnLinux</a>.</p>Tracking my oopses - Sacha Chuahttps://sachachua.com/blog/2025/11/tracking-my-oopses/2025-11-21T22:39:54.000Z<p>
My <a href="https://sachachua.com/blog/2025/10/slowing-down-and-figuring-out-my-anxiety/">stress level</a> seems to be higher this year compared to last year.
There are a number of ways I can tell when I need
to slow down. I feel more tired, less energetic.
Enthusiasm is difficult to muster. I need to break
things down into smaller tasks. I make lots of
little mistakes: I misplace things, I forget
things, I don't think ahead.
</p>
<p>
I track my mistakes in my home-made web-based journal under the Oops category. It feels a little better, come to think of it, when I can recover at least some data from a mistake. It's part of life, just a signal that tells me my brain is getting overloaded.
</p>
<p>
I thought it would be interesting to analyse the frequency of my oops. For example, here are some recent oopses:
</p>
<ul class="org-ul">
<li>I forgot to check the EmacsConf upload folder before e-mailing the speakers a nudge about videos. There were a few more videos in there, whew! It's all good, people are patient and wonderful. Impact: people's patience. (2025-11-21-01)</li>
<li>I ate the last of the brown rice because I forgot to check if there was more. Good thing W- had more in the freezer. (2025-11-18-06)</li>
<li>I fumbled the Apple Pencil as I took my iPad off the piano. It disengaged from the magnetic lock, slid down the piano cover, and fell on the floor, breaking the tip. I didn't want to rush to catch it because I was tired and I was also holding the iPad. Fortunately, I have a number of backup tips. Impact: maybe $3 to replace that tip eventually. Cause: tired. (2025-11-18-03)</li>
<li>I washed the clothes on hot because I'm trying to avoid insect bites, but I accidentally shrank A+'s favourite purple shirt. Maybe next time I can just do a small load of my stuff. Impact: $10. I made up by buying new clothes for her, which I've been meaning to do anyway. #household (2025-11-15-16)</li>
<li>I crossed the street against the lights because I wasn't looking at the pedestrian light. (2025-11-11-06)</li>
</ul>
<p>
Here's a yearly analysis:
</p>
<details><summary>Code for retrieving and grouping my journal entries</summary>
<div class="org-src-container">
<pre class="src src-emacs-lisp" id="org11145d5"><code>(append <span class="org-highlight-quoted-quote">'</span>((<span class="org-string">"Year"</span> <span class="org-string">"Count"</span>))
(sort
(mapcar (<span class="org-keyword">lambda</span> (group)
(list
(car group)
(length (cdr group))))
(seq-group-by
(<span class="org-keyword">lambda</span> (o) (substring (my-journal-date o) 0 4))
(seq-filter (<span class="org-keyword">lambda</span> (o) (string= (my-journal-category o) <span class="org-string">"Oops"</span>)) (my-journal-get-entries))))
<span class="org-builtin">:key</span> <span class="org-highlight-quoted-quote">'</span><span class="org-highlight-quoted-symbol">car</span>))
</code></pre>
</div>
</details>
<details class="code-details" style="padding: 1em;
border-radius: 15px;
font-size: 0.9em;
box-shadow: 0.05em 0.1em 5px 0.01em #00000057;">
<summary><strong>Data table</strong></summary>
<table>
<colgroup>
<col class="org-right">
<col class="org-right">
</colgroup>
<tbody>
<tr>
<td class="org-right">Year</td>
<td class="org-right">Count</td>
</tr>
<tr>
<td class="org-right">2017</td>
<td class="org-right">12</td>
</tr>
<tr>
<td class="org-right">2018</td>
<td class="org-right">75</td>
</tr>
<tr>
<td class="org-right">2019</td>
<td class="org-right">36</td>
</tr>
<tr>
<td class="org-right">2020</td>
<td class="org-right">38</td>
</tr>
<tr>
<td class="org-right">2021</td>
<td class="org-right">33</td>
</tr>
<tr>
<td class="org-right">2022</td>
<td class="org-right">25</td>
</tr>
<tr>
<td class="org-right">2023</td>
<td class="org-right">28</td>
</tr>
<tr>
<td class="org-right">2024</td>
<td class="org-right">37</td>
</tr>
<tr>
<td class="org-right">2025</td>
<td class="org-right">73</td>
</tr>
</tbody>
</table>
</details>
<details><summary>Code for graphing comments by year</summary>
<div class="org-src-container">
<pre class="src src-python"><code><span class="org-keyword">import</span> pandas <span class="org-keyword">as</span> pd
<span class="org-keyword">import</span> seaborn <span class="org-keyword">as</span> sns
<span class="org-keyword">import</span> matplotlib.pyplot <span class="org-keyword">as</span> plt
<span class="org-keyword">import</span> numpy <span class="org-keyword">as</span> np
<span class="org-variable-name">df</span> <span class="org-operator">=</span> pd.DataFrame(data[1:], columns<span class="org-operator">=</span>data[0])
<span class="org-variable-name">df</span>[<span class="org-string">'Count'</span>] <span class="org-operator">=</span> df[<span class="org-string">'Count'</span>].astype(<span class="org-builtin">int</span>)
<span class="org-variable-name">df</span>[<span class="org-string">'Year'</span>] <span class="org-operator">=</span> df[<span class="org-string">'Year'</span>].astype(<span class="org-builtin">int</span>)
<span class="org-variable-name">df</span> <span class="org-operator">=</span> df.sort_values(<span class="org-string">'Year'</span>)
plt.figure(figsize<span class="org-operator">=</span>(12, 6))
<span class="org-variable-name">ax</span> <span class="org-operator">=</span> sns.barplot(x<span class="org-operator">=</span><span class="org-string">'Year'</span>, y<span class="org-operator">=</span><span class="org-string">'Count'</span>, data<span class="org-operator">=</span>df)
plt.title(<span class="org-string">'Oops by Year (2017-2025)'</span>, fontsize<span class="org-operator">=</span>16, fontweight<span class="org-operator">=</span><span class="org-string">'bold'</span>)
plt.xlabel(<span class="org-string">'Year'</span>)
plt.ylabel(<span class="org-string">'Number of oops entries'</span>)
plt.xticks(rotation<span class="org-operator">=</span>45)
plt.grid(axis<span class="org-operator">=</span><span class="org-string">'y'</span>)
<span class="org-keyword">for</span> i, v <span class="org-keyword">in</span> <span class="org-builtin">enumerate</span>(df[<span class="org-string">'Count'</span>]):
ax.text(i, v <span class="org-operator">+</span> 1, <span class="org-builtin">str</span>(v), ha<span class="org-operator">=</span><span class="org-string">'center'</span>, fontsize<span class="org-operator">=</span>9)
plt.tight_layout()
plt.savefig(<span class="org-string">'year_count_plot.svg'</span>)
<span class="org-keyword">return</span> <span class="org-string">'year_count_plot.svg'</span>
</code></pre>
</div>
</details>
<figure id="orgc3f0689">
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns:xlink="http://www.w3.org/1999/xlink" width="864pt" height="432pt" viewBox="0 0 864 432" xmlns="http://www.w3.org/2000/svg" version="1.1">
<metadata>
<rdf:RDF xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<cc:Work>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"></dc:type>
<dc:date>2025-11-21T17:15:47.790809</dc:date>
<dc:format>image/svg+xml</dc:format>
<dc:creator>
<cc:Agent>
<dc:title>Matplotlib v3.6.3, https://matplotlib.org/</dc:title>
</cc:Agent>
</dc:creator>
</cc:Work>
</rdf:RDF>
</metadata>
<defs>
<style type="text/css">*{stroke-linejoin: round; stroke-linecap: butt}</style>
</defs>
<g id="figure_1">
<g id="patch_1">
<path d="M 0 432
L 864 432
L 864 0
L 0 0
z
" style="fill: #ffffff"></path>
</g>
<g id="axes_1">
<g id="patch_2">
<path d="M 44.66 374.918714
L 853.2 374.918714
L 853.2 29.76
L 44.66 29.76
z
" style="fill: #ffffff"></path>
</g>
<g id="patch_3">
<path d="M 53.643778 374.918714
L 125.514 374.918714
L 125.514 322.323101
L 53.643778 322.323101
z
" clip-path="url(#pa05b6e235d)" style="fill: #3274a1"></path>
</g>
<g id="patch_4">
<path d="M 143.481556 374.918714
L 215.351778 374.918714
L 215.351778 46.196129
L 143.481556 46.196129
z
" clip-path="url(#pa05b6e235d)" style="fill: #3274a1"></path>
</g>
<g id="patch_5">
<path d="M 233.319333 374.918714
L 305.189556 374.918714
L 305.189556 217.131873
L 233.319333 217.131873
z
" clip-path="url(#pa05b6e235d)" style="fill: #3274a1"></path>
</g>
<g id="patch_6">
<path d="M 323.157111 374.918714
L 395.027333 374.918714
L 395.027333 208.365938
L 323.157111 208.365938
z
" clip-path="url(#pa05b6e235d)" style="fill: #3274a1"></path>
</g>
<g id="patch_7">
<path d="M 412.994889 374.918714
L 484.865111 374.918714
L 484.865111 230.280777
L 412.994889 230.280777
z
" clip-path="url(#pa05b6e235d)" style="fill: #3274a1"></path>
</g>
<g id="patch_8">
<path d="M 502.832667 374.918714
L 574.702889 374.918714
L 574.702889 265.344519
L 502.832667 265.344519
z
" clip-path="url(#pa05b6e235d)" style="fill: #3274a1"></path>
</g>
<g id="patch_9">
<path d="M 592.670444 374.918714
L 664.540667 374.918714
L 664.540667 252.195616
L 592.670444 252.195616
z
" clip-path="url(#pa05b6e235d)" style="fill: #3274a1"></path>
</g>
<g id="patch_10">
<path d="M 682.508222 374.918714
L 754.378444 374.918714
L 754.378444 212.748906
L 682.508222 212.748906
z
" clip-path="url(#pa05b6e235d)" style="fill: #3274a1"></path>
</g>
<g id="patch_11">
<path d="M 772.346 374.918714
L 844.216222 374.918714
L 844.216222 54.962065
L 772.346 54.962065
z
" clip-path="url(#pa05b6e235d)" style="fill: #3274a1"></path>
</g>
<g id="matplotlib.axis_1">
<g id="xtick_1">
<g id="line2d_1">
<defs>
<path id="mf5781061e0" d="M 0 0
L 0 3.5
" style="stroke: #000000; stroke-width: 0.8"></path>
</defs>
<g>
<use xlink:href="#mf5781061e0" x="89.578889" y="374.918714" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_1">
<g transform="translate(82.532128 405.287489) rotate(-45) scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-32" d="M 1228 531
L 3431 531
L 3431 0
L 469 0
L 469 531
Q 828 903 1448 1529
Q 2069 2156 2228 2338
Q 2531 2678 2651 2914
Q 2772 3150 2772 3378
Q 2772 3750 2511 3984
Q 2250 4219 1831 4219
Q 1534 4219 1204 4116
Q 875 4013 500 3803
L 500 4441
Q 881 4594 1212 4672
Q 1544 4750 1819 4750
Q 2544 4750 2975 4387
Q 3406 4025 3406 3419
Q 3406 3131 3298 2873
Q 3191 2616 2906 2266
Q 2828 2175 2409 1742
Q 1991 1309 1228 531
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-30" d="M 2034 4250
Q 1547 4250 1301 3770
Q 1056 3291 1056 2328
Q 1056 1369 1301 889
Q 1547 409 2034 409
Q 2525 409 2770 889
Q 3016 1369 3016 2328
Q 3016 3291 2770 3770
Q 2525 4250 2034 4250
z
M 2034 4750
Q 2819 4750 3233 4129
Q 3647 3509 3647 2328
Q 3647 1150 3233 529
Q 2819 -91 2034 -91
Q 1250 -91 836 529
Q 422 1150 422 2328
Q 422 3509 836 4129
Q 1250 4750 2034 4750
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-31" d="M 794 531
L 1825 531
L 1825 4091
L 703 3866
L 703 4441
L 1819 4666
L 2450 4666
L 2450 531
L 3481 531
L 3481 0
L 794 0
L 794 531
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-37" d="M 525 4666
L 3525 4666
L 3525 4397
L 1831 0
L 1172 0
L 2766 4134
L 525 4134
L 525 4666
z
" transform="scale(0.015625)"></path>
</defs>
<use xlink:href="#DejaVuSans-32"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
<use xlink:href="#DejaVuSans-31" x="127.246094"></use>
<use xlink:href="#DejaVuSans-37" x="190.869141"></use>
</g>
</g>
</g>
<g id="xtick_2">
<g id="line2d_2">
<g>
<use xlink:href="#mf5781061e0" x="179.416667" y="374.918714" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_2">
<g transform="translate(172.369906 405.287489) rotate(-45) scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-38" d="M 2034 2216
Q 1584 2216 1326 1975
Q 1069 1734 1069 1313
Q 1069 891 1326 650
Q 1584 409 2034 409
Q 2484 409 2743 651
Q 3003 894 3003 1313
Q 3003 1734 2745 1975
Q 2488 2216 2034 2216
z
M 1403 2484
Q 997 2584 770 2862
Q 544 3141 544 3541
Q 544 4100 942 4425
Q 1341 4750 2034 4750
Q 2731 4750 3128 4425
Q 3525 4100 3525 3541
Q 3525 3141 3298 2862
Q 3072 2584 2669 2484
Q 3125 2378 3379 2068
Q 3634 1759 3634 1313
Q 3634 634 3220 271
Q 2806 -91 2034 -91
Q 1263 -91 848 271
Q 434 634 434 1313
Q 434 1759 690 2068
Q 947 2378 1403 2484
z
M 1172 3481
Q 1172 3119 1398 2916
Q 1625 2713 2034 2713
Q 2441 2713 2670 2916
Q 2900 3119 2900 3481
Q 2900 3844 2670 4047
Q 2441 4250 2034 4250
Q 1625 4250 1398 4047
Q 1172 3844 1172 3481
z
" transform="scale(0.015625)"></path>
</defs>
<use xlink:href="#DejaVuSans-32"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
<use xlink:href="#DejaVuSans-31" x="127.246094"></use>
<use xlink:href="#DejaVuSans-38" x="190.869141"></use>
</g>
</g>
</g>
<g id="xtick_3">
<g id="line2d_3">
<g>
<use xlink:href="#mf5781061e0" x="269.254444" y="374.918714" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_3">
<g transform="translate(262.207683 405.287489) rotate(-45) scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-39" d="M 703 97
L 703 672
Q 941 559 1184 500
Q 1428 441 1663 441
Q 2288 441 2617 861
Q 2947 1281 2994 2138
Q 2813 1869 2534 1725
Q 2256 1581 1919 1581
Q 1219 1581 811 2004
Q 403 2428 403 3163
Q 403 3881 828 4315
Q 1253 4750 1959 4750
Q 2769 4750 3195 4129
Q 3622 3509 3622 2328
Q 3622 1225 3098 567
Q 2575 -91 1691 -91
Q 1453 -91 1209 -44
Q 966 3 703 97
z
M 1959 2075
Q 2384 2075 2632 2365
Q 2881 2656 2881 3163
Q 2881 3666 2632 3958
Q 2384 4250 1959 4250
Q 1534 4250 1286 3958
Q 1038 3666 1038 3163
Q 1038 2656 1286 2365
Q 1534 2075 1959 2075
z
" transform="scale(0.015625)"></path>
</defs>
<use xlink:href="#DejaVuSans-32"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
<use xlink:href="#DejaVuSans-31" x="127.246094"></use>
<use xlink:href="#DejaVuSans-39" x="190.869141"></use>
</g>
</g>
</g>
<g id="xtick_4">
<g id="line2d_4">
<g>
<use xlink:href="#mf5781061e0" x="359.092222" y="374.918714" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_4">
<g transform="translate(352.045461 405.287489) rotate(-45) scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-32"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
<use xlink:href="#DejaVuSans-32" x="127.246094"></use>
<use xlink:href="#DejaVuSans-30" x="190.869141"></use>
</g>
</g>
</g>
<g id="xtick_5">
<g id="line2d_5">
<g>
<use xlink:href="#mf5781061e0" x="448.93" y="374.918714" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_5">
<g transform="translate(441.883239 405.287489) rotate(-45) scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-32"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
<use xlink:href="#DejaVuSans-32" x="127.246094"></use>
<use xlink:href="#DejaVuSans-31" x="190.869141"></use>
</g>
</g>
</g>
<g id="xtick_6">
<g id="line2d_6">
<g>
<use xlink:href="#mf5781061e0" x="538.767778" y="374.918714" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_6">
<g transform="translate(531.721017 405.287489) rotate(-45) scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-32"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
<use xlink:href="#DejaVuSans-32" x="127.246094"></use>
<use xlink:href="#DejaVuSans-32" x="190.869141"></use>
</g>
</g>
</g>
<g id="xtick_7">
<g id="line2d_7">
<g>
<use xlink:href="#mf5781061e0" x="628.605556" y="374.918714" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_7">
<g transform="translate(621.558795 405.287489) rotate(-45) scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-33" d="M 2597 2516
Q 3050 2419 3304 2112
Q 3559 1806 3559 1356
Q 3559 666 3084 287
Q 2609 -91 1734 -91
Q 1441 -91 1130 -33
Q 819 25 488 141
L 488 750
Q 750 597 1062 519
Q 1375 441 1716 441
Q 2309 441 2620 675
Q 2931 909 2931 1356
Q 2931 1769 2642 2001
Q 2353 2234 1838 2234
L 1294 2234
L 1294 2753
L 1863 2753
Q 2328 2753 2575 2939
Q 2822 3125 2822 3475
Q 2822 3834 2567 4026
Q 2313 4219 1838 4219
Q 1578 4219 1281 4162
Q 984 4106 628 3988
L 628 4550
Q 988 4650 1302 4700
Q 1616 4750 1894 4750
Q 2613 4750 3031 4423
Q 3450 4097 3450 3541
Q 3450 3153 3228 2886
Q 3006 2619 2597 2516
z
" transform="scale(0.015625)"></path>
</defs>
<use xlink:href="#DejaVuSans-32"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
<use xlink:href="#DejaVuSans-32" x="127.246094"></use>
<use xlink:href="#DejaVuSans-33" x="190.869141"></use>
</g>
</g>
</g>
<g id="xtick_8">
<g id="line2d_8">
<g>
<use xlink:href="#mf5781061e0" x="718.443333" y="374.918714" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_8">
<g transform="translate(711.396572 405.287489) rotate(-45) scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-34" d="M 2419 4116
L 825 1625
L 2419 1625
L 2419 4116
z
M 2253 4666
L 3047 4666
L 3047 1625
L 3713 1625
L 3713 1100
L 3047 1100
L 3047 0
L 2419 0
L 2419 1100
L 313 1100
L 313 1709
L 2253 4666
z
" transform="scale(0.015625)"></path>
</defs>
<use xlink:href="#DejaVuSans-32"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
<use xlink:href="#DejaVuSans-32" x="127.246094"></use>
<use xlink:href="#DejaVuSans-34" x="190.869141"></use>
</g>
</g>
</g>
<g id="xtick_9">
<g id="line2d_9">
<g>
<use xlink:href="#mf5781061e0" x="808.281111" y="374.918714" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_9">
<g transform="translate(801.23435 405.287489) rotate(-45) scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-35" d="M 691 4666
L 3169 4666
L 3169 4134
L 1269 4134
L 1269 2991
Q 1406 3038 1543 3061
Q 1681 3084 1819 3084
Q 2600 3084 3056 2656
Q 3513 2228 3513 1497
Q 3513 744 3044 326
Q 2575 -91 1722 -91
Q 1428 -91 1123 -41
Q 819 9 494 109
L 494 744
Q 775 591 1075 516
Q 1375 441 1709 441
Q 2250 441 2565 725
Q 2881 1009 2881 1497
Q 2881 1984 2565 2268
Q 2250 2553 1709 2553
Q 1456 2553 1204 2497
Q 953 2441 691 2322
L 691 4666
z
" transform="scale(0.015625)"></path>
</defs>
<use xlink:href="#DejaVuSans-32"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
<use xlink:href="#DejaVuSans-32" x="127.246094"></use>
<use xlink:href="#DejaVuSans-35" x="190.869141"></use>
</g>
</g>
</g>
<g id="text_10">
<g transform="translate(438.3425 418.356487) scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-59" d="M -13 4666
L 666 4666
L 1959 2747
L 3244 4666
L 3922 4666
L 2272 2222
L 2272 0
L 1638 0
L 1638 2222
L -13 4666
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-65" d="M 3597 1894
L 3597 1613
L 953 1613
Q 991 1019 1311 708
Q 1631 397 2203 397
Q 2534 397 2845 478
Q 3156 559 3463 722
L 3463 178
Q 3153 47 2828 -22
Q 2503 -91 2169 -91
Q 1331 -91 842 396
Q 353 884 353 1716
Q 353 2575 817 3079
Q 1281 3584 2069 3584
Q 2775 3584 3186 3129
Q 3597 2675 3597 1894
z
M 3022 2063
Q 3016 2534 2758 2815
Q 2500 3097 2075 3097
Q 1594 3097 1305 2825
Q 1016 2553 972 2059
L 3022 2063
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-61" d="M 2194 1759
Q 1497 1759 1228 1600
Q 959 1441 959 1056
Q 959 750 1161 570
Q 1363 391 1709 391
Q 2188 391 2477 730
Q 2766 1069 2766 1631
L 2766 1759
L 2194 1759
z
M 3341 1997
L 3341 0
L 2766 0
L 2766 531
Q 2569 213 2275 61
Q 1981 -91 1556 -91
Q 1019 -91 701 211
Q 384 513 384 1019
Q 384 1609 779 1909
Q 1175 2209 1959 2209
L 2766 2209
L 2766 2266
Q 2766 2663 2505 2880
Q 2244 3097 1772 3097
Q 1472 3097 1187 3025
Q 903 2953 641 2809
L 641 3341
Q 956 3463 1253 3523
Q 1550 3584 1831 3584
Q 2591 3584 2966 3190
Q 3341 2797 3341 1997
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-72" d="M 2631 2963
Q 2534 3019 2420 3045
Q 2306 3072 2169 3072
Q 1681 3072 1420 2755
Q 1159 2438 1159 1844
L 1159 0
L 581 0
L 581 3500
L 1159 3500
L 1159 2956
Q 1341 3275 1631 3429
Q 1922 3584 2338 3584
Q 2397 3584 2469 3576
Q 2541 3569 2628 3553
L 2631 2963
z
" transform="scale(0.015625)"></path>
</defs>
<use xlink:href="#DejaVuSans-59"></use>
<use xlink:href="#DejaVuSans-65" x="47.833984"></use>
<use xlink:href="#DejaVuSans-61" x="109.357422"></use>
<use xlink:href="#DejaVuSans-72" x="170.636719"></use>
</g>
</g>
</g>
<g id="matplotlib.axis_2">
<g id="ytick_1">
<g id="line2d_10">
<path d="M 44.66 374.918714
L 853.2 374.918714
" clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"></path>
</g>
<g id="line2d_11">
<defs>
<path id="m472ce8a00e" d="M 0 0
L -3.5 0
" style="stroke: #000000; stroke-width: 0.8"></path>
</defs>
<g>
<use xlink:href="#m472ce8a00e" x="44.66" y="374.918714" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_11">
<g transform="translate(31.2975 378.717933) scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-30"></use>
</g>
</g>
</g>
<g id="ytick_2">
<g id="line2d_12">
<path d="M 44.66 331.089036
L 853.2 331.089036
" clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"></path>
</g>
<g id="line2d_13">
<g>
<use xlink:href="#m472ce8a00e" x="44.66" y="331.089036" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_12">
<g transform="translate(24.935 334.888255) scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-31"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
</g>
</g>
</g>
<g id="ytick_3">
<g id="line2d_14">
<path d="M 44.66 287.259358
L 853.2 287.259358
" clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"></path>
</g>
<g id="line2d_15">
<g>
<use xlink:href="#m472ce8a00e" x="44.66" y="287.259358" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_13">
<g transform="translate(24.935 291.058577) scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-32"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
</g>
</g>
</g>
<g id="ytick_4">
<g id="line2d_16">
<path d="M 44.66 243.42968
L 853.2 243.42968
" clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"></path>
</g>
<g id="line2d_17">
<g>
<use xlink:href="#m472ce8a00e" x="44.66" y="243.42968" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_14">
<g transform="translate(24.935 247.228899) scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-33"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
</g>
</g>
</g>
<g id="ytick_5">
<g id="line2d_18">
<path d="M 44.66 199.600002
L 853.2 199.600002
" clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"></path>
</g>
<g id="line2d_19">
<g>
<use xlink:href="#m472ce8a00e" x="44.66" y="199.600002" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_15">
<g transform="translate(24.935 203.399221) scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-34"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
</g>
</g>
</g>
<g id="ytick_6">
<g id="line2d_20">
<path d="M 44.66 155.770324
L 853.2 155.770324
" clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"></path>
</g>
<g id="line2d_21">
<g>
<use xlink:href="#m472ce8a00e" x="44.66" y="155.770324" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_16">
<g transform="translate(24.935 159.569543) scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-35"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
</g>
</g>
</g>
<g id="ytick_7">
<g id="line2d_22">
<path d="M 44.66 111.940646
L 853.2 111.940646
" clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"></path>
</g>
<g id="line2d_23">
<g>
<use xlink:href="#m472ce8a00e" x="44.66" y="111.940646" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_17">
<g transform="translate(24.935 115.739865) scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-36" d="M 2113 2584
Q 1688 2584 1439 2293
Q 1191 2003 1191 1497
Q 1191 994 1439 701
Q 1688 409 2113 409
Q 2538 409 2786 701
Q 3034 994 3034 1497
Q 3034 2003 2786 2293
Q 2538 2584 2113 2584
z
M 3366 4563
L 3366 3988
Q 3128 4100 2886 4159
Q 2644 4219 2406 4219
Q 1781 4219 1451 3797
Q 1122 3375 1075 2522
Q 1259 2794 1537 2939
Q 1816 3084 2150 3084
Q 2853 3084 3261 2657
Q 3669 2231 3669 1497
Q 3669 778 3244 343
Q 2819 -91 2113 -91
Q 1303 -91 875 529
Q 447 1150 447 2328
Q 447 3434 972 4092
Q 1497 4750 2381 4750
Q 2619 4750 2861 4703
Q 3103 4656 3366 4563
z
" transform="scale(0.015625)"></path>
</defs>
<use xlink:href="#DejaVuSans-36"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
</g>
</g>
</g>
<g id="ytick_8">
<g id="line2d_24">
<path d="M 44.66 68.110968
L 853.2 68.110968
" clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #b0b0b0; stroke-width: 0.8; stroke-linecap: square"></path>
</g>
<g id="line2d_25">
<g>
<use xlink:href="#m472ce8a00e" x="44.66" y="68.110968" style="stroke: #000000; stroke-width: 0.8"></use>
</g>
</g>
<g id="text_18">
<g transform="translate(24.935 71.910187) scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-37"></use>
<use xlink:href="#DejaVuSans-30" x="63.623047"></use>
</g>
</g>
</g>
<g id="text_19">
<g transform="translate(18.855312 261.24092) rotate(-90) scale(0.1 -0.1)">
<defs>
<path id="DejaVuSans-4e" d="M 628 4666
L 1478 4666
L 3547 763
L 3547 4666
L 4159 4666
L 4159 0
L 3309 0
L 1241 3903
L 1241 0
L 628 0
L 628 4666
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-75" d="M 544 1381
L 544 3500
L 1119 3500
L 1119 1403
Q 1119 906 1312 657
Q 1506 409 1894 409
Q 2359 409 2629 706
Q 2900 1003 2900 1516
L 2900 3500
L 3475 3500
L 3475 0
L 2900 0
L 2900 538
Q 2691 219 2414 64
Q 2138 -91 1772 -91
Q 1169 -91 856 284
Q 544 659 544 1381
z
M 1991 3584
L 1991 3584
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-6d" d="M 3328 2828
Q 3544 3216 3844 3400
Q 4144 3584 4550 3584
Q 5097 3584 5394 3201
Q 5691 2819 5691 2113
L 5691 0
L 5113 0
L 5113 2094
Q 5113 2597 4934 2840
Q 4756 3084 4391 3084
Q 3944 3084 3684 2787
Q 3425 2491 3425 1978
L 3425 0
L 2847 0
L 2847 2094
Q 2847 2600 2669 2842
Q 2491 3084 2119 3084
Q 1678 3084 1418 2786
Q 1159 2488 1159 1978
L 1159 0
L 581 0
L 581 3500
L 1159 3500
L 1159 2956
Q 1356 3278 1631 3431
Q 1906 3584 2284 3584
Q 2666 3584 2933 3390
Q 3200 3197 3328 2828
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-62" d="M 3116 1747
Q 3116 2381 2855 2742
Q 2594 3103 2138 3103
Q 1681 3103 1420 2742
Q 1159 2381 1159 1747
Q 1159 1113 1420 752
Q 1681 391 2138 391
Q 2594 391 2855 752
Q 3116 1113 3116 1747
z
M 1159 2969
Q 1341 3281 1617 3432
Q 1894 3584 2278 3584
Q 2916 3584 3314 3078
Q 3713 2572 3713 1747
Q 3713 922 3314 415
Q 2916 -91 2278 -91
Q 1894 -91 1617 61
Q 1341 213 1159 525
L 1159 0
L 581 0
L 581 4863
L 1159 4863
L 1159 2969
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-20" transform="scale(0.015625)"></path>
<path id="DejaVuSans-6f" d="M 1959 3097
Q 1497 3097 1228 2736
Q 959 2375 959 1747
Q 959 1119 1226 758
Q 1494 397 1959 397
Q 2419 397 2687 759
Q 2956 1122 2956 1747
Q 2956 2369 2687 2733
Q 2419 3097 1959 3097
z
M 1959 3584
Q 2709 3584 3137 3096
Q 3566 2609 3566 1747
Q 3566 888 3137 398
Q 2709 -91 1959 -91
Q 1206 -91 779 398
Q 353 888 353 1747
Q 353 2609 779 3096
Q 1206 3584 1959 3584
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-66" d="M 2375 4863
L 2375 4384
L 1825 4384
Q 1516 4384 1395 4259
Q 1275 4134 1275 3809
L 1275 3500
L 2222 3500
L 2222 3053
L 1275 3053
L 1275 0
L 697 0
L 697 3053
L 147 3053
L 147 3500
L 697 3500
L 697 3744
Q 697 4328 969 4595
Q 1241 4863 1831 4863
L 2375 4863
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-70" d="M 1159 525
L 1159 -1331
L 581 -1331
L 581 3500
L 1159 3500
L 1159 2969
Q 1341 3281 1617 3432
Q 1894 3584 2278 3584
Q 2916 3584 3314 3078
Q 3713 2572 3713 1747
Q 3713 922 3314 415
Q 2916 -91 2278 -91
Q 1894 -91 1617 61
Q 1341 213 1159 525
z
M 3116 1747
Q 3116 2381 2855 2742
Q 2594 3103 2138 3103
Q 1681 3103 1420 2742
Q 1159 2381 1159 1747
Q 1159 1113 1420 752
Q 1681 391 2138 391
Q 2594 391 2855 752
Q 3116 1113 3116 1747
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-73" d="M 2834 3397
L 2834 2853
Q 2591 2978 2328 3040
Q 2066 3103 1784 3103
Q 1356 3103 1142 2972
Q 928 2841 928 2578
Q 928 2378 1081 2264
Q 1234 2150 1697 2047
L 1894 2003
Q 2506 1872 2764 1633
Q 3022 1394 3022 966
Q 3022 478 2636 193
Q 2250 -91 1575 -91
Q 1294 -91 989 -36
Q 684 19 347 128
L 347 722
Q 666 556 975 473
Q 1284 391 1588 391
Q 1994 391 2212 530
Q 2431 669 2431 922
Q 2431 1156 2273 1281
Q 2116 1406 1581 1522
L 1381 1569
Q 847 1681 609 1914
Q 372 2147 372 2553
Q 372 3047 722 3315
Q 1072 3584 1716 3584
Q 2034 3584 2315 3537
Q 2597 3491 2834 3397
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-6e" d="M 3513 2113
L 3513 0
L 2938 0
L 2938 2094
Q 2938 2591 2744 2837
Q 2550 3084 2163 3084
Q 1697 3084 1428 2787
Q 1159 2491 1159 1978
L 1159 0
L 581 0
L 581 3500
L 1159 3500
L 1159 2956
Q 1366 3272 1645 3428
Q 1925 3584 2291 3584
Q 2894 3584 3203 3211
Q 3513 2838 3513 2113
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-74" d="M 1172 4494
L 1172 3500
L 2356 3500
L 2356 3053
L 1172 3053
L 1172 1153
Q 1172 725 1289 603
Q 1406 481 1766 481
L 2356 481
L 2356 0
L 1766 0
Q 1100 0 847 248
Q 594 497 594 1153
L 594 3053
L 172 3053
L 172 3500
L 594 3500
L 594 4494
L 1172 4494
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-69" d="M 603 3500
L 1178 3500
L 1178 0
L 603 0
L 603 3500
z
M 603 4863
L 1178 4863
L 1178 4134
L 603 4134
L 603 4863
z
" transform="scale(0.015625)"></path>
</defs>
<use xlink:href="#DejaVuSans-4e"></use>
<use xlink:href="#DejaVuSans-75" x="74.804688"></use>
<use xlink:href="#DejaVuSans-6d" x="138.183594"></use>
<use xlink:href="#DejaVuSans-62" x="235.595703"></use>
<use xlink:href="#DejaVuSans-65" x="299.072266"></use>
<use xlink:href="#DejaVuSans-72" x="360.595703"></use>
<use xlink:href="#DejaVuSans-20" x="401.708984"></use>
<use xlink:href="#DejaVuSans-6f" x="433.496094"></use>
<use xlink:href="#DejaVuSans-66" x="494.677734"></use>
<use xlink:href="#DejaVuSans-20" x="529.882812"></use>
<use xlink:href="#DejaVuSans-6f" x="561.669922"></use>
<use xlink:href="#DejaVuSans-6f" x="622.851562"></use>
<use xlink:href="#DejaVuSans-70" x="684.033203"></use>
<use xlink:href="#DejaVuSans-73" x="747.509766"></use>
<use xlink:href="#DejaVuSans-20" x="799.609375"></use>
<use xlink:href="#DejaVuSans-65" x="831.396484"></use>
<use xlink:href="#DejaVuSans-6e" x="892.919922"></use>
<use xlink:href="#DejaVuSans-74" x="956.298828"></use>
<use xlink:href="#DejaVuSans-72" x="995.507812"></use>
<use xlink:href="#DejaVuSans-69" x="1036.621094"></use>
<use xlink:href="#DejaVuSans-65" x="1064.404297"></use>
<use xlink:href="#DejaVuSans-73" x="1125.927734"></use>
</g>
</g>
</g>
<g id="line2d_26">
<path clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #424242; stroke-width: 2.25; stroke-linecap: square"></path>
</g>
<g id="line2d_27">
<path clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #424242; stroke-width: 2.25; stroke-linecap: square"></path>
</g>
<g id="line2d_28">
<path clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #424242; stroke-width: 2.25; stroke-linecap: square"></path>
</g>
<g id="line2d_29">
<path clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #424242; stroke-width: 2.25; stroke-linecap: square"></path>
</g>
<g id="line2d_30">
<path clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #424242; stroke-width: 2.25; stroke-linecap: square"></path>
</g>
<g id="line2d_31">
<path clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #424242; stroke-width: 2.25; stroke-linecap: square"></path>
</g>
<g id="line2d_32">
<path clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #424242; stroke-width: 2.25; stroke-linecap: square"></path>
</g>
<g id="line2d_33">
<path clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #424242; stroke-width: 2.25; stroke-linecap: square"></path>
</g>
<g id="line2d_34">
<path clip-path="url(#pa05b6e235d)" style="fill: none; stroke: #424242; stroke-width: 2.25; stroke-linecap: square"></path>
</g>
<g id="patch_12">
<path d="M 44.66 374.918714
L 44.66 29.76
" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"></path>
</g>
<g id="patch_13">
<path d="M 853.2 374.918714
L 853.2 29.76
" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"></path>
</g>
<g id="patch_14">
<path d="M 44.66 374.918714
L 853.2 374.918714
" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"></path>
</g>
<g id="patch_15">
<path d="M 44.66 29.76
L 853.2 29.76
" style="fill: none; stroke: #000000; stroke-width: 0.8; stroke-linejoin: miter; stroke-linecap: square"></path>
</g>
<g id="text_20">
<g transform="translate(83.852639 317.940133) scale(0.09 -0.09)">
<use xlink:href="#DejaVuSans-31"></use>
<use xlink:href="#DejaVuSans-32" x="63.623047"></use>
</g>
</g>
<g id="text_21">
<g transform="translate(173.690417 41.813161) scale(0.09 -0.09)">
<use xlink:href="#DejaVuSans-37"></use>
<use xlink:href="#DejaVuSans-35" x="63.623047"></use>
</g>
</g>
<g id="text_22">
<g transform="translate(263.528194 212.748906) scale(0.09 -0.09)">
<use xlink:href="#DejaVuSans-33"></use>
<use xlink:href="#DejaVuSans-36" x="63.623047"></use>
</g>
</g>
<g id="text_23">
<g transform="translate(353.365972 203.98297) scale(0.09 -0.09)">
<use xlink:href="#DejaVuSans-33"></use>
<use xlink:href="#DejaVuSans-38" x="63.623047"></use>
</g>
</g>
<g id="text_24">
<g transform="translate(443.20375 225.897809) scale(0.09 -0.09)">
<use xlink:href="#DejaVuSans-33"></use>
<use xlink:href="#DejaVuSans-33" x="63.623047"></use>
</g>
</g>
<g id="text_25">
<g transform="translate(533.041528 260.961551) scale(0.09 -0.09)">
<use xlink:href="#DejaVuSans-32"></use>
<use xlink:href="#DejaVuSans-35" x="63.623047"></use>
</g>
</g>
<g id="text_26">
<g transform="translate(622.879306 247.812648) scale(0.09 -0.09)">
<use xlink:href="#DejaVuSans-32"></use>
<use xlink:href="#DejaVuSans-38" x="63.623047"></use>
</g>
</g>
<g id="text_27">
<g transform="translate(712.717083 208.365938) scale(0.09 -0.09)">
<use xlink:href="#DejaVuSans-33"></use>
<use xlink:href="#DejaVuSans-37" x="63.623047"></use>
</g>
</g>
<g id="text_28">
<g transform="translate(802.554861 50.579097) scale(0.09 -0.09)">
<use xlink:href="#DejaVuSans-37"></use>
<use xlink:href="#DejaVuSans-33" x="63.623047"></use>
</g>
</g>
<g id="text_29">
<g transform="translate(331.85375 23.76) scale(0.16 -0.16)">
<defs>
<path id="DejaVuSans-Bold-4f" d="M 2719 3878
Q 2169 3878 1866 3472
Q 1563 3066 1563 2328
Q 1563 1594 1866 1187
Q 2169 781 2719 781
Q 3272 781 3575 1187
Q 3878 1594 3878 2328
Q 3878 3066 3575 3472
Q 3272 3878 2719 3878
z
M 2719 4750
Q 3844 4750 4481 4106
Q 5119 3463 5119 2328
Q 5119 1197 4481 553
Q 3844 -91 2719 -91
Q 1597 -91 958 553
Q 319 1197 319 2328
Q 319 3463 958 4106
Q 1597 4750 2719 4750
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-6f" d="M 2203 2784
Q 1831 2784 1636 2517
Q 1441 2250 1441 1747
Q 1441 1244 1636 976
Q 1831 709 2203 709
Q 2569 709 2762 976
Q 2956 1244 2956 1747
Q 2956 2250 2762 2517
Q 2569 2784 2203 2784
z
M 2203 3584
Q 3106 3584 3614 3096
Q 4122 2609 4122 1747
Q 4122 884 3614 396
Q 3106 -91 2203 -91
Q 1297 -91 786 396
Q 275 884 275 1747
Q 275 2609 786 3096
Q 1297 3584 2203 3584
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-70" d="M 1656 506
L 1656 -1331
L 538 -1331
L 538 3500
L 1656 3500
L 1656 2988
Q 1888 3294 2169 3439
Q 2450 3584 2816 3584
Q 3463 3584 3878 3070
Q 4294 2556 4294 1747
Q 4294 938 3878 423
Q 3463 -91 2816 -91
Q 2450 -91 2169 54
Q 1888 200 1656 506
z
M 2400 2772
Q 2041 2772 1848 2508
Q 1656 2244 1656 1747
Q 1656 1250 1848 986
Q 2041 722 2400 722
Q 2759 722 2948 984
Q 3138 1247 3138 1747
Q 3138 2247 2948 2509
Q 2759 2772 2400 2772
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-73" d="M 3272 3391
L 3272 2541
Q 2913 2691 2578 2766
Q 2244 2841 1947 2841
Q 1628 2841 1473 2761
Q 1319 2681 1319 2516
Q 1319 2381 1436 2309
Q 1553 2238 1856 2203
L 2053 2175
Q 2913 2066 3209 1816
Q 3506 1566 3506 1031
Q 3506 472 3093 190
Q 2681 -91 1863 -91
Q 1516 -91 1145 -36
Q 775 19 384 128
L 384 978
Q 719 816 1070 734
Q 1422 653 1784 653
Q 2113 653 2278 743
Q 2444 834 2444 1013
Q 2444 1163 2330 1236
Q 2216 1309 1875 1350
L 1678 1375
Q 931 1469 631 1722
Q 331 1975 331 2491
Q 331 3047 712 3315
Q 1094 3584 1881 3584
Q 2191 3584 2531 3537
Q 2872 3491 3272 3391
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-20" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-62" d="M 2400 722
Q 2759 722 2948 984
Q 3138 1247 3138 1747
Q 3138 2247 2948 2509
Q 2759 2772 2400 2772
Q 2041 2772 1848 2508
Q 1656 2244 1656 1747
Q 1656 1250 1848 986
Q 2041 722 2400 722
z
M 1656 2988
Q 1888 3294 2169 3439
Q 2450 3584 2816 3584
Q 3463 3584 3878 3070
Q 4294 2556 4294 1747
Q 4294 938 3878 423
Q 3463 -91 2816 -91
Q 2450 -91 2169 54
Q 1888 200 1656 506
L 1656 0
L 538 0
L 538 4863
L 1656 4863
L 1656 2988
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-79" d="M 78 3500
L 1197 3500
L 2138 1125
L 2938 3500
L 4056 3500
L 2584 -331
Q 2363 -916 2067 -1148
Q 1772 -1381 1288 -1381
L 641 -1381
L 641 -647
L 991 -647
Q 1275 -647 1404 -556
Q 1534 -466 1606 -231
L 1638 -134
L 78 3500
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-59" d="M -63 4666
L 1253 4666
L 2316 3003
L 3378 4666
L 4697 4666
L 2919 1966
L 2919 0
L 1716 0
L 1716 1966
L -63 4666
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-65" d="M 4031 1759
L 4031 1441
L 1416 1441
Q 1456 1047 1700 850
Q 1944 653 2381 653
Q 2734 653 3104 758
Q 3475 863 3866 1075
L 3866 213
Q 3469 63 3072 -14
Q 2675 -91 2278 -91
Q 1328 -91 801 392
Q 275 875 275 1747
Q 275 2603 792 3093
Q 1309 3584 2216 3584
Q 3041 3584 3536 3087
Q 4031 2591 4031 1759
z
M 2881 2131
Q 2881 2450 2695 2645
Q 2509 2841 2209 2841
Q 1884 2841 1681 2658
Q 1478 2475 1428 2131
L 2881 2131
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-61" d="M 2106 1575
Q 1756 1575 1579 1456
Q 1403 1338 1403 1106
Q 1403 894 1545 773
Q 1688 653 1941 653
Q 2256 653 2472 879
Q 2688 1106 2688 1447
L 2688 1575
L 2106 1575
z
M 3816 1997
L 3816 0
L 2688 0
L 2688 519
Q 2463 200 2181 54
Q 1900 -91 1497 -91
Q 953 -91 614 226
Q 275 544 275 1050
Q 275 1666 698 1953
Q 1122 2241 2028 2241
L 2688 2241
L 2688 2328
Q 2688 2594 2478 2717
Q 2269 2841 1825 2841
Q 1466 2841 1156 2769
Q 847 2697 581 2553
L 581 3406
Q 941 3494 1303 3539
Q 1666 3584 2028 3584
Q 2975 3584 3395 3211
Q 3816 2838 3816 1997
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-72" d="M 3138 2547
Q 2991 2616 2845 2648
Q 2700 2681 2553 2681
Q 2122 2681 1889 2404
Q 1656 2128 1656 1613
L 1656 0
L 538 0
L 538 3500
L 1656 3500
L 1656 2925
Q 1872 3269 2151 3426
Q 2431 3584 2822 3584
Q 2878 3584 2943 3579
Q 3009 3575 3134 3559
L 3138 2547
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-28" d="M 2413 -844
L 1484 -844
Q 1006 -72 778 623
Q 550 1319 550 2003
Q 550 2688 779 3389
Q 1009 4091 1484 4856
L 2413 4856
Q 2013 4116 1813 3408
Q 1613 2700 1613 2009
Q 1613 1319 1811 609
Q 2009 -100 2413 -844
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-32" d="M 1844 884
L 3897 884
L 3897 0
L 506 0
L 506 884
L 2209 2388
Q 2438 2594 2547 2791
Q 2656 2988 2656 3200
Q 2656 3528 2436 3728
Q 2216 3928 1850 3928
Q 1569 3928 1234 3808
Q 900 3688 519 3450
L 519 4475
Q 925 4609 1322 4679
Q 1719 4750 2100 4750
Q 2938 4750 3402 4381
Q 3866 4013 3866 3353
Q 3866 2972 3669 2642
Q 3472 2313 2841 1759
L 1844 884
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-30" d="M 2944 2338
Q 2944 3213 2780 3570
Q 2616 3928 2228 3928
Q 1841 3928 1675 3570
Q 1509 3213 1509 2338
Q 1509 1453 1675 1090
Q 1841 728 2228 728
Q 2613 728 2778 1090
Q 2944 1453 2944 2338
z
M 4147 2328
Q 4147 1169 3647 539
Q 3147 -91 2228 -91
Q 1306 -91 806 539
Q 306 1169 306 2328
Q 306 3491 806 4120
Q 1306 4750 2228 4750
Q 3147 4750 3647 4120
Q 4147 3491 4147 2328
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-31" d="M 750 831
L 1813 831
L 1813 3847
L 722 3622
L 722 4441
L 1806 4666
L 2950 4666
L 2950 831
L 4013 831
L 4013 0
L 750 0
L 750 831
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-37" d="M 428 4666
L 3944 4666
L 3944 3988
L 2125 0
L 953 0
L 2675 3781
L 428 3781
L 428 4666
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-2d" d="M 347 2297
L 2309 2297
L 2309 1388
L 347 1388
L 347 2297
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-35" d="M 678 4666
L 3669 4666
L 3669 3781
L 1638 3781
L 1638 3059
Q 1775 3097 1914 3117
Q 2053 3138 2203 3138
Q 3056 3138 3531 2711
Q 4006 2284 4006 1522
Q 4006 766 3489 337
Q 2972 -91 2053 -91
Q 1656 -91 1267 -14
Q 878 63 494 219
L 494 1166
Q 875 947 1217 837
Q 1559 728 1863 728
Q 2300 728 2551 942
Q 2803 1156 2803 1522
Q 2803 1891 2551 2103
Q 2300 2316 1863 2316
Q 1603 2316 1309 2248
Q 1016 2181 678 2041
L 678 4666
z
" transform="scale(0.015625)"></path>
<path id="DejaVuSans-Bold-29" d="M 513 -844
Q 913 -100 1113 609
Q 1313 1319 1313 2009
Q 1313 2700 1113 3408
Q 913 4116 513 4856
L 1441 4856
Q 1916 4091 2145 3389
Q 2375 2688 2375 2003
Q 2375 1319 2147 623
Q 1919 -72 1441 -844
L 513 -844
z
" transform="scale(0.015625)"></path>
</defs>
<use xlink:href="#DejaVuSans-Bold-4f"></use>
<use xlink:href="#DejaVuSans-Bold-6f" x="85.009766"></use>
<use xlink:href="#DejaVuSans-Bold-70" x="153.710938"></use>
<use xlink:href="#DejaVuSans-Bold-73" x="225.292969"></use>
<use xlink:href="#DejaVuSans-Bold-20" x="284.814453"></use>
<use xlink:href="#DejaVuSans-Bold-62" x="319.628906"></use>
<use xlink:href="#DejaVuSans-Bold-79" x="391.210938"></use>
<use xlink:href="#DejaVuSans-Bold-20" x="456.396484"></use>
<use xlink:href="#DejaVuSans-Bold-59" x="491.210938"></use>
<use xlink:href="#DejaVuSans-Bold-65" x="554.498047"></use>
<use xlink:href="#DejaVuSans-Bold-61" x="622.320312"></use>
<use xlink:href="#DejaVuSans-Bold-72" x="689.800781"></use>
<use xlink:href="#DejaVuSans-Bold-20" x="739.117188"></use>
<use xlink:href="#DejaVuSans-Bold-28" x="773.931641"></use>
<use xlink:href="#DejaVuSans-Bold-32" x="819.634766"></use>
<use xlink:href="#DejaVuSans-Bold-30" x="889.214844"></use>
<use xlink:href="#DejaVuSans-Bold-31" x="958.794922"></use>
<use xlink:href="#DejaVuSans-Bold-37" x="1028.375"></use>
<use xlink:href="#DejaVuSans-Bold-2d" x="1097.955078"></use>
<use xlink:href="#DejaVuSans-Bold-32" x="1139.458984"></use>
<use xlink:href="#DejaVuSans-Bold-30" x="1209.039062"></use>
<use xlink:href="#DejaVuSans-Bold-32" x="1278.619141"></use>
<use xlink:href="#DejaVuSans-Bold-35" x="1348.199219"></use>
<use xlink:href="#DejaVuSans-Bold-29" x="1417.779297"></use>
</g>
</g>
</g>
</g>
<defs>
<clipPath id="pa05b6e235d">
<rect x="44.66" y="29.76" width="808.54" height="345.158714"></rect>
</clipPath>
</defs>
</svg>
</figure>
<p>
2017 was not a full year of data, so that's
probably why the number is so low. 2018 was when
my dad died. I flew to the Philippines several
times with my 2-year-old daughter so that we could
spend time with my mom. It's a wonder that I
managed to keep things mostly sorted out. Things
were mostly manageable in between despite the
ongoing pandemic. This year, though, a confluence
of factors added a lot more strain on my brain.
I wonder if part of it is because I'm concerned about health issues for people I care about.
I also worry about the kiddo, school, change, and possibly adolescence.
Who knows, maybe I'm starting to go through perimenopause, which apparently tends to include brain fog and mood swings. Fun. These are big things that I won't be able to resolve on my own, but I can get better at not overextending myself.
</p>
<p>
Might be fun to do a month-by-month analysis.
</p>
<details><summary>Code for retrieving and grouping my journal entries</summary>
<div class="org-src-container">
<pre class="src src-emacs-lisp" id="org5ff5e28"><code>(append <span class="org-highlight-quoted-quote">'</span>((<span class="org-string">"Year"</span> <span class="org-string">"Month"</span> <span class="org-string">"Count"</span>))
(sort
(mapcar (<span class="org-keyword">lambda</span> (group)
(list
(substring (car group) 0 4)
(string-to-number (substring (car group) 5))
(length (cdr group))))
(seq-group-by
(<span class="org-keyword">lambda</span> (o) (substring (my-journal-date o) 0 7))
(seq-filter (<span class="org-keyword">lambda</span> (o) (string= (my-journal-category o) <span class="org-string">"Oops"</span>)) (my-journal-get-entries))))
<span class="org-builtin">:key</span> (<span class="org-keyword">lambda</span> (row) (format <span class="org-string">"%s-%02d"</span> (car row) (cadr row)))))
</code></pre>
</div>
</details>
<details><summary>Code for making the heatmap</summary>
<div class="org-src-container">
<pre class="src src-python" id="org1baf48e"><code><span class="org-keyword">import</span> pandas <span class="org-keyword">as</span> pd
<span class="org-keyword">import</span> matplotlib.pyplot <span class="org-keyword">as</span> plt
<span class="org-keyword">import</span> seaborn <span class="org-keyword">as</span> sns
<span class="org-variable-name">df</span> <span class="org-operator">=</span> pd.DataFrame(data[1:], columns<span class="org-operator">=</span>data[0])
<span class="org-variable-name">df</span> <span class="org-operator">=</span> pd.pivot_table(df, columns<span class="org-operator">=</span>[<span class="org-string">'Month'</span>], index<span class="org-operator">=</span>[<span class="org-string">'Year'</span>], values<span class="org-operator">=</span><span class="org-string">'Count'</span>, aggfunc<span class="org-operator">=</span><span class="org-string">'sum'</span>, fill_value<span class="org-operator">=</span>0).iloc[::<span class="org-operator">-</span>1].sort_index(ascending<span class="org-operator">=</span><span class="org-constant">True</span>)
plt.figure(figsize<span class="org-operator">=</span>(12, 8))
sns.heatmap(
df,
annot<span class="org-operator">=</span><span class="org-constant">True</span>,
fmt<span class="org-operator">=</span><span class="org-string">"d"</span>, <span class="org-comment-delimiter"># </span><span class="org-comment">Format as integer</span>
cmap<span class="org-operator">=</span><span class="org-string">"YlGnBu"</span>, <span class="org-comment-delimiter"># </span><span class="org-comment">Color map</span>
linewidths<span class="org-operator">=</span>.5,
cbar_kws<span class="org-operator">=</span>{<span class="org-string">'label'</span>: <span class="org-string">'Count of "Oops" Entries'</span>}
)
<span class="org-comment-delimiter"># </span><span class="org-comment">Set the title and axis labels</span>
plt.title(<span class="org-string">'Heatmap of "Oops" Entries by Month and Year'</span>, fontsize<span class="org-operator">=</span>16)
plt.xlabel(<span class="org-string">'Month'</span>, fontsize<span class="org-operator">=</span>12)
plt.ylabel(<span class="org-string">'Year'</span>, fontsize<span class="org-operator">=</span>12)
plt.savefig(<span class="org-string">'number-of-oops-by-month.png'</span>)
<span class="org-keyword">return</span> df
</code></pre>
</div>
</details>
<details class="code-details" style="padding: 1em;
border-radius: 15px;
font-size: 0.9em;
box-shadow: 0.05em 0.1em 5px 0.01em #00000057;">
<summary><strong>Data table</strong></summary>
<pre class="example" id="org3549f94">
Month 1 2 3 4 5 6 7 8 9 10 11 12
Year
2017 0 0 0 0 0 0 0 0 7 2 0 3
2018 4 7 4 10 10 8 8 1 7 7 5 4
2019 4 4 2 4 4 1 3 5 1 1 2 5
2020 3 1 2 2 1 5 7 7 4 2 2 2
2021 2 2 1 1 2 4 6 4 2 2 1 6
2022 2 3 2 1 3 2 0 3 2 2 4 1
2023 3 1 1 1 5 2 4 5 0 0 3 3
2024 0 1 1 4 4 8 8 1 3 3 2 2
2025 7 1 7 2 6 4 9 8 10 4 15 0
</pre>
</details>
<figure id="orga9c8774">
<img src="https://sachachua.com/blog/2025/11/tracking-my-oopses/number-of-oops-by-month.png" alt="number-of-oops-by-month.png">
</figure>
<p>
Oooh, what's up with this month, yeah…
</p>
<p>
Most of my mistakes are small and easy to fix, just wasting time or patience. Others are a bit more annoying (dropping electronic devices, etc.). Some are potentially life-limiting (gotta make sure I look at the right lights before crossing the street). I tend to have a hard time with:
</p>
<ul class="org-ul">
<li><b>transitions,</b> like coming home after a bike ride: I might accidentally hang up my keys on the wrong hook if I'm not paying attention. I've started saying the steps out loud.</li>
<li><b>tidying:</b> If I have an attentional lapse, I put things in not-quite-the-right-place, so I probably can't listen to podcasts or think about complex thoughts.</li>
<li><b>travel:</b> If I'm biking or walking, I have to pay extra attention.</li>
<li><b>task switching:</b> interruptions, stacks, etc. I say things out loud and write them down if needed.</li>
</ul>
<p>
When I notice myself making more oopses than usual, I try to sleep more, take things more slowly, offload more of my thoughts to drawings and notes, ask for help, and do fewer things.
</p>
<p>
I'm working on single-tasking more instead of getting distracted by interesting thoughts. Maybe I used to be able to think about stuff, but now it's probably better to just let my mind be slightly bored if necessary instead of letting it get overloaded. I have to adapt to my capacity at the moment. I can either trust that those thoughts will come back if they're important, or take a moment to write them down on my phone. I can also give myself more focus time during the day to revisit those thoughts so that I don't get tempted to squeeze them in while, say, I'm putting away the dishes.
</p>
<p>
Maybe routines, songs, physical cues like checklists, or <a href="https://en.wikipedia.org/wiki/Pointing_and_calling">pointing and calling</a> (physically pointing to something and saying it out loud for confirmation) can help me with some of my frequently-made mistakes.
</p>
<p>
Little by little. I might not be able to get rid of all the little mistakes, but if I can smoothen out some of the frequent ones, have an oops fund for the monetary costs of moderate mistakes, and keep myself from making the life-limiting ones, that might be enough.</p>
<div><a href="https://sachachua.com/blog/2025/11/tracking-my-oopses/index.org">View org source for this post</a></div>
<p>You can <a href="https://social.sachachua.com/@sacha/statuses/01KAM9F2H2T5HARFM6QYAWSGBH" target="_blank" rel="noopener noreferrer">comment on Mastodon</a> or <a href="mailto:sacha@sachachua.com?subject=Comment%20on%20https%3A%2F%2Fsachachua.com%2Fblog%2F2025%2F11%2Ftracking-my-oopses%2F&body=Name%20you%20want%20to%20be%20credited%20by%20(if%20any)%3A%20%0AMessage%3A%20%0ACan%20I%20share%20your%20comment%20so%20other%20people%20can%20learn%20from%20it%3F%20Yes%2FNo%0A">e-mail me at sacha@sachachua.com</a>.</p>Grab a free copy of Warhammer: Vermintide 2 for a limited time - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2025/11/grab-a-free-copy-of-warhammer-vermintide-2-for-a-limited-time/2025-11-21T19:15:24.000ZWarhammer: Vermintide 2 is currently on a time-limited deal where you can grab a copy and keep it, so act fast if you want a free game.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/1218248009id28058gol.jpg" alt />.</p><p>Read the full article on <a href="https://www.gamingonlinux.com/2025/11/grab-a-free-copy-of-warhammer-vermintide-2-for-a-limited-time/">GamingOnLinux</a>.</p>Mount & Blade II: Bannerlord War Sails designer on ships that mimic horse archers and dredging for inspiration in French bogs - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/mount-blade-ii-bannerlord-war-sails-designer-on-ships-that-mimic-horse-archers-and-dredging-for-inspiration-in-french-bogs2025-11-21T18:00:00.000Z<img src="https://assetsio.gnwcdn.com/mount-and-blade-2-bannerlord-war-sails-boats-interview-01.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Can a ship be a horse archer? This is one of the many maritime musings <a href="https://www.rockpapershotgun.com/games/mount-blade-ii-bannerlord">Mount & Blade II: Bannerlord</a>'s devs had to grapple with when putting together the flotilla of vessels which make up its naval warfare-themed War Sails expansion.</p>
<p>Ahead of <a href="https://www.rockpapershotgun.com/mount-blade-ii-bannerlords-war-sails-naval-warfare-expansion-takes-to-the-high-seas-in-late-november">War Sails' release on November 26th</a>, I chatted to a couple of its developers. Naturally, I was keen to hear about what the process of assembling the expansion's armada. A particular challenge as each of Calradia's historically-inspired nations has access to unique ships.</p>
<p><a href="https://www.rockpapershotgun.com/mount-blade-ii-bannerlord-war-sails-designer-on-ships-that-mimic-horse-archers-and-dredging-for-inspiration-in-french-bogs">Read more</a></p>To Grandmother’s House We Go - McSweeney’shttps://www.mcsweeneys.net/articles/to-grandmothers-house-we-go2025-11-21T18:00:00.000Z<p>Over the river and through the woods,<br /> To Grandmother’s house we go;<br /> At the airport on time, which is good cause the lines<br /> Are moving super slow.</p> <p>Over the river and through the screens<br /> Then stuck at security<br /> I’ve been patted down and thrown to the ground<br /> Due to my lithium battery.</p> <p>Over the river and through the woods<br /> I’m looking around for food<br /> Everything sucks and costs twenty bucks,<br /> Guess I’ll just slam some booze.</p> <p>Over the river at Hudson News<br /> Flipping through the magazines<br /> The book that I bought is a bit overwrought <br /> With a dearth of good sex scenes.</p> <p>Over the river, now on the tarmac<br /> To Grandmother’s house we wait<br /> The flight is delayed, our nerves are all frayed<br /> As we taxi around the gate.</p> <p>Over the river and very hungry now<br /> The food cart scuttles past.<br /> How incredibly rude that the smell of food<br /> Only wafts in from first class.</p> <p>Over the river and through the woods<br /> My family’s in four different rows<br /> My seatmate smells vile, and he puked in the aisle<br /> Then I watched him clip his toes.</p> <p>Over the river and through the woods<br /> I tried to recline my seat<br /> Then it was kicked, and I was called a dick<br /> And the flight attendants all agreed.</p> <p>Circling the river and stuck in the woods<br /> Is that a storm I spied?<br /> Attendants are gone, the seat belt light’s on,<br /> We’re in for a bumpy ride.</p> <p>Over the river and through the woods<br /> My checked bag has disappeared<br /> It has all my meds. I wish I were dead<br /> When did flying get so weird?</p> <p>Over the river and Ubering now<br /> Oh Grandmother’s condo’s in sight!<br /> Let’s give a cheer, the family’s all here…<br /> Is it time for the return flight?</p>Seasons Of Solitude is a wistful turn-based strategy game with constantly changing prehistoric maps - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/seasons-of-solitude-is-a-wistful-turn-based-strategy-game-with-constantly-changing-prehistoric-maps2025-11-21T16:33:30.000Z<img src="https://assetsio.gnwcdn.com/seasons-of-solitude.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>
Seasons of Solitude is a soulful balance of <a href="https://www.rockpapershotgun.com/the-best-survival-games-on-pc">survival game</a> and turn-based <a href="https://www.rockpapershotgun.com/the-best-strategy-games-on-pc">strategy</a> about an exiled prehistoric tribesman who is trying not to trash his own habitat. It's the work of Estonian developers Ninjarithm Studio, and is based on Estonian myths.</p>
<p>There's a demo on Steam, which I've spent barely any time with, but this seems Interesting - Interesting enough that I wanted to get a write-up in front of you before the weekend. Please disregard the rapid-fire editing of the trailer below: it works as an overview of the mechanics, but doesn't really convey the sleepy pensiveness of the actual game.
</p> <p><a href="https://www.rockpapershotgun.com/seasons-of-solitude-is-a-wistful-turn-based-strategy-game-with-constantly-changing-prehistoric-maps">Read more</a></p>[$] Unpacking for Python comprehensions - LWN.nethttps://lwn.net/Articles/1046216/2025-11-21T16:09:50.000ZUnpacking Python <a href="https://docs.python.org/3/glossary.html#term-iterable">iterables</a> of various sorts, such as dictionaries or lists,
is useful in a number of contexts, including for function arguments, but
there has long been a call for extending that capability to <a href="https://docs.python.org/3/glossary.html#term-list-comprehension">comprehensions</a>. <a
href="https://peps.python.org/pep-0798/">PEP 798</a> ("Unpacking in
Comprehensions") was first proposed in June 2025 to fill that gap. In early
November, the steering council <a
href="https://discuss.python.org/t/pep-798-unpacking-in-comprehensions/99435/60">accepted</a>
the PEP, which means that the feature will be coming to Python 3.15 in
October 2026. It may be something of a niche feature, but it is an
inconsistency
that has been apparent for a while—to the point that some Python programmers
assume that it is already present in the language.🥩 Red Meat Friday: Cloudflare And AWS - Irrealhttps://irreal.org/blog/?p=134232025-11-21T16:00:48.000Z<p>
I’m sure that every Irreal reader is aware of the recent Internet outages caused by problems at AWS and Cloudflare. Most of those readers also know that things happen. Servers fail, cables break, backhoes wreak havoc, software runs up against implicit boundaries, and human beings make configuration errors. When those things happen, sites can lose their Internet connectivity. When they happen to services like Cloudflare or AWS, <i>lots</i> of sites can be knocked offline.
</p>
<p>
Cloudflare and Amazon are big companies with an outsize presence. That makes them an irresistible target for some people. Especially people who make their homes under bridges. An unfortunate number of these people are in the tech press which engaged in a feeding frenzy over unfortunate events that are rare but inevitable.
</p>
<p>
Sadly, even normally temperate folks can be drawn into the fray. Rik Huijzer, for instance, <a href="https://huijzer.xyz/posts/123/do-not-put-your-site-behind-cloudflare-if-you-dont">recommends that “ordinary” people not use Cloudflare</a> because it’s a single point of failure. But what are the alternatives? At the end of the day you have to connect to the Internet and that connection point is just as apt to fail—more likely, actually—as Cloudflare or AWS. That’s true even if you self host: problems like this are almost always going to be at the network end.
</p>
<p>
I was inclined to dismiss the whole brouhaha with a shrug until Miguel Arroz <a href="https://mastodon.social/@arroz/115577670987313083">injected a certain amount of rationality into the discussion</a> and made me realize that reasonable people shouldn’t let this nonsense stand unchallenged. Arroz makes a great point: “Their downtimes being so visible is a consequence of their success.”</p>
PHP 8.5.0 released - LWN.nethttps://lwn.net/Articles/1047429/2025-11-21T15:47:25.000Z<a
href="https://lwn.net/ml/all/CALaXqqT+vb-WoCrGaSG=d4d20wkuKPgA+gH7ThFygBQ4M0C_nw@mail.gmail.com">Version
8.5.0</a> of the PHP language has been released. Changes include a new
"<tt>|></tt>" operator that, for some reason, makes these two lines
equivalent:
<p>
<pre>
$result = strlen("Hello world");
$result = "Hello world" |> strlen(...);
</pre>
<p>
Other changes include a new function attribute, "<tt>#[\NoDiscard]</tt>" to
indicate that the return value should be used, attributes on constants, and
more; see <a href="https://www.php.net/manual/en/migration85.php">the
migration guide</a> for details.PUBG: Black Budget is an extraction shooter spin-off with an island trapped in a time loop of supernatural munching - Rock Paper Shotgun Latest Articles Feedhttps://www.rockpapershotgun.com/pubg-black-budget-is-an-extraction-shooter-spin-off-with-an-island-trapped-in-time-loop-of-supernatural-munching2025-11-21T15:43:48.000Z<img src="https://assetsio.gnwcdn.com/pubg-black-budget-revealed-alpha-test-soon-01.jpg?width=690&quality=85&format=jpg&auto=webp" /> <p>Krafton have revealed PUBG spin-off Black Budget, just in time for alpha testing of the extraction <a href="https://www.rockpapershotgun.com/best-fps-games">shooter</a> to kick off next month. As you might expect given the genre, this latest work from PUBG Studios is all about getting out of the bad vibe zone in good time, after shooting some baddies in said zone. Oh, sorry, <strong>tactically</strong> shooting some baddies in the bad vibe zone.</p>
<p><a href="https://www.rockpapershotgun.com/pubg-black-budget-is-an-extraction-shooter-spin-off-with-an-island-trapped-in-time-loop-of-supernatural-munching">Read more</a></p>The Nightdive Studios enhanced Quake II re-release is now Steam Deck Verified - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2025/11/the-nightdive-studios-enhanced-quake-ii-re-release-is-now-steam-deck-verified/2025-11-21T15:06:42.000ZWith the latest minor update, the newer Quake II re-release that saw Nightdive Studios jump in to improve it is now Steam Deck Verified.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/1445625660id28057gol.jpg" alt />.</p><p>Read the full article on <a href="https://www.gamingonlinux.com/2025/11/the-nightdive-studios-enhanced-quake-ii-re-release-is-now-steam-deck-verified/">GamingOnLinux</a>.</p>The multiverse is a mess so you and friends will get cleaning in S.K.R.U.B. Squad - GamingOnLinux Latest Articleshttps://www.gamingonlinux.com/2025/11/the-multiverse-is-a-mess-so-you-and-friends-will-get-cleaning-in-s-k-r-u-b-squad/2025-11-21T14:48:42.000ZI do love how many more casual co-op games we're seeing lately, and it looks like S.K.R.U.B. Squad may be one to add to your list.<p><img src="https://www.gamingonlinux.com/uploads/articles/tagline_images/1691762409id28056gol.jpg" alt />.</p><p>Read the full article on <a href="https://www.gamingonlinux.com/2025/11/the-multiverse-is-a-mess-so-you-and-friends-will-get-cleaning-in-s-k-r-u-b-squad/">GamingOnLinux</a>.</p>Security updates for Friday - LWN.nethttps://lwn.net/Articles/1047386/2025-11-21T14:42:04.000ZSecurity updates have been issued by <b>AlmaLinux</b> (delve and golang), <b>Debian</b> (webkit2gtk), <b>Oracle</b> (expat and thunderbird), <b>Red Hat</b> (kernel), <b>Slackware</b> (openvpn), <b>SUSE</b> (chromium, grub2, and kernel), and <b>Ubuntu</b> (cups-filters, imagemagick, and libcupsfilters).