<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Input Devices]]></title><description><![CDATA[Thoughts, stories and ideas.]]></description><link>https://blog.sarasantillan.com/</link><image><url>https://blog.sarasantillan.com/favicon.png</url><title>Input Devices</title><link>https://blog.sarasantillan.com/</link></image><generator>Ghost 5.13</generator><lastBuildDate>Wed, 17 Jun 2026 08:37:53 GMT</lastBuildDate><atom:link href="https://blog.sarasantillan.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[day 10-11: export and import, story]]></title><description><![CDATA[<p>An atomic piece of dialog, which you (the player) acknowledge by selecting an action or pressing ok, is a single &quot;event&quot; in my system. Events are strung in a queue to create an EventGroup.</p><p>Events primarily cause 2 things to happen:</p><ul><li>The player gains something (stats or experience</li></ul>]]></description><link>https://blog.sarasantillan.com/day-10-export-and-import/</link><guid isPermaLink="false">648b4e5f9b92a4690f13b2a1</guid><category><![CDATA[Dev journal]]></category><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Thu, 15 Jun 2023 19:22:57 GMT</pubDate><content:encoded><![CDATA[<p>An atomic piece of dialog, which you (the player) acknowledge by selecting an action or pressing ok, is a single &quot;event&quot; in my system. Events are strung in a queue to create an EventGroup.</p><p>Events primarily cause 2 things to happen:</p><ul><li>The player gains something (stats or experience going up, key item achieved, story progression)</li><li>A currency (time or energy) is spent</li></ul><p>In abstract game design, a choice must have consequences for it to be meaningful - so something has to be spent for something to be gained. However, what I was working on yesterday was more about:</p><ul><li>Easily creating events.</li><li>Exporting them.</li><li>Importing them into the game.</li></ul><p>We separate the data from the logic (engine). The fastest way to bulk edit 1000s of entries of events is through tabular software. Traditionally I have used Excel but lately have been using Google sheets for future collaboration and transparency. Excel is superior due to keyboard shortcuts and because it&apos;s easier to write an exporter tool yourself with VBA or pywings.</p><h2 id="creating-exporting-events">Creating &amp; exporting events</h2><p>Here&apos;s a rough screenshot of what the events look like right now.</p><figure class="kg-card kg-image-card"><img src="https://blog.sarasantillan.com/content/images/2023/06/ClickerData.png" class="kg-image" alt loading="lazy" width="1902" height="1591" srcset="https://blog.sarasantillan.com/content/images/size/w600/2023/06/ClickerData.png 600w, https://blog.sarasantillan.com/content/images/size/w1000/2023/06/ClickerData.png 1000w, https://blog.sarasantillan.com/content/images/size/w1600/2023/06/ClickerData.png 1600w, https://blog.sarasantillan.com/content/images/2023/06/ClickerData.png 1902w" sizes="(min-width: 720px) 720px"></figure><p>I use a JSON exporter and export the contents as an array. This took about 15 minutes to install and correctly set up.</p><h2 id="importing-the-data">Importing the data</h2><p>This was much harder. Due to its use on the web, you can&apos;t just import any random JSON file using the import statement and you can&apos;t use FileReader unless the user selects the file (which is not the use case here). The long and short of it is protection against certain vulnerabilities.</p><p>I was avoiding the Fetch API because I didn&apos;t want to start a server. In the end, I had to give up just opening the file as a file, and now run it through a development server on WSL using this reference: <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS/Errors/CORSRequestNotHttp">CORS request not HTTP</a>.</p><p>(And that also means I&apos;ll be using the Fetch API.)</p><h2 id="story-stuff">Story stuff</h2><p>I&apos;ve switched the opening maybe 3-4 times - first you were opening a package, then discovering something valuable that you trade with a privateer for a bump up in your immigrant class (forging a new identity). The privateer is arrested while in space with you and your best friend but you get away and crash land into an abandoned mine, which you fix. You then start a delivery business with your new credentials.</p><p>Opening 1 started as far as the package inspector, Opening 2 was crash landing in the abandoned mine, Opening 3 was you doing last-mile transport stuff, and now <strong>Opening 4 is you leaving as a trader, no longer as a pure delivery person.</strong></p><figure class="kg-card kg-image-card"><img src="https://blog.sarasantillan.com/content/images/2023/06/story.png" class="kg-image" alt loading="lazy" width="1589" height="769" srcset="https://blog.sarasantillan.com/content/images/size/w600/2023/06/story.png 600w, https://blog.sarasantillan.com/content/images/size/w1000/2023/06/story.png 1000w, https://blog.sarasantillan.com/content/images/2023/06/story.png 1589w" sizes="(min-width: 720px) 720px"></figure>]]></content:encoded></item><item><title><![CDATA[day 7-9: consistency]]></title><description><![CDATA[Incremental improvements continue]]></description><link>https://blog.sarasantillan.com/day-7-9-consistency/</link><guid isPermaLink="false">64749a969b92a4690f13b19a</guid><category><![CDATA[Dev journal]]></category><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Mon, 29 May 2023 15:13:01 GMT</pubDate><content:encoded><![CDATA[<p>I&apos;ve created an initial data sheet which will export json into the game. It helps me design the objects naturally without having to draw entity relationship diagrams.</p><p>I&apos;ve also separated the js into its own file and had the file loaded after all the divs are named, so that the js can reference the div ids correctly.</p><p>I&apos;ve started a counter in the bottom called &quot;proficiencies&quot; so that the user can see a form of progression when doing simple tasks. expect it to be a bar. (Leveling system). Other terms I thought of include instincts and knacks. Went with proficiencies.</p><p></p><p>Next steps:</p><ul><li>Dynamic button text changes</li><li>Dynamically feeding data (no hardcode)</li><li>Json exporter (that comes along with &quot;dynamically feeding data&quot;)</li></ul><p>Medium priority</p><ul><li>Icons + bg gradient</li><li>Moving text / cursor </li></ul><p>Low priority</p><ul><li>Subtle pulse on the buttons or something similar</li></ul>]]></content:encoded></item><item><title><![CDATA[day 6: lore, crockford objects]]></title><description><![CDATA[Expanding on the social implications of having 2 star systems that exclusively control FTL.]]></description><link>https://blog.sarasantillan.com/day-6-lore/</link><guid isPermaLink="false">644ac8869b92a4690f13b147</guid><category><![CDATA[Dev journal]]></category><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Thu, 27 Apr 2023 19:19:51 GMT</pubDate><content:encoded><![CDATA[<p>The social implications of having 2 star systems (FedSys and UniSys) that exclusively control FTL are:</p><ul><li>They don&apos;t care about what happens to partner trading star systems.</li><li>All the sentient stable-ish star systems are dependent on FedSys and UniSys for FTL trade.</li><li>Basically imagine a unified UK (no Jacobite war of independence, etc.) or having exclusive transportation and access to India or a unified EU having exclusive access to the Philippines with no way for any person or good in the PH to go to the EU.</li><li>Basically, these people can make a mess and simply exit the star system with no repercussions.</li><li>It just so happens to be more expensive to strip mine a star system than it is </li></ul><p></p><p>The lone difference between FedSys and UniSys is one of cyborgs (AI-enhanced pilots) vs psychics. UniSys exclusively uses psychics to plot a course through hyperspace w/o any relays. FedSys requires relays to send information back to their cyborgs so that the AI can plot a course based on known data. Because of this FedSys is less inclined to totally destroy their partner traders because they need their partner systems to keep the lights on the relays/beacons. UniSys&apos;s main resource is its psychic talent pool + the raw hallucinogenic substances needed to induce the piloting state. The psychic talent pool is dependent on mutations in the human genome. For this reason, some partner star systems are more important than others, because those systems produce more psychic talent. Same thing with the hallucinogenic materials.</p><p>What if someone doesn&apos;t want to be a psychic? Or what if they get away? Where would they go? Etc.</p><p></p><p>Edited to add, May 14, 2023:</p><p>I&apos;m starting to create objects in my games using Crockford-style initialization. Reference: <a href="https://gist.github.com/benpriebe/55b7e950b5e9d056b47e">https://gist.github.com/benpriebe/55b7e950b5e9d056b47e</a></p>]]></content:encoded></item><item><title><![CDATA[Day 5: mindfully vimming & story development]]></title><description><![CDATA[The original story is that you're a package inspector. After 16 hrs of training, you're the required "human-granted approval" in an automated process. One day, you get a canister that's oozing black stuff...]]></description><link>https://blog.sarasantillan.com/day-5-mindfully-vimming-story-development/</link><guid isPermaLink="false">644961a59b92a4690f13b077</guid><category><![CDATA[Dev journal]]></category><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Wed, 26 Apr 2023 18:21:50 GMT</pubDate><content:encoded><![CDATA[<p>The original story is that you&apos;re a package inspector. After 16 hrs of training, you&apos;re the required &quot;human-granted approval&quot; in an automated process. One day, you get a canister that&apos;s oozing black stuff, and, not having a process for returning based on the specific observable quality, you simply opt to dump it in an unused storage room and mark the parcel as lost. This is well within the shrink rate of the fulfillment center, so it just... poofs. &#xA0;That cannister turns out to contain a controlled substance, and after you mention it to a coworker, you both contrive to sell the stuff and profit.</p><p>That story is still there, but we start a few weeks later, when you sold the stuff to a privateer who offers an unregistered light cruiser (ship) and a business opportunity. While enjoying an interplanetary ride with him, his license is revoked and he&apos;s arrested. You and your coworker escape by piloting a light craft towards a pre-set destination, which is an abandoned asteroid mine that the privateer occasionally uses as a safe house. As the mine is fully automated, all you need to do is plug in the privateer&apos;s keycard and poof, the mine starts mining and refining raw material (This is where the game begins and trains the player to the game loop &gt; you choose to set up a loop, a core resource appears, you make choices to grow that core resource and further the story.) </p><p>Back to the story: You now have fuel to return back to your space station fulfillment center and more to spare. However, the mine will fully exhaust soon after a few more &quot;hauls&quot; of ore and fuel.</p><p>You and your coworker then decide to get into the &quot;last-klik delivery service&quot;. From there the story revolves around meeting humans for special deliveries and to let them past a mostly automated customs process. You buy ships, rent hangar space, pay taxes, negotiate with customs. In this world there is FTL travel where the problem to solve is not energy but navigation, and only the 2 most successful system federations have pilot systems to navigate through space-time. One system uses humans with AI that is trained with them (as a symbiotic relationship) at a young age and another system uses a certain hallucinogenic drug to grant prescience to its navigators. These ftl ships are beyond the ken of fully-organic humans.</p><p>In some star systems droiding is not allowed, whereas in others it&apos;s okay to borg yourself. You live in a wealthy federation system where thinking machine institutions are slowly being dismantled in favor of human/AI systems. The SysFed itself is wealthy but only if you&apos;re born as a citizen. You&apos;re not &#x2013; you&apos;re a Citizen Aspirant, and you can choose if this is because you&apos;re from a failed colony or from a slower-than-light ship-only tribal culture (the Wandering Tribes). The end result is a mostly automated world where &quot;non-citizen&quot; humans are being added into automated processes as makework, as there is no easy way for them to &quot;earn&quot; or &quot;prove&quot; their citizenship. The goal of SysFed is ultimately status quo - maintaining wealth and dominance. And in order to keep the SysFed in its status quo (wealthy), it has to at least STAY dominant, which means that if their rival is looking for shorter, more energy-efficient routes or more planets, they have to look for those too. </p><p>Note that what powers ships may have to be different depending on the ship, with Radioisotope Thermoelectric Generators being a popular entry level power source + solar. We can call it a nuclear battery. In current science this is done through fission. In gundam it&apos;s done through fusion. The following link explains how it works and that we use Plutonium-238.</p><figure class="kg-card kg-bookmark-card"><a class="kg-bookmark-container" href="https://world-nuclear.org/information-library/non-power-nuclear-applications/transport/nuclear-reactors-for-space.aspx"><div class="kg-bookmark-content"><div class="kg-bookmark-title">Nuclear Reactors for Space - World Nuclear Association</div><div class="kg-bookmark-description">Use of nuclear technologies in space. Stirling Isotope Generators, fission systems for heat or propulsion.</div><div class="kg-bookmark-metadata"><img class="kg-bookmark-icon" src="https://world-nuclear.org/App_Themes/Default/Images/wna.ico" alt><span class="kg-bookmark-author">World Nuclear Association</span></div></div><div class="kg-bookmark-thumbnail"><img src="https://world-nuclear.org/WNA/media/WNA/Furniture/General/logo.jpg" alt></div></a></figure><hr><p>On the development bit, I&apos;m setting up vim-coc to help with autocomplete duties as JS is pretty long. Maybe one day I&apos;ll set up linting, or something.</p>]]></content:encoded></item><item><title><![CDATA[Day 4: Normalization instincts vs naive development]]></title><description><![CDATA[Some changes to "story", some abstraction of package opening into a Skill or Action, some half-baked discussion of how to make objects in JS]]></description><link>https://blog.sarasantillan.com/day-4-normalization-instincts-vs-naive-development/</link><guid isPermaLink="false">643d10ff9b92a4690f13afbc</guid><category><![CDATA[Dev journal]]></category><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Mon, 17 Apr 2023 09:37:15 GMT</pubDate><content:encoded><![CDATA[<p>OOP as a coding style is... clunky. The pain that I experienced on Pascal, which was acceptable to the generation before me, is a pain that modern developers (I suppose) suffer when they see this. this. this. (You get the joke.)</p><p>Unfortunately the Java is strong in this one and I still use &quot;this&quot; etc. I always forget the new modern way even after reading a few JS books.</p><p>I&apos;m looking to create objects using references like these: </p><ul><li><a href="https://gist.github.com/benpriebe/55b7e950b5e9d056b47e">https://gist.github.com/benpriebe/55b7e950b5e9d056b47e</a></li><li><a href="https://fek.io/blog/crockford-objects-in-java-script/">https://fek.io/blog/crockford-objects-in-java-script/</a> </li></ul><p> Today&apos;s code update shows an uncooked definition of Actions or Skills, an abstraction of buttons that users can click to get the counter going up. I&apos;m still figuring out how to do this with an eye for importing jsonc files of Skills and SkillTargets (direct object of the verb).</p><p>On the design side, I wrote the story and wound up with something more concerned with the logistics and transportation of cargo, so I&apos;ll be adjusting skills and actions in line with that.</p><p>Merge in question with horrible separation of concerns: <a href="https://github.com/s-santillan/thelastline/commit/b19370ecd80953728f89b0be32cc7fbc8b3d6f7b">https://github.com/s-santillan/thelastline/commit/b19370ecd80953728f89b0be32cc7fbc8b3d6f7b</a></p>]]></content:encoded></item><item><title><![CDATA[Day 3: Kinda naive development]]></title><description><![CDATA[I have decided, in addition to "kinda naive code", I will also follow a "kinda naive project management" approach. This means I'll just work on whatever I feel like. A horrific concept in the interconnected world of development. ]]></description><link>https://blog.sarasantillan.com/day-3-kinda-naive-development/</link><guid isPermaLink="false">64367bc79b92a4690f13af38</guid><category><![CDATA[Dev journal]]></category><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Wed, 12 Apr 2023 10:43:53 GMT</pubDate><content:encoded><![CDATA[<p>Today, I am presented with several branching options to work on:</p><ul><li>An XP meter.</li><li>Custom messages based on some condition, such as a milestone.</li><li>Correctly decoupled events.</li><li>Animating text to appear per sentence.</li></ul><p>I have decided, in addition to &quot;kinda naive code&quot;, I will also follow a &quot;kinda naive project management&quot; approach. This means I&apos;ll just work on whatever I feel like. A horrific concept in the interconnected world of development. Without structuring a program, it is common to &quot;work on whatever&quot; only to realize it affects this other part of the program somewhere down the line, until all you&apos;re doing is backtracking and refactoring. When we don&apos;t plan our tasks ahead, we don&apos;t identify what X features are required for Y. Nor do we know what features actually supercharge others. And yet, knowing all of that, the monster I am trying to kill is demotivation, analysis paralysis, fear of the unknown. As Vincent in the movie Gattaca says: &quot;I never saved anything for the way back.&quot;</p><p>I&apos;d like to think that this naive coding experiment is a New Game+, where my experience evens the odds. I should have some instinct, some understanding of bad production smells. At least, I hope so.</p><p>On this third day I have:</p><ul><li>Set up git (private repo for now).</li><li>Decided to try GSAP (Greensock animation platform) for text animations &#x2013; downloaded but not yet used.</li><li>Began a rudimentary function/class separation.</li><li>Began a rudimentary skill tree and skill interaction with the game world.</li><li>Cursory look at data serialization formats: YAML, JSON, Protobuf. JSONC wins for now but I intend to autogenerate it (and support comments in the interface that get ported into the file). We&apos;ll see how this works out.</li></ul><p>Some guidelines I&apos;ve been following for myself that I haven&apos;t formalized:</p><ul><li>Spend only 1hr per day that I decide to work on this project.</li><li>Don&apos;t take too long to make decisions.</li><li>Avoid node.js for now (whatever library I develop with, ships with that library for now &#x2013; this is not good modern web app practice due to security issues arising from 3rd party libraries and shows the difference between the old distribution model for physical media and today&apos;s online media &#x2013; I will have to find a way to easily update 3rd party libraries due to vulnerabilities)</li><li></li></ul>]]></content:encoded></item><item><title><![CDATA[Day 2  on slightly naive code]]></title><description><![CDATA[I still don't have any autocomplete plugins. I used to have auto-closers for tags, stuff that wrote my functions out for me and the whole DOM javascript lib. For some reason I'm still writing out getElementById like I'm 12 years old and DHTML is still a thing.]]></description><link>https://blog.sarasantillan.com/day-2-on-slightly-naive-code/</link><guid isPermaLink="false">643068959b92a4690f13aefd</guid><category><![CDATA[Dev journal]]></category><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Fri, 07 Apr 2023 19:10:32 GMT</pubDate><content:encoded><![CDATA[<p><em>I still haven&apos;t set up my GitHub repo for this little project.</em></p><p><em>Day 2 on naive code and I&apos;m already thinking ahead. I think, I may one day have to use a framework, and I better not have to refactor due to collisions in namespace or naming convention issues. I&apos;ve looked up Vue.</em></p><p>I still don&apos;t have any autocomplete plugins. I used to have auto-closers for tags, stuff that wrote my functions out for me and the whole DOM javascript lib. For some reason I&apos;m still writing out getElementById like I&apos;m 12 years old and DHTML is still a thing.</p><p>I finished the log and playscreen window definitions. The log has a set height and opacity to give it that nice &quot;receding into the past&quot; look. I made sure the log starts from most recent to oldest. Day 2 of this incremental game, maybe 2 hours sunk in, and I know I already have to refactor my huge inspectPackage function. So this code is quickly not going to be naive.</p><p>Funny observations:</p><ul><li>I forgot that css goes into &lt;head&gt;, not &lt;script&gt;. </li><li>I&apos;m still enjoying seeing the whole game in 1 page. That&apos;s not going to last. </li><li>It&apos;s nice to organically create abstractions.</li><li>I wonder if by Day 3 I&apos;ll have created a data-driven event system, thereby ending my little naive code experiment way earlier than I thought I would.</li></ul><figure class="kg-card kg-image-card"><img src="https://blog.sarasantillan.com/content/images/2023/04/2023-04-08_02-57-53.png" class="kg-image" alt loading="lazy" width="1770" height="2160" srcset="https://blog.sarasantillan.com/content/images/size/w600/2023/04/2023-04-08_02-57-53.png 600w, https://blog.sarasantillan.com/content/images/size/w1000/2023/04/2023-04-08_02-57-53.png 1000w, https://blog.sarasantillan.com/content/images/size/w1600/2023/04/2023-04-08_02-57-53.png 1600w, https://blog.sarasantillan.com/content/images/2023/04/2023-04-08_02-57-53.png 1770w" sizes="(min-width: 720px) 720px"></figure>]]></content:encoded></item><item><title><![CDATA[What is naive code?]]></title><description><![CDATA[I've been programming on and off since I was a kid. At some points in my career I've done it professionally and consistently. Nowadays however I just want to make something interactive. The thing is, my mind is full of conventions.]]></description><link>https://blog.sarasantillan.com/what-is-naive-code/</link><guid isPermaLink="false">642a99bc9b92a4690f13ae5d</guid><category><![CDATA[Coding]]></category><category><![CDATA[Dev journal]]></category><category><![CDATA[Naive code]]></category><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Mon, 03 Apr 2023 09:45:39 GMT</pubDate><content:encoded><![CDATA[<p><em>I&apos;ve been programming on and off since I was a kid. At some points in my career I&apos;ve done it professionally and consistently. Nowadays however I just want to make something interactive. The thing is, my mind is full of conventions.</em></p><blockquote>&quot;You wanted a banana but what you got was a <em>gorilla holding</em> the banana and the entire jungle.&quot; </blockquote><p>Joe Armstrong, creator of Erlang, on object-oriented programming</p><h2 id="the-modern-development-landscape-is-a-landmine-of-choices">The modern development landscape is a landmine of choices</h2><p>If one were to make an interactive site in 2023, just starting can be overwhelming. Shall I use a framework? Where&apos;s the latest <code>reset.css</code>? Shouldn&apos;t I be letting <code>npm</code> manage my packages? What browsers should I be supporting, and what polyfills do I need?</p><p>God forbid someone just start with an <code>index.html</code> and manually type out the words <code>&lt;html&gt;</code> and <code>&lt;/html&gt;</code> without a linter autocorrecting and autoclosing tags for us, which is why I did exactly that.</p><figure class="kg-card kg-code-card"><pre><code class="language-javascript">&lt;!DOCTYPE html&gt;
&lt;html&gt;
&lt;head&gt;
&lt;script&gt;
var packages=0;
function inspect_package(number) {
    packages = packages + number;
    document.getElementById(&quot;inspected_packages&quot;).innerHTML = packages;
}

