A Lazy Sequence Recent https://brehaut/feeds/everything 2018-07-07T22:59:59.149Z Andrew Brehaut andrew@brehaut.net Fall of Delta Green Lethality rules https://brehaut.net/blog/2018/fall_of_dg_lethality 2018-07-07T22:59:59.149Z <p> The rules for the <code>H</code> modifier for hurt lethality on page 93 of <em>The Fall of Delta Green</em> completely flummoxed me. If that&#39;s you too, ignore the text there: the example is correct, and a clearer presentation of the rules can be found in the appendix on page 352 in the procedural resolution of lethality. </p> macOS typography shortcuts on Windows https://brehaut.net/blog/2018/macos_typography_shortcuts_on_windows 2018-06-09T02:05:55.349Z <p> When I’m using Windows I miss the convenience of macOS’s <a href="https://forlang.wsu.edu/help-pages/help-pages-keyboards-os-x/" title="I’d love to link to official Apple documentation for this feature, but I cannot find it".>shortcuts</a> for typing some common typographic characters such as curly quotes, en- and em-dashes, and ellipsis. I’ve cobbled together a minimal script for <a href="https://autohotkey.com/">AutoHotkey</a><sup>1</sup> to allow me to use my muscle memory from a Mac. Here is the guts of it: </p> <pre><code>; These hotkeys use the lefthand Windows key to ; enter common opt+key special typography symbols from macOS &lt;#-::Send – &lt;#_::Send — &lt;#[::Send “ &lt;#{::Send ” &lt;#]::Send ‘ &lt;#}::Send ’ &lt;#;::Send …</code></pre> <p> The remaining characters I semi-regularly use that I haven’t yet adapted are the various accents (especially the <a href="https://kupu.maori.nz/about/macrons-keyboard-setup">macron</a> and <a href="http://www.hplovecraft.com/writings/texts/fiction/soi.aspx">umlaut</a>), which I will need to brave the AutoHotKey documentation for to understand how to do this nicely. </p> <ol class="footnotes"> <li>For Windows users in the reverse situation on macOS, the <a href="https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/EventOverview/TextDefaultsBindings/TextDefaultsBindings.html">input binding configuration</a> is surprisingly flexible. It isn’t a comprehensive alternative to AutoHotKey (which supports a whole pile of weird special features and automation) but it might just be enough.</li> </ol> Obscura https://brehaut.net/blog/2018/obscura 2018-06-05T08:16:43.956Z <p> I’m no photographer, but it’s handy to have a good camera app available on the phone. I’ve probably bought more than is sensible, but I’ve landed on <a href="http://obscura.camera/">Obscura</a> (recently refreshed with a great version two) as my go-to. Where it really wins for me is that the it is more featureful than the iOS system camera, the UI strikes a balance between the easy point-and-shoot affordances of being a phone camera, fun filters – I really love the range of black and white options – and fine control over some key fussy details such as exposure and focus. You can tell from using it that the developer, <a href="https://twitter.com/BenRiceM">Ben McCarthy</a>, loves photography. </p> Villainous motivations in Cthulhu games https://brehaut.net/blog/2018/villainous_motivations_in_cthulhu_games 2018-05-22T09:24:49.691Z <blockquote> <p>Exposure to the truths of the Cthulhu Mythos shatters the core of the human psyche by stripping away all illusions of human significance, benign nature, and loving God, leaving nothing but the terrifying vistas of stark, cosmic nihilism&hellip;</p> <footer> — <a href="http://site.pelgranepress.com/index.php/trail-of-cthulhu/"><em>Trail of Cthulhu</em></a>, page 46, <em>Sanity</em>. </footer> </blockquote> <p> A paradox at the heart of many mythos scenarios is that the human antagonists (cultists, sorcerors, servitors,&hellip;) act in alien and irrational ways, yet the Keeper &ndash; ideally a human &ndash; is required to portray them. Ascribing human motivations to the key NPCs runs the risk of humanizing the threat and removing the cosmic from the cosmic horror. </p> <blockquote> <p> Only knowledge of the Mythos can keep humanity safe from the Mythos.<br/> Those with knowledge of the Mythos lose their humanity to the Mythos. </p> <p> The Mythos echoes “the gun” of Western paradox. </p> <footer> — <a href="https://princeofcairo.livejournal.com/6418.html">Kenneth Hite</a> </footer> </blockquote> <p> Briefly, the antagonists in Mythos stories often work in the background and their own motivations are rarely disclosed<sup>1</sup>. If the protagonist thwart them, the Mythos – hydra-like – simply replaces them with another. These antagonists are as futile (more?) as the protagonists. </p> <p> As a result, when I’m trying to portray the zero-sanity servitors of the Mythos in a game, I’m not particularly concerned about <em>why</em> they are doing anything, and more concerned about <em>what</em> they are doing. If this means an sorceror is doing some things with no obvious motivation, I’m fine with that as it leaves questions open that the players will fill in. It increases the weirdness. This takes a leaf from GUMSHOE’s player-facing approach: only the aspects of the villain the players see matter. I want everything I do as Keeper to be in service of the atmosphere and tone of the game, and driving towards the player characters personal horror as they face the cosmic nihilism of the setting. </p> <p> While on paper this approach may seem unsatisfying for the Keeper, I’ve found it works well in practise. The player’s don’t know how much or how little motivation the villain has, and may interpret the actions of the antagonists in ways you would never have predicted. This is counter to the way I would want to run the antagonists in most other games, but I think it suits the genre of a Cthulhu game well. </p> <ol class="footnotes"> <li>There are exceptions of course. The residents of Innsmouth clear have a lot of goings on they want to hide from the outsiders. The source of their wealth for one.</li> </ol> Field lenses in TypeScript https://brehaut.net/blog/2018/field_lenses_in_typescript 2018-05-16T08:04:06.235Z <p> <a href="https://twitter.com/ReidNEvans">Reid Evans</a> posted a nice little <a href="https://medium.com/@reidev275/composable-immutable-property-access-with-lenses-in-typescript-798da4ddc30e">lenses interface and composer for TypeScript</a>. It’s missing a convenience function: a field lens for plain objects. Here is a minimal implementation: </p> <pre><code class="brush: javascript;">export function field&lt;TRec extends object, K extends keyof TRec = keyof TRec&gt;(fieldName: K): Lens&lt;TRec, TRec[K]&gt; { return { get: (rec) => rec[fieldName], set: (rec, val) => { const update:Partial&lt;TRec&gt; = {}; update[fieldName] = val; return Object.assign({}, rec, update); } }; } interface Foo { bar: number; baz: string; } const fooBar = field&lt;Foo&gt;("bar");</code></pre>