&lt;/script&gt;

&lt;/head&gt;

&lt;body&gt;


&lt;button onClick=&apos;inspect_package(1)&apos;&gt;inspect the package&lt;/button&gt;
&lt;p&gt;number of packages inspected: &lt;/p&gt;
&lt;p id=&apos;inspected_packages&apos;&gt;&lt;/p&gt;

&lt;/body&gt;

&lt;/html&gt;
</code></pre><figcaption>The beginnings of an incremental game.</figcaption></figure><p>Anyone with a lick of professional game or programming experience knows that these should be separated out into their own files and the &quot;inspect the package&quot; text should be saved as a localization string for future translations. But I&apos;ve abandoned all that for the meantime to simply try a few ideas out. </p><p>That&apos;s not to say that the organizational work of &quot;doing things right&quot; is a boring drag. But being bogged down by decisions to ensure proper programming conventions at this point will keep me from simply developing the idea.</p><p>Also, those &quot;proper programming conventions&quot; exist to accelerate development. Many decisions can be made organically as the program scales. What&apos;s great about experience is knowing that you&apos;re about to experience a speed bump and avoiding that by making decisions early on. But the idea here is to make those decisions as they must be made, and not all at once.</p><h2 id="looking-to-art">Looking to art</h2><p>Naive art refers to art made by those without formal schooling. They don&apos;t carry the &quot;jungle&quot; of artistic conventions taught in school in their head. I am applying the same principle here. I have a vision of an interaction in my head, and I&apos;m just going to focus on that. </p><p><strong>So - what is naive code? It&apos;s just coding to get something done, without letting too many conventions get in the way and googling as I go along.</strong></p><p>Not everything about naive art can be applied to code. I can already hear the screams of anguish over technical debt. That&apos;s why I think of it as an initial approach to investigate an idea. Is what I&apos;m building something I like? Am I having fun with it?</p><p>How many ideas have we had that simply stay ideas because we feel overwhelmed just to start them? I know I&apos;ve had my fair share. I&apos;m sick of being struck by inspiration only to be grounded by reality. I want to stay in the clouds just a little bit longer. The box of &quot;good programming&quot; can wait until then.</p><p></p>]]></content:encoded></item><item><title><![CDATA[One tool to rule them all]]></title><description><![CDATA["I'm not into watches, but —" are the famous last words of everyone who goes down the rabbit hole of personal horology. In my case, ignorance was bliss until a few months ago, when my partner went shopping to find a watch with some fitness functions.]]></description><link>https://blog.sarasantillan.com/one-tool-to-rule-them-all/</link><guid isPermaLink="false">63a62ff49b92a4690f13ad89</guid><category><![CDATA[Life]]></category><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Fri, 23 Dec 2022 23:42:03 GMT</pubDate><media:content url="https://images.unsplash.com/photo-1585477078060-d06978689e34?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDF8fHdhdGNoZXMlMjBsYWhvcmV8ZW58MHx8fHwxNjcxODM1OTM2&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" medium="image"/><content:encoded><![CDATA[<img src="https://images.unsplash.com/photo-1585477078060-d06978689e34?crop=entropy&amp;cs=tinysrgb&amp;fit=max&amp;fm=jpg&amp;ixid=MnwxMTc3M3wwfDF8c2VhcmNofDF8fHdhdGNoZXMlMjBsYWhvcmV8ZW58MHx8fHwxNjcxODM1OTM2&amp;ixlib=rb-4.0.3&amp;q=80&amp;w=2000" alt="One tool to rule them all"><p><strong>&quot;I&apos;m not into watches, but &#x2014;&quot; are the famous last words of everyone who goes down the rabbit hole of personal horology. In my case, ignorance was bliss until a few months ago, when my partner went shopping to find a watch with some fitness functions.</strong></p><p>My partner, Drea, has ADHD. We&apos;ve learned since her diagnosis that alarms and reminders help keep her focused, and that the modern multi-tool we anachronistically call a phone can be both a helpmeet and a hindrance. How many hours have we spent &#x2014; whether we are neurotypical or not &#x2014; hunting down tracker and timer apps on the phone, and how many hours have we spent configuring those apps?</p><p>Drea wanted to record the time she spent on rehabilitating her fingers from a climbing injury. She also wanted to set a limit to her climbing sessions, to prevent overuse injuries. A phone wouldn&apos;t cut it. She wanted to be able to do <em>something</em> while not perenially tethered to the damn thing; it was already the first thing she woke up to and the last thing she saw before sleeping.</p><h2 id="resonance-as-reason">Resonance as reason</h2><p>The show began when we went shopping. I&apos;d not thought of watches in decades, having spent a childhood taking off and on again those itchy bands and destroying all the nice watches my mother gave me &#x2014; a Timex Ironman and a Swatch, which was maybe too much responsibility for a second grader.</p><p>Drea and I went to the department store. Casio delivered on the nostalgia, but I wasn&apos;t really <em>seeing</em>. At first, I didn&apos;t think too much of any model I looked at. We went to a couple more stores, again with no watch drawing an emotional or utilitarian response out of either of us.</p><p>Then we went to the dedicated G-Shock store.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.sarasantillan.com/content/images/2022/12/gshock-gbd.png" class="kg-image" alt="One tool to rule them all" loading="lazy" width="1730" height="1007" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/12/gshock-gbd.png 600w, https://blog.sarasantillan.com/content/images/size/w1000/2022/12/gshock-gbd.png 1000w, https://blog.sarasantillan.com/content/images/size/w1600/2022/12/gshock-gbd.png 1600w, https://blog.sarasantillan.com/content/images/2022/12/gshock-gbd.png 1730w" sizes="(min-width: 720px) 720px"><figcaption>The first thing that caught my eye was the orange and gray model. It looks red in these photos. (Source: Google Search for G-Shock GBD200-1A5.)</figcaption></figure><p>I saw, for the first time, a bright orange and grey G-Shock. It was a smartwatch, so it had &quot;everything&quot;. It was also dismayingly huge, too big for my wrist. But I felt <em>something</em> for this watch. I wear primarily black from head to toe, so a bit of color would absolutely pop. It would telegraph, to strangers, that I was only ninety percent still in my goth art school phase. (I am in my thirties and I do technical writing for a living.) We looked around a bit more. There were new G-Shocks that didn&apos;t look like the ones from my childhood; these G-Shocks were not square nor Baby-G round: they were octagons.</p><p>I picked out something the sign called a &quot;Tri-Color&quot; octagonal G-Shock. The border was white, the lines to indicate hours were red and the hands were in blue. Technically the watch background was a fourth color &#x2014; black &#x2014; as was the strap, but I understood the &quot;Tri-Color&quot; marketing theme was referring to the prep-school accent colors (and my need to point this out is why I&apos;m a technical writer, not a content writer). No, I didn&apos;t know any watch-related terms at the time. I only knew that this watch passed my personal standards: it had a mecha feel to it. It worked with the material and the geometric design of the watch. It wasn&apos;t trying to be anything except what it was.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.sarasantillan.com/content/images/2022/12/2022-12-24-07_34.png" class="kg-image" alt="One tool to rule them all" loading="lazy" width="1650" height="1070" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/12/2022-12-24-07_34.png 600w, https://blog.sarasantillan.com/content/images/size/w1000/2022/12/2022-12-24-07_34.png 1000w, https://blog.sarasantillan.com/content/images/size/w1600/2022/12/2022-12-24-07_34.png 1600w, https://blog.sarasantillan.com/content/images/2022/12/2022-12-24-07_34.png 1650w" sizes="(min-width: 720px) 720px"><figcaption>Screenshot of the online store entry for the G-Shock Tricolor series.</figcaption></figure><p>I offered it to my partner. These models were smaller than the usual sized G-Shock octagons, but they were still too big for my partner&apos;s wrist. She ended up with the tiniest Timex Expedition, which served her purposes. For that day, it was me with the emotional pull and her with the utilitarian one.</p><p>Not even three days later I came back to snap it up for myself after learning basic watch terms. It was a &quot;CasiOak&quot;, so-called because it looked like some other more expensive brand. If I was being honest, I bought it for its white and red, which bore a reaching, barely-passing resemblance to Mass Production Eva Units. For Gundam fans, the red, white, and blue add up to almost match a number of lead Gundam models, such as the Strike and Exia, though it lacks the yellow highlights on the Gundam.</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.sarasantillan.com/content/images/2022/12/mass-production-eva.webp" width="500" height="281" loading="lazy" alt="One tool to rule them all"></div><div class="kg-gallery-image"><img src="https://blog.sarasantillan.com/content/images/2022/12/GMA-S2100WT-7A2.webp" width="2000" height="2000" loading="lazy" alt="One tool to rule them all" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/12/GMA-S2100WT-7A2.webp 600w, https://blog.sarasantillan.com/content/images/size/w1000/2022/12/GMA-S2100WT-7A2.webp 1000w, https://blog.sarasantillan.com/content/images/size/w1600/2022/12/GMA-S2100WT-7A2.webp 1600w, https://blog.sarasantillan.com/content/images/2022/12/GMA-S2100WT-7A2.webp 2000w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>Something I&apos;m sure Casio&apos;s designers did not anticipate. (Source: <a href="https://ichibanotaku511.tumblr.com/post/146894804627/amp">Evangelion Mass Production Unit</a> | <a href="https://www.casio.com/sg/watches/gshock/product.GMA-S2100WT-7A2/?_gl=1*aj05jf*_ga*MTE0NTkwNzE3NS4xNjcxODI1ODcw*_ga_5NFHTVBN72*MTY3MTgzODc3Mi4xLjAuMTY3MTgzODc3Mi4wLjAuMA..">Casio</a>)&#xA0;</figcaption></figure><h2 id="justified-by-utility">Justified by utility</h2><p>While I never got into the habit of using the timer on my phone &#x2014; you always have to pull it out of a pocket &#x2014; I got into the habit of using the timer on my watch within the week I&apos;d bought it. I&apos;d never owned a watch with an ana-digi (analog-digital) display so discovering this bit of UI/UX was a revelation. I could read the time and run a timer on the same &apos;screen&apos;! Watches can still be useful! I didn&apos;t just buy it because of an arbitrary color scheme preference!</p><p>(I may have felt a little like I needed to justify the purchase. It did the job beautifully.)</p><p>I set the timer to twenty minutes. This duration fits many activities in my life. It follows the 20/20/20 rule: twenty minutes on the screen, twenty seconds look-away time at some object, at least twenty feet away. It&apos;s enough time to do a quick sweep, dishwashing, and general puttering-around. It&apos;s enough time to take a break.</p><p>Anyway, that&apos;s the first story arc for this bit of consumerist character development. I got hooked on the watch. Not on <em>watches</em>, per se. I fell very briefly into the rabbit hole, and would fall again for the second arc of the story.</p><h2 id="fidget-toys-for-adults">Fidget toys for adults</h2><p>The second arc began when I started to look for other watches with alarms or timers. At that point I was probably more invested than the person who most needed it. My partner already considered herself well stocked with reminder apps, timer apps, and a sturdy physical watch that could take a beating on plastic rock holds at the gym.</p><p>I discovered diver&apos;s watches and realized that the border of the watch &#x2014; the bezel &#x2014;actually rotated, functioning as a visual timer. A visual timer! But the bezels were not always useful for day-to-day tasks, sporting different markers for different reasons. The most basic, a diver&apos;s watch, typically counted <em>up</em>, not down. After hours looking at regatta watches, watches with GMT bezels, and other fun rotating bezels, I gave up.</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.sarasantillan.com/content/images/2022/12/Aquastar_Felsa_1A1-300x300.jpg" width="300" height="300" loading="lazy" alt="One tool to rule them all"></div><div class="kg-gallery-image"><img src="https://blog.sarasantillan.com/content/images/2022/12/Memosail.jpg" width="300" height="266" loading="lazy" alt="One tool to rule them all"></div><div class="kg-gallery-image"><img src="https://blog.sarasantillan.com/content/images/2022/12/Wyler_regatta.jpg" width="240" height="240" loading="lazy" alt="One tool to rule them all"></div></div></div><figcaption>Regatta watches. They typically have a ten-minute timer. (Source: <a href="https://chronopedia.club/Regatta_Watches">Regatta watches from Chronopedia.club</a>)</figcaption></figure><p>Then I stumbled on the <strong>Timex Turn-N-Pull Easy-Set Alarm</strong>. It was a feature, a <em>complication</em>, as the watch-heads say, in which you twisted the bezel to set an alarm. The UI/UX of it blew me away. What fun it made setting an alarm! The tactility mattered, and the designers knew it!</p><p>In digital watches, timer and alarm functions are separated because of the need for <em>perspective</em> when the user sets a timer or alarm. A timer asks you &quot;how many minutes from now?&quot; while the alarm asks you &quot;at what time of the day?&quot; and gives you a UI limited to that. In an analog display, you are able to see both perspectives at once because an analog watch always displays all the hours of a day &#x2014; a macro view. You can set the Turn-N-Pull to sound off from the perspective of a timer and from the perspective of a daily alarm.</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.sarasantillan.com/content/images/2022/12/turn-n-pull-2.jpg" width="571" height="879" loading="lazy" alt="One tool to rule them all"></div><div class="kg-gallery-image"><img src="https://blog.sarasantillan.com/content/images/2022/12/turn-n-pull1-1.jpg" width="348" height="500" loading="lazy" alt="One tool to rule them all"></div><div class="kg-gallery-image"><img src="https://blog.sarasantillan.com/content/images/2022/12/turn-n-pull-reef-3.jpg" width="241" height="500" loading="lazy" alt="One tool to rule them all"></div></div></div><figcaption>Various Timex Turn-N-Pulls. (Source: Amazon.)</figcaption></figure><p>The Timex Turn-N-Pull Easy-Set Alarm was a complication available in several product lines: the Reef Gear, the Expedition, and as its own line. Sold throughout the aughts, I suspect that the emergence of smartphones killed it.</p><h2 id="goin-the-way-of-the-dinosaurs">Goin&apos; the way of the dinosaurs</h2><p>I started digging into alternatives. To replicate the UI, contenders had to be analog models. There were none that had that tactile feeling of turning the bezel. Nor were there any that offered the precision of the Turn-N-Pulls, which enabled its user to set the alarm accurately to the minute by separating both hour and minute markers. The closest thing for analog watches was to buy an <strong>alarm watch</strong>. Alarm watches are no longer common; Seiko Bellmatics sold for at least four hundred dollars and the Poljots and Burans (Russian alarm watches) were a hundred fifty dollars brand new.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.sarasantillan.com/content/images/2022/12/image-1.png" class="kg-image" alt="One tool to rule them all" loading="lazy" width="747" height="898" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/12/image-1.png 600w, https://blog.sarasantillan.com/content/images/2022/12/image-1.png 747w" sizes="(min-width: 720px) 720px"><figcaption>A Seiko Bell-matic. (Source: <a href="https://commons.wikimedia.org/wiki/File:Seiko_Bell-Matic.jpg">Wikimedia commons</a>.)</figcaption></figure><p>This is when I truly experienced, for a bit, what it was like to be &quot;in the hobby&quot;. This feeling of chasing after something, becoming invested in the model&apos;s history, its movement, understanding the bit of backstory as to why only Russia produced these kinds of watches any more &#x2014; it made me feel like I was participating in something that&apos;s been going on for longer than I&apos;d been around. This feeling may not have been as strong for me as the punch to my nostalgia gut with the CasiOak, but the gravitational pull was there. The gravitational pull was serendipity, the hope that the stars would align and you&apos;d find your fish.</p><p>So that&apos;s what the hobby is about, at least for as far as I&apos;ve gone. There&apos;s the personal history, the institutional or cultural memory, and the serendipity of the occasion, colliding in this tiny package that wraps up our identities, that speaks for us without us having to declare anything.</p><p>Along with that chase came the feeling that I&apos;d buy &quot;anything&quot; if it met the illusory need. The Timex Turn-N-Pulls were reasonable watches, around 70 USD when they first hit the market; by the time I was looking at Poljots I&apos;d been on the trail for hours and I thought the 150 USD price point was reasonable next to Seiko Bellmatic (and much more reasonable next to the Vulcain Cricket). How&apos;d I go from fifty dollars to triple that amount on a watch that was, feature-wise, a compromise?</p><p>At the end of the day I dug no deeper down the rabbit hole. There was no need for me to bid on a Seiko Bellmatic nor would I support anything Russian-made given Russia&apos;s warmongering. I was still riding a wave of serendipity, the discovery that I could even like a watch, that I&apos;d wear a watch to begin with, that a watch could remind me of something.</p><h2 id="other-leads-for-another-time">Other leads for another time</h2><p>I let the Turn-N-Pull concept go. WatchUSeek was ready to get me fired for another research trip, the happy end of which I&apos;ll make a separate post about. For now I&apos;m content to wrap this post up.</p><p>It was fun to discover I liked this kind of bling. Yes, I wear gold, but I&apos;d never seen a bit of fashion, that is worn as jewelry nowadays, be so cheerfully plastic and tough and useful. It&apos;s nice to walk away from phones; oftentimes we&apos;ve heard about watches as the taskmasters of the tyrant that is time, but truthfully it is phones these days that fill that role in our lives. I look at the phone less now, when I&apos;m around the house, or traveling, or meeting a friend.</p><p>The fortuity, I think, is what will convince me to go watch window-shopping every now and then. We like to make connections, to make sense of the events in our lives, so when someone passes a watch down the family line &#x2014; that is serendipity &#x2014; when our partners happen to drag us into a store on an assignment &#x2014; that is serendipity &#x2014; when we happen to discover nice analog and digital UIs and trace the history of technology &#x2014; that is serendipity.</p><p>Finally, there&apos;s network effects. So much of my chase went on because of Reddit and WatchUSeek. I would have run out of steam early without the Internet. I wouldn&apos;t have been so familiar with high end, low end, niche, and mainstream watch brands were it not for the Internet. It is so easy to learn, to gain an appreciation for something like a watch and why people would find it meaningful to grow and cultivate a collection, just as it is easy to fall, fall, fall and live beyond your means. The pendulum of desire swings between consumerism and connection, or perhaps it is a tightrope, one I don&apos;t regret walking to the end &#x2014; at least this time around.</p>]]></content:encoded></item><item><title><![CDATA[Devil's in the details: a growing wordlist]]></title><description><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.sarasantillan.com/content/images/2022/09/linguistic-tree-solver.png" class="kg-image" alt loading="lazy" width="1926" height="1004" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/09/linguistic-tree-solver.png 600w, https://blog.sarasantillan.com/content/images/size/w1000/2022/09/linguistic-tree-solver.png 1000w, https://blog.sarasantillan.com/content/images/size/w1600/2022/09/linguistic-tree-solver.png 1600w, https://blog.sarasantillan.com/content/images/2022/09/linguistic-tree-solver.png 1926w" sizes="(min-width: 720px) 720px"></figure><h2 id="codebase-vs-repository">Codebase vs repository</h2><p>Codebase is the more general term. Prefer when the code can &quot;live&quot; either in a repository or in a local directory.</p><p>Google style guide: Both terms are okay to use</p><h2 id="omit-vs-skip">Omit vs skip</h2><p>Both terms are okay to use.</p><h2 id="libraries-vs-dependencies">Libraries vs dependencies</h2><p>Their meanings overlap.</p>]]></description><link>https://blog.sarasantillan.com/devils-in-the-details-a-growing-wordlist/</link><guid isPermaLink="false">631a4d1e9b92a4690f13abe2</guid><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Thu, 08 Sep 2022 20:15:22 GMT</pubDate><content:encoded><![CDATA[<figure class="kg-card kg-image-card"><img src="https://blog.sarasantillan.com/content/images/2022/09/linguistic-tree-solver.png" class="kg-image" alt loading="lazy" width="1926" height="1004" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/09/linguistic-tree-solver.png 600w, https://blog.sarasantillan.com/content/images/size/w1000/2022/09/linguistic-tree-solver.png 1000w, https://blog.sarasantillan.com/content/images/size/w1600/2022/09/linguistic-tree-solver.png 1600w, https://blog.sarasantillan.com/content/images/2022/09/linguistic-tree-solver.png 1926w" sizes="(min-width: 720px) 720px"></figure><h2 id="codebase-vs-repository">Codebase vs repository</h2><p>Codebase is the more general term. Prefer when the code can &quot;live&quot; either in a repository or in a local directory.</p><p>Google style guide: Both terms are okay to use</p><h2 id="omit-vs-skip">Omit vs skip</h2><p>Both terms are okay to use.</p><h2 id="libraries-vs-dependencies">Libraries vs dependencies</h2><p>Their meanings overlap. The recent explosion of software composition analysis may lean into third-party open-source dependencies more than standard libraries, so prefer &quot;dependencies&quot; when writing for that use case.</p><h2 id="lockfile-vs-lock-file">Lockfile vs Lock file</h2><p>Prefer lockfile due to industry prevalence. Sometimes lockfiles are contrasted with code files; prefer lockfile regardless.</p><h2 id="entry-vs-record">Entry vs record</h2><p>Prefer record for database contexts. Prefer entry otherwise.</p>]]></content:encoded></item><item><title><![CDATA[Popping, Slicing, and flatMap]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Today&apos;s coding scratchpad shows my thought process working through a valid return value for Docusaurus&apos;s frontmatter. You can see my left-right-left-right shuffle through &quot;Will it render an array? No? It&apos;s a map? Just checking, is it really?&quot; The answer is that Docusaurus</p>]]></description><link>https://blog.sarasantillan.com/popping-slicing-and-flatmap/</link><guid isPermaLink="false">631796269b92a4690f13aba9</guid><category><![CDATA[Coding]]></category><category><![CDATA[Scratchpad]]></category><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Tue, 06 Sep 2022 18:55:54 GMT</pubDate><media:content url="https://blog.sarasantillan.com/content/images/2022/09/2022-09-07-02_50-1.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><img src="https://blog.sarasantillan.com/content/images/2022/09/2022-09-07-02_50-1.png" alt="Popping, Slicing, and flatMap"><p>Today&apos;s coding scratchpad shows my thought process working through a valid return value for Docusaurus&apos;s frontmatter. You can see my left-right-left-right shuffle through &quot;Will it render an array? No? It&apos;s a map? Just checking, is it really?&quot; The answer is that Docusaurus will make Maps within Maps within Maps for any frontmatter values to capture the nested structure. <code>flatMap()</code> to the rescue! Probably a very common pattern to work with.</p>
<p>Here is the code for future me to look back on fondly when the heat death of the internet nukes photos:</p>
<pre><code class="language-html">&lt;!-- Ugly --&gt;

&lt;!--
&lt;ul&gt;
{
Object.entries(frontMatter).filter(
    frontmatter =&gt; frontmatter[0] === &apos;tags&apos;
    ).flat().slice(1,).flat().map((value) =&gt; &lt;li&gt; {value} &lt;/li&gt;)
}
&lt;/ul&gt;
--&gt;

&lt;!-- Better --&gt;

&lt;!--
&lt;ul&gt;
{
Object.entries(frontMatter).filter(
    frontmatter =&gt; frontmatter[0] === &apos;tags&apos;)[0].pop().map(
    (value) =&gt; &lt;button class=&apos;tag__badge&apos;&gt;&lt;li classname=&apos;tag__badge&apos;&gt; {value} &lt;/li&gt;&lt;/button&gt;)
}
&lt;/ul&gt; 
--&gt;   

&lt;!-- Best --&gt;

&lt;ul&gt;
{
Object.entries(frontMatter).filter(
    frontmatter =&gt; frontmatter[0] === &apos;tags&apos;)[0].flatMap(
    (value) =&gt; &lt;button class=&apos;tag__badge&apos;&gt;&lt;li classname=&apos;tag__badge&apos;&gt; {value} &lt;/li&gt;&lt;/button&gt;)
}
&lt;/ul&gt;
</code></pre>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Validated by history and accurate predictions: Cooperative theory]]></title><description><![CDATA[How and why do people move from social contracts enforced by kinship (including marriage), into to more complicated social structures like cities, where people don’t have to know each other to know that they can trade without cheating each other?]]></description><link>https://blog.sarasantillan.com/validated-by-history-and-accurate-predictions-cooperative-theory/</link><guid isPermaLink="false">630bee9aafac917640fd1b1f</guid><category><![CDATA[Life]]></category><category><![CDATA[History]]></category><category><![CDATA[Cooperative theory]]></category><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Sun, 28 Aug 2022 22:46:00 GMT</pubDate><media:content url="https://blog.sarasantillan.com/content/images/2022/09/robert-keane-rlbG0p_nQOU-unsplash-1-.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.sarasantillan.com/content/images/2022/09/robert-keane-rlbG0p_nQOU-unsplash-1-.jpg" alt="Validated by history and accurate predictions: Cooperative theory"><p>(Photo by <a href="https://unsplash.com/@keano16?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Robert Keane</a> on <a href="https://unsplash.com/?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>.)</p><p>There&#x2019;s a set of stories and social science models that I group together in my head, because the interplay of concepts is interesting to explore. I have a group for kinship/big man theory and political fantasy books, in particular the growth of social contracts from tribal families, to villages, then into cities. Basically, how and why do people move from social contracts enforced by kinship (including marriage), into to more complicated social structures like cities, where people don&#x2019;t have to know each other to know that they can trade without cheating each other?</p><p>I recently read a low fantasy book about a woman coming into a group of farming families where the non-related families didn&#x2019;t have much to do with each other. Basically, it wasn&#x2019;t really a community. That is, until bandits sacked the place. None of the other families would help when one family was sacked (&#x201C;a man&#x2019;s responsibility is to his family&#x201D;), which resulted in <em>all</em> the families in that area suffering an uneven matchup of husbands/sons vs many bandits. After that defeat, the remnants of the families had to cooperate with each other.</p><p>I liked that story because in many cases fantasy stories implicitly echo a central authority (&#x201C;Houses&#x201D; in Westeros, royalty, etc.) while not fully exploring that part in history where serfs or even guildsmen/craftsmen had a relationship with <em>each other</em> and not <em>only </em>to a knight, count, baron, duke, or king. I feel like a lot of fantasy leans into House royalty because <em>we</em>, us modern humans, grew up with authority (parents/media/law) handling many of our relationships. In short, when we consume hierarchical political fantasy (stories about the power plays between nobility), it <em>is </em>relatable to our own lives, distanced by some set dressing, and dolloped with some power fantasy since all the main characters are kings and queens when many watchers are the equivalent of modern-day serfs. Employees far outnumber employers, do they not? What people fantasize about when they watch typical fantasy, reinforces &#x201C;the wheel&#x201D; including the part where we pretend to want to break the wheel, but really what we want is to be the boss of the wheel.</p><p>Analogous to this, I believe that many people who claim to want reform only want reform until they become the boss. The true reformist, someone who sees the pyramid and says &#x201C;no&#x201D; instead of trying to climb it, is a rare creature. To engage in the game is to perpetuate it - the only way to win is not to play the game. That&#x2019;s why the ending in Ursula K Le Guin&#x2019;s &#x201C;The ones who walk away from Omelas&#x201D; is all about walking away. They can&#x2019;t <em>change </em>the game. The game will always change them.</p><p>(Disclaimer: I&#x2019;m not really talking about Locked Tomb here, because Locked Tomb explores character relationships. Social contracts <em>might </em>be coming up in the next book, but I recognize that LT is not about power plays.</p><p>So then, what &#x201C;game&#x201D; should people play, if we want to have equal relationships between people, where no policeman or auditor can expressly forbid another person from trickery, sabotage, theft, or murder?</p><p>There are already players of that kind of game: the players are countries. Can the US enforce the Soviet Union and prevent it from invading Ukraine through authority? It cannot. The game that these guys are playing is a cooperation/defection game. What that means is that there are conditions where the US and Soviet Union gain &#x201C;enough&#x201D; to cooperate rather than destroy each other. For example, when countries cooperate, they are able to trade. Because they are able to trade, they are able to indefinitely generate income. If they destroyed each other, then 1 winner <em>would</em> be able to invade, but in the short term, it would have no trading partner, and other future trading partners would know not to trust them. There are a whole set of variables that determine the ability to make other countries cooperate, and a formal theory (Cooperation theory) that determines what &#x201C;moves&#x201D; can create cooperation. One of those important mechanisms is &#x201C;swift retaliation&#x201D; - in the case of the US and Russia, Cooperation theory posits that it was incorrect for the US <em>not </em>to sanction Russia harshly for its annexation of Crimea, as that would have taught Russia that actions have consequences.</p><p>What&#x2019;s exciting about history and cooperation theory is that it means the human race can move forward, assuming we don&#x2019;t blow ourselves up. And to me, what is even more exciting, is that history happened (it was true, it can happen), and that cooperation theory also has a lot of sound examples. (Many of those examples are &#x201C;horrible&#x201D; - for example, monopolies in deregulated countries cooperate with each other to screw the consumer over. In this context, cooperation is not a virtue, and is called collusion - but it&#x2019;s fascinating that it&#x2019;s one of the hardest things for policy to destroy. Imagine if factory workers could have <em>that </em>level of cooperation, and not just uh, duopoly telecom companies lol) In short, the future need not be taken on blind faith.</p><p>The other interesting thing about cooperation theory is that it concretely explains how naive marxism is. Why do normies &#x201C;compete for jobs&#x201D;, or why do workers lack solidarity (In office settings, we don&#x2019;t share our salaries, so we don&#x2019;t have a collective bargaining agreement), while rich monopolies shake hands not to compete with each other? Why do the non-rich fight for scraps (limited job slots) while the rich agree on which territories they own? How were the mafia families able to stop shooting each other and instead agree that &#x201C;chicago belongs to X family&#x201D;, like kings cutting up a serfdom? Cooperation theory + theories on inequality are able to model these behaviors. The models are validated via accurate predictions. <strong>I love it when a model produces accurate results. That is the closest to Truth with a capital T that we are going to get. </strong>We <em>know </em>we&#x2019;re going to hell, but we also know <em>how to avoid getting there</em>.</p><p><strong>Small aside:</strong> Mafia families were murdering each other on the reg, they knew each other (they were all italian immigrants), they interacted a lot, and were faced with extinction if they kept shooting each other dead what with the police coming in and picking them off. Because of that, they <em>met in a fucking mafia villain conference (1929, 1957, etc.) and didn&#x2019;t shoot each other long enough to make a deal with each other</em>, and they wouldn&#x2019;t stab each other in the back because</p><ol><li>Mafia families knew each other and would <em>continue </em>to know each other</li><li>They could make deals (i will transport booze, you will distribute, we split x deal) that mutually benefited each other</li><li>They already saw what murdering each other had done - they&#x2019;d lost enough &#x201C;soldiers&#x201D; that the police could pick &#x2018;em off.</li></ol><p>Why is this so fascinating to me? Because <em>they cooperated just in time to survive </em>while India shot itself in the foot when the Brits came around, and same thing in the Philippines and many other countries. (The Phils obviously did not satisfy requirement 1 and 3 before it was too late - we were too big and scattered, same thing with India. Japan fended off colonialism because they unified just in time before the west could really fuck them up.)</p><p>Returning to marxism, mind you I&#x2019;m not saying I shit on marxism, in terms of absolute wrongness many social/political theories were just as trashy lol, they were all shots in the dark. What I like is that there is a refinement of our social modeling. A few hundred years ago, we just made a fucking guess. Reciprocity? Idk where it comes from. Altruism? No idea what could motivate a person. Now we have science and computers to explain to us the conditions for altruism, reciprocity, and cooperation (and its negative forms, such as collusion between politicians and industry monopolies). That means we can recreate those conditions and spread that kind of behavior where we want it to, and try to break up &#x201C;bad&#x201D; cooperation (collusion).</p>]]></content:encoded></item><item><title><![CDATA[Hisense A9 review (August 2022)]]></title><description><![CDATA[The Hisense A9 is a black and white e-ink smartphone, and its main selling point is its fast refresh rate. 
On this e-ink smartphone, you can watch videos on Youtube without any lag - but the videos will look like a moving series of Xeroxed images.]]></description><link>https://blog.sarasantillan.com/hisense-a9-review-august-2022/</link><guid isPermaLink="false">62f8d93bafac917640fd1aa6</guid><category><![CDATA[E-ink]]></category><category><![CDATA[E-book reader]]></category><category><![CDATA[Gadgets]]></category><category><![CDATA[Dev journal]]></category><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Sun, 14 Aug 2022 12:08:36 GMT</pubDate><media:content url="https://blog.sarasantillan.com/content/images/2022/08/IMG_20220814_193937.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.sarasantillan.com/content/images/2022/08/IMG_20220814_193937.jpg" alt="Hisense A9 review (August 2022)"><p><strong>The Hisense A9 is a black and white e-ink smartphone, and its main selling point is its fast refresh rate. </strong></p><p><strong>On this e-ink smartphone, you can watch videos on Youtube without any lag - but the videos will look like a moving series of Xeroxed images.</strong></p><p>At the price of around 400 USD, which <em>may</em> include shipping or taxes depending on your store, this phone ain&apos;t cheap. Because e-ink screens aren&apos;t in high demand, the price of an e-ink screen and its drivers are higher than a regular screen. At that upfront cost, it makes sense from a vendor&apos;s perspective to price the phone high and tack on extra storage (the A9 has 128GB) and RAM (6GB). In addition to 128GB of disk space and 6GB of RAM, the Hisense A9 makes use of a Qualcomm Snapdragon 662 chip, commonly used on last year&apos;s midrange phones.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.sarasantillan.com/content/images/2022/08/IMG_20220814_195127.jpg" class="kg-image" alt="Hisense A9 review (August 2022)" loading="lazy" width="2000" height="1500" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/08/IMG_20220814_195127.jpg 600w, https://blog.sarasantillan.com/content/images/size/w1000/2022/08/IMG_20220814_195127.jpg 1000w, https://blog.sarasantillan.com/content/images/size/w1600/2022/08/IMG_20220814_195127.jpg 1600w, https://blog.sarasantillan.com/content/images/size/w2400/2022/08/IMG_20220814_195127.jpg 2400w" sizes="(min-width: 720px) 720px"><figcaption>Clear mode on KO Reader.</figcaption></figure><p>A relevant caveat with this phone is that it does not have a global release. It&apos;s a Chinese phone intended for a Chinese domestic market that tacked on English as a feature (with some text still remaining in Chinese). The implications of a Chinese domestic market are:</p><ul><li>Fewer consumer protections than you may be used to.</li><li>Chinese software that does not apply to your locale&apos;s infrastructure.</li><li>Privacy issues.</li></ul><p>These issues are addressed by:</p><ul><li>Disabling trackers.</li><li>Removing bloatware.</li><li>Installing a firewall that forbids the Hisense A9 from phoning home.</li></ul><p>See the maintaining privacy section to get a picture of what it takes to protect your data &#x2014; for some folks such as myself, this step is something we do for all phone brands, but it may be what makes or breaks your interest in this phone.</p><h2 id="why-buy-a-black-and-white-phone">Why buy a black and white phone?</h2><p>I bought the Hisense A9 because I like e-ink devices and I knew that the form factor and limitations of a grayscale screen would dictate the success of my reading habit. For the past month that has been true: I&apos;ve finished reading whole books on the tiny screen because of its small size and light weight. Your own experience with this phone will vary based on what you will use it for; there are a few threads on Reddit selling off the phone because it doesn&apos;t support their mobile carrier&apos;s bands. On my end, I wanted a reader that had a camera in case of emergencies, so I haven&apos;t used this phone as a phone. (I have a dumbphone for cellphone calls.)</p><p>I&apos;ve been using it for the past month and a half to read ebooks, surf the net, and listen to music. In short, I&apos;m using it to trick myself into thinking it&apos;s 2009 &#x2014; RSS feeds are still in, folks are still buying ipods, and nobody is &quot;online, all the time&quot;.</p><p>Do I like it? Hell yes. I knew without a doubt that the speed was 70% of what would drive successful usage, and I had <em>some</em> idea that form factor affects usage, but this phone really drives that point home for the importance of form factor. Why is this so relevant? Because if we want to change our habits, our environment plays a huge role. And tools are a part of that.</p><h2 id="breaking-down-its-specs">Breaking down its specs</h2><p>Apart from 6GB of RAM, 128GB of space, and a custom Android 11, the Hisense A9 has:</p><ul><li>E-Ink Carta 1200 screen (with a matte screen protector)</li><li>a 4000mAH lithium-polymer battery</li><li>13MP back camera</li><li>2MP front camera</li><li>a Hi-Fi audio chip with a 3.5mm audio jack</li><li>Bluetooth 5.0</li><li>USB-C fast charging port</li></ul><h2 id="battery">Battery</h2><p>I read on the phone maybe 3-4 hours in a day, and only from the 50-79% range (so I use only 30% of the phone&apos;s battery). I find myself charging once every 1.5-2 days. That means that the phone&apos;s battery uses roughly 30% of its power for 6 hours of use.</p><p><strong>These specs are not from a stock configuration of the phone.</strong> I used the universal android debloater (UAD), have a VPN, and turned off as many trackers as I could. I also use the ultra battery saver when I can.</p><p>To those who have used e-ink devices before, those numbers are not very encouraging. I too was pretty shocked at the drain. And after quite a bit of debloat work, too! Take a look at what drains the battery:</p><figure class="kg-card kg-gallery-card kg-width-wide kg-card-hascaption"><div class="kg-gallery-container"><div class="kg-gallery-row"><div class="kg-gallery-image"><img src="https://blog.sarasantillan.com/content/images/2022/08/Screenshot_20220726_024532940_GSam_Battery_Monitor.jpg" width="824" height="1648" loading="lazy" alt="Hisense A9 review (August 2022)" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/08/Screenshot_20220726_024532940_GSam_Battery_Monitor.jpg 600w, https://blog.sarasantillan.com/content/images/2022/08/Screenshot_20220726_024532940_GSam_Battery_Monitor.jpg 824w" sizes="(min-width: 720px) 720px"></div><div class="kg-gallery-image"><img src="https://blog.sarasantillan.com/content/images/2022/08/Screenshot_20220726_024559829_GSam_Battery_Monitor.jpg" width="824" height="1648" loading="lazy" alt="Hisense A9 review (August 2022)" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/08/Screenshot_20220726_024559829_GSam_Battery_Monitor.jpg 600w, https://blog.sarasantillan.com/content/images/2022/08/Screenshot_20220726_024559829_GSam_Battery_Monitor.jpg 824w" sizes="(min-width: 720px) 720px"></div></div></div><figcaption>GSam screenshots. An aside: all screenshots and camera photos retain color information, so sending screenshots and images to a color screen will render them in color.</figcaption></figure><p>The <strong>screen</strong> and <strong>system notification</strong> are the largest guzzlers. <em>System notification</em> encompasses a wide range of &quot;wait&quot; services, and my understanding is that this is par for the course. As for the screen, I suspect this is due to the touchscreen function, light, and proprietary drivers.</p><h2 id="cameras">Cameras</h2><p>I&apos;ve only used the rear camera. All photos and videos retain color information. I use Open Camera and find that the photos are sharp. The colors appear artificially saturated, but I suspect that&apos;s my fault for not setting up the software correctly.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.sarasantillan.com/content/images/2022/08/IMG_20220726_131032.jpg" class="kg-image" alt="Hisense A9 review (August 2022)" loading="lazy" width="2000" height="2697" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/08/IMG_20220726_131032.jpg 600w, https://blog.sarasantillan.com/content/images/size/w1000/2022/08/IMG_20220726_131032.jpg 1000w, https://blog.sarasantillan.com/content/images/size/w1600/2022/08/IMG_20220726_131032.jpg 1600w, https://blog.sarasantillan.com/content/images/size/w2400/2022/08/IMG_20220726_131032.jpg 2400w" sizes="(min-width: 720px) 720px"><figcaption>OpenCamera, Normal settings (not HDR), on a cloudy day.</figcaption></figure><h2 id="audio-hi-fi-chip-bluetooth-aptx">Audio (Hi-Fi chip, Bluetooth aptX)</h2><p>A Hi-Fi tag appears on the top bar of the phone when you plug in earphones or headphones. I have also used the Bluetooth audio connection with a pair of Lypertek Z3s, and they sound fine to an untrained ear.</p><p>I was able to test aptX and AAC &#x2014; you&apos;ll see those two options appear under Developer Options. aptX HD also appears as an option, but my Lyperteks don&apos;t support it.</p><p>Audio is one of those features where there are many variables involved in testing: you need good a good pair of outputs (headset, headphones, earphones), a good song in the right format (such as FLAC) to test with, and the chip. Then you need to compare with the same song, same output, but different chip. There are also needs, such as the ability to stream steadily when in a call or listening to audio.</p><h2 id="using-a-grayscale-screen-with-software-designed-for-color">Using a grayscale screen with software designed for color</h2><p>One of the interesting things about this phone is seeing to what extent we rely on color to guide us through software. For some apps, color is more necessary than others, even when shape is used to help users parse information. NetGuard is one such example:</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.sarasantillan.com/content/images/2022/08/IMG_20220814_195659.jpg" class="kg-image" alt="Hisense A9 review (August 2022)" loading="lazy" width="2000" height="1500" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/08/IMG_20220814_195659.jpg 600w, https://blog.sarasantillan.com/content/images/size/w1000/2022/08/IMG_20220814_195659.jpg 1000w, https://blog.sarasantillan.com/content/images/size/w1600/2022/08/IMG_20220814_195659.jpg 1600w, https://blog.sarasantillan.com/content/images/size/w2400/2022/08/IMG_20220814_195659.jpg 2400w" sizes="(min-width: 720px) 720px"><figcaption>The contrast on the toggle at the upper-left makes it hard to understand regardless of mode. This was taken in Balanced mode, and you can see the amount of ghosting.</figcaption></figure><p>Toggles and states can be difficult to identify. In VLC, an active state appears gray (inactive) because the color that denote &quot;selected/active&quot; is a lighter color than the actual inactive state.</p><p><strong>That being said, this is not the fault of NetGuard, VLC or any other app. Nobody expects a black and white phone!</strong></p><p>To help with readability, I try to use Light Mode on all my apps.</p><h2 id="reading-with-a-small-screen">Reading with a small screen</h2><p>The Hisense A9 has four refresh modes, listed here in order of quality:</p><ul><li>Clear</li><li>Balanced</li><li>Smooth</li><li>Speed</li></ul><p>The difference when reading between Balanced and Smooth is the amount of ghosting. They have the same responsiveness. I don&apos;t use Speed at all, the ghosting is too heavy.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.sarasantillan.com/content/images/2022/08/IMG_20220814_195335.jpg" class="kg-image" alt="Hisense A9 review (August 2022)" loading="lazy" width="2000" height="1500" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/08/IMG_20220814_195335.jpg 600w, https://blog.sarasantillan.com/content/images/size/w1000/2022/08/IMG_20220814_195335.jpg 1000w, https://blog.sarasantillan.com/content/images/size/w1600/2022/08/IMG_20220814_195335.jpg 1600w, https://blog.sarasantillan.com/content/images/size/w2400/2022/08/IMG_20220814_195335.jpg 2400w" sizes="(min-width: 720px) 720px"><figcaption>Text on KO Reader.</figcaption></figure><p>I use Clear for reading on KO Reader, then Balanced for when I&apos;m on a scroll-heavy app, such as Brave or Feeder. You can also use EInkBro, which has a tap-to-scroll-down feature, with the Clear setting.</p><p>Reading is very good, as long as you&apos;re not going through large, important diagrams. Hisense&apos;s stock reader has a feature to use the phone as a reader even when locked (no touch input) through Volume Up/Down as page turn buttons, but this feature does not work for any other reader.</p><h2 id="navigating-the-phone-through-the-stock-launcher">Navigating the phone through the stock launcher</h2><p>Currently, the Hisense A9 forces you to use the <strong>stock launcher</strong>, because it&apos;s the only launcher with window management. Switching to another launcher renders the square system button useless.</p><h2 id="installing-apps-through-alternative-sources">Installing apps through alternative sources</h2><p>You can use the Aurora store to fetch APKs from Google&apos;s Play store. For open-source applications it is preferable to install and use F-Droid. The Hisense comes with APK Pure pre-installed, but I avoided APK Pure as it has some privacy issues.</p><p>There are paid applications I can&apos;t use with this phone, no doubt (I paid for AIO Launcher, and I can&apos;t use it.) The workaround <em>is</em> to sign into Aurora with your Google account but there is a small chance Google will disable your account for using a non-Google Play, though there is no information as yet on the internet of this happening.</p><p>You may also have issues with map apps and other location based services, depending on what services you end up disabling.</p><h2 id="maintaining-privacy">Maintaining privacy</h2><p>On regular phones with decent popularity, privacy at the system level can be achieved by replacing the OS with GrapheneOS or similar ROMs. For niche phones whose operating systems carry proprietary drivers, such as the driver running the e-ink screen, ROM replacement will likely mean losing those drivers that run the screen&apos;s refresh technology. For this reason, some trackers cannot be removed and must be blocked through a firewall. I use NetGuard on all my phones, so I find the 15 Euro price tag acceptable. Other free alternatives include Blokada and AdGuard.</p><h2 id="further-reading">Further reading</h2><ul><li>I&apos;ll be making a dedicated post about the use of Universal Android Debloater and a few other tracker removal methods.</li><li>I&apos;ll be making a post about what apps I use on this phone.</li></ul>]]></content:encoded></item><item><title><![CDATA[Finding a route to the grocery and to work]]></title><description><![CDATA[The most important factor that affects whether you'll ride at all is safety, and the most uncontrollable aspect of safety is your route. A guide to finding a safe route to level up on.]]></description><link>https://blog.sarasantillan.com/finding-a-route-to-the-grocery-and-work/</link><guid isPermaLink="false">6270c908afac917640fd1990</guid><category><![CDATA[Bikes]]></category><category><![CDATA[Cycling]]></category><category><![CDATA[Life]]></category><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Tue, 03 May 2022 06:56:43 GMT</pubDate><media:content url="https://blog.sarasantillan.com/content/images/2022/05/2022_0505_063218_051-sky.JPG" medium="image"/><content:encoded><![CDATA[<h2 id="tldr">TL;DR</h2><!--kg-card-begin: markdown--><ul>
<li>It is usually easier to ride a bike for nearby grocery or coffee runs than it is to ride a bike to work.</li>
<li>When setting a route, consider:
<ul>
<li>Time of day</li>
<li>Amount of traffic</li>
<li>Size of road</li>
</ul>
</li>
<li>Assess your road condition:
<ul>
<li>Potholes, road obstacles</li>
<li>Humps</li>
<li>Cement, asphalt, or both</li>
</ul>
</li>
<li>Assess how you&apos;ll position yourself:
<ul>
<li>When to take the whole lane rather than an unprotected bike lane</li>
<li>When to bike on a sidewalk</li>
</ul>
</li>
</ul>
<!--kg-card-end: markdown--><hr><img src="https://blog.sarasantillan.com/content/images/2022/05/2022_0505_063218_051-sky.JPG" alt="Finding a route to the grocery and to work"><p>The most important factor that affects whether you&apos;ll ride at all is safety, and the most uncontrollable aspect of safety is your route.</p><p>Imagine if you were the only person on a flat paved road, riding helmeted and upright on a well-maintained bike. The most that could happen to you is a fall. In this situation, you have control over your speed, protection (helmet), and your bike. It is instinctively apparent that you are more safe on a well-maintained bike riding at a slower pace. But the amount of traffic passing by, or the condition of the road, or the width of the lanes, are all beyond your immediate control.</p><p>This is where things get complicated when riding a bike in the city. There are situations where the speed of the cars next to you will matter more than anything else, and there are situations where the road&apos;s condition &#x2014; bumpy, wet, full of holes, and so on &#x2014; is the greatest danger.</p><p><strong>For you to develop your confidence and skill to ride longer, you will need to start on a relatively easy route. </strong>If you cannot find one, you will not keep riding.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.sarasantillan.com/content/images/2022/05/sam-williams-0IDa0OQIgNo-unsplash.jpg" class="kg-image" alt="Finding a route to the grocery and to work" loading="lazy" width="2000" height="1333" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/05/sam-williams-0IDa0OQIgNo-unsplash.jpg 600w, https://blog.sarasantillan.com/content/images/size/w1000/2022/05/sam-williams-0IDa0OQIgNo-unsplash.jpg 1000w, https://blog.sarasantillan.com/content/images/size/w1600/2022/05/sam-williams-0IDa0OQIgNo-unsplash.jpg 1600w, https://blog.sarasantillan.com/content/images/size/w2400/2022/05/sam-williams-0IDa0OQIgNo-unsplash.jpg 2400w" sizes="(min-width: 720px) 720px"><figcaption>Photo by <a href="https://unsplash.com/@sam_williams?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Sam Williams</a> on <a href="https://unsplash.com/s/photos/bicycle-busy-street?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a>.</figcaption></figure><p><strong>Choose short, easy rides that you can do a few times a week</strong> until you&apos;ve gotten the hang of riding your bike alongside traffic.</p><h2 id="what-factors-into-a-safe-route">What factors into a safe route?</h2><p>The following situations provide relative safety, arranged from most to least safe.</p><!--kg-card-begin: html--><table>
<tbody><tr>
	<td>Lane/street type</td>
	<td>Examples</td>
	<td>Safety</td>
</tr>
<tr>
	<td>Cyclists are separated entirely from motorized vehicles.</td>
	<td>Sections of Julia Vargas</td>
	<td>&#x1F7E2;&#x1F7E2;&#x1F7E2;&#x1F7E2;&#x26AA; Safe.</td>
</tr>
<tr>
	<td>A sidewalk where bikes are allowed.</td>
	<td>Southern sections of EDSA (Ayala Ave to Magallanes)</td>
	<td>&#x1F7E2;&#x1F7E2;&#x1F7E2;&#x1F7E2;&#x26AA; Safe. You can&apos;t be run over by a car.</td>
</tr>
<tr>
    <td>Bike lane protected with <strong>bollards</strong> or fencing spaced evenly.</td>
	<td>Stretches of Ortigas Ave., San Juan</td>
	<td>&#x1F7E2;&#x1F7E2;&#x1F7E2;&#x26AA;&#x26AA; Safe-ish, due to the fact that motorcycles can still weave in and out of your lane.</td>
</tr>
<tr>
	<td>Two-lane streets that are congested such that a bike can <strong>take the whole lane.</strong></td>
	<td>Sections of the Hulo jeepney route</td>
	<td>&#x1F7E2;&#x1F7E2;&#x26AA;&#x26AA;&#x26AA; Slightly safe.</td>
</tr>
<tr>
	<td>Streets with painted bike lanes but no protection.</td>
	<td>Shaw Blvd., QC neighborhoods</td>
	<td>&#x1F7E2;&#x26AA;&#x26AA;&#x26AA;&#x26AA; The least safe. You&apos;re at the whim of motorists around you. Motorcyclists will likely ride very close to you; you could get sideswept.</td>
</tr>
</tbody></table><!--kg-card-end: html--><p>Safety among motorists boils down to two extremes:</p><ol><li>Having few cars on the road.</li><li>Having enough traffic to slow motorists down to the pace of a bicycle or to a complete gridlock.</li><li>Being highly visible and positioned such that cars or motorcycles cannot sidesweep you.</li></ol><h2 id="the-size-of-a-road-matters">The size of a road matters</h2><p>Cyclists are not often seen on large roads such as Commonwealth Avenue or EDSA. The size of the road and amount of traffic can result in cars veering and careening around the lanes, and a bike cannot match the speed of the cars around them.</p><p>Many streets in Metro Manila are tight, two-lane affairs with relatively slow moving traffic. In these roads, it is too tight to stay on the right, so a bike can match the speed of traffic, and may take the whole lane with less road rage from cars, because they&apos;re all going slowly anyway. When the road frees up or expands, I let the cars overtake me by going to the right, because at that point they&apos;re moving faster than me. It is safe for me to move to the right, because cars see me. (Motorcyclists are another story...)</p><h2 id="how-short-is-short-ideas-on-where-to-go">How short is short? Ideas on where to go</h2><p>Start with 1-2 kilometers per way.</p><p>Some suggestions for your first foray into the streets:</p><ul><li>Convenience stores, such as Ministops and 7-11s</li><li>Fast food joints</li><li>Panaderias</li><li>Palenkes</li><li>Milk tea/coffee cafes</li><li>Restaurants</li></ul><p><strong>You&apos;ll want to reward yourself for making it or feel accomplished by knocking a chore off the list.</strong> Think of a few places you&apos;ll want to go to then rank them by safety. Choose the safest place first then as you gain confidence knock the rest of the list off.</p><p>If possible, bike as early as your destination and schedule allows you to. Biking before 7am ensures fewer vehicles. A next-best time window is after the morning rush, but before lunch: around 9am to 11am.</p><h2 id="getting-the-hang-of-it">Getting the hang of it</h2><p>You&apos;ll know you&apos;re getting better by how you feel: your apprehension will eventually be replaced with confidence, you&apos;ll know how harsh a bump you&apos;ll be in for when you fail to slow down on a hump, you&apos;ll improve your judgement when tailing a car across an intersection or know when to stop when a pedestrian or car crosses your path.</p><p>You&apos;ll anticipate higher terrain by shifting to an easier gear and get a feel for how your brakes work. Your ears will recognize when a car is coming in from behind -- and most importantly, you&apos;ll realize that your ears may not always pick up a motorcycle speeding past an intersection without checking for potential crashes. You&apos;ll be surprised by motorists coming in out of nowhere because of a blind spot caused by parked cars or congested traffic.</p><p>You&apos;ll make split second decisions, some of them wrong, when you choose to push past a yellow light.</p><h2 id="take-the-whole-lane-not-the-unprotected-bike-lane">Take the whole lane, not the (unprotected) bike lane</h2><p>Much of Manila does not have protected bike lanes. <strong>When planning a route with this in mind, include in your assessments how much of the route you can stay in the middle of the lane or on a sidewalk.</strong> Being in the middle means &quot;taking up the lane&quot; and not biking at the right side (the bike lane).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.sarasantillan.com/content/images/2022/05/take-whole-lane.jpg" class="kg-image" alt="Finding a route to the grocery and to work" loading="lazy" width="1280" height="720" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/05/take-whole-lane.jpg 600w, https://blog.sarasantillan.com/content/images/size/w1000/2022/05/take-whole-lane.jpg 1000w, https://blog.sarasantillan.com/content/images/2022/05/take-whole-lane.jpg 1280w" sizes="(min-width: 720px) 720px"><figcaption>A relatively loose road with lots of tricycles and cars parked at the gutter. Taking the whole lane by default means not having to constantly stop or worry when merging traffic.</figcaption></figure><p>An unprotected bike lane just means that someone spent some money on paint and labor. It is not a deterrent to motorcyclists, which then become a hazard right in your lane. </p><p>Secondly, pedestrians will walk on bike lanes in places where there are no sidewalks. This now places you in between them and motorists. You are squeezing out the pedestrian while being squeezed out yourself: not a safe position to be. In such a tight situation, don&apos;t overtake the pedestrian until the motorist has passed you by.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.sarasantillan.com/content/images/2022/05/test4-15-delay-resize50.gif" class="kg-image" alt="Finding a route to the grocery and to work" loading="lazy" width="640" height="360"><figcaption>That&apos;s <strong>three </strong>pedestrians a few seconds apart. Can&apos;t blame &apos;em: there are lights on the sidewalk getting in the way.</figcaption></figure><p>Sidewalks with few to no pedestrians are an option as well. This is how people bike in some southern sections of EDSA. Sidewalks with enough space for pedestrians and cyclists are an option as well, but within good taste: pedestrians shouldn&apos;t feel unsafe around us. Ride slow and give pedestrians priority: we&apos;re in their world now.</p><h2 id="is-it-really-this-hard-to-ride-a-bike-in-metro-manila">Is it really this hard to ride a bike in Metro Manila?</h2><p>The ease or difficulty of riding a bike depends on when and where you ride a bike as much as a good instinct for riding. The <a href="https://mmda.gov.ph/images/Home/FOI/Bicycle-related-Road-Crash-Statistics-in-Metro-Manila/Bicycle-related_Road_Crash_Statistics_2021.pdf">MMDA has released 2021 figures</a> which assess which part of the Metro has the most number of accidents as well as the least safe time periods. There&apos;s nothing wrong with riding recreationally or riding only as far as the nearest market, or riding only at a certain time.</p><p>That being said, some factors are in our favor:</p><ul><li>Congestion keeps cars from going too fast.</li><li>Trucks are not allowed in small streets.</li><li>Cyclists are able to get off their bikes and walk off the street.</li></ul><p>As with all things: nothing ventured, nothing gained.</p>]]></content:encoded></item><item><title><![CDATA[Bike commuting in Manila for regular folk]]></title><description><![CDATA[A series in four parts about riding with nice clothes, a comfortable position, and only the sweat caused by the tropical weather in Manila. Also discussed: catcalling and the trouble with buying a bike for small women.]]></description><link>https://blog.sarasantillan.com/bike-commuting-in-manila-for-regular-folk/</link><guid isPermaLink="false">622b6461afac917640fd18e4</guid><category><![CDATA[Cycling]]></category><category><![CDATA[Bikes]]></category><category><![CDATA[Metro Manila]]></category><category><![CDATA[Life]]></category><dc:creator><![CDATA[sara]]></dc:creator><pubDate>Fri, 11 Mar 2022 16:45:34 GMT</pubDate><media:content url="https://blog.sarasantillan.com/content/images/2022/03/IMG_20150814_165718.jpg" medium="image"/><content:encoded><![CDATA[<img src="https://blog.sarasantillan.com/content/images/2022/03/IMG_20150814_165718.jpg" alt="Bike commuting in Manila for regular folk"><p><strong>A series in four parts about riding with nice clothes, a comfortable position, and only the sweat caused by the tropical weather in Manila. This series attempts to cover the minimum anyone needs to not hate biking in the streets. Also discussed: catcalling and the trouble with buying a bike for small women.</strong></p><p>I&apos;ve been riding my bike for errands for almost eight years now, starting at around August 2014. Up until the pandemic (February 2020), I rode to occasionally go to work or for grocery reasons, no more than fourteen kilometers total per ride. In that time I&apos;ve only had to change the tires, which rotted after months of irregular use during the pandemic.</p><p>I&apos;ve found that people love the idea of riding, especially riding for utility. It&apos;s the reality that ruins things: poop on the street, smog in their faces, roadwork and construction, motorcycles running bikes off the street. In my mind, I have to negotiate all of those things with the fact that I simply want to ride my bike... and I want to ride my bike wearing the clothes I wear to work, potential falls and tropical weather be damned.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.sarasantillan.com/content/images/2022/03/nuno-silva-BNwpzQ_7qrA-unsplash.jpg" class="kg-image" alt="Bike commuting in Manila for regular folk" loading="lazy" width="2000" height="1500" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/03/nuno-silva-BNwpzQ_7qrA-unsplash.jpg 600w, https://blog.sarasantillan.com/content/images/size/w1000/2022/03/nuno-silva-BNwpzQ_7qrA-unsplash.jpg 1000w, https://blog.sarasantillan.com/content/images/size/w1600/2022/03/nuno-silva-BNwpzQ_7qrA-unsplash.jpg 1600w, https://blog.sarasantillan.com/content/images/size/w2400/2022/03/nuno-silva-BNwpzQ_7qrA-unsplash.jpg 2400w" sizes="(min-width: 720px) 720px"><figcaption>Goals. Photo by <a href="https://unsplash.com/@phfft?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Nuno Silva</a> on <a href="https://unsplash.com/photos/_i1ijUZUUoY?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Unsplash</a></figcaption></figure><p>For me, the concluding argument of that negotiation is that I do ride my bike wearing whatever I feel like wearing, to do whatever errands or work a two-person household needs to do &#x2013; the tradeoff being that I set a safe distance and route. This treatment of a bike as a tool not unlike an umbrella or shoe is common in the Netherlands, Japan, and the like. In the Netherlands, I&apos;d probably classify myself as a <em>fietser</em>, someone on a bike, as opposed to a <em>wielrenner</em>, a sport cyclist. In Japan, moms, suited up salarymen, and students alike ride a <em>mamachari</em> (mom bike, a Japanese take on the step-through city bike) &#x2014; without necessarily being labelled a &quot;cyclist&quot;. My path to cycling zen is by integrating a bike into my lifestyle, not by integrating myself into cycling culture &#x2014; the lycra ain&apos;t for me. Either path is fine, and it&apos;s a spectrum, not a binary.</p><p>Even if all you want is to be a casual biker in Manila, the infrastructure demands an experienced riding instinct to navigate it free of crashes in the long term. For that reason, cyclists that are solely interested in riding a bike for a paltry ten kilometer ride are outliers. After all, if you&apos;re going to develop the skill to ride, won&apos;t you want to ride as a hobby?</p><p>(In my case, I just happen to want to do other things on the weekend.)</p><p>Other concerns about casual riding include negotiating the weather and the harshness of the ride. There are few factors in anyone&apos;s control here, but I can think of three: cutting the number of rides you make in a week, living close to work, or to have a relatively car-free route. We haven&apos;t even gotten to the bike yet, and are already hampered by lifestyle nice-to-haves, which most folk can&apos;t control!</p><p>Most of us have to decide the degree to which these factors will affect our decision to ride. For example, I can wear a short-sleeved button-down to work if work is about seven kilometers away and part of it cuts through the shaded New Manila area (as I did when I went to an office occasionally in 2017). Such a thing was impossible when going to Makati, so I still took a bus.</p><p>That being said, if you are considering a bike commute, you likely already live in the city in which you work, or &quot;close enough&quot; in your perception to where you work. Far be it for me to enforce a distance limit, but if you&apos;ve not ridden a bike since your childhood, perhaps the nearest 7-11 or fast food joint is good practice before a bike commute.</p><p>I suspect you&apos;ve found this post because you want to know <strong>how to make informed decisions about your ride, your route, and your rationality (or lack thereof)</strong>. Maybe your parents are telling you it&apos;s unsafe. Maybe your partner is telling you you&apos;ll be catcalled (I&apos;ve heard my share of &quot;good mornings&quot;). Maybe you&apos;ll decide that wearing casual or office clothes while riding will remain a European or Japanese phenomenon. Maybe all you need to tip the scales in favor of a bike ride is a shower in your workplace or a slower pace.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.sarasantillan.com/content/images/2022/03/amsterdam-g2020f23a1_1920.jpg" class="kg-image" alt="Bike commuting in Manila for regular folk" loading="lazy" width="1920" height="1280" srcset="https://blog.sarasantillan.com/content/images/size/w600/2022/03/amsterdam-g2020f23a1_1920.jpg 600w, https://blog.sarasantillan.com/content/images/size/w1000/2022/03/amsterdam-g2020f23a1_1920.jpg 1000w, https://blog.sarasantillan.com/content/images/size/w1600/2022/03/amsterdam-g2020f23a1_1920.jpg 1600w, https://blog.sarasantillan.com/content/images/2022/03/amsterdam-g2020f23a1_1920.jpg 1920w" sizes="(min-width: 720px) 720px"><figcaption>I&apos;d ride slow too if I could hang my leather bag off my handlebars. Photo from pixabay.</figcaption></figure><p>I&apos;ve divided this piece into three other posts, each one going over the three major factors: route, rider, and ride. The biggest deciding factor for new cyclists, in my opinion, is the route, which is why it goes first. An unsafe route will be unforgiving towards our very human errors. <strong>All riders must have some space to grow their instincts, and the route determines the odds of your growth.</strong></p><p>For quick skimming, each succeeding post will provide a section summarizing the factors (a TLDR box) to consider when riding, buying a bike, and making a route.</p><p>This series continues in the following posts:</p><ul><li><strong><a href="https://blog.sarasantillan.com/finding-a-route-to-the-grocery-and-work/">The traveling <s>saleman&apos;s</s> rider&apos;s problem</a></strong> &#x2014; Informed route-making and route-taking decisions</li><li><strong>A rational rider in an irrational environment</strong> &#x2014; make safer decisions as a rider</li><li><strong>Buying a (folding) ride</strong> &#x2014; make informed first-time bike buying decisions; the case for folding bikes for small living spaces<br></li></ul>]]></content:encoded></item></channel></rss>