<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" media="screen" href="https://brainbaking.com/pretty-feed-v3.xsl" ?>
<rss version='2.0' xmlns:content='http://purl.org/rss/1.0/modules/content/' xmlns:atom='http://www.w3.org/2005/Atom' xmlns:dc='http://purl.org/dc/elements/1.1/'>
  <channel>
    <title>Brain Baking</title>
    <link>https://brainbaking.com/</link>
    <description>Freshly Baked Thoughts by Wouter Groeneveld</description>
    <copyright>© 2024 Wouter Groeneveld (CC BY 4.0)</copyright>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <managingEditor>hifromrss@brainbaking.com (Wouter Groeneveld)</managingEditor>
    <lastBuildDate>Tue, 20 Feb 2024 20:11:00 +0100</lastBuildDate>
    <atom:link href="https://brainbaking.com/index.xml" rel="self" type="application/rss+xml" />
    <image>
      <url>https://brainbaking.com/img/bblogo.png</url>
      <title>Brain Baking</title>
      <link>https://brainbaking.com/</link>
      <width>72</width>
      <height>72</height>
      <description>Freshly Baked Thoughts by Wouter Groeneveld</description>
    </image>    
    
    
    <item>
      <title>Two Interesting Use Cases For LLMs</title>
      <link>https://brainbaking.com/post/2024/02/two-interesting-use-cases-for-llms/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Tue, 20 Feb 2024 20:11:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2024/02/two-interesting-use-cases-for-llms/</guid>
      
        
          <category domain="https://brainbaking.com/tags/AI">AI</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>I&rsquo;ve openly proclaimed my dislike for current trends in AI and Large Language Models (LLMs) before: it&rsquo;s being misused to <a href="https://brainbaking.com/post/2023/04/is-your-website-training-ai/">genereate crap to put on the internet</a> and the availability of hallucinated crap <a href="https://brainbaking.com/post/2023/10/chatgpt-is-worse-for-students-than-stack-overflow/">makes students&rsquo; learning painfully worse</a>. So I&rsquo;ve been wondering: can these ChatGPT-like systems be put to any <em>real</em> use? I think the answer is <em>yes</em>: here are two possibly interesting use cases.</p>
<h2 id="case-1-personal-knowledge-management">Case 1: Personal Knowledge Management</h2>
<p>I have <a href="https://brainbaking.com/post/2023/03/creating-journals-that-last/">sixteen analog notebooks</a> digitized in an Obsidian vault of which each linked note file has been painfully tagged by hand to quickly find related information, as OCR software still isn&rsquo;t capable of decrypting my arcane scribbles. Heavy linking and creating ideas at the intersection of those links in true Zettelkasten style aside, wouldn&rsquo;t it be awesome if I could locally spin up a LLM system that ingests my whole knowledge base, significantly easing (1) my ability to find my own notes and (2) querying that database in a natural way?</p>
<p>Are you thinking what I&rsquo;m thinking, Tony Stark?</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2024/02/two-interesting-use-cases-for-llms/../jarvis.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2024/02/two-interesting-use-cases-for-llms/../jarvis.jpg" loading="lazy" data-pagefind-index-attrs="title">
	</a>
	
</figure>
</p>
<blockquote>
<p>Jarvis, which blog post ideas in the past month aren&rsquo;t written yet? Jarvis, what goes in my secret gingerbread spice mix again? Jarvis, what were my thoughts on project x again?</p>
</blockquote>
<p>Wouldn&rsquo;t that be great? Things I most often look for in my Obsidian vault are:</p>
<ul>
<li>Recipes: exact spice mixture percentages, comparisons of waffle recipes, etc;</li>
<li>TODOs and blog post idea templates;</li>
<li>Specific information on technologies I&rsquo;ve once used but forgotten;</li>
<li>Photos by tag;</li>
<li>Contact information of people that I haven&rsquo;t stored in CardDAV yet;</li>
<li>Summaries and mind maps of e.g. books or papers.</li>
</ul>
<p>Looking for these things sometimes takes too much time because of my poor tagging skills, and it&rsquo;s become increasingly hard to excessively link notes because of the ever increasing amount of notes. On top of that, I sometimes can&rsquo;t read my own notes (bad scans, bad handwriting, too little context that I forgot, &hellip;). LLMs could potentially solve all these issues.</p>
<p>Of course the biggest concern here is <strong>privacy</strong>. I have zero interest in feeding my private notes to an existing system maintained by Silicon Valley tech boys, meaning I&rsquo;d want to run and train it locally. I don&rsquo;t want to make the required free time available to experiment with this as I know it&rsquo;ll take a lot of fiddling and the bottleneck still is the analog to digital conversion as textual input still is minimal (no OCR and limited tags). And no, I won&rsquo;t switch to digital note-taking.</p>
<p>I guess the Private Jarvis dream will stay a dream for now.</p>
<h2 id="case-2-philosophical-research">Case 2: Philosophical research</h2>
<p>I&rsquo;m interested in philosophy, but it&rsquo;s a challenge to find what I&rsquo;m looking for in ancient works. An example: I want to know what certain philosophers&rsquo; stances are on laziness, nostalgia, whatever. I have Montaigne&rsquo;s <em>Essais</em> on my shelf but the index doesn&rsquo;t provide an answer right away. A digital version enables <code>CMD+F</code>-ing to quickly find stuff but that still isn&rsquo;t very productive. So I thought: what if we could ask these questions through LLMs or a specialized model that is exclusively fed philosophical works? Won&rsquo;t that make it easier for me to find e.g. what Schopenhauer thinks of leisure time? Internet search engines do a poor job answering these questions nowadays.</p>
<p>I took <a href="https://anonchatgpt.com/">https://anonchatgpt.com/</a> and <a href="https://www.bing.com/chat">https://www.bing.com/chat</a> to the test. Input:</p>
<blockquote>
<p>What does Schopenhauer think about poker playing?</p>
</blockquote>
<p>Output, CoPilot:</p>
<blockquote>
<p>Arthur Schopenhauer, the German philosopher, had some rather scathing views on card-playing, including poker. In his work “The Wisdom of Life and Other Essays,” he expressed the following opinion: “Hence, in all countries the chief occupation of society is card-playing, and it is the gauge of its value, and an outward sign that it is bankrupt in thought. Because people have no thoughts to deal in, they deal cards, and try and win one another’s moneyIdiots!”</p>
</blockquote>
<p>Output, ChatGPT:</p>
<blockquote>
<p>Schopenhauer believed that poker, like all forms of gambling, is a futile and reckless pursuit driven by the desire for quick and easy wealth. He saw it as a manifestation of the human tendency to seek pleasure and avoid pain without regard for the consequences. Schopenhauer would likely view poker playing as a form of escapism and distraction from the harsh realities of life, ultimately leading to disappointment and suffering.</p>
</blockquote>
<p>At least CoPilot adds references (GoodReads &amp; Wikipedia). Both forget to add that Schopenhauer himself was a big poker player, earning a good buck with the game he thought was for empty-headed losers. Or did he? When I ask CoPilot this, the AI denies it, but other AIs confirm it. As I have yet to work my way through all of his works, I don&rsquo;t really know which LLM engine is hallucinating and which one is telling the truth.</p>
<p>I&rsquo;ve been discussing the possibilities of using LLMs to engage in a philosophical conversation with <a href="https://elusivewordsmith.com/">Gibru</a> who&rsquo;s more at home when it comes to new (self-hosted) LLM tools, and while he thinks it can be a good way to bootstrap your philosophical thinking mode, he also warned me about the hallucination effects.</p>
<p>That means my use case also falls through: I wanted to use LLMs to quickly <em>find facts</em>, not have a discussion&mdash;although that might also be interesting just to get the ball rolling. Since I don&rsquo;t know the facts yet, I have to believe every answer the system provides. Additionally, only when I run these locally, I can train them with the original sources, not with second-hand Wikipedia-style &ldquo;sources&rdquo;.</p>
<hr>
<p>What would Epicurus think of the Nintendo Switch if he would be alive today?</p>
<blockquote>
<p>The immersive gaming experience, captivating worlds, and engaging gameplay could align with Epicurus’s emphasis on seeking pleasurable experiences.</p>
</blockquote>
<p>Yeah right. That sounds like yet another misinterpretation of Epicurus&rsquo; principles of ataraxia. I guess the two interesting use cases will stay just that: interesting philosophical thinking exercises.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 20 February 2024.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Two%20Interesting%20Use%20Cases%20For%20LLMs">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>25% Creating, 75% Hustling</title>
      <link>https://brainbaking.com/post/2024/02/25percent-creating-75percent-hustling/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Sat, 17 Feb 2024 19:35:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2024/02/25percent-creating-75percent-hustling/</guid>
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>In retrospect of several creative endeavors, on average, I feel like I spend 25% of my time creating, and 75% hustling. I don&rsquo;t think that&rsquo;s a healthy balance at all: it should be 60%+ creating and 40% or less hustling. Yet in this world where uninterrupted yelling is the norm to get your stuff to sell, it seems that I have little choice.</p>
<p>This ad campaign driven approach to do business has been bothering me for quite some time. I want to <em>create</em>, not to keep on poking people to take a look at my creations. I want to <em>create</em>, not to publish campaigns periodically and overflow other people&rsquo;s feeds while sending money to Meta. I want to <em>create</em>, not worry about the black hole the creation will end up in if I don&rsquo;t do enough of the hustling.</p>
<p>The first draft of my book <a href="https://brainbaking.com/works/the-creative-programmer">The Creative Programmer</a> took roughly three months to write. Before that, most of the thinking and idea-connecting work was already done. Then it took another good year to re-write it into an acceptable publishable form with the help of editors. For <em>The Creative Programmer</em>, I explicitly opted to work together with the publisher Manning because I had the illusion that the 75% hustling work would be handled by them. After all, I am indirectly paying them to do so as my royalty rates are, compared to indie publishing, laughably low.</p>
<p>I was wrong. Besides initial social media and standard website campaigns, I was expected to do the hustling myself. I was encouraged to attend conferences and submit talk proposals, but neither the ticket nor the accommodation costs would be reimbursed. Considering that on average I make <code>€2.5</code> per book sale, I would need every single person in two rooms of 200 people to buy a copy in order to break even.</p>
<p>I put in more hustling work. I did interviews, participated in podcasts, posted on forums, wrote technical articles directly or indirectly promoting the book on tech news sites, and gave talks (locally!). None of that really bore any fruit. Since the early access release, My Q3 2023 report tells me that we shifted 2.056 units in total. That&rsquo;s a low number for such a technology-agnostic book&mdash;in fact, I&rsquo;m starting to doubt I&rsquo;ll ever see another penny besides the initial advance.</p>
<p>Don&rsquo;t get me wrong: I absolutely do not care about the money: I wrote it in 2022 as part of my paid PhD job. What does bother me though is despite the 75% hustling, efforts put in so far are generally wasted. And I hate hustling. This makes me think next time I just should care even less and definitely self-publish: if it&rsquo;s out there, it&rsquo;s out there, and if someone happens to find it, great, but if not, also great, at least then I can fully focus on the creation part and completely trash the dreaded hustling part.</p>
<p>That&rsquo;s fine by me since my income doesn&rsquo;t depend on those royalties, but what if they do? Then you&rsquo;ll probably need to crank up that hustling percentage or at least learn how to play that game more efficiently&mdash;and learn to live with it instead of gradually resenting it.</p>
<p>The problem isn&rsquo;t limited to my pathetic authorship attempt. A few years ago, my wife tried to make it as an independent jeweler, which here in Belgium is an incredibly crowded market dominated by cheap e-stores that maximize profit by importing junk from China combined with hiring entire remote Indian teams to do their dirty ad work for them. Needless to say, it is simply impossible to compete with them. Of course, hand-crafted silver jewelry at premium prices aren&rsquo;t the same as cheap knock-off necklaces, but it&rsquo;s easy to be intimidated by all the social media business screaming, even by other local jewelers that seem to want to play that game very eagerly. Two years later, she gave up in frustration.</p>
<p>In a local television show called <a href="https://www.vrt.be/vrtmax/a-z/andermans-zaken/">Andermans Zaken</a>, a well-known business expert interviews and helps all kinds of entrepreneurs who are facing an urgent problem: high expenses, little to no revenue. The number one solution, time and time again, is to launch an online ad campaign. At that point in the show, as I shake my head in disbelief, I zap to another channel.</p>
<p>I understand the basics of how economics work under the greedy watch of capitalism, but that doesn&rsquo;t mean that I have to agree with its principles&mdash;especially when it comes to my urge to exert my <em>Homo Faber</em>.</p>
<p>I think I&rsquo;m done shouting at the void. Perhaps I should instead let go of <a href="https://brainbaking.com/post/2023/11/on-writing-for-yourself-in-public/">my urge to publish</a>, (un)consciously somehow still expecting people to care.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 17 February 2024.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: 25%25%20Creating%2c%2075%25%20Hustling">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Pimp Your Board Games</title>
      <link>https://brainbaking.com/post/2024/02/pimp-your-boardgame/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Fri, 09 Feb 2024 09:00:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2024/02/pimp-your-boardgame/</guid>
      
        
          <category domain="https://brainbaking.com/tags/boardgames">boardgames</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Board gaming is such a lovely hobby to keep your mind and your company on edge. No bright blue screen or need for electricity only adds to that experience. But board games also allow you to give in to that creative urge: instead of playing with the flimsy cardboard components, why don&rsquo;t you craft your own? <em>Pimp Your Board Games!</em></p>
<p>It makes little sense to give any random board game that occupies a spot in your shelf the personal uplifting treatment&mdash;no, they have to be the most enjoyable ones, the most <em>component-y</em> ones, the ones where the publisher decided to just chuck in a ton of plastic bags and let the players fumble about every time they want to set up the game, the ones where despite all these irritating absences of quality or traces of inlays, you still want to get out and play. For these board games, I always have something special planned: the Brain Baking FIMO-n-Inlay treatment™©!</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2024/02/pimp-your-boardgame/../austriahotel.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2024/02/pimp-your-boardgame/../austriahotel.jpg" loading="lazy" title="Grand Austria Hotel&#39;s dull food cubes are replaced by tiny modeled versions of coffee cups, wine glasses, slices of cake and strudel." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>Grand Austria Hotel&#39;s dull food cubes are replaced by tiny modeled versions of coffee cups, wine glasses, slices of cake and strudel.</figcaption>
	
</figure>
</p>
<p>Consider <a href="https://boardgamegeek.com/boardgame/182874/grand-austria-hotel">Grand Austria Hotel</a>, one of my recent favorites that has you serving hotel guests that, when satisfied in your restaurant, will occupy a room, ultimately resulting in points and prestige. In the game, four types of food can be served: two beverages (wine and coffee) and two types of dessert (strudel and cake). To indicate your waiters have brought Mr. Oundo from the above screenshot his coffee, you normally place a boring black wooden cube on the guest card, leaving only a strudel icon open on the top left card before you can usher him to move on to the suite.</p>
<p>That&rsquo;s not what happens when we play <em>Grand Austria Hotel</em>. Instead, I amused myself on a rainy Sunday with modelling tiny cups of coffee (including a tiny bit of the liquid) out of FIMO clay. The result is a ten times as charming game that I now love even more. I&rsquo;m not interested in higher Kickstarter tier pledges that come with so-called &ldquo;high-quality components&rdquo;. I&rsquo;d rather craft my own! And if you&rsquo;re not feeling inspired, that&rsquo;s okay, that&rsquo;s what Board Game Geek is for.</p>
<p>The problem then becomes: how do to store all these baked pieces of clay inside the board game box? That&rsquo;s where a custom inlay comes in play (ha!), such as the following one I made for <em>Grand Austria Hotel</em>:</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2024/02/pimp-your-boardgame/../austriahotel-box.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2024/02/pimp-your-boardgame/../austriahotel-box.jpg" loading="lazy" title="Our Ragdoll cat inspecting the Grand Austria Hotel box-in-a-box with eight separate compartments." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>Our Ragdoll cat inspecting the Grand Austria Hotel box-in-a-box with eight separate compartments.</figcaption>
	
</figure>
</p>
<p>As soon as you fulfill a hotel guest&rsquo;s needs, and you have a room available in the matching color, you can turn over the room tile to indicate that suite is occupied. These tiles come in three colors, and splitting them up in our inlay system drastically decreases the game setup and play fiddle time. For us, decreasing game setup time has the additional benefit of increasing the chances of getting the game out of the shelves.</p>
<p>Granted, my feeble attempt at gluing together a few pieces of flimsy cardboard are not as sturdy or as beautiful as for instance a custom laser-cut wooden inlay that some Etsy shops sell. But it&rsquo;s hand-made, <em>Brain Baked</em>, and does what it has to do: keep pieces separated, reduce setup, and keep everything in the box.</p>
<p>For some games, the dimensions of the box-in-a-box matters. For instance, below is a photo of my <em>Le Havre</em> inlays: a square <code>C</code>-shaped one on the left, and an <code>L</code>-one on the right. These perfectly cover the supply sections of the three main boards where you are supposed to simply dump a bunch of fish/wood/iron/&hellip; tiles on. Vanilla <em>Le Havre</em> games are a mess if you were to do that. Now, we just place the three main boards on the table, put the two inlays on top, and bam: supply setup done. It doesn&rsquo;t take more than a bit of glue and a few sheets of cheap cardboard, preferably from something you threw away.</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2024/02/pimp-your-boardgame/../lehavre.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2024/02/pimp-your-boardgame/../lehavre.jpg" loading="lazy" title="The Dutch Le Havre board with two custom supply boxes made of cardboard waste, holding all supply tokens that provision the ships." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>The Dutch Le Havre board with two custom supply boxes made of cardboard waste, holding all supply tokens that provision the ships.</figcaption>
	
</figure>
</p>
<p>Our first pimped board game was Uwe Rosenberg&rsquo;s Agricola from 2007&mdash;a game about farming that also comes with hundreds of boring wooden slices and cardboard tokens representing sheep, pigs, clay, carrots, wheat, and farmers alike. The &ldquo;meeples&rdquo; (wooden figurines) of the revised edition do resemble cattle well enough, but our version that added about <code>2 kg</code> of FIMO clay weight to the box is simply a joy to play.</p>
<p>Don&rsquo;t preheat your oven above the recommended settings as explained in the instructions of the modeling clay, though. When we baked our very first batch of our very first pimping project using my mother-in-laws oven, many of the tiny sculptures almost melted instead of hardened. It turned out that that oven was <em>very</em> unpredictable when it comes to sudden shots of heat! The result is a slightly crispy edge with components that are crooked:</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2024/02/pimp-your-boardgame/../agricola.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2024/02/pimp-your-boardgame/../agricola.jpg" loading="lazy" title="The happy Agricola life, with in the background a few bent bunches of overcooked wheat, withering on the field..." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>The happy Agricola life, with in the background a few bent bunches of overcooked wheat, withering on the field...</figcaption>
	
</figure>
</p>
<p>Oh well. Everyone who played Agricola at our house still is enamored by the components, even though we sometimes have to friendly direct players to the burned reed supply that look just like the ones representing wood.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 9 February 2024.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Pimp%20Your%20Board%20Games">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>The 7 Dimensions of Highly Creative Programmers on Tech Lead Journal</title>
      <link>https://brainbaking.com/post/2024/02/the-seven-dimensions-of-highly-creative-programmers/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Tue, 06 Feb 2024 16:00:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2024/02/the-seven-dimensions-of-highly-creative-programmers/</guid>
      
        
          <category domain="https://brainbaking.com/tags/creativity">creativity</category>
        
          <category domain="https://brainbaking.com/tags/book">book</category>
        
          <category domain="https://brainbaking.com/tags/podcasts">podcasts</category>
        
          <category domain="https://brainbaking.com/tags/interview">interview</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>A few months ago, I was interviewed by Henry Suryawirawan of the Tech Lead Journal podcast about my book <a href="https://brainbaking.com/works/the-creative-programmer">The Creative Programmer</a>. <a href="https://techleadjournal.dev/episodes/161/">The episode, #161</a>, was published yesterday, so be sure to give it a listen! Here&rsquo;s how Henry summarized our hour-long conversation:</p>
<blockquote>
<p>Wouter Groeneveld is a software engineer, computer science education researcher, and the author of “The Creative Programmer”. In this episode, Wouter dives deep into what makes good engineers truly exceptional: creativity! Wouter describes his definition of creativity and shares the 7 key dimensions of a creative programmer&mdash;from technical mastery to embracing constraints and being curious. Listen to the episode to take your coding to the next level and unleash your inner creativity as a software engineer!</p>
</blockquote>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2024/02/the-seven-dimensions-of-highly-creative-programmers/../techleadjournal.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2024/02/the-seven-dimensions-of-highly-creative-programmers/../techleadjournal.jpg" loading="lazy" title="Tech Lead Journal #161" data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>Tech Lead Journal #161</figcaption>
	
</figure>
</p>
<p>Listen to the episode using your favorite Podcast app by subscribing to <em>Tech Lead Journal</em>, or online via <a href="https://techleadjournal.dev/episodes/161/">https://techleadjournal.dev/episodes/161/</a>. A summary and even a full transcript is available in the link. Thanks Henry for the thought-provoking conversation!</p>
<p>I have another interview with the SE-Radio podcast coming up soon so look forward to that as well. Hopefully it&rsquo;ll spark a few creative thoughts&mdash;and improve my terrible English accent. Be sure to drop your feedback in my inbox. I&rsquo;m looking forward to answering questions and discussing creative problem solving with you!</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 6 February 2024.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: The%207%20Dimensions%20of%20Highly%20Creative%20Programmers%20on%20Tech%20Lead%20Journal">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Favorites of January 2024</title>
      <link>https://brainbaking.com/post/2024/02/january-2024/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Sat, 03 Feb 2024 08:45:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2024/02/january-2024/</guid>
      
        
          <category domain="https://brainbaking.com/tags/metapost">metapost</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>The first month of the new year came and went, and with it, surprise flurries of snow, episodes of frozen slippery fun, and sudden peaks in temperature once more confusing our shrubberies that are budding way to soon. It was my last month at the university (see <a href="https://brainbaking.com/post/2024/01/why-i-am-leaving-academia-for-now/">why I am leaving academia</a>), which felt especially bittersweet considering the fluency of publishing and the engagement of my students lately. I am excited and scared at the same time at what February will bring for me, and hope the new beginning will go at least somewhat smoothly. I&rsquo;m sure you&rsquo;ll read about it here in a couple of months.</p>
<p>Previous month: <a href="https://brainbaking.com/post/2024/01/december-2023">December 2023</a>.</p>
<h2 id="books-ive-read">Books I&rsquo;ve read</h2>
<p>Besides the continuation of the <em>Mallorea</em> series by <a href="https://www.eddingschronicles.com/index.html">David Eddings</a>, nothing much. I did pick up and finish <em>4000 Weeks</em> by Oliver Burkeman, and although it served as a great reminder that life is short, the book contains nothing new. Burkeman stands on the shoulders of philosophical giants, of course, and I ultimately felt it&rsquo;s perhaps better to study those giants instead. I took notes nonetheless.</p>
<h2 id="games-ive-played">Games I&rsquo;ve played</h2>
<p>I finished <a href="https://jefklakscodex.com/games/switch/mario-plus-rabbids-kingdom-battle/">Mario + Rabbids: Kingdom Battle</a> in the beginning of January. Keen to move to a more mature strategy RPG, I moved on to <em>Triangle Strategy</em>, of which the story is about to wrap up. I don&rsquo;t like it. I wish I did: it looks like the <em>Final Fantasy Tactics</em> sequel we never got. The extremely heavy emphasis on story (and cut-scene after cut-scene) combined with a false sense of choice and limited possibilities to power-level and break stats left me wishing I played <em>Disgaea</em> instead.</p>
<p>For 2024, I will try to keep track of my board game stats once again, as I have the feeling too little games actually make it to the table, but I can&rsquo;t back it with data. The added benefit of logging plays means I (sub)consciously try to sneak in more plays. In January, we finally played <em>Watergate</em> a couple of times&mdash;so far, the strategy is paying off. I&rsquo;m not sure yet whether or not to also start reviewing board games on the Codex. We&rsquo;ll see.</p>
<h2 id="selected-blog-posts">Selected (blog) posts</h2>
<ul>
<li>Yacht Club Games <a href="https://www.yachtclubgames.com/blog/sales-breakdown-a-couple-pocket-months-later">broke down their sales</a> a couple of months after <em>Shovel Knight: Pocket Dungeon</em> was released, revealing an interesting decline after the initial peak, that mirrors my feelings about the game.</li>
<li>I really enjoyed this <a href="https://www.goodolddays.net/game/id%2C1475/Leisure-Suit-Larry-III-Passionate-Patti-in-Pursuit-of-the-Pulsating-Pectorals.html">very long Leisure Suit Larry III review</a> on The Good Old Days, written as a conversation between the editors.</li>
<li>Blake Patterson lamented <a href="https://bytecellar.com/2023/12/23/the-era-of-american-computer-magazines-has-drawn-to-a-close/">the end of the computer magazine era</a>. Luckily he did manage to fill his <em>Byte Cellar</em> shelves to the brim over the years.</li>
<li>Ruben Schade tells us to <a href="https://rubenerd.com/avoid-using-pie-charts/">stop using pie charts</a> and provides an obvious example to clarify the most important reason: deceiving people with data visualizations.</li>
<li>Baldur Bjarnason <a href="https://www.baldurbjarnason.com/2024/out-of-the-software-crisis-two-year-review/">reflects on two years of work</a> after his <em>Out of the Software Crisis</em> independent book release.</li>
<li>Henrique Dias shows <a href="https://hacdias.com/2024/01/13/making-a-digital-shoebox/">how to create a digital shoebox</a>&mdash;what a neat idea!</li>
<li>Glenn Ramsey proves at Kiwi PyCon 2022 that <a href="https://www.youtube.com/watch?v=lazZwTmAEHs">plain text accounting can be fun</a> (YouTube video)</li>
<li>Brit Butler shares his <a href="https://blog.kingcons.io/posts/Favorite-Albums-of-2023.html">favorite albums of 2023</a>. I bought <em>In These Times</em> from <em>Makaya McCraven</em> thanks to this list!</li>
<li>ProPublica knows like no other how to combine superb visualizations with gripping stories. Here&rsquo;s <a href="https://projects.propublica.org/graphics/nyc-garbage">one night on a garbage truck in NYC</a>.</li>
<li>Joan Westenberg suggests a few radical changes that might help us <a href="https://joanwestenberg.com/blog/how-to-quit-capitalism">quit capitalism</a>. There&rsquo;s still a very long way to go. Yesterday I came across Kohei Saito&rsquo;s degrowth book containing similar insights, and added it to the wish list.</li>
<li>Heather Buchel outlines why in 2023 <a href="https://heather-buchel.com/blog/2023/10/why-your-web-design-sucks/">your webdesign (still) sucks</a>. An interesting front-end dev vs. web designer debate I came across <a href="https://bradfrost.com/blog/link/its-2023-here-is-why-your-web-design-sucks/">via Brad Frost</a>.</li>
<li>According to Brian Bankler, <a href="https://taogaming.wordpress.com/2024/01/20/boardgame-geek-is-becoming-unusable/">Board Game Geek Is Becoming Unstable</a>&mdash;or even unsuitable as a place to discuss board games.</li>
<li><a href="https://kwon.nyc/notes/which-self-is-this/">People are complex and are allowed to have multiple selves</a>, says Rachel Kwon.</li>
</ul>
<h2 id="other-random-links">Other random links</h2>
<ul>
<li>There&rsquo;s Yet Another Editor in town called <a href="https://nova.app/">Nova</a> and I have yet to decide whether or not it could replace Sublime.</li>
<li>My wife tipped me <a href="http://www.geekychef.com/">http://www.geekychef.com/</a>. In case you want to do something with those <em>Tears of the Kingdom</em> recipes!</li>
<li>How about a couple of <a href="https://www.resetera.com/threads/do-you-have-any-videogame-art-on-your-walls.800907/">Mega Man HAMA magnets</a> to brighten up your office wall?</li>
<li>In case you want to create a top nine board game list, use <a href="https://www.pubmeeple.com/rankings">https://www.pubmeeple.com/rankings</a></li>
<li>For people in Belgium and The Netherlands looking for an aggregate site comparing the best board game prices: <a href="https://bordspelprijzen.nl/">https://bordspelprijzen.nl/</a></li>
<li>Aleksandr Savenkov created a cool table with The Dice Tower&rsquo;s <a href="https://asavenkov.com/peoples-choice/">People&rsquo;s Choice Top Board Games of All Time</a>, from 2011 up to 2024. It should be a bit more stable than Board Game Geek&rsquo;s <em>Hotness</em> list. I need to buy <em>Ark Nova</em>.</li>
<li>Did you know there was a <a href="https://store.steampowered.com/app/1351080/Pharaoh_A_New_Era/">Pharaoh Remaster</a> released last year? I didn&rsquo;t, and it looks as compelling as ever!</li>
<li>While fiddling with Obsidian, I found a few interesting was to add metadata without using frontmatter: <a href="https://blacksmithgu.github.io/obsidian-dataview/annotation/add-metadata/#implicit-fields">implicit fields</a>&mdash;like so: <code>key:: blah</code>. Combined with:</li>
</ul>
<pre tabindex="0"><code>```dataview
LIST key
WHERE key
</code></pre><p>Allows you to quickly list notes <em>and</em> the value (<code>blah</code>) as an enumeration. The idea was to piggyback on another idea, <a href="https://forum.obsidian.md/t/ad-hoc-tracking-in-dataview-of-games-won/61185">listing games won in Obsidian</a>.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 3 February 2024.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Favorites%20of%20January%202024">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Publish Your Work</title>
      <link>https://brainbaking.com/post/2024/01/publish-your-work/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Wed, 31 Jan 2024 10:22:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2024/01/publish-your-work/</guid>
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>As an electrical and mechanical engineer, my late father-in-law was an expert in crafting home-grown black boxes that meticulously&mdash;and sometimes also miraculously&mdash;executed certain tasks in and around the house, such as automatically opening and closing the curtains based on the position of the sun (that included LEGO Technic radar work), routing audio and video from the doorbell to the TV or smartphone when someone pressed the button, or mediating the central heating based on too many factors. He also loved building things that weren&rsquo;t really needed, just for fun: how about a full-size sixties jukebox emulated with a couple of Arduino boards, where each mechanical piece was hand-cut?</p>
<p>When I asked him why he doesn&rsquo;t take pictures of each project to document and publish them online, to inspire others, he was never interested. Most of these projects aren&rsquo;t well-documented privately either, leaving us now with unsolvable puzzles when things break. But his ideas, as with all ideas, were gradually formed by studying ideas and projects of others, so why not come full circle to again share what you&rsquo;ve made? I never really got an answer as to why not.</p>
<p>When I talk to friends about blogging, or more generally &ldquo;putting stuff out there&rdquo;, the vast majority of them don&rsquo;t care, and that comes across as very strange to me, since I do. Not everyone has the urge <a href="https://brainbaking.com/post/2023/11/on-writing-for-yourself-in-public/">to write in public</a>. Yet publishing your work comes with so many advantages that I don&rsquo;t even know where to begin to list them. I think many people underestimate the value of sharing what you&rsquo;ve made.</p>
<p>Austin Kleon wrote a whole book about this <a href="https://austinkleon.com/show-your-work/">called Show Your Work!</a>, which, as Austin puts it, <em>is a good starting point for people who hate the very idea of self-promotion</em>. Perhaps I should have given a copy to my father-in-law, although I doubt that would have changed anything. He was content tinkering in his cellar without letting the world know what he made. Yet if he did, more people would have made something based on his work. And that feeling of contributing is amazing.</p>
<p>It doesn&rsquo;t take a genius or a huge project to make a bit of an impact. Just influencing your own &ldquo;tribe&rdquo;, as Seth Godin likes to call it, is more than enough to get a positive feedback loop going. As a silly example, I fooled around with hacking a <a href="https://brainbaking.com/post/2023/02/phomemo-thermal-printing-on-macos/">Phomemo M02 thermal printer</a> a year ago, and I just found out that there&rsquo;s a Node CLI module on GitHub that thanks my article for pointing them in the right direction. Conventional contributions to existing open-source projects is of course the obvious other example, but it&rsquo;s not even needed to go that far. I sometimes just write about things I tried&mdash;and often failed&mdash;to do, and it always puts a smile on my face when I notice someone picked that up.</p>
<p>I don&rsquo;t create or publish in the hopes of influencing others. I create things because I have an urge to create. But it sure is great to help others along the way, however small my contribution might be. I don&rsquo;t care about being found online and I am certainly not actively pushing my stuff down others&rsquo; throats (Kleon&rsquo;s rule #7: <em>Don&rsquo;t turn into human spam</em>). I love reading about the creation process of others. I love sharing my creation process. It&rsquo;s almost second nature: it feels like a wasted opportunity to do something good in this world if I didn&rsquo;t.</p>
<p>If you made something, great! Why don&rsquo;t you tell us about it? It&rsquo;s simple, you just need to hire a VPS, configure <code>iptables</code>, download and customize a Hugo theme, write front matter and markdown, have a CI pipeline setup, and install Nginx. Ah, dang it!</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 31 January 2024.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Publish%20Your%20Work">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>How To Search The Internet</title>
      <link>https://brainbaking.com/post/2024/01/how-to-search-the-internet/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Fri, 26 Jan 2024 13:00:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2024/01/how-to-search-the-internet/</guid>
      
        
          <category domain="https://brainbaking.com/tags/indieweb">indieweb</category>
        
          <category domain="https://brainbaking.com/tags/search engines">search engines</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Thanks to the multi billion dollar <a href="https://brainbaking.com/post/2023/02/aggressiveness-of-modern-web-advertising/">advertisement industry</a>, searching for something on the internet has devolved from a joyous Altavista guess-the-keywords activity to a tiring chore where one has to wade through endless pools of generated <a href="https://rubenerd.com/my-line-about-seo-being-a-red-herring/">SEO-optimized crap</a>, hollow company blogs with more social media link embeds than actual content, and Reddit flame wars than ever before. In short: great stuff.</p>
<p>Suppose you&rsquo;re looking for a review of a video game. The first 100 hits will return the expected results: articles from huge journalism companies with a big enough budget to bribe any search engine to stay on top. And while these IGN et al. reviews <em>are</em> interesting to a certain degree, I want to read about the honest opinion of another <em>person</em>, another human being&mdash;whether or not journalists are human beings is still up for debate.</p>
<p>I&rsquo;m sure you know what I mean: I&rsquo;m looking for small, independent websites carefully curated by people who care. I want to discover personal blogs, not professional cookie-laden ad-riddled heavyweight junk that has my router choke on <code>50 MB</code> of cruft instead of just loading one document and a few pieces of metadata. I do not want to click like and subscribe. I am not interested in Facebook embeds. I am not willing to consume words that have nothing to say besides <em>click here</em>. I am not bait.</p>
<p>How should you search the internet, while avoiding that cruft? I think by now it&rsquo;s clear that a simple Google search isn&rsquo;t the answer, and neither is migrating to a privacy-friendly DuckDuckGo search engine that fetches results from Bing: same shit different engine (and progressively worse results, I might add).</p>
<p>Instead, I have been relying on <a href="https://searchmysite.net">Search My Site</a>: an open source search engine specifically geared towards personal and independent websites (like this one). Unfortunately, but perhaps not unexpectedly so, Search My Site is not very good at finding things: if your website happens to be in their index, you&rsquo;re good, but if not&hellip; Is that different compared to the big ones? Not really. What do you do when you can&rsquo;t find something in one search engine? You revert to another strategy. <a href="https://search.marginalia.nu/">Marginalia Search</a> is another great little gem. It clearly states its purpose:</p>
<blockquote>
<p>This search engine isn&rsquo;t particularly well equipped to answering queries posed like questions, instead try to imagine some text that might appear in the website you are looking for, and search for that. <br/>Where this search engine really shines is finding small, old and obscure websites about some given topic, perhaps old video games, a mystery, theology, the occult, knitting, computer science, or art.</p>
</blockquote>
<p>My experiments recently made me switch from SearchMySite to Marginalia as my go-to small engine.</p>
<p>Both <a href="https://seirdy.one/posts/2021/03/10/search-engines-with-own-indexes/">seirdy.one</a> and <a href="https://danluu.com/seo-spam/">Dan Luu</a> provided outstanding overviews on alternative search engines optimized for the small and independent web, where Search My Site and Marginalia.nu happen to be just two of the many ways to tap into personal websites and blogs. Not every engine has their own index database, but those that do can curate entries more rigorously. It&rsquo;s now easier than ever to trust and rely on smaller engines, says Dan:</p>
<blockquote>
<p>If you want to make a useful search engine for a small number of users, that seems easier than ever because Google returns worse results than it used to for many queries. In our test queries, we saw a number of queries where many or most top results were filled with SEO garbage, a problem that was significantly worse than it was a decade ago, even before the rise of LLMs and that continues to get worse.</p>
</blockquote>
<p>Another strategy is to try and skip the first thousand results of conventional search engines and focus on what lies below and forgotten: that&rsquo;s exactly what <a href="https://millionshort.com/">Million Short</a> set out to do (based on the Bing index). As stated on their site, Million Short &ldquo;Remove over SEO’d sites that show up over and over again with ease.&rdquo;. It&rsquo;s just sad strategies like that exist and are needed to scour around the web nowadays. Million Short&rsquo;s about page does smell an awful lot like Silicon Valley VC-like brands though.</p>
<p>Then there are web directories such as <a href="https://indieseek.xyz/2021/04/19/search-engines-for-the-indie-web-and-indieweb/">Indieseek.xyz</a> and <a href="https://blogroll.org/">Blogroll.org</a> that simply list blogs as entry points, leaving the exciting spelunking up to you. There, you first search by general topic before diving deep.</p>
<p>Lastly, premium search engines like <a href="https://kagi.com/">Kagi</a> started popping up that claim to deliver fast and personal results, free of ads and tracking&mdash;provided that you pay <code>$5</code> a month for 300 searchers or <code>$10</code> for unlimited queries. Kagi aims to replace your general Google-esque search and does not focus on small sites like SearchMySite or Marginalia does. With Kagi, you can block and/or filter domains you do (not) like, which to a certain degree is also possible in Million Short. I haven&rsquo;t tried it myself, but have read impressions from <a href="https://dheinemann.com/kagi-search-first-impressions/">Dave Heinemann</a>, <a href="https://zerokspot.com/weblog/2023/10/21/trying-kagi-search-for-real/">Horst Gutmann</a>, and <a href="https://kevquirk.com/my-thoughts-on-kagi-search">Kev Quirk</a>.</p>
<hr>
<p>Google et al. are great &ldquo;answer engines&rdquo; when technical questions arise, but their cool new website discovery levels leave much to be desired. If you are going to rely on them, do make sure to bring protection such as a <a href="https://brainbaking.com/post/2022/08/six-months-with-pi-hole/">Pi-Hole</a> and <a href="https://ublockorigin.com/">a good content blocker</a>, as these big boys made ads and scam look like real results. Fortunately, alternative smaller engines focusing on personal sites do exist. They profoundly changed the way I use the internet&mdash;for the better&mdash;and for me made fooling around fun again, not unlike the good old StumbleUpon days.</p>
<p>Most browsers (and Alfred!) support custom search shortcuts that allow for quick searchers in many different engines, big and small. You owe it to yourself to check out at least a few of the ones mentioned here.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 26 January 2024.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: How%20To%20Search%20The%20Internet">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Windows 11 Design Mistakes</title>
      <link>https://brainbaking.com/post/2024/01/windows-11-design-mistakes/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Wed, 24 Jan 2024 08:15:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2024/01/windows-11-design-mistakes/</guid>
      
        
          <category domain="https://brainbaking.com/tags/design">design</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>My mother-in-law bought a new laptop that came pre-installed with Windows 11. I thought that was a good idea since we were looking for an easy-to-use operating system. I was wrong. This post is a reminder to myself that, next time someone needs to be introduced to the world of digital bureaucracy, I should instead install a Linux distribution.</p>
<p>I wonder when Microsoft started missing the mark? Probably after Windows XP? Layer upon layer upon layer of unnecessary crap eventually became the achievement called Windows 11, where the AI-assisted Bing, the ridiculous Microsoft Store, the security &ldquo;enhancements&rdquo;, and the unwanted integration of Xbox entertainment had me curse for almost two hours straight until I finally managed to successfully install a local government extension to get an eID card reader working.</p>
<p>As soon as you boot up Windows and hit the start button, I noticed lots of moving components that weren&rsquo;t there last time I frequently used windows. Okay fine, that was 17 years ago, but still. Why should users have to put up with trending news articles right inside that start menu? Or with Xbox account activation questions? Or with Bing? Or with what kind of weather it is today? The flashing things on the screen, the more confused my mother-in-law is, and rightly so. So I tried to hide, disable, uninstall, revert, delete, bin, trash, kill, and burn everything I deemed unnecessary.</p>
<p>But I couldn&rsquo;t: Windows simply wouldn&rsquo;t let me. Either I couldn&rsquo;t immediately find where to configure the thing&mdash;made worse by a Dutch installation&mdash;or it simply was part of the &ldquo;core Windows&rdquo; experience and impossible to alter.</p>
<p>And then I had to execute a <code>.EXE</code> install file to get an USB-powered card reader working.</p>
<p>But I couldn&rsquo;t: Windows simply wouldn&rsquo;t let me. Since when did double-clicking on an executable become impossible? Instead, the Microsoft Store opened, and a friendly message told me I shouldn&rsquo;t be doing anything possibly malicious: the installer didn&rsquo;t come from the verified Store. Recent macOS versions also make installing new software a progressively worse experience, but at least there I can simply press &ldquo;allow&rdquo;, or worst case chance the privacy &amp; security setting to allow applications downloaded from other sources than the App Store.</p>
<p>It turned out that the Windows installation has something called &lsquo;S-Mode&rsquo; enabled, where doing naughty stuff is <em>verboten</em>. This includes pressing <code>WIN+R</code> and typing in <code>regedit.exe</code>, by the way, which I also found out the hard way in another attempt to tell Windows to shut up by fiddling with the hopefully correct <code>HKEY_LOCAL_MACHINE</code> keys.</p>
<p>Then I tried disabling S-Mode. And you guessed it: I couldn&rsquo;t. By this point the amount of curses per minute started increasing exponentially. The easiest way to disable it is through the Microsoft Store by&hellip; downloading a special piece of software that removes it? But that requires a Microsoft account which we didn&rsquo;t have. Alternative options were holding down <code>SHIFT</code> while selecting &lsquo;Reboot&rsquo; in the start menu to access a repair mode where you can boot into UEFI/BIOS mode to disable Secured Boot, but that would also permanently disable hard-disk encryption. And it didn&rsquo;t work. Another option is to use the repair mode to run a command-line that <em>does</em> boot <code>regedit.exe</code> and follow steps found in questionable articles online. And it didn&rsquo;t work.</p>
<p>By this point, I was ready to throw in the towel and simply made a stupid Microsoft account to access that downgrade software. Finally, progress! With S-Mode gone, I was able to get that card reader to work. But wait, why did the Edge browser start page suddenly change? Why are we constantly logged into that new account? After logging out and removing the association with the account, Windows also decided to throw away profile information already configured in Edge such as shortcut links on the start page that my mother-in-law used to navigate the web. Another stream of curses followed.</p>
<p>Then I tried uninstalling Edge but I couldn&rsquo;t (I think there&rsquo;s a pattern here somewhere). In true Internet Explorer fashion, the browser is hard-wired with Windows. Edge&rsquo;s distracting flashing buttons and annoying AI-assisted search bar got on my nerves pretty quickly. Luckily, replacing it with another Chromium-based browser isn&rsquo;t too much of a culture shock for occasional web surfers. Firefox is not an option as some Belgian online banking systems are poorly optimized for that browser and switching browsers simply is too much to ask.</p>
<p>Disabling automatic updates&mdash;or at least the frequent and quite annoying messages&mdash;resulted in another <em>wouldn&rsquo;t let me</em>. The best I could do is disable it for 5 weeks. I am well aware of the advantages (and disadvantages) of automatic security patches, but for inexperienced computer users, these &ldquo;Restart your computer!&rdquo; messages are reasons to panic, not to rest assured.</p>
<hr>
<p>Modern iterations of out-of-the-box operating systems come with a surprising amount of cruft, and that&rsquo;s just sad. Microsoft isn&rsquo;t the only one guilty of this: Apple&rsquo;s Sonoma macOS comes with so many useless features that only take up precious solid state hard disk space. I don&rsquo;t care about widgets and Siri, I want my OS to do what it has to do: help operate the system. I don&rsquo;t want my OS to spy on me and to send network packets to <code>microsoft.com</code> or <code>apple.com</code> without me doing anything. I don&rsquo;t want an obligatory convoluted app store. I don&rsquo;t want a start menu/bar full of ads. I don&rsquo;t want to create an account and to be &ldquo;logged in&rdquo;.</p>
<p>And I certainly don&rsquo;t want your AI-assisted help, thank you very much.</p>
<p>Next time, I will start by formatting and installing Ubuntu. This little Windows adventure made me question whether or not I should switch from macOS back to Linux, <a href="https://seblog.nl/2024/01/05/1/een-nieuw-begin">just like Seb did</a>.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 24 January 2024.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Windows%2011%20Design%20Mistakes">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Why I Am Leaving Academia (For Now)</title>
      <link>https://brainbaking.com/post/2024/01/why-i-am-leaving-academia-for-now/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Wed, 17 Jan 2024 09:52:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2024/01/why-i-am-leaving-academia-for-now/</guid>
      
        
          <category domain="https://brainbaking.com/tags/academia">academia</category>
        
          <category domain="https://brainbaking.com/tags/phd">phd</category>
        
          <category domain="https://brainbaking.com/tags/jobs">jobs</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>First, I really wanted to leave. Afterwards, I didn&rsquo;t want to. Then, I  was paralyzed and didn&rsquo;t know which route to take. Now, I&rsquo;m just glad a decision has finally been made, and I can move on. After five and a half years, I am leaving academia. In this post, I scramble to gather my thoughts as to why. Brace yourself for an incoming wall of text.</p>
<h2 id="i-tried-to-get-a-foot-in-the-door">I tried to get a foot in the door</h2>
<p>The last six months I&rsquo;ve been going back and forth waking up thinking &ldquo;I should stay&rdquo; just when I was about to accept the central thought of the day before &ldquo;I should leave&rdquo;. It has been exhausting.</p>
<p>I like a lot of things in academia, such as the freedom and flexibility and the actual job contents (teaching/researching/writing) that suits my personality&mdash;sometimes like a glove, sometimes like a misshapen ragged jacket. I&rsquo;ve managed to publish 13 articles in 5 years and received multiple praises from peer reviewers, colleagues, and students, so I must be doing <em>something</em> right.</p>
<p>Should I be interested in getting tenured in academia, the logical thing to do after receiving a PhD is to try and get hold of a postdoc position. I asked around/applied for five different vacancies, and none of them bore any fruit:</p>
<ul>
<li>One postdoc position was in distributed software engineering. I&rsquo;ve been a software engineer for 11 years and my PhD is in software engineering education, but I&rsquo;m not an expert in distributed computing. They said &ldquo;thanks, but no thanks&rdquo;. Fair enough.</li>
<li>Another one was in education research, but in a department of medical science, and after inquiring, they required a certain amount of domain knowledge, even though that of course wasn&rsquo;t listed in the job ad. Fair enough.</li>
<li>Another one required a few years of postdoc experience and completely ignored my more than a decade work experience. Fair enough? I&rsquo;m not so sure anymore.</li>
<li>One professorship vacancy was in education research in a neighboring university that&rsquo;s not as strict as my current institution when it comes to requiring postdoc experience. The trouble was&hellip; My PhD is in Engineering Technology. They required one in Engineering Science, meaning my official appliance wouldn&rsquo;t even make it to the first round. The work contents perfectly matched my prior experience, but I couldn&rsquo;t tick their box.</li>
<li>Then I changed tactics and started emailing acquaintances in my work field to see if I could score something through my contacts. Several people recommended the same person to contact, so thing were looking up. Until that person never replied to my inquiries.</li>
</ul>
<p>If you ever want to see a true example of dogmatism and inflexibility, try applying for a job in academia. If you can&rsquo;t perfectly match their requirements, you&rsquo;re toast&mdash;at least that&rsquo;s my experience. I guess that&rsquo;s partially the result of my own doing since I chose my own research topic and didn&rsquo;t fit in an existing research cell. I am especially baffled at the inability to render my previous experience relevant at all, even though when I speak to professors, they all say it&rsquo;s great to have someone teaching software engineering who knows what he&rsquo;s talking about.</p>
<p>I tried to get a foot in the door&hellip;</p>
<h2 id="but-i-didnt-try-hard-enough">But I didn&rsquo;t try hard enough.</h2>
<p>I admit, if I really <em>really</em> wanted to stay, I probably could have stayed. There were a few opportunities that I eventually turned down myself:</p>
<ul>
<li>I did get a job offer from a human-computer interaction research center, but after thinking about it, I remembered how I felt when I did my internship there 17 years ago. Also, I don&rsquo;t think I would have fit in well, and I have no ambition to become a research expert as I also love teaching.</li>
<li>My co-supervisor offered me a half-time teaching (only) position, but I loved the combination of teaching and research, and judging from experience wrestling with course schedules, it would be a very hard sell to combine it with a job in industry.</li>
<li>A few of my co-authors suggested to look abroad, where indeed job ads in my field are more prominent, but contrary to your typical PhD graduates, I have a family and am simply not prepared to move for a job&mdash;especially if it&rsquo;s yet another fixed term contract with little hope of getting tenured (as everyone is eyeing on those ads and their CVs are most likely more appealing). I never understood why people are prepared to take that huge risk.</li>
<li>Someone from my examination committee offered me a temporary job in their team in preparation of applying for international funds. I genuinely thought I had a shot at this, but after meeting with the funding support team and seeing the success rates of previous years (10%), my faith plummeted. On top of that, the idea was gradually turning into something else, and the funding would only last for a couple of years (2 or 3, depending on the type), meaning the jumping-through-50-page-document-loops fun would soon restart.</li>
</ul>
<p>There are other ways to apply for postdoc fellowships, but chances are always slim. I can hear you thinking: <em>if you don&rsquo;t submit your proposal, you&rsquo;ll never get it</em> and that&rsquo;s true! But my current energy levels and low tolerance for bureaucracy and politics combined with the reasons listed above made me conclude that for me, it&rsquo;s just not worth chasing after. If I didn&rsquo;t get the grant&mdash;which has a 90% chance&mdash;I would have to find another job within a few weeks, which, considering the current computing job market, only added pressure. And again, success doesn&rsquo;t even yield a permanent position.</p>
<p>On top of that&hellip;</p>
<h2 id="i-am-getting-bored">I am getting bored.</h2>
<p><em>Bored</em> might not be the right word, perhaps <em>weary</em> is more fitting. Despite a doctoral title clearly signing you&rsquo;re dealing with a specialist, I&rsquo;m a generalist at heart. I like doing many different things. To use <a href="https://puttylike.com/terminology/">Emilie Wapnick&rsquo;s coined terms</a>, I&rsquo;m more of a serial-specialist, that&rsquo;s why I gravitated towards multidisciplinary research. But academia doesn&rsquo;t reward generalists: it rewards hyper-specialists.</p>
<p>Additionally, teaching the same course again and again year in year out gets disheartening. Sometimes there&rsquo;s an exciting opportunity to bin everything and start from scratch. Sometimes courses get major overhauls. Most of the times, however, only minor adjustments are made, and after six years, I got over it. Sure, the student groups change, but the problems they struggle with and the course material they have to wade through remains the same. And yes, in industry, things often look alike as well, which is one of the reasons I turned to academia. The generalist in me is a part of the problem.</p>
<p>I thrive on variety, and it has gradually dawned to me that variety isn&rsquo;t one of academia&rsquo;s strong suits. Speaking of which, the rate at which new concepts are implemented isn&rsquo;t either, generating frustration on more than one occasion.</p>
<p>Besides the weariness, however, lies a bigger issue&hellip;</p>
<h2 id="i-am-lonely">I am lonely.</h2>
<p>I wrote <a href="https://brainbaking.com/post/2020/08/education-and-collaboration/">about this</a> <a href="https://brainbaking.com/tags/academia">many times</a>, and the reason isn&rsquo;t just COVID or the post-COVID work-from-home adaptation. The reason is the inherent nature of academia itself. Widely diverging teaching schedules and conferences make for very rare collegial water cooler chit-chat. Most academics are loners by nature: we teach alone, we write alone, we study alone. The meetings are just there to synchronize the otherwise asynchronous isolated work and to paste section two and three in Overleaf.</p>
<p>I reckon many academics will start protesting when reading this, and I&rsquo;ll make things worse by saying in academia, you don&rsquo;t truly collaborate but merely cooperate. I come from a heavy pair programming background where software development teams are (striving to be) true <em>teams</em>. The term <em>team</em> has little meaning in academia. Worse, there are plenty of selfish people here, and it&rsquo;s impossible to blame them: <a href="https://brainbaking.com/post/2022/08/the-toxic-culture-of-rejection-in-computing-academia/">the publication numbers game</a> pushes them to behave this way.</p>
<p>That&rsquo;s not to say that people aren&rsquo;t prepared to help each other out. My point is that individualism is the norm, not the exception, and while I have proven that I can live with that, it wears me down mentally. Even worse, I fear that I&rsquo;m also starting to exhibit that kind of behavior, because&hellip;</p>
<h2 id="i-am-losing-touch-with-practice">I am losing touch with practice.</h2>
<p>Even though I think that&rsquo;s not completely true, evidently, recruiters do, as this even cost me a job offer, where afterwards I heard that in the last few years, I &ldquo;<em>haven&rsquo;t touched Java, or development in general, that, given the difficult market, is detrimental to immediate employability</em>&rdquo;. What a way to politely try to say that I&rsquo;m too expensive.</p>
<p>That transparent bullshit might have a faint ring of truth to it, though. While I kept myself up-to-date&mdash;even more so than during my job as a software engineer, to be honest&mdash;of course I haven&rsquo;t touched huge enterprise software projects, and of course I&rsquo;m not up-to-date when it comes to the latest front-end JS framework pizzazz. But give me a week and my code spewing engine will be up and humming in full gear.</p>
<p>If I chose to stay in academia to pursue a postdoc, however, these recruitment persuasions would become increasingly difficult. Imagine I manage to score a postdoc of 3 years, or even 6, but meet a dead end after that and miss that tenure track by a hair. That&rsquo;ll mean it would have been nine+ years since I &ldquo;<em>haven&rsquo;t touched development in general</em>&rdquo;. What then?</p>
<p>Additionally, I&rsquo;ve always said to myself and my supervisors that I believe in teachers with a strong theoretical <em>and</em> practical background. Software engineering is a practical discipline. Software engineering is not trying to prove and solve mathematical equations. Software engineering evolves rapidly. Software engineering solves practical problems.</p>
<p>As a teacher, I want to have that experience under my belt in order to radiate confidence and convey these practices with enthusiasm. My students have said numerous times that they especially appreciate my background. If I chose to stay, I would gradually lose that advantage and slowly but surely become yet another professor that&rsquo;s disconnected with the real world. No wonder that <a href="https://brainbaking.com/post/2022/05/teaching-software-engineering-is-still-done-wrong/">teaching software engineering is still done wrong</a>. Software engineering research is not software engineering.</p>
<h2 id="so-what-now">So what now?</h2>
<p>I don&rsquo;t want to just teach. I don&rsquo;t want to just research. I don&rsquo;t want to just code. <em>Brain Baking</em> is what I want to do, and as a <em>Brain Baker</em>, I get to combine, to mix, knead, ferment, and bake all of these things: writing, teaching, studying, coding. But as an employee, it&rsquo;ll probably be next to impossible to find a single job that perfectly matches that or to find multiple jobs that are properly adjusted to each other.</p>
<p>So I&rsquo;m going independent. Next month, I&rsquo;ll be an independent <em>Brain Baker</em> and I&rsquo;ll have the freedom to pursue whatever interests me, as long as it generates paid invoices. I wanted to keep at least a part of the freedom and flexibility from academia without leaning in too much on the uncertainty. Depending on the clients and the contracts, freelancing is probably just as uncertain&mdash;or perhaps even more&mdash;than that postdoc, but at least I&rsquo;ll be reaping the benefits of building my own little company without having to move.</p>
<p>By taking up the role of software architect for four days a week, I bought myself one day filled with contemplation and writing. Or teaching as a guest lecturer, should its opportunity cross my path. Or organizing longer bread baking workshops (the next one is scheduled mid-February, be there or be square!). Or spending more time with my family.</p>
<p>My hands are aching. As Regi Fils-Aimé would say: <em>My body is ready</em>.</p>
<hr>
<p>Does that mean I have shut the door permanently? Not really, but by not (immediately) choosing to continue pursuing a career in academia, I am slimming my chances to be offered one in the near future: the numbers game continues, and I&rsquo;m out. Still, if a tenure track comes up that piques my interest, I might give it a shot, you never know, although I&rsquo;m realistic enough to know that, given the ridiculously long-winded and archaic application procedures, the odds will be against me. That&rsquo;s another silly thing in academia: everyone&mdash;including stiff competition from abroad&mdash;is eyeing on getting tenured and there are little captivating positions in-between.</p>
<p>Make no mistake, I have zero regrets. I loved researching creativity, I loved having an ethically sound job that contributes to society&mdash;and I will be very critical to future prospects in that regard&mdash;and I loved the freedom to compile and teach my own courses. I&rsquo;ve always wanted to become a doctor and I am so glad I didn&rsquo;t pursue the degree after finishing my Master&rsquo;s. In my view, the stereotypical saying that PhDs are next to worthless in industry is false: both the invaluable personal growth and the dissemination of my work will surely come in handy in the coming years.</p>
<p>Right now, it&rsquo;s time to tip the scales back in favor of coding. But as that scale inevitably gets out of balance somewhere in the future, it might be time to reconsider.</p>
<hr>
<p>This isn&rsquo;t the first <em>Why I Left Academia</em> post. The following similar blog posts by others mentioned different but equally valid reasons to leave that struck a chord:</p>
<ul>
<li><a href="https://nataliabielczyk.com/why-did-i-really-leave-academia-top-16-reasons/">Natalia Bielczyk</a> mentions lack of sense of humor (that&rsquo;s true!), false impact, and the feudal system.</li>
<li><a href="https://roostervane.com/why-i-left-academia/">Chris Cornthwaite</a> calls out the tenure-track rat-race and even wrote a book about it.</li>
<li><a href="https://allisonharbin.com/post-phd/why-i-left-academia-part-1">Allison Harbin</a> despises the sometimes very dirty numbers game.</li>
<li><a href="https://austinhenley.com/blog/leavingacademia.html">Austin Henley</a> quit academia because he was unhappy, even though he was on a tenure track.</li>
</ul>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 17 January 2024.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Why%20I%20Am%20Leaving%20Academia%20%28For%20Now%29">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Semi-Automating Household Bookkeeping</title>
      <link>https://brainbaking.com/post/2024/01/semi-automating-household-bookkeeping/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Mon, 15 Jan 2024 09:00:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2024/01/semi-automating-household-bookkeeping/</guid>
      
        
          <category domain="https://brainbaking.com/tags/python">python</category>
        
          <category domain="https://brainbaking.com/tags/bookkeeping">bookkeeping</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>We&rsquo;ve been keeping track of our household expenses on and off over the past decade&mdash;more <em>off</em> than <em>on</em> as it&rsquo;s yet another huge chore to pour everything in tables and extract useful information out of it. At first, we scribbled everything in a big expenses notebook, but after a year of frantically trying to write down every transaction, that simply became unmanageable. Then I resorted to Excel<sup id="fnref:1"><a href="https://brainbaking.com/post/2024/01/semi-automating-household-bookkeeping/#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> and started from an exported bank statement log. Now I finally semi-automated that process, but what remains&mdash;tagging&mdash;still is a good chunk of manual labor.</p>
<p>Bookkeeping your household expenses has to have a purpose. What questions are you trying to answer? Which patterns are you trying to uncover? For us, these are:</p>
<ol>
<li>How much can we save on average each month?</li>
<li>How much do we spend on certain groups; for instance food and drinks or baby supplies?</li>
<li>How do the expenditures compare to previous years, taken into account life changes and index adjustments?</li>
<li>Are there any big discrepancies in expenses we overlooked?</li>
<li>Where can we make smart cuts?</li>
</ol>
<p>The first question is easy to answer: add up every plus and minus and compare both for each month. The next question is another matter. To do that, I resorted to categorizing each expense into the following groups: <code>food/drinks</code>, <code>hobby</code>, <code>health</code>, <code>clothes etc</code>, <code>pets</code>, <code>once/year</code>, <code>utility</code>, <code>car</code>, <code>baby</code>, <code>house</code>, <code>other</code>. Depending on the name of the opponent and the statement itself on the bank transcript, this can be done automatically. For instance, if they contain the name of our veterinarian, it should be labeled <code>pets</code>, while if it&rsquo;s coming from Carrefour, Delhaize, or Bio-Planet&mdash;local supermarkets&mdash;it should be labeled <code>food/drinks</code>.</p>
<p>I used to label every single statement by hand, but that&rsquo;s just silly: the majority of the transactions, like your weekly shopping habits, are recurring expenses. So I whipped up a Python script that converts the downloaded export file form our bank into the format and layout I want. It relies on Pandas and <a href="https://xlsxwriter.readthedocs.io">Xlsxwriter</a> and contains a dictionary of categories with arrays of possible regex matches to auto-label each row:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#728e00">import</span> <span style="color:#434f54">pandas</span> <span style="color:#728e00">as</span> <span style="color:#434f54">pd</span>
</span></span><span style="display:flex;"><span><span style="color:#434f54">df</span> <span style="color:#728e00">=</span> <span style="color:#434f54">pd</span><span style="color:#728e00">.</span><span style="color:#434f54">read_excel</span>(<span style="color:#434f54">file</span>)
</span></span><span style="display:flex;"><span><span style="color:#434f54">rows</span> <span style="color:#728e00">=</span> []
</span></span><span style="display:flex;"><span><span style="color:#728e00">for</span> <span style="color:#434f54">rownr</span>, <span style="color:#434f54">row</span> <span style="color:#728e00">in</span> <span style="color:#434f54">df</span><span style="color:#728e00">.</span><span style="color:#434f54">iterrows</span>():
</span></span><span style="display:flex;"><span>  <span style="color:#434f54">opm</span> <span style="color:#728e00">=</span> <span style="color:#434f54">enhance_description</span>(<span style="color:#434f54">row</span>[<span style="color:#7f8c8d">&#39;statement&#39;</span>])
</span></span><span style="display:flex;"><span>  <span style="color:#434f54">cat</span> <span style="color:#728e00">=</span> <span style="color:#7f8c8d">&#39;&#39;</span> <span style="color:#728e00">if</span> <span style="color:#434f54">row</span>[<span style="color:#7f8c8d">&#39;amount&#39;</span>] <span style="color:#728e00">&gt;</span> <span style="color:#8a7b52">0</span> <span style="color:#728e00">else</span> <span style="color:#434f54">guess_category</span>(<span style="color:#728e00">str</span>(<span style="color:#434f54">row</span>[<span style="color:#7f8c8d">&#39;name&#39;</span>]) <span style="color:#728e00">+</span> <span style="color:#434f54">opm</span>)
</span></span><span style="display:flex;"><span>  <span style="color:#434f54">rows</span><span style="color:#728e00">.</span><span style="color:#434f54">append</span>((<span style="color:#434f54">row</span>[<span style="color:#7f8c8d">&#39;date&#39;</span>], [<span style="color:#7f8c8d">&#39;&#39;</span>, <span style="color:#434f54">row</span>[<span style="color:#7f8c8d">&#39;date&#39;</span>]<span style="color:#728e00">.</span><span style="color:#434f54">strftime</span>(<span style="color:#7f8c8d">&#39;</span><span style="color:#7f8c8d">%d</span><span style="color:#7f8c8d">-%m&#39;</span>), <span style="color:#728e00">str</span>(<span style="color:#434f54">row</span>[<span style="color:#7f8c8d">&#39;name&#39;</span>]), <span style="color:#434f54">row</span>[<span style="color:#7f8c8d">&#39;amount&#39;</span>], <span style="color:#434f54">opm</span>, <span style="color:#434f54">cat</span>, <span style="color:#7f8c8d">&#39;&#39;</span>]))
</span></span></code></pre></div><p><code>enhance_description()</code> is there to add additional information to the description when it&rsquo;s missing, as our local post office loves to omit a sensible description. That was one of the most puzzling statements, with name <code>MRS 285100 3983</code>. What? Indeed. <code>guess_category()</code> checks whether or not the name or description contain certain keywords to automatically set the correct label. To easily sort on date, since I want a nice overview of each month, I resort to a tuple to temporarily store the date itself. Then, Xlsxwriter exports it:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#434f54">df</span> <span style="color:#728e00">=</span> <span style="color:#434f54">pd</span><span style="color:#728e00">.</span><span style="color:#434f54">DataFrame</span>(<span style="color:#434f54">columns</span> <span style="color:#728e00">=</span> <span style="color:#434f54">cols</span>)
</span></span><span style="display:flex;"><span><span style="color:#728e00">for</span> <span style="color:#434f54">newrow</span> <span style="color:#728e00">in</span> <span style="color:#434f54">rows</span>:
</span></span><span style="display:flex;"><span>  <span style="color:#434f54">df</span> <span style="color:#728e00">=</span> <span style="color:#434f54">df</span><span style="color:#728e00">.</span><span style="color:#434f54">append</span>(<span style="color:#434f54">pd</span><span style="color:#728e00">.</span><span style="color:#434f54">DataFrame</span>([<span style="color:#434f54">newrow</span>], <span style="color:#434f54">columns</span> <span style="color:#728e00">=</span> <span style="color:#434f54">cols</span>))
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#434f54">writer</span> <span style="color:#728e00">=</span> <span style="color:#434f54">pd</span><span style="color:#728e00">.</span><span style="color:#434f54">ExcelWriter</span>(<span style="color:#434f54">filename</span>, <span style="color:#434f54">engine</span><span style="color:#728e00">=</span><span style="color:#7f8c8d">&#34;xlsxwriter&#34;</span>)
</span></span><span style="display:flex;"><span><span style="color:#434f54">df</span><span style="color:#728e00">.</span><span style="color:#434f54">to_excel</span>(<span style="color:#434f54">writer</span>, <span style="color:#434f54">sheet_name</span><span style="color:#728e00">=</span><span style="color:#7f8c8d">&#34;Sheet1&#34;</span>)
</span></span></code></pre></div><p>You can even add extra conditional formatting and data validation:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#434f54">workbook</span> <span style="color:#728e00">=</span> <span style="color:#434f54">writer</span><span style="color:#728e00">.</span><span style="color:#434f54">book</span>
</span></span><span style="display:flex;"><span><span style="color:#434f54">worksheet</span> <span style="color:#728e00">=</span> <span style="color:#434f54">writer</span><span style="color:#728e00">.</span><span style="color:#434f54">sheets</span>[<span style="color:#7f8c8d">&#34;Sheet1&#34;</span>]
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#434f54">green</span> <span style="color:#728e00">=</span> <span style="color:#434f54">workbook</span><span style="color:#728e00">.</span><span style="color:#434f54">add_format</span>({<span style="color:#7f8c8d">&#34;bg_color&#34;</span>: <span style="color:#7f8c8d">&#34;#BBFFBB&#34;</span>})
</span></span><span style="display:flex;"><span><span style="color:#434f54">worksheet</span><span style="color:#728e00">.</span><span style="color:#434f54">conditional_format</span>(<span style="color:#7f8c8d">&#39;E2:E999&#39;</span>, {<span style="color:#7f8c8d">&#39;type&#39;</span>: <span style="color:#7f8c8d">&#39;cell&#39;</span>, <span style="color:#7f8c8d">&#39;criteria&#39;</span>: <span style="color:#7f8c8d">&#39;&gt;&#39;</span>, <span style="color:#7f8c8d">&#39;value&#39;</span>: <span style="color:#8a7b52">0</span>, <span style="color:#7f8c8d">&#39;format&#39;</span>: <span style="color:#434f54">green</span>})
</span></span><span style="display:flex;"><span><span style="color:#434f54">worksheet</span><span style="color:#728e00">.</span><span style="color:#434f54">data_validation</span>(<span style="color:#7f8c8d">&#34;G2:G999&#34;</span>, {<span style="color:#7f8c8d">&#34;validate&#34;</span>: <span style="color:#7f8c8d">&#34;list&#34;</span>, <span style="color:#7f8c8d">&#34;source&#34;</span>: <span style="color:#7f8c8d">&#34;=$I$2:$I$&#34;</span> <span style="color:#728e00">+</span> <span style="color:#728e00">str</span>(<span style="color:#434f54">i</span>)})
</span></span></code></pre></div><p>Where the cell range <code>$I$2:$I$</code> contains all possible categories I listed before.</p>
<p>Are we done now? Not quite.</p>
<p><strong>What about credit card settlements</strong>? In Belgium, they appear for instance as &ldquo;MasterCard XXXYYY&rdquo; with a certain amount, once a month, and that&rsquo;s it. I don&rsquo;t know about you, but I can&rsquo;t remember what that <code>€59,89</code> was for, even a week or two after the purchase, and since it&rsquo;s not in the statement export, I had to manually enrich data by also downloading my monthly MasterCard summaries. The problem gets worse: that&rsquo;s a PDF. If we want to keep it simple, forget parsing. I try to avoid using my credit card anyway, and you&rsquo;ll have to make a decision whether or not to split the statement row into multiple rows depending on what you used your card for that month.</p>
<p><strong>What about Amazon-esque statements</strong>? This includes Paypal and the Dutch Bol.com. Do you know what these are:</p>
<pre tabindex="0"><code>14/11 PayPal (Europe) S.a r.l. et Cie, S. -9,99 
23/11 Amazon Mrktplc         Luxembourg -143,43
</code></pre><p>Good luck trying to identify these. Again, you&rsquo;ll need more information: log into your PayPal/Amazon account to find out more. The first line turned out to be our Kobo eBook subscription, and the second one a bulk purchase of some Christmas gifts: the first one got labeled with <code>hobby</code>, the second with <code>other</code>.</p>
<p>Back to question number 2: after the labeling is done, for each month, expenses are grouped by category, and then averages for the entire year are calculated. That&rsquo;s all put into a summary sheet: (the numbers are fictional here)</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2024/01/semi-automating-household-bookkeeping/../bookkeeping-sheet.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2024/01/semi-automating-household-bookkeeping/../bookkeeping-sheet.jpg" loading="lazy" title="An example of what a summary sheet for each category would look like." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>An example of what a summary sheet for each category would look like.</figcaption>
	
</figure>
</p>
<p>With a bit of simple conditional formatting, question 4 can also be answered, as it&rsquo;s quite clear that in the above example, in November we spent too much on our hobbies (<code>-€2000</code>). I also toss in a few useless graphs to visualize our graudal spending in the <code>food/drinks</code> category as the year progresses, and a bar chart to see which category is the most expensive (not depicted). Remember, if your <code>other</code> column has big numbers, you&rsquo;re probably in need of a new category.</p>
<p>In 2023, we spent about 15% of our income on <code>food/drinks</code> which is exactly as much as in <code>utility</code> (including the mortgage). On average, our two cats and dog cost <code>€230</code> a month, a surprisingly high number since one of the cats and the dog reached senior age and started having health issues. You could go even further and make subcategories: for example right now I don&rsquo;t know how much of that 15% comes from restaurants, but that&rsquo;s easy to fix with additional filters.</p>
<hr>
<p>This might seem like yet another nerdy numbers project, but the yearly Excel file does give us a lot of reassurance. We can <em>very</em> quickly calculate how much of a dip our savings will take if our income would take a hit. We precisely know how much it takes financially to raise our daughter (a lot). We can relate yearly indexation changes to our absolute expenses and see if this percentually holds up compared to the previous years. We know that owning a car cost more than €300 a month last year.</p>
<p>If you don&rsquo;t already have a household bookkeeping system in place, I highly recommend that you do so as soon as possible, starting with the simplest possible dataset: an export of your monthly bank statements. For us, that was simple: we only have one shared current account.</p>
<p>Happy tagging!</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>I know there are many cool-looking command-based expense database tools out there, but my wife should also be able to easily see what&rsquo;s what, so Excel it is.&#160;<a href="https://brainbaking.com/post/2024/01/semi-automating-household-bookkeeping/#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 15 January 2024.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Semi-Automating%20Household%20Bookkeeping">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Email Etiquette</title>
      <link>https://brainbaking.com/post/2024/01/email-etiquette/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Fri, 12 Jan 2024 10:09:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2024/01/email-etiquette/</guid>
      
        
          <category domain="https://brainbaking.com/tags/email">email</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>In one of the buildings at our university campus, a big TV screen next to the staircase tried (in vain) to educate students on how to correctly send emails by listing dos and dont&rsquo;s. The funny examples convinced me to stop and read what was being displayed, for the first time in more than five years since I take those stairs, but judging from the emails I get from students, the message didn&rsquo;t stuck for long.</p>
<p>A few examples I can still remember:</p>
<ul>
<li>Don&rsquo;t use your personal email address<code>&lt;destroy4r2001@hotmail.com&gt;</code> but your student email <code>&lt;firstname.lastname@student.university.be&gt;</code>.</li>
<li>Don&rsquo;t write <code>question!</code> or <code>help</code> as the subject but actually mention what your inquiry is about <code>course x: question on y</code>.</li>
<li>Don&rsquo;t simply use <code>dear</code> or <code>sup</code> to address the recipient but use the correct title and name <code>dear dr. Groeneveld</code>.</li>
<li>Don&rsquo;t end your email without a salutation or with <code>ciao</code> but be polite <code>best regards, name</code>.</li>
<li>Don&rsquo;t forget to check your text on grammatical errors but re-read before you press send.</li>
</ul>
<p>I&rsquo;d like to add a few more guidelines myself:</p>
<ul>
<li>Don&rsquo;t use abbreviations <code>idd</code> but write everything in full <code>indeed</code>.</li>
<li>Don&rsquo;t write in smartphone-mode <code>need2know</code> but remember email is a digital letter form.</li>
<li>Don&rsquo;t forget subjects or conjugating verbs <code>is problem</code> but show respect and write correct sentences <code>This is a problem</code>.</li>
<li>Don&rsquo;t lean heavily on the exclamation marks <code>is problem!!!11!</code> but only use one if really needed!</li>
<li>Don&rsquo;t rely on emojis to express your opinion 💩 but use sentences and words <code>What a shitty assignment</code>.</li>
</ul>
<p>Our Flemish government has a language advice team that <a href="https://www.vlaanderen.be/team-taaladvies/taaladviezen/teksten-schrijven/brieven-en-e-mails/e-mailetiquette">published email etiquette guidelines</a>, where number one is <em>do not send unnecessary emails</em>. Another well-known local job recruitment agency <a href="https://www.jobat.be/nl/art/e-mail-etiquette-de-25-ultieme-regels">posted 25 rules</a> where <em>Adhere to the rules you were taught at school</em> is probably the best advice: good sentence structure, use of capitals and punctuation marks, &hellip;</p>
<p>The first two words of a student email give me a very good indication whether or not the student put in effort to correctly formulate their question. Over the years, I&rsquo;ve received mails that start with:</p>
<ul>
<li><code>Dear,</code> (I am not your lover; please use my name to address me. Relying on the anonymous <code>Beste,</code> in Dutch isn&rsquo;t that much better) This is the most common way students seem to address me.</li>
<li><code>Groeneveld,</code> (Ouch. I do have a first name, and what happened with simply beginning with &ldquo;hello&rdquo;?)</li>
<li><code>Dear Prof. Groeneveld,</code> (I am flattered but am not a professor. But thanks, I guess?)</li>
<li><code>Hey,</code> (Woah woah woah, do I know you?)</li>
<li><code>Hi Wouter,</code> (That&rsquo;s not a big improvement&hellip;)</li>
<li><code>I have a question</code> (did you forget something? Hi, how are you?)</li>
</ul>
<p>I wonder whether or not we can all benefit from a refresher in email etiquette. Some of the above guidelines (<em>adhere to the rules you were taught at school</em>) also make for great blog writing guidelines. Some bloggers love using abbreviations in combination with spoken language, making their text look like a long form of smartphone texting instead of a proper piece of written language. I don&rsquo;t care about rich usage of diction but I do get annoyed when encountering and having to look up what <code>IDK</code> means, since <em>I Don&rsquo;t Know</em>. Ha! No, really, I didn&rsquo;t, and it&rsquo;s not like you&rsquo;re going to buy back a significant amount of time by heavily relying on shorthand notations that your readers just have to figure out.</p>
<p>Emojis and abbreviations seem to have slipped into our daily email (and blog) texts, as Gmail-like conversation chains automatically push us towards informal chat-like writing instead of formal addressing and greeting. And there&rsquo;s nothing wrong with that, but the more we rely on that, the less we&rsquo;re capable of producing grammatically and structurally sound letters. And I do love sending and receiving a lovingly long letter.</p>
<p>Best regards,</p>
<p>Wouter Groeneveld. (Should that full stop be there? IDK 🙃 <em>Presses publish</em>)</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 12 January 2024.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Email%20Etiquette">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Network Intrusion Detection Through Packet Image Classifications</title>
      <link>https://brainbaking.com/post/2024/01/network-intrusion-detection-through-packet-image-classifications/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Mon, 08 Jan 2024 12:50:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2024/01/network-intrusion-detection-through-packet-image-classifications/</guid>
      
        
          <category domain="https://brainbaking.com/tags/fpga">fpga</category>
        
          <category domain="https://brainbaking.com/tags/machine learning">machine learning</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>A few months ago, Laurens, a colleague from another department, successfully defended his PhD thesis titled <a href="https://lirias.kuleuven.be/4120937">Machine Learning for Network Intrusion Detection on FPGA</a>. Laurens is a hardware engineer and spent the last four years finding ways to speed up network intrusion detection using machine learning on programmable hardware or FPGAs. I know little about the topic, but Laurens&rsquo; presentation was captivating, especially the image classification part.</p>
<p>The problem is this: <em>how do we detect malicious network packets at scale?</em> A network packet&mdash;a unit of data part of the network stream that passes through your network as you browse the internet&mdash;at byte level might look like this:</p>
<pre tabindex="0"><code>f80ff967e43300f48d
6b6d0d080045000096
2aff400080060ef1c0
a81f9dc0a81f84d0a5
1f4939c8790c4bb70c
20501801ff44830000
17030300695a7e87ae
5a26d1a8e6af38cc0c
e02b9f4aa1cd153785
</code></pre><p>The problem is that there are trillions of packets passing through the wires every few seconds, and even though standards define pieces of information within each packet (IP address, header information, payload, &hellip;), these can all be faked, so filtering packets based on IP is just one step and won&rsquo;t be enough. Laurens instead based his approach <a href="https://ieeexplore.ieee.org/document/7899588">on the work of Wang et al.</a> who, in 2017, applied a very neat trick: why not convert the packet to pixels using a gray-scale and then use image recognition neural networks to quickly classify each packet? That means the above blob of hex data could be converted into a 28x28 pixel bock image.</p>
<p>We humans are gifted with the ability to quickly spot visual patterns. That&rsquo;s exactly what a <a href="https://en.wikipedia.org/wiki/Convolutional_neural_network">convolutional neural network</a> does to segment and classify images: you feed it an image, and it&rsquo;ll say it&rsquo;s a car, a dog, or a tree, with a surprisingly high accuracy, given the initial training set is big enough. That works because cars, dogs, and trees all look alike. Our daughter is nine months, but will soon too learn that our cats look a lot like the cat of our neighbor.</p>
<p>But how can we apply that to network packets? Simple: if you map a packet to a pixelated version, you&rsquo;ll immediately see that they too show striking visual resemblances. For example, take a look at the visualization analysis of Wang&rsquo;s team of different network-related sessions, from mail checking using outlook to <em>World of Warcraft</em> gaming or FTP server browsing:</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2024/01/network-intrusion-detection-through-packet-image-classifications/../cnn-visualisation.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2024/01/network-intrusion-detection-through-packet-image-classifications/../cnn-visualisation.jpg" loading="lazy" title="Different networked sessions lead to different visualizations of packets!" data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>Different networked sessions lead to different visualizations of packets!</figcaption>
	
</figure>
</p>
<p>Some images<sup id="fnref:1"><a href="https://brainbaking.com/post/2024/01/network-intrusion-detection-through-packet-image-classifications/#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, like FTP and SMB, are very similar, but can be further broken in case the image recognition system has trouble discerning both. Overall, all other images are remarkably different. The question then becomes: are these patterns consistent? If a <em>World of Warcraft</em> packet looks like <code>x</code>, but another one from the same game looks like <code>y</code>, the neural network (and our own eyes) will have trouble correctly identifying it. The answer is a surprising yes:</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2024/01/network-intrusion-detection-through-packet-image-classifications/../cnn-consistency.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2024/01/network-intrusion-detection-through-packet-image-classifications/../cnn-consistency.jpg" loading="lazy" title="Consistent packet pixelated images for a few example sessions." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>Consistent packet pixelated images for a few example sessions.</figcaption>
	
</figure>
</p>
<p>Of course hackers are usually smart enough to conceal parts of data meaning their malicious network packets might showcase a bit more variation. Laurens investigated many different intrusion detection model architectures and categorized them according to how well attacks are detected (<em>Detection Score</em>) and how well attacks are identified (<em>Identification Score</em>). For existing architectures, this differed based on the trained sample size. This means that we first need to know <em>how</em> a malicious packet looks like before we can keep it from intruding.</p>
<p>For unknown attack detection, things are a bit more complicated, involving specific attack classes and shortcut learning. Furthermore, contamination robustness can be an issue, where only a small part of the current network packet might contain attack traffic (say, the last 10 bits), continued with the first 20 bits of the next packet.</p>
<p>In addition, thanks to the sheer volume of network packets, identification needs to be done quick, hence the idea to use FPGA heavyweight processors to process this closer to the bare metal. For that, Laurens relied on <a href="https://xilinx.github.io/brevitas/">Brevitas, PyTorch</a>, and FINN that exports his software model into Vivado which can burn it into an FPGA. FINN is an experimental framework from Xilinx specifically to experiment with neural networks on FPGAs, and comes with <a href="https://github.com/Xilinx/finn-examples">example datasets</a>.</p>
<hr>
<p>Again, I know little about neural networks and even less about FPGAs, but the idea to approach a network packet byte block as a visual image is really ingenious&mdash;a true example of creativity! I wonder how researchers came up with that idea. Perhaps by looking at how neural networks classify other data? Would visually looking at portions of sound waves also help in speech recognition? (The answer is yes, but there are other ways to do this).</p>
<p>It&rsquo;s stunning to see how much information can be extracted by literally <em>looking</em> at a network packet. Who knew that Facetime and Skype packets looked totally different, and that World of Warcraft data packets are that consistent? I wonder what happens when a new expansion is released&mdash;or a major network code refactor. As long as neural networks are capable of grouping and then classifying unknown groups, that&rsquo;s also not a problem.</p>
<p>If you&rsquo;re interested in reading more about network intrusion detection, <a href="http://lirias.kuleuven.be/cv?Username=u0132357">take a look at Laurens&rsquo; publications</a>.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>In case you are wondering: Weibo is a Chinese Facebook-like blogging website, and the researchers are Chinese. Neris and Geodo are Malware packets.&#160;<a href="https://brainbaking.com/post/2024/01/network-intrusion-detection-through-packet-image-classifications/#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 8 January 2024.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Network%20Intrusion%20Detection%20Through%20Packet%20Image%20Classifications">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Displaying Series of Posts in Hugo</title>
      <link>https://brainbaking.com/post/2024/01/displaying-series-of-posts-in-hugo/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Thu, 04 Jan 2024 09:06:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2024/01/displaying-series-of-posts-in-hugo/</guid>
      
        
          <category domain="https://brainbaking.com/tags/hugo">hugo</category>
        
          <category domain="https://brainbaking.com/tags/backlinks">backlinks</category>
        
          <category domain="https://brainbaking.com/tags/blogging">blogging</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Sometimes, the things that I write about are part of a series. For instance, the game <a href="https://jefklakscodex.com/games/gameboycolor/wario-land-2/">Wario Land II</a> is part of the <em>Mario/Wario Land</em> series, of which I&rsquo;ve played and reviewed several. Yet, until now, I didn&rsquo;t <em>really</em> link to the other games in the series, even though that has been on my mind for a while. That changed yesterday with the introduction of the frontmatter parameter <code>series</code>.</p>
<p>In 2022, I already explained <a href="https://brainbaking.com/post/2022/04/true-backlink-support-in-hugo/">how I extract backlinks</a> in Hugo, by looking for occurrences of the link in the content body using <code>findRE</code>. But that&rsquo;s not enough, since other related posts that are part of the series are not always mentioned. That means, backlinks, forwardlinks, and even related posts by tag intersection can&rsquo;t find everything. What I wanted to achieve is what <a href="https://www.oldgamehermit.com/2023/12/review-icewind-dale-enhanced-edition/">Old Game Hermit</a> displays at the end of a review:</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2024/01/displaying-series-of-posts-in-hugo/../oldgamehermit.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2024/01/displaying-series-of-posts-in-hugo/../oldgamehermit.jpg" loading="lazy" title="&#39;Other Reviews In This Series&#39; on Old Game Hermit." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>&#39;Other Reviews In This Series&#39; on Old Game Hermit.</figcaption>
	
</figure>
</p>
<p>The Hermit uses Wordpress, not Hugo like I do, and judging from the games that do not have links and are yet to be reviewed, I&rsquo;d dare to say that it could be manually added to each article? Not something I&rsquo;m keen on doing. Instead, I implemented the simplest thing I could think of: wire series of posts together with a shared <code>series</code> parameter, like this:</p>
<ol>
<li>Find all pages that have the same value for parameter <code>series</code></li>
<li>Sort them ascending by game release year</li>
<li>If there&rsquo;s more than one (which is the one currently being displayed), loop through them and display a link.</li>
</ol>
<pre tabindex="0"><code>{{ $series := slice }}
{{ if isset .Params &#34;series&#34; }}
  {{ $series = (where .Site.Pages &#34;.Params.series&#34; &#34;eq&#34; .Params.series).ByParam &#34;game_release_year&#34; }}
  {{ $has_series := $series | len }}
  {{ if gt $has_series 1 }}
  &lt;div class=&#34;series&#34;&gt;
    &lt;strong&gt;&lt;em&gt;{{ .Params.series }}&lt;/em&gt; series&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;#9657;
    {{- range $series -}}
      &amp;nbsp;&amp;nbsp;&lt;a href=&#34;{{ .RelPermalink }}&#34;&gt;{{ .Params.game_name }}&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;#9675;
    {{- end -}}
  &lt;/div&gt;
  {{ end }}
{{ end }}
</code></pre><p>Pretty simple, right? That still didn&rsquo;t do it for me, as many articles are not coupled together like that. In those cases, I wanted to display the related posts (gathered via the backlink method explained above). But what if they&rsquo;re both part of the same series and also show up as a backlink? In that case, throw them out&mdash;Hugo has a handy <code>complement</code> function for that. My backlink logic resides in another file as it&rsquo;s also shown in the sidebar, but can easily be recycled using the scratchpad:</p>
<ol>
<li>Find all related posts that have a valid game name that are <em>not</em> in the above series list</li>
<li>If there&rsquo;s more than zero, loop through them and display a link.</li>
</ol>
<pre tabindex="0"><code>{{ $related := (where ($.Scratch.Get &#34;related&#34; | complement $series) &#34;.Params.game_name&#34; &#34;ne&#34; nil) }}
{{ $has_related := $related | len }}
{{ if gt $has_related 0 }}
  {{- $related = sort $related &#34;.Params.game_release_year&#34; &#34;asc&#34; }}
 &lt;div class=&#34;similar&#34;&gt;
  &lt;strong&gt;Related games&lt;/strong&gt;&amp;nbsp;&amp;nbsp;&amp;#9657;
  {{- range $related | uniq -}}
    &amp;nbsp;&amp;nbsp;&lt;a href=&#34;{{ .RelPermalink }}&#34;&gt;{{ .Params.game_name }}&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;#9675;
  {{- end -}}
 &lt;/div&gt;
 {{ end }}
</code></pre><p>Sorting can be done by either using Hugo&rsquo;s separate <code>sort</code> function or by relying on the built-in <code>.ByDate</code>, or in my case, <code>.ByParam</code> shorthands. The problem is that after <code>Scratch.Get</code>, you lose your type, and <code>.ByParam</code> doesn&rsquo;t exist on <code>[]interface {}</code>, hence the extra line.</p>
<p>The result is this in HTML:</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2024/01/displaying-series-of-posts-in-hugo/../jefklakscodex.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2024/01/displaying-series-of-posts-in-hugo/../jefklakscodex.jpg" loading="lazy" title="&#39;... Series&#39; and Related links on Jefklak&#39;s Codex." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>&#39;... Series&#39; and Related links on Jefklak&#39;s Codex.</figcaption>
	
</figure>
</p>
<p>Good enough! I didn&rsquo;t yet review Wario Land 3 and 4, so there&rsquo;s no entry in the <code>.Site.Pages</code> collection to show. I <em>could</em> create empty files to circumvent this and display titles without links like Old Game Hermit does, but for now, like I said, good enough.</p>
<p>We&rsquo;re just missing one more thing: the RSS feed. For Old Game Hermit also displays the exact same list of links there, and I quite like that, as readers might be interested in other games from the same series&mdash;whether they&rsquo;re using a browser or an RSS client shouldn&rsquo;t matter. In Hugo, you can fully customize your RSS feed by fiddling with the <code>_default/rss.xml</code> file. Unfortunately, I can&rsquo;t rely on the scratchpad trick to reuse logic, and I can&rsquo;t reuse code via shortcodes.</p>
<p>I&rsquo;ve tried several things to reduce the copy-paste logic but none of them worked. It doesn&rsquo;t really matter anyway since the display logic is slightly different, as instead of <code>&lt;div/&gt;</code> tags I settled for simple <code>&lt;p/&gt;</code> paragraphs. This is what it looks like in NetNewsWire:</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2024/01/displaying-series-of-posts-in-hugo/../jefklakscodexrss.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2024/01/displaying-series-of-posts-in-hugo/../jefklakscodexrss.jpg" loading="lazy" title="The series and related links via the Codex RSS feed." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>The series and related links via the Codex RSS feed.</figcaption>
	
</figure>
</p>
<p>As for this blog, <em>Brain Baking</em>, I&rsquo;m not yet sure whether or not displaying related links in the RSS feed itself has any effect. I don&rsquo;t miss it, most posts are not explicitly wired together, and people following my writing through a feed are usually more up-to-date than the ones that clicked through via a browser. That said, the &ldquo;You Might Also Like&hellip;&rdquo; links at the end of this post in HTML won&rsquo;t go anywhere.</p>
<p>For reference, the Wario Land II post has the following frontmatter:</p>
<pre tabindex="0"><code>---
title: &#34;Wario Land II&#34;
date: 2024-01-01T09:00:00+01:00
score: 4
howlongtobeat_id: 11065
howlongtobeat_hrs: 5.2
series: &#39;Mario Land&#39;
game_name: &#39;Wario Land 2&#39;
game_genre: &#39;2D Platformer&#39;
game_release_year: 1998
game_developer: &#39;Nintendo&#39;
tags:
  - &#39;Wario&#39;
  - &#39;2D platformer&#39;  
---
</code></pre><p>The tags/genre keys are still ambiguous, but that&rsquo;s for another time.</p>
<hr>
<p><strong>Addendum</strong> 05th Jan.: It seems that Hugo recently gained an improved feature set for finding and <a href="https://gohugo.io/content-management/related/">indexing related content</a>! Page content itself isn&rsquo;t indexed though, so my backlinks/forwardlinks idea can&rsquo;t be done with that.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 4 January 2024.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Displaying%20Series%20of%20Posts%20in%20Hugo">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Favorites of December 2023</title>
      <link>https://brainbaking.com/post/2024/01/december-2023/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Mon, 01 Jan 2024 13:37:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2024/01/december-2023/</guid>
      
        
          <category domain="https://brainbaking.com/tags/metapost">metapost</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Happy New Year! Hopefully 2024 will bring the needed peace and solace to everyone. 2023 was a very difficult year for us, with lots of what you might call &ldquo;low lows&rdquo; and a few &ldquo;high highs&rdquo;. We usually make fun of that saying, but this seems like the first time it&rsquo;s appropriate to use it.</p>
<p>As far as blogging goes, 2023 was a great year. See the Brain Baking <a href="https://brainbaking.com/post/2023/">blog post archive for 2023</a>: with 90 posts last year, that&rsquo;s on average 7.5 a month or 1.875 a week. The best part about 2023 in blogging was the feedback I got, and the new friends and e-mail pen pals I made. As frequently mentioned before, <a href="https://brainbaking.com/post/2021/10/a-triumph-for-blogging/">blogging keeps on giving</a>. If there&rsquo;s one thing I never ever intend to give up, it&rsquo;s blogging.</p>
<p>The following posts turned out to be the most popular of 2023:</p>
<ol>
<li><a href="https://brainbaking.com/post/2023/11/fpgas-and-the-renaissance-of-retro-hardware/">FPGAs And The Renaissance of Retro Hardware</a></li>
<li><a href="https://brainbaking.com/post/2023/09/overlooked-reasons-to-still-buy-physical-media/">Overlooked Reasons To Still Buy Physical Media</a></li>
<li><a href="https://brainbaking.com/post/2023/01/goodbye-protonmail/">Goodbye, ProtonMail</a></li>
<li><a href="https://brainbaking.com/post/2023/02/phomemo-thermal-printing-on-macos/">Phomemo Thermal Printing On MacOS</a></li>
<li><a href="https://brainbaking.com/post/2023/12/doom-turned-thirty/">DOOM Turned Thirty</a></li>
</ol>
<p>As for <em>Jefklak&rsquo;s Codex</em>, the most popular article was the one on <a href="https://jefklakscodex.com/games/switch/freaky-trip/">Freaky Trip</a>, a bizarre (and very buggy) single-screen adventure/puzzle game. That one got a few hits simply because I couldn&rsquo;t find any reviews online myself! As far as visitor counts go, the <em>Codex</em> gets almost none, but I still have a lot of fun filling it. It&rsquo;s my own thing, and I&rsquo;ve pondered on that subject recently in <a href="https://brainbaking.com/post/2023/11/on-writing-for-yourself-in-public/">On Writing For Yourself In Public</a>.</p>
<p>Previous month: <a href="https://brainbaking.com/post/2023/11/october-2023">October 2023</a>.</p>
<h2 id="books-ive-read">Books I&rsquo;ve read</h2>
<p>Not much this month. Read my <a href="https://brainbaking.com/post/2023/12/2023-in-books">2023 in books overview post</a> to find out about the 22 books I managed to finish last year.</p>
<p>The <em>Malloreon</em> chronicles by <a href="https://www.eddingschronicles.com/index.html">David Eddings</a> continues to be my go-to bed-time material. Books 1 and 2 are done and although the tension doesn&rsquo;t exactly build up, I don&rsquo;t mind to keep on reading as it&rsquo;s a light read and entertaining enough.</p>
<h2 id="games-ive-played">Games I&rsquo;ve played</h2>
<p>After finishing <em>Super Mario Bros. Wonder</em>, I continued with the 2D Mario strike with the <em>Mario Land</em> Game Boy series that evolved into <em>Wario Land</em> and <em>Wario Land II</em>. The best is yet to come, though, as <em>Wario Land 3</em> is on my <a href="https://brainbaking.com/post/2023/10/top-25-best-games-of-all-time">25 Best Games of All Time</a> list! I know them all by heart but still breeze through these platformers once every few years.</p>
<p>My wife discovered a cheap Switch eShop code for <em>Mario + Rabbids: Kingdom Battle</em> and since I love tactical turn-based games, I eagerly dove in. It&rsquo;s okay so far: the core gameplay is very solid, but everything slathered on top is not my cup of tea. I&rsquo;m nearing the end and will have a review up shortly. Meanwhile, Kristien insists on playing <a href="https://store.steampowered.com/app/1967510/Railbound/">Railbound</a>, a cosy railway puzzle game with sometimes devilishly difficult levels! Most of the time, I just don&rsquo;t &ldquo;see it&rdquo;, but we&rsquo;re having fun together nonetheless.</p>
<h2 id="selected-blog-posts">Selected (blog) posts</h2>
<ul>
<li>Gibru writes several interesting articles on AI and LLM generation, including <a href="https://elusivewordsmith.com/posts/Playground/contextualizing/">Contextualizing the Artistic Process</a>.</li>
<li>Jonas Downey is convinced that having <a href="https://jonas.do/writing/2023-10-05-side-projects/">side projects is essential for creatives</a>, and I agree. This could grow into a powerful manifesto.</li>
<li>Cory Zue provides an overview on his side projects and why <a href="https://www.coryzue.com/writing/building-in-private/">building publicly in private</a> works for him.</li>
<li>Keith McNulty explains why <a href="https://medium.com/swlh/the-mbti-is-corporate-astrology-c132d93e684f">the MBTI tests are corporate astrology</a> (Medum link).</li>
<li>Michael Klamerus explains his process on <a href="https://virtualmoose.org/2023/12/13/finding-indie-games/">finding small indie games</a>.</li>
<li>This sobering article at Eurogamer reminds us that in the video game industry, 2023 was also the year of low lows and high highs: <a href="https://www.eurogamer.net/you-cant-talk-about-2023-in-games-without-talking-about-layoffs">You Can&rsquo;t Talk About Games Without Talking About The Layoffs</a>.</li>
<li>Glyph explains how to set up the best possible <a href="https://blog.glyph.im/2023/08/get-your-mac-python-from-python-dot-org.html">Phython development environment for MacOS</a>. Don&rsquo;t use <code>brew install</code> like I did.</li>
<li>Speaking of Python, <a href="http://jakevdp.github.io/blog/2014/05/09/why-python-is-slow/">why is Python so slow?</a> Jake VanderPlas deciphers the Python internals to figure out why.</li>
<li>Vlad-Stefan Harbuz&rsquo;s blog is great: it&rsquo;s a combination between computing and philosophical work. Here&rsquo;s his <a href="https://vladh.net/wage-labour-resources/">overview on resources on the philosophy of work</a> I still have to dig into.</li>
<li>Here&rsquo;s an interesting piece on <a href="https://web.law.duke.edu/cspd/mickey/">Mickey Mouse and the Public Domain</a>. As of today, <em>one</em> of the earliest versions of Mickey hits public domain in USA.</li>
<li><a href="https://blog.yossarian.net/2023/12/24/You-dont-need-analytics-on-your-blog">You Don&rsquo;t Need Statistics On Your Blog</a> says William Woodruff. Perhaps I should take on the challenge and ditch GoatCounter in favor of a few <code>grep</code> scripts in access logs, if that?</li>
</ul>
<h2 id="other-random-links">Other random links</h2>
<ul>
<li><a href="https://apps.gnome.org/en-GB/DejaDup/">Déjà Dup Backups</a> is a Gnome-powered UI-friendly backup tool for Unix.</li>
<li>Did you know you can <a href="https://spritely.institute/news/scheme-in-scheme-on-wasm-in-the-browser.html">Scheme in Scheme on WASM in the browser?</a> wait what now? The Spritely Institute also has cool info on Lisp hackatons if that&rsquo;s your jam.</li>
<li>If you want to follow physical video game releases, look no further than <a href="https://www.physicalreleases.com/">https://www.physicalreleases.com/</a></li>
<li>The <a href="https://intothecast.online/">Into The Aether Podcast</a> released a six-hour long episode on the 2023 Game of the Year. It&rsquo;s great, but I have been slogging through it on and off all week and I&rsquo;m still just over <code>03:21:00</code> hours/minutes in! Who decided that three-plus hours of jabbering about video games is a good thing? <em>Because it totally is!</em></li>
</ul>
<p>I hope to keep up the blogging rhythm in 2024. That&rsquo;s everything I wish for in 2024 besides the obvious ones.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 1 January 2024.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Favorites%20of%20December%202023">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>2023 In Books</title>
      <link>https://brainbaking.com/post/2023/12/2023-in-books/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Thu, 28 Dec 2023 10:50:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/12/2023-in-books/</guid>
      
        
          <category domain="https://brainbaking.com/tags/book review">book review</category>
        
          <category domain="https://brainbaking.com/tags/lists">lists</category>
        
          <category domain="https://brainbaking.com/tags/yearnote">yearnote</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Here&rsquo;s my <em>2023 In Books</em> end-of-year list, published on the cusp of the end of something old and the beginning of something new. Despite having much less time to sit down and read this year because of birth of our daughter, I still managed to finish 22 books in 2023. That&rsquo;s 2 books <em>more</em> than the previous year! Granted, some of them I eventually shoved aside before the last page was turned, and some of them were thin and/or very easy reads, but still, I&rsquo;m glad the rhythm is still more or less intact. Books are one of my primary sources of inspiration&mdash;for anything&mdash;so they&rsquo;re very important to me.</p>
<p>Previous year: <a href="https://brainbaking.com/post/2022/12/2022-in-books">2022 In Books</a>.</p>
<p>The following collage came to be by quickly grabbing covers one by one and using ImageMagick&rsquo;s <code>montage</code> magic (or <em>magick?</em>). My personal notes/review of each of them reside in my analog journals. Some of them make it to <em>Brain Baking</em> if I think it&rsquo;s worth it to publish their story or promote them, but I&rsquo;m glad I abandoned the GoodReads-style systematic publications of useless opinions.</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2023/12/2023-in-books/../booksof2023.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2023/12/2023-in-books/../booksof2023.jpg" loading="lazy" title="The Books of 2023." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>The Books of 2023.</figcaption>
	
</figure>
</p>
<p>I don&rsquo;t care about book statistics anymore, so I won&rsquo;t put in effort to summarize average page length and so forth. Instead, read the following posts I wrote this year about one of the books:</p>
<ul>
<li><a href="https://brainbaking.com/post/2023/03/herodotus-and-the-pyramids/">Herodotus And The Pyramids</a> (15 March)</li>
<li><a href="https://brainbaking.com/post/2023/04/the-philosopher-the-dog-and-the-wedding/">The Philosopher, The Dog, And The Wedding</a> (28 April)</li>
<li><a href="https://brainbaking.com/post/2023/07/bread-a-historians-viewpoint/">Bread, a Historian&rsquo;s Viewpoint</a> (27 July)</li>
</ul>
<p>As with <a href="https://brainbaking.com/post/2023/12/2023-in-video-games">the 2023 in video games list</a>, I rate each book from 1 to 5, adhering more or less to the classic GoodReads labeling system&mdash;meaning a <code>2</code> is still considered an &ldquo;okay&rdquo; book, but nothing more. The following books were awarded a 4 (<em>I liked it a lot</em>) or 5 (<em>It was amazing!</em>):</p>
<ul>
<li>💖 Histories (Herodotus)</li>
<li>💖 Art As Therapy (Alain de Botton and John Armstrong)</li>
<li>💖 Shareware Heroes (Richard Moss)</li>
<li>💖 The Philosopher, The Dog, And The Wedding (Barbara Stok)</li>
<li>💖 Amor Fati, Filosoferen tegen het einde (<em>Philosophizing at the end</em>) (André de Vries, Erno Eskens)</li>
<li>💖 De Wijsheid van de Tandeloze Glimlach: Gelukkig Ouder Worden met Epirucus (<em>The Wisdom of the Toothless Smile: Happy Aging with Epirucus</em>) (Daniel Klein)</li>
<li>💖 Brieven Uit Genua (<em>Letters from Genoa</em>) (Ilja Leonard Pfeijffer)</li>
</ul>
<p>I have the fealing that I read a lot of mediocre books in 2023. Perhaps my New Year&rsquo;s resolution should be to put down the ones I don&rsquo;t like much faster: life&rsquo;s too short. Only 7 of the 22 books were very engaging. That&rsquo;s not to say that the rest was bad, but towards the end of the year, I yearned for a compelling story and simply reverted to David Eddings&rsquo; <em>Malloreon</em> saga I already own for 20 years (the last two covers in the above collage are the Dutch hardcovers). Books that I hated that everyone seems to love include Mary Karr&rsquo;s <em>The Art of Memoir</em> and Rebecca Solnit&rsquo;s <em>Wanderlust</em>&mdash;primarily because of their unnecessarily long-winded intricate writing style to showcase their amazing diction knowledge.</p>
<p>If I had to recommend just <em>one</em> book, I&rsquo;d go with <strong>Art As Therapy</strong> without a doubt. It&rsquo;s not the first time we read it, but the first time I decided to buy a copy and put on the shelf to give it a permanent place in our book collection. I&rsquo;m a fan of Alain de Botton&rsquo;s approach to popularize philosophy, and this work together with John Armstrong is one of his best. If you&rsquo;ve ever wondered how to go about visiting a museum or looking at art, you&rsquo;re not alone, and <em>Art As Therapy</em> is there for you.</p>
<p>As for what to read in 2024&mdash;I wrote at the end of 2022 that I have unopened cookbooks patiently waiting to be picked up. That&rsquo;s unfortunately still the case. I am thinking about them, though, so this year will hopefully be a year where my cooking and baking gets the needed inspiration boost!</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 28 December 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: 2023%20In%20Books">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>How To Capture Screenshots On Vintage Hardware</title>
      <link>https://brainbaking.com/post/2023/12/how-to-capture-screenshots-on-vintage-hardware/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Sun, 24 Dec 2023 09:00:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/12/how-to-capture-screenshots-on-vintage-hardware/</guid>
      
        
          <category domain="https://brainbaking.com/tags/screenshots">screenshots</category>
        
          <category domain="https://brainbaking.com/tags/nintendo ds">nintendo ds</category>
        
          <category domain="https://brainbaking.com/tags/gameboy">gameboy</category>
        
          <category domain="https://brainbaking.com/tags/dos">dos</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>My email pen pal Jw over at <a href="so1o.xyz">https://so1o.xyz/</a> asked me how I record screenshots for my vintage gaming reviews that get published on <a href="https://jefklakscodex.com/">Jefklak&rsquo;s Codex</a>. That&rsquo;s a good question that I&rsquo;ve been having a lot of trouble with myself, depending on the system. I&rsquo;ve already briefly touched on the topic in a couple of previous posts, but considering Jw&rsquo;s question, it seemed like a good idea to summarize my approach here. Below is a list of all my vintage and newer hardware systems together with my method to capturing video output. As always, there are multiple paths to achieving this, such as <a href="https://www.retrorgb.com/mister.html">MiSTer</a> and <a href="https://www.retrorgb.com/rad2x.html">RAD2x</a> HDMI upscaling. Reach out and let me know if you found an easier way or a way to increase the quality of the screenshots!</p>
<h2 id="capturing-screenshots">Capturing Screenshots</h2>
<p>Summary:</p>
<ul>
<li>I prefer to use screenshot tools or built-in capabilities, if available.</li>
<li>For vintage handheld games, I rely on a combination of Analogue&rsquo;s Pocket, a modded 3DS, and a DS emulator.</li>
<li>For analog signals such as composite, I use a Pinnacle PCTV PCI capture card.</li>
<li>For VGA and digital signals, I use an Avermedia C127 PCI-E capture card.</li>
</ul>
<h3 id="the-game-boy-family">The Game Boy family</h3>
<p>I capture stills of Game Boy games using <a href="https://brainbaking.com/post/2022/04/analogue-pocket/">the Analogue Pocket</a>. Since a recent firmware update, it comes with built-in screenshot support (press <code>HOME</code>+<code>SELECT</code>). Simply transfer the data from the microSD card to your PC and the post-processing can commence. Before that, I used the mGBA emulator. There is no easy way to capture the video signal of the original Game Boy (Color) handhelds. Hyperkin&rsquo;s <a href="https://www.retron5.com/">Retron 5</a> console that also takes Game Boy carts outputs HDMI, but it&rsquo;s also just an emulator, so in my opinion you&rsquo;re better off doing it yourself. I dump ROMs of my games using <a href="https://www.gbxcart.com/">GBxCart RW</a>.</p>
<p>You&rsquo;ll need the Analogue Dock (another <code>$130</code>) for the Pocket to output HDMI. I didn&rsquo;t see the point: the screenshot files&mdash;even if blown up using the correct filters&mdash;are good enough.</p>
<h3 id="nintendo-ds">Nintendo DS</h3>
<p>See <a href="https://brainbaking.com/post/2023/01/capturing-video-output-on-nintendo-ds-hardware/">capturing video output on Nintendo (3)DS hardware</a> for an elaborate list of options. I currently dump the ROM with Godmode9, transfer it to my PC using FTPD, boot it and the savegame in the <a href="http://desmume.org/">DeSmuME emulator</a>, and then use the built-in screenshot capabilities of the emulator. It&rsquo;s far from ideal but capturing screenshots on the original DS (Lite) is known to be notoriously difficult unless you have it modded with HDMI out for a hefty price.</p>
<h3 id="nintendo-3ds">Nintendo 3DS</h3>
<p>See <a href="https://brainbaking.com/post/2023/01/capturing-video-output-on-nintendo-ds-hardware/">capturing video output on Nintendo (3)DS hardware</a>. Once you&rsquo;ve got your 3DS modded and Luma3DS installed, it&rsquo;s very simple: press <code>L</code>+<code>DOWN</code>+<code>SELECT</code> and select &ldquo;take screenshot&rdquo;. This will dump two BMP files that require post-processing to correctly paste together&mdash;see below.</p>
<h3 id="vgados">VGA/DOS</h3>
<p>See <a href="https://brainbaking.com/post/2022/11/capturing-vga-output-from-dos-on-winxp/">capturing VGA output from DOS on Windows XP</a>. VGA modes in DOS are notoriously finicky, and depending on the game, I needed a small utility that forces VGA to output in <code>60 Hz</code> instead of 70. My capture card can handle both VGA and HDMI, where the signal appears in the AVer MediaCenter software. From there, use the built-in screenshot button.</p>
<p><a href="https://jefklakscodex.com/games/pc/albion/">My Albion screenshots</a> were recorded like that.</p>
<h3 id="windows-9598">Windows 95/98</h3>
<p>98% of the games can be recorded using good old capture utility <a href="http://www.oldversion.com/windows/fraps/">Fraps</a>, just make sure to download an old 95/98 version. For some reason, Fraps refused to recognize FIFA RTWC &lsquo;98. In that case, the backup capture method&mdash;in case the print screen button and paste in Paint method also fails&mdash;is the same as the VGA/DOS one: disconnect your VGA cable from the monitor and attach it to the capture card on another machine.</p>
<h3 id="windows-xp">Windows XP</h3>
<p>For Windows XP, I also use Fraps, but a newer Windows NT/2000 compatible version. So far, it has never failed me. I can&rsquo;t capture the DVI output from this machine as it&rsquo;s also my capture machine!</p>
<h3 id="snes">SNES</h3>
<p>For SNES games, arguably the best option would be to get and record from a HDMI-upscaled Analogue device. If that&rsquo;s not an option, you can of course again simply resort to emulators. But if you want to capture from real hardware, like I do, you can loan the Wii&rsquo;s Composite A/V cable that at least also works for my PAL SNES. Then, I capture the analog composite signal in <a href="http://dscaler.net/setup/index.htm">DScaler</a> on Windows XP using an old Pinncale PCTV Rave PCI card I have plugged in. That card should also be able to capture S-Video and Coax signals.</p>
<p>Of course, if a SNES game was re-released on the Virtual Console for the Wii, in the Nintendo Online Switch subscription system, on the HDMI-enabled SNES Mini, or repackaged on modern consoles as a retro re-release, the process becomes considerably easier. For example, I captured <a href="https://jefklakscodex.com/games/snes/super-castlevania-iv/">Castlevania IV screenshots</a> via my Switch as part of the Castlevania Anniversary Collection.</p>
<h3 id="nintendo-gamecube">Nintendo GameCube</h3>
<p>See <a href="https://brainbaking.com/post/2021/12/three-gamecube-mods/">three little GameCube mods</a>. <code>DOL-001</code> GameCube models come with a digital-out port where you can plug in a HDMI adapter such as my Kaico one. The GC-HD MkII adapter from E.O.N. is vastly superior, but also costs twice as much. There are a couple of <em>very</em> cheap alternatives floating around, but be careful with those cables: they usually fail to deliver. Once your GC is able to output HDMI, again resort to a HDMI capture method (see <em>The Evercade family</em> below). Make sure your capture card is able to find the PAL <code>50 Hz</code> 480p signal.</p>
<h3 id="nintendo-wii">Nintendo Wii</h3>
<p>For the Wii you have a couple of options: either use the composite A/V cables and capture the analog signal (see <em>SNES</em> above) or buy RGB cables and use a RGB-to-HDMI adapter. For the moment, I use the former method, but the image quality is quite low. A look at the MiSTer to boost the quality is still on the TODO list. Again, in case you don&rsquo;t mind capturing from an emulator, <a href="https://dolphin-emu.org/">the Dolphin emulator</a> will flawlessly run GameCube and Wii ROMs.</p>
<h3 id="nintendo-switch">Nintendo Switch</h3>
<p>Thank god for the dedicated screenshot button. Unfortunately, Nintendo has to be Nintendo, and transferring it to your PC still isn&rsquo;t easy. Back in the day I used a fake Twitter account to push it online and re-download it. Now I use the stupid &ldquo;send to smart device&rdquo; option that has you fiddling with QR codes. You can also simply yank the microSD card and transfer the files.</p>
<h3 id="the-evercade-family">The Evercade family</h3>
<p>These handheld devices come with a HDMI-out port but will require you to buy a mini-HDMI converter cable that&rsquo;s of course not included. Then, you can attach it to a HDMI capture card or dedicated USB-3 capture device. I use <a href="https://brainbaking.com/post/2022/11/capturing-vga-output-from-dos-on-winxp/">my Avermedia C127</a> that&rsquo;s inside my Windows XP retro build.</p>
<h3 id="the--classic-mini-consoles">The &hellip;-Classic Mini consoles</h3>
<p>I have a SNES Classic and PlayStation 1 Mini Classic, and they both simply output HDMI. Most modern Android-based devices are simply beefed up emulators but all output HDMI. See above. You can of course also &ldquo;stumble upon&rdquo; the ROM, use emulators like <a href="https://www.snes9x.com/">Snes9x</a>, and simply take a screenshot there. I rooted my SNES Mini and it is possible to extract the ROMs using the <a href="https://github.com/AwakeEchidna/wiiu-vc-extractor">Wii U VC Extractor</a>, but haven&rsquo;t tried it yet. Most players are interested in getting ROMs in, not out.</p>
<h2 id="post-processing-screenshots">Post-processing Screenshots</h2>
<p>If your intention is to publish screenshots online&mdash;or your database is huge and your hard drive isn&rsquo;t&mdash;you inevitably have to think about image optimization. Additionally, most of the above screenshot methods capture at a native resolution, meaning your Game Boy shot will be only <code>160x144 px</code>: good luck with that on modern resolutions/screens. Depending on the type of vintage hardware, I approach post-processing differently.</p>
<p>I use <a href="https://imagemagick.org/">ImageMagick</a> for (automated command-line) bulk processing. As a general rule, I use the following rules to convert to and optimize JPG images for the web:</p>
<p><code>mogrify -sampling-factor 4:2:0 -strip -quality 80 -interlace JPEG -format jpg -colorspace sRGB screenshot.png</code></p>
<p>This does a few things, such as <a href="https://imagemagick.org/script/command-line-options.php#sampling-factor">chroma downsampling</a>. The result should be an acceptable image quality with a very light footprint ideally for serving on the web and storing on your NAS. My experiments settled for a factor of <code>4:2:0</code> instead of <code>4:2:2</code> or better and an overall JPG quality of <code>80%</code>. Adjust to your needs if required.</p>
<p>If you&rsquo;d rather save screenshots in a more modern format, say <code>.webp</code>, I won&rsquo;t stop you, but I want them to be accessible from my retro hardware, and this includes Windows 98, so <code>.jpg</code> it is.</p>
<h3 id="game-boy-games">Game Boy games</h3>
<p>GB games are lovingly pixelated messes, meaning if you want to blow up a screenshot, you&rsquo;ll have to apply a filter that carefully preservers this mess. ImageMagick&rsquo;s <code>box</code> filter does just that:</p>
<p><code>mogrify -filter box -resize x400 *.png</code></p>
<p>Since displaying just one GB screenshot above and below text seems ridiculous, I usually paste two together horizontally:</p>
<p><code>montage shot1.png shot2.png -tile 2x1 -geometry +2+2 result.jpg</code></p>
<p>See for example the screenshots in the <a href="https://jefklakscodex.com/games/gameboy/super-mario-land-2/">Super Mario Land 2</a> article.</p>
<h3 id="gamecube-games">GameCube games</h3>
<p>PAL GameCube screenshot output comes in a low resolution and is also a mess, but a blurry one. If you use ImageMagick&rsquo;s <code>-scale</code>, it will auto-apply the <code>box</code> filter, which in this case you do <em>not</em> want. Use <code>-resize</code> instead. I tend to be conservative and try not to exceed the <code>720x480</code> resolution or it&rsquo;ll look even worse. My HDMI adapter&rsquo;s quality is average at best.</p>
<p>See for example the <a href="https://jefklakscodex.com/games/gamecube/buffy-the-vampire-slayer-chaos-bleeds/">Buffy The Vampire Slayer</a> screenshots.</p>
<h3 id="nintendo-ds-games">Nintendo DS games</h3>
<p>Sometimes the <code>box</code> filter works, sometimes the interpolation-esque effects of <code>-resize</code> are desired instead. This will depend on the type of game (2D/3D, the color usage, &hellip;). Try out both and see what works for you.</p>
<p>Again, since DS video output is quite tall, I usually paste two screenshots together using <code>montage</code>, resulting in a joined resolution of <code>1074x804</code>, like in the <a href="https://jefklakscodex.com/games/ds/puzzle-quest/">Puzzle Quest review</a>.</p>
<h3 id="nintendo-3ds-games">Nintendo 3DS games</h3>
<p>Capturing screenshots with homebrew software dumps two files, as the resolutions of the top and bottom screen differ. It&rsquo;s again up to you to paste them together&mdash;without screwing up the lower resolution of the bottom screen. The quality is much better than on the DS, so the need to display two at once isn&rsquo;t as prevalent here. See for example <a href="https://jefklakscodex.com/games/3ds/new-super-mario-bros-2/">New Super Mario Bros. 2</a>.</p>
<p>The trick here is to keep the lower half transparent using PNGs (<code>600x720</code>). In that case, tell ImageMagick to keep the whitespace as transparent:</p>
<p><code>convert screen1.bmp  screen2.bmp  -gravity center -append -transparent white -resize 150% -quality 95 -depth 8 -depth 24 result.png</code></p>
<p>In my case, the dumped raw shots using Luma3DS/Rosalina were <code>.bmp</code> files. The above command also includes a few optimization arguments.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 24 December 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: How%20To%20Capture%20Screenshots%20On%20Vintage%20Hardware">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Be A Selfish Programmer</title>
      <link>https://brainbaking.com/post/2023/12/be-a-selfish-programmer/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Thu, 21 Dec 2023 10:01:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/12/be-a-selfish-programmer/</guid>
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Justin Searls <a href="https://blog.testdouble.com/talks/2019-05-08-the-selfish-programmer/">over at Test Double</a> gave a talk at RailsConf 2019 that really struck a chord here. I already <a href="https://brainbaking.com/post/2023/12/november-2023">briefly mentioned the talk</a> at the beginning of December but I feel that it&rsquo;s worth repeating here. Justin&rsquo;s summary perfectly sets the scene:</p>
<blockquote>
<p>This presentation is an exploration of the things programmers can learn by building an application by and for themselves—and the surprising number of lessons that might translate to their work on teams and larger organizations. It was based on my experience building the Japanese-learning site KameSame as a companion app to WaniKani.</p>
</blockquote>
<p>Watch the talk (36 minutes) on YouTube:</p>
<figure>
	<a href="https://www.youtube.com/watch?v=XvQxfMBp50k" class="lbox">
		<img loading="lazy" class="img-responsive" src="/img/yt/XvQxfMBp50k.jpg" alt="YouTube video XvQxfMBp50k">
	</a>
</figure>

<p>In an age of ever-increasing complex <em>and</em> complicated systems, we as enterprise software engineers sometimes simply un-learn how to make something small&mdash;and keep it that way. What if you had to build something to Scratch Your Own Itch tomorrow; which technologies and tools would you throw at the problem? The same as you daily use?</p>
<p>Because that would end up in a hopelessly over-engineered disaster.</p>
<p>For example, I want to create a piece of software that tracks our daughter&rsquo;s weight, mood, and days of sickness. Besides the fact that there are ample existing solutions for that problem, how should I approach this? By grabbing the Spring framework, throwing event sourcing on top of it, deploying the whole thing using Docker containers, provisioned by Kubernetes, flung on elastic cloud servers using Terraform scripts? My head hurts. Right, I don&rsquo;t think so either.  But what if you simply don&rsquo;t know anything else? What if you never explored a <em>simple</em> path that&mdash;gasp&mdash;perhaps isn&rsquo;t even web-based?</p>
<p>Justin did precisely that. By being a Selfish Programmer, making all the choices and mistakes himself, he wrote a small app to aid his Japanese learning path. By being selfish, he (re-)discovered the joy of making simple things, and, of course, learned a lot along the way. We software developers <em>have</em> to be continuous learners; it&rsquo;s part of our job. The Selfish Programmer just happens to be exploring the more egocentric path.</p>
<p>I&rsquo;ll let Justin do the talking/convincing here. Go watch the talk. I assure you it&rsquo;ll be worth your precious time.</p>
<hr>
<h2 id="but-also-be-a-caring-programmer">But also be a Caring Programmer</h2>
<p>Vlad-Ștefan Harbuz&rsquo; <a href="https://vladh.net/manifesto">Caring Programmer Manifesto</a> touches on similar topics that Selfish Programmers try to lay bare:</p>
<blockquote>
<p>We seem to have lost our understanding of what the computer is actually doing under all that code. We barely know how the dependencies we are <code>npm install</code>-ing work, let alone what the CPU is doing. More than that, if we had to develop, from scratch, one of these tools or frameworks that we use on a daily basis, we&rsquo;d probably be lost.</p>
</blockquote>
<p>The fact that so many similar ethical, philosophical, and technological concerns are popping up is not a coincidence. Perhaps the <a href="https://www.nand2tetris.org/">From Nand to Tetris course</a>, that has you build a modern computer from first principles, should be obligatory&mdash;especially for enterprise software people. Not just <em>back to basics</em>, but also back to <em>understanding</em> and programming with <em>responsibility</em>.</p>
<p>Vlad-Ștefan suggests the following to be a caring programmer:</p>
<ol>
<li>Profile your code and be unforgiving about performance.</li>
<li>Write your own code.</li>
<li>Understand that programming isn&rsquo;t magic.</li>
<li>Understand the lower-level technologies you are building your work on.</li>
</ol>
<p>Read the manifesto yourself&mdash;after watching Justin&rsquo;s talk&mdash;and tell me what you think.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 21 December 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Be%20A%20Selfish%20Programmer">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>What I Learned From Advent of Code 2023</title>
      <link>https://brainbaking.com/post/2023/12/what-i-learned-from-advent-of-code-2023/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Mon, 18 Dec 2023 10:01:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/12/what-i-learned-from-advent-of-code-2023/</guid>
      
        
          <category domain="https://brainbaking.com/tags/programming languages">programming languages</category>
        
          <category domain="https://brainbaking.com/tags/advent of code">advent of code</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>I gave up after yesterday&rsquo;s quirky A* assignment. <a href="https://adventofcode.com/">Advent of Code</a> is an Advent calendar for programmers containing daily puzzle challenges in two parts. It was fun while it lasted, but my tight time constraints just can&rsquo;t deal with the increasing challenge as the calendar draws near Christmas Eve. I get stressed out if I miss a daily challenge: the thought of having to do two&mdash;or possibly, even more&mdash;in one day scares me. This, and the A* assignment that had me go round in circles for too long, just made me say <em>fuck it</em>.</p>
<p>As I approached the challenges, I wondered whether or not this was also a good opportunity to learn a new scripting language. I guess the answer again depends on the amount of daily free time you have. In my case, fighting with syntax and not knowing the definitive eloquent way to approach something in an ecosystem that is relatively new to me just took too much time. After trying out Ruby a few times, I reverted back to JavaScript, as the assignments themselves were already challenging enough. For the curious, <a href="https://git.brainbaking.com/wgroeneveld/adventofcode">my code repository is public</a>.</p>
<p>Quickly trying out syntax in the developer pane of a browser, such as <code>[...new Set([1, 1], [1, 2], [1, 1])]</code>, turned out to be key to a speedy victory. Like I mentioned in the <a href="https://brainbaking.com/post/2023/12/my-ideal-scripting-language/">my ideal scripting language</a> post, quick evaluation and <em>hackability</em> are important feats to have if you want to get something done in a timely manner. You can&rsquo;t abuse <code>Set</code> to filter out similar arrays, by the way, but you can cheat by <code>.toString()</code>-ing them. I cut a lot of corners to save time&mdash;as long as my unit test that verifies the example given in the assignment proved my algorithm worked, I didn&rsquo;t care.</p>
<p>Each Advent of Code assignment comes with two parts: part I is publicly available, and for part II, you have to create an account and sign in. Suffice to say, I skipped part II. Part II is usually the difficult part, where instead of input ranges in the hundreds, you&rsquo;re suddenly dealing with millions, meaning your brute force implementation will likely not work. However, if you only have a few hours a day (if that) to fiddle with a code assignment, and you also want to do this the Test First way, there&rsquo;s simply not enough time to do so.</p>
<p>After the first week, I realized I needed more tests than just the example verification. For example, on day 11, you&rsquo;re given a 2D map of the galaxy, with <code>#</code>s that mark a planet and <code>.</code>s marking empty spaces, like so:</p>
<pre tabindex="0"><code>...#......
.......#..
#.........
..........
......#...
.#........
.........#
..........
.......#..
#...#.....
</code></pre><p>The question is: what is the sum of the shortest paths between all the galaxies? Yet there&rsquo;s a twist: for each empty row and column (all filled in with <code>.</code>), the galaxy <em>expands</em>, and doubles in size to account for the years it takes for the light to reach the observatory. That means you&rsquo;ll have to (1) expand the galaxy and then (2) calculate the shortest paths. Instead of exposing a <code>solve(input)</code> and testing that, as I my approach was up to that day, I exposed both <code>expandGalaxy()</code> and <code>solve()</code>, meaning I can also unit test the first part of the assignment, and only then move on to the second part. This helped a lot in saving time chasing stupid bugs. The above galaxy map looks like this after expanding:</p>
<pre tabindex="0"><code>....#........
.........#...
#............
.............
.............
........#....
.#...........
............#
.............
.............
.........#...
#....#.......
</code></pre><p>Of course, part II comes along to ruin things: instead of doubling in size, it explodes and gets multiplied by a million. That means you can&rsquo;t simply redraw the map. Luckily, the solution is fairly simple: while calculating the shortest path, if it&rsquo;s in a part that gets expanded, just multiply the numbers. I&mdash;again&mdash;spent too much time getting the tests working for the first part, approaching things too visually.</p>
<p>It is interesting to check out others&rsquo; approaches to the daily challenges. On Mastodon, there&rsquo;s the <code>#adventofcode</code> hashtag where people occasionally share blog posts explaining their solution, like <a href="https://chasingdings.com/2023/12/11/advent-of-code-day-11-cosmic-expansion/">Tipa&rsquo;s galaxy expanding Python implementation</a> that had me laugh at my own approach. I started Advent of Code together with a friend <a href="https://github.com/linusdm/advent_of_code_2023/tree/main">that uses Elixir&rsquo;s LiveBook</a> to solve the assignments. Elixir&rsquo;s functional and <code>|&gt;</code> chaining nature gives for an interesting comparison with my JS implementation.</p>
<p>For me, the best part of Advent of Code was discussing the daily challenges and my approach with others. I learned more by checking out others&rsquo; code than by writing my own. But then my friend went on a short holiday trip and fell behind. And yesterday I learned that another friend said <em>fuck it</em> long before I did. We both want our code to work and can&rsquo;t put it down as long as the tests aren&rsquo;t green. That&rsquo;s great until it starts to feel like yet another stressful TODO item.</p>
<p>Advent of Code feels like an elimination race. A daily endurance run that, given all other things going on in life right now, I just can&rsquo;t keep up with. And that&rsquo;s okay. Next year I&rsquo;ll approach things differently. I won&rsquo;t care if I don&rsquo;t have the solution that same day, and I&rsquo;ll approach things more slower just to learn the syntax of another language. Perhaps I&rsquo;ll simply gather the assignments and do them in January and later, at my own pace.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 18 December 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: What%20I%20Learned%20From%20Advent%20of%20Code%202023">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>2023 In Video Games</title>
      <link>https://brainbaking.com/post/2023/12/2023-in-video-games/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Thu, 14 Dec 2023 13:00:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/12/2023-in-video-games/</guid>
      
        
          <category domain="https://brainbaking.com/tags/games">games</category>
        
          <category domain="https://brainbaking.com/tags/goty">goty</category>
        
          <category domain="https://brainbaking.com/tags/lists">lists</category>
        
          <category domain="https://brainbaking.com/tags/yearnote">yearnote</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>It&rsquo;s that time of the year&mdash;the time to publish the <a href="https://brainbaking.com/tags/yearnote">yearly notes</a> summarizing playtime statistics and providing a personal opinion on recent and vintage Game Of The Year (GOTY) contestants. <a href="https://brainbaking.com/post/2022/12/my-personal-game-of-the-year-awards">In 2022</a>, <em>TOEM</em> and <em>Shredder&rsquo;s Revenge</em> were examples of superb recent games, while <em>Axiom Verge</em> and <em>Looney Tunes Collector</em> scored high in the vintage list.</p>
<p>If you&rsquo;re interested in hearing what I have to say about each game, consult my dedicated gaming blog where the reviews reside, at <a href="https://jefklakscodex.com/games/">https://jefklakscodex.com/games/</a>.</p>
<p>I present to you a collage of the 39 games I (re)played this year in chronological order:</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2023/12/2023-in-video-games/../collage-2023.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2023/12/2023-in-video-games/../collage-2023.jpg" loading="lazy" title="A collage of the 2023 GOTY contestants. " data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>A collage of the 2023 GOTY contestants. </figcaption>
	
</figure>
</p>
<pre tabindex="0"><code>Lost In Play, Albion, Tactics Ogre: Reborn, Castlevania II: Belmont&#39;s Revenge, Castlevania Adventure, Buffy the Vampire Slayer: Chaos Bleeds, Castlevania IV, Castlevania Anniversary Collection, Pizza Tower, Tiny Toons: Babs&#39; Big Break, Tiny Toons: Montana&#39;s Movie Madness, Kirby&#39;s Dream Land, Turtles III: Radical Rescue, Kirby&#39;s Dream Land II, Looney Tunes Carrot Crazy, Dragon Warrior Monsters, Plants vs Zombies, Gobliiins 5, Might &amp; Magic: Clash of Heroes, Zoo Keeper, Puzzle Quest, Outlaws, Jazz Jackrabbit, Goblins Quest 3, Quake, Nightmare Reaper, Project Warlock, Captain Toad: Treasure Tracker, Freaky Trip, A Tiny Sticker Tale, New Super Mario Bros. 2, New Super Mario Bros, DUSK, Super Mario Land 2: Six Golden Coins, Dead Cells: Return to Castlevania, Commander Keen GBC, Super Mario Bros Wonder, Wario Land: Super Mario Land 3
</code></pre><p><a href="https://brainbaking.com/post/2022/12/my-personal-game-of-the-year-awards">As was the case last year</a>, I&rsquo;ve put my Analogue Pocket to good use: two rows consist almost entirely of Game Boy games. Handheld bite-size gaming suits my needs very well, especially since we have our daughter. This year, I did play a few (3)DS games&mdash;and for 2024, I&rsquo;m finally planning to tackle the <em>Dragon Quest VIII</em> 3DS port. Hopefully. Also, too little time was spent in DOS mode on my beloved 486!</p>
<p>Some more useless stats, based on user input from How Long To Beat (HLTB):</p>
<ul>
<li>total #games: 39</li>
<li>total hours: 400.7</li>
<li>average hours: 10.27</li>
<li>average a day: 1.13</li>
<li>longest game: <em>Tactics Ogre: Reborn</em> (56.4)</li>
<li>shortest game: <em>Kirby&rsquo;s Dream Land</em> (0.8)</li>
<li>Division by platform:
<ul>
<li>switch (12/39)</li>
<li>gameboy (9/39)</li>
<li>pc (8/39)</li>
<li>ds (4/39)</li>
<li>gameboycolor (3/39)</li>
<li>snes (1/39)</li>
<li>3ds (1/39)</li>
<li>gamecube (1/39)</li>
</ul>
</li>
</ul>
<p>These stats are even more inaccurate than last year as I replayed quite a few games without putting in the HLTB recommended hours. Additionally, <em>Tactics Ogre</em> indeed is a huge game, but I stopped grinding at 40 hours or so, further skewing total hours. For divisions by platform, this year, I whipped up a graph that summarizes the platforms and calculates an average score (rated on 5, see <a href="https://jefklakscodex.com/about/#rating">about the rating system</a>) for each platform:</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2023/12/2023-in-video-games/../goty-stats.png" class="lbox">
		<img src="https://brainbaking.com/post/2023/12/2023-in-video-games/../goty-stats.png" loading="lazy" title="A bar chart of (average) scores per platform." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>A bar chart of (average) scores per platform.</figcaption>
	
</figure>
</p>
<p>Most game names were too long to be fully readable on the x-axis, but the chart does learn us that on average, the Game Boy and Nintendo Switch games I played aren&rsquo;t bad but aren&rsquo;t great either. For Game Boy&mdash;and, as you can see, especially Game Boy Color&mdash;games, I kind of expect a high amount of jank, but for Switch games, my standards should probably be higher. A fair amount of one-offs (<em>Buffy</em> on the GameCube, <em>Castlevania IV</em> on SNES, etc) are present as well. I&rsquo;m surprised that on average, the PC games I played were rated among the highest!</p>
<p>Filtering all games that are scored as either <em>great</em> (4/5) or <em>amazing</em> (5/5), we end with the following lists, where I further cherry-picked the best of the best:</p>
<p>The <strong>Recent GOTY</strong> list:</p>
<ul>
<li>💖 Pizza Tower (pc; 2023)</li>
<li>💖 Super Mario Bros. Wonder (switch; 2023)</li>
<li>💖 Tactics Ogre: Reborn (switch; 2022) (I played this in 2023)</li>
</ul>
<p>The <strong>Vintage GOTY</strong> list:</p>
<ul>
<li>💖 Super Mario Land 2: 6 Golden Coins (gameboy; 1992)</li>
<li>💖 Kirby&rsquo;s Dream Land 2 (gameboy; 1995)</li>
<li>💖 Quake (switch; 1996/2021)</li>
<li>💖 Outlaws (pc; 1997)</li>
<li>💖 Goblins Quest 3 (pc; 1993)</li>
<li>💖 DUSK (switch; 2018)</li>
<li>💖 Plants vs. Zombies (pc; 2009)</li>
<li>💖 Might and Magic VIII (pc; 2000)</li>
</ul>
<p>Games that deserve a honorable mention but missed the lists by a slight margin: Lost in Play, New Super Mario Bros., Castlevania IV, Kirby&rsquo;s Dream Land, Might and Magic: Clash of Heroes.</p>
<p>For the actual single recent GOTY, my pick for 2023 is without a doubt <strong>💖 Pizza Tower</strong>. <a href="https://brainbaking.com/post/2023/03/pizza-towers-soundtrack-is-amazing/">Its amazing soundtrack</a> by itself is worth a nomination. I loved playing <em>Mario Wonder</em> together with my wife, but considering hundreds of people worked on it while <em>Pizza Tower</em> is a labor of love by a few indie devs, the choice is easy. 2023 was an amazing year for video games, but I almost never play games in the same year as they&rsquo;re released. <em>Tears of the Kingdom</em> will have to wait. Perhaps in 2024.</p>
<p>As for the vintage list, my top pick is <strong>💖 DUSK</strong>, an amazing nineties throwback shooter inspired by DOOM and Quake, again made by a very small team. I worked up to it by replaying Outlaws and Quake first, and it completely blew my mind. Being initially released in 2017 but ported to the Switch in 2021 (and finally, played by me in 2023), it&rsquo;s not exactly a new game, but not an old one either. My definitions of &ldquo;recent&rdquo; and &ldquo;vintage&rdquo; are admittedly a bit shaky.</p>
<p>I&rsquo;m excited to see what 2024 will bring to the table&mdash;the backlog is long enough&hellip;</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 14 December 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: 2023%20In%20Video%20Games">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>DOOM Turned Thirty</title>
      <link>https://brainbaking.com/post/2023/12/doom-turned-thirty/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Mon, 11 Dec 2023 09:45:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/12/doom-turned-thirty/</guid>
      
        
          <category domain="https://brainbaking.com/tags/doom">doom</category>
        
          <category domain="https://brainbaking.com/tags/geforce">geforce</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Yesterday, the video game DOOM turned thirty. On 10 December 1993, John Carmack, John Romero, Sandy Petersen, and the rest of the id Software crew completely changed the world by releasing the most violent and satisfying DOS shooter ever created. Hundreds of so-called &ldquo;DOOM clones&rdquo; followed, frantically trying to join in on the cash grabbing fun. Several controversial lawsuits and political statements were made (and dismissed and resurrected) because of all the gore.</p>
<p>But DOOM was more than a grown-up version of id&rsquo;s previous first-person shooting attempt, Wolfenstein 3D. DOOM was also a technical masterpiece, mainly thanks to Carmack&rsquo;s knack for implementing optimization techniques after sifting through academic papers on cutting edge computer vision rendering algorithms. Yet, if we compare screenshots of 1993&rsquo;s DOOM, thirty years ago, with the latest installment of the franchise, 2020&rsquo;s DOOM Eternal, you&rsquo;d think the latter comes from an entirely different universe:</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2023/12/doom-turned-thirty/../doom.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2023/12/doom-turned-thirty/../doom.jpg" loading="lazy" title="DOOM (1993), rendered on the Nintendo Switch." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>DOOM (1993), rendered on the Nintendo Switch.</figcaption>
	
</figure>
</p>
<p>Compare that pixel gore to this picture-perfect rendering of an outside scene in Eternal:</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2023/12/doom-turned-thirty/../doom-eternal.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2023/12/doom-turned-thirty/../doom-eternal.jpg" loading="lazy" title="DOOM Eternal (2020), rendered on the PC." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>DOOM Eternal (2020), rendered on the PC.</figcaption>
	
</figure>
</p>
<p>The depth of field and quality of the texture work is amazing. I even cheated by including a DOOM port, recently re-released for the Nintendo Switch, meaning the first screenshot&rsquo;s decorated black borders weren&rsquo;t there because of the odd 4:3 VGA resolutions back in the nineties, and the unusual crispness of the pixels need to be blurred drastically if you want to imagine how it was like playing DOOM in DOS <a href="https://brainbaking.com/post/2020/09/reviving-a-80486/">on the 80486</a>.</p>
<p>My 486-66 MHz has <code>8 MB</code> RAM and a Cirrus Logic VLB VGA card with a whopping <code>1 MB</code> onboard RAM. With that, I&rsquo;m able to play DOOM at 10 to 15 frames per second. By today&rsquo;s standards, we&rsquo;d call that <em>choppy as heck</em>, but back in the day, we were simply happy to be able to run something like that. <a href="https://help.bethesda.net/#en/answer/49836">DOOM Eternal&rsquo;s recommended specs</a>&mdash;to be able to run the game smoothly at nowadays standard 60 FPS for shooters&mdash;you&rsquo;d need an i7 core, <code>8 GB of RAM</code>, and a GeForce GTX 1080 with <code>8 GB</code> onboard RAM. Oh, and <code>50 GB</code> of disk space. From megabytes to gigabytes (multiply by around <em>a thousand</em>!) in thirty years in terms of pluggable memory doesn&rsquo;t sound like much, but then we ignore all kinds of other crazy technological advancements:</p>
<ul>
<li>From VLB (or even ISA!)-buses to super-fast PCI-express slots;</li>
<li>From simple SDRAM to super-fast DDR5 memory chips;</li>
<li>From relatively simple single-threaded CPU architectures to very complex multi-cores with several additional layers of caching;</li>
<li>From low-level DMA and VGA programming directly in C to high-level configuration done in specialized tools;</li>
<li>From pixel art by a one or two dedicated artists to 3D texture and modeling work done by multiple specialized teams;</li>
<li>From analog VGA&mdash;that was very new in &lsquo;93&mdash;to digital 4K HDMI;</li>
<li>From keyboard-only controls without jumping mechanics to laser-precision mouses with extreme maneuverability;</li>
<li>From local HDD installs to streaming media requiring a permanent and fast internet connection;</li>
<li>From early dail-up modems to broadband WiFi speeds;</li>
<li>&hellip;</li>
</ul>
<p>It&rsquo;s just crazy what can happen in &ldquo;just&rdquo; thirty years in the computing world. DOOM seems to perfectly exemplify the technological revolution of the last three decades, and I do wonder what&rsquo;s next for the coming three ones. In 1993, I was eight years old, so I grew up with that old stuff&mdash;and, thankfully, without the existence of a smartphone permanently connected to 4G. Since we have our daughter, we do worry more about the future of tech. When she will be eight, the unified Mac M5 chip coupled with a GeForce GTX 9999 might be the standard, and the above DOOM Eternal screenshot will probably look even more hyper-realistic. She&rsquo;ll grow up with that, like I grew up with the pixelated first screenshot. What will be in store for her for the coming thirty years?</p>
<p>I hope she&rsquo;ll be able to enjoy most of the enhancements as much as I did when I grew up, but I highly doubt she will. Not because of a lack of interest&mdash;that&rsquo;s her choice to make, not mine&mdash;but because of the ever-increasing complexity in these hardware and software systems. I can understand how a VGA signal works when you give me a schematic and I&rsquo;ll probably be able to program something for it. I can understand single-threaded CPU architectures and can probably write assembly or an emulator for it. But I have a lot of trouble understanding the internals of the digital 4K HDMI/USB-C output port, and even if you give me three months, I will never grasp even the basics of what&rsquo;s under the hood of modern CPU chips. That&rsquo;s a shame.</p>
<p>In that sense, I&rsquo;m a bit worried that we&rsquo;re over-engineering everything just <em>because we can</em>. Something that a single person could understand in 1993 now requires a dedicated team with ten years of experience. I have made simple sprite-based games in my free time, and even implemented a raycasting FPS engine with some DOOM &lsquo;93 similarities, but I have no hope of ever understanding the technical details of DOOM Eternal, let alone building something like that from scratch.</p>
<p>DOOM Turned Thirty, and I am mourning the loss of simple, relatively easy to understand, hackable technology that&rsquo;s inside the laptop I&rsquo;m writing this on.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 11 December 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: DOOM%20Turned%20Thirty">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>My Ideal Scripting Language</title>
      <link>https://brainbaking.com/post/2023/12/my-ideal-scripting-language/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Fri, 08 Dec 2023 20:51:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/12/my-ideal-scripting-language/</guid>
      
        
          <category domain="https://brainbaking.com/tags/programming languages">programming languages</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>December marks the beginning of the countdown to Christmas, traditionally via Advent calendars. For us programmer nerds, a special one exists called <a href="https://adventofcode.com/">Advent of Code</a> where each December day before Christmas we&rsquo;re treated with a challenging programming puzzle. This year a good friend convinced me to join in on the fun and so far I have been really enjoying these silly me-moments.</p>
<p>But which programming language do you pick for such a task? Aha, hurdle number one!</p>
<p>This isn&rsquo;t just a stupid question, but boils down to: which scripting/hacking/prototyping language do you fall back on? Over the years, I&rsquo;ve been back and forth various languages for this, and right now, I&rsquo;m solving Advent of Code in vanilla JavaScript, but I don&rsquo;t think it&rsquo;s the best pick. I&rsquo;ve had this debate with myself before when I was a jury member for the <a href="https://www.vlaamseprogrammeerwedstrijd.be/">Vlaamse Programmeerwedstrijd</a> (<em>Flemish Programming Contest</em>) where similar short and cryptic assignments appeared, and where I used JS, Kotlin, Go, Python, and a bit of Ruby.</p>
<p>What makes a great scripting language? I suppose that&rsquo;s a bit of a personal question and will boil down to preference&mdash;hence the title of this post is <em>my</em> ideal scripting language. Nonetheless, I&rsquo;ll try to unravel what I am looking for when coding smaller scripts.</p>
<p><strong>Dynamics</strong>. If I&rsquo;m scripting, I don&rsquo;t have the patience to think about types, nor about possible incorrect type inferences. The programming language should be dynamically typed by nature.</p>
<p><strong>Quick Evaluation</strong>. If I&rsquo;m scripting, I don&rsquo;t have the patience to wait for a compilation and don&rsquo;t want to execute binaries<sup id="fnref:1"><a href="https://brainbaking.com/post/2023/12/my-ideal-scripting-language/#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>. Additionally, it should be easy to execute the script, parse the results, etc.</p>
<p><strong>Introspective</strong>. It should be easy to quickly try out different snippets, to gradually cobble together something working. That means a command-line based REPL at minimum, or more ideally an integrated evaluative environment that&rsquo;s easy to work with such as any browser&rsquo;s developer console or <a href="https://livebook.dev/">Elixir&rsquo;s Livebook</a>.</p>
<p><strong>Functional</strong>. I like <code>map()</code>/<code>filter()</code>/<code>reduce()</code> chaining and I hate it that I can&rsquo;t do that in Go&mdash;at least not without shimming my own. I never liked the way Python approached these either. That doesn&rsquo;t mean that the scripting language should be fully functional. On the contrary, I still want to be able to mutate things if I can&rsquo;t get things done in another way given the time constraints.</p>
<p><strong>Easy to Read</strong>. A requirement of any programming language, but as during hacking I tend to be a bit less clean, I don&rsquo;t want to stare at syntax and wonder what that was for again (I&rsquo;m sorry Perl). Again, chaining <code>.map()</code> for me is easier to read than Python&rsquo;s <code>map()</code> where you&rsquo;ll have to wrap around functions.</p>
<p><strong>Batteries Included</strong>. As the famous Python saying goes&hellip;</p>
<p><strong>Unit Testing Included</strong>. To extend the previous point, I want to quickly and easily be able to write a few unit tests to for example verify the Advent of Code&rsquo;s example input/expected output, and I don&rsquo;t want to bring in external dependencies just for that. Go&rsquo;s built-in test suite is great, and I recently discovered Node also <a href="https://nodejs.org/api/test.html">comes with a test runner</a>.</p>
<p>I&rsquo;m a bit torn on debugging capabilities. Thanks to unit tests and quick evaluation, and due to the limited size and scope of scripts, I find myself needing these less. Languages that compile to other languages (anything on op of JS) or sit on top of the JVM (such as Groovy) do make this more complex.</p>
<p>And then there are requirements I don&rsquo;t care about such as speed (of execution) and ease of low-level (pointer) access.</p>
<hr>
<p>Given the above requirements, most languages I am familiar with are disqualified, such as C, C++, C#, Java, Go, Kotlin, Groovy. Of course, (most of) these languages aren&rsquo;t designed with scripting in mind. The following languages&mdash;to a certain degree&mdash;meet the requirements: JS, Ruby, Python, PHP? I&rsquo;d love to learn Elixir or Lua and dive deeper into a Lisp dialect or even the <a href="https://pharo.org/">Pharo</a> &ldquo;immersive programming experience&rdquo; to see whether or not I should start switching to something else besides vanilla JS.</p>
<p>It&rsquo;s interesting to read others&rsquo; opinions on their ideal language. In GOTO 2021, Richard Feldman and Erik Doernenburg <a href="https://gotopia.tech/articles/152/the-ideal-programming-language">discussed their ideal general-purpose programming language</a>, where Elm and Rust are the main stars. But when it comes to scripting, Python&rsquo;s huge community, built-in batteries, and ubiquitousness is admittedly very hard to beat, even though I prefer Ruby&rsquo;s <code>[].size</code> over Python&rsquo;s <code>len([])</code>. As an aside, if you want to entertain yourself on a rainy afternoon, try to search for &ldquo;ruby vs python&rdquo; and enjoy the bashing.</p>
<p>It looks like a lot of exciting languages I haven&rsquo;t played with enough also fit the bill. What is your favorite scripting language? Hopefully I&rsquo;ll be wielding another tool for Advent of Code 2024!</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Modern languages such as <a href="https://nim-lang.org/">Nim</a> offer ease-of-use features that lessen the pain of compiling, so I&rsquo;m not completely set on this one.&#160;<a href="https://brainbaking.com/post/2023/12/my-ideal-scripting-language/#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 8 December 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: My%20Ideal%20Scripting%20Language">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Favorites of November 2023</title>
      <link>https://brainbaking.com/post/2023/12/november-2023/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Tue, 05 Dec 2023 14:20:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/12/november-2023/</guid>
      
        
          <category domain="https://brainbaking.com/tags/metapost">metapost</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>After Inktober and November&rsquo;s National Novel Writing Month, this time it&rsquo;s <a href="https://dosember.com/">DOSember</a>, a month long of DOS game streaming on the Twitch community! Screw the classic holiday fanfare, let&rsquo;s have a wonderful DOSember instead. I haven&rsquo;t participated in the <a href="https://www.dosgameclub.com/">DOS Game Club</a>&rsquo;s monthly sessions lately, but this month we&rsquo;re tackling Lemmings, so I might go ahead and double-check the state of my yellowed serial mouse. Judging from the unexpected influx of traffic to last week&rsquo;s <a href="https://brainbaking.com/post/2023/11/fpgas-and-the-renaissance-of-retro-hardware/">Renaissance of FPGAS</a> article, I&rsquo;d say the interest in vintage hardware and software is still very much alive.</p>
<p>Previous month: <a href="https://brainbaking.com/post/2023/11/october-2023">October 2023</a>.</p>
<h2 id="books-ive-read">Books I&rsquo;ve read</h2>
<p>Yearning for something digestible in a world far far away, I started re-reading the <em>Malloreon</em> chronicles written by <a href="https://www.eddingschronicles.com/index.html">David Eddings</a>. He has written tons of books set in the same fantasy world, and I honestly liked the earlier series better, but had these still lying around. Eddings&rsquo; books are a great way to wind down after all that heavy non-fiction artillery.</p>
<p>Thanks to a reader of my <em>Save Sourdough</em> book, I bought Thomas Treffi-Chambelland&rsquo;s <a href="https://bread-editions.com/products/traite-de-boulangerie-au-levain">Sourdough baking: A Treatise</a>, my first bread-related purchase in a long time. Thomas&rsquo; biologist background is clearly visible as the work starts off with a hefty amount of theory which only makes books such as this one more interesting. I haven&rsquo;t gotten far yet but hope that it will soon reinvigorate my baking experiments.</p>
<h2 id="games-ive-played">Games I&rsquo;ve played</h2>
<p>Most of this month&rsquo;s gaming was devoted to Mario&rsquo;s wonderful (ha!) return to his 2D platforming roots. But before blindly jumping into <a href="https://jefklakscodex.com/games/switch/super-mario-bros-wonder/">Super Mario Bros. Wonder</a>, I wanted to replay a few Game Boy oldies such as <a href="https://jefklakscodex.com/games/gameboy/super-mario-land-2/">Super Mario Land 2: Six Golden Coins</a>. The <em>Wario Land</em> franchise is up next, even though I know all levels by heart.</p>
<p>Did you know <a href="https://jefklakscodex.com/games/gameboycolor/commander-keen/">Commander Keen</a> was published on the Game Boy Color? It&rsquo;s not what you think it is, however: it&rsquo;s a completely different game with <em>some</em> DOS Keen vibes slapped on, such as enemy design, and of course the inclusion of the pogo stick. I loved the 8-bit chiptune soundtrack by by Commodore 64 music chip expert Mark Cooksey, but the main gameplay mechanics raised more than a few eyebrows, so play it at your own risk. For the curious, this is what you&rsquo;re subscribing to:</p>
<figure>
	<a href="https://www.youtube.com/watch?v=OpRpBDV5g4A" class="lbox">
		<img loading="lazy" class="img-responsive" src="/img/yt/OpRpBDV5g4A.jpg" alt="YouTube video OpRpBDV5g4A">
	</a>
</figure>

<p>I also got tricked into buying <a href="https://jefklakscodex.com/games/switch/dead-cells-return-to-castlevania/">Dead Cells: Return to Castlevania</a> but forgot that I hate most roguelike/roguelite games&mdash;this one included.</p>
<h2 id="selected-blog-posts">Selected (blog) posts</h2>
<ul>
<li>Flemish Radio 1 published a <a href="https://radio1.be/lees/deze-boeken-moet-je-lezen-in-het-middelbaar-onderwijs">Deze boeken moet je lezen in het middelbaar onderwijs!</a> (<em>you have to read these books in high school!</em>) list and it&rsquo;s making my head spin. I presume they forgot to mention to pick a few and not plow through everything&hellip;</li>
<li>Justin Searls talks at RailsConf 2019 about <a href="https://blog.testdouble.com/talks/2019-05-08-the-selfish-programmer/">selfish programming</a>, a way to learn by building for yourself.</li>
<li><a href="https://creativegood.com/blog/23/andreessen-love-doesnt-scale.html">Love doesn&rsquo;t scale</a> according to Mark Hurst&mdash;a critique on Marc Andreessen’s Techno-optimist Manifesto.</li>
<li>If you want to have a laugh, you can read Sanjay Brahmawar&rsquo;s <a href="https://blog.softwareag.com/super-ipaas-future-of-enterprise-integration">Super iPaaS</a> vision of the Software AG&rsquo;s development future. Cloud-first! Leverage the power of generative AI! Sigh.</li>
<li>Horst Gutmann celebrates <a href="https://zerokspot.com/weblog/2023/11/28/20-years-of-zerokspot/">20 years of blogging</a>, summarizing the gradual evolution of Zerokspot.com. Congrats!</li>
<li>Kev Quirk set up a <a href="https://kevquirk.com/penpals">pen pals blogging system</a> that I&rsquo;ll be keeping an eye on. I subscribed and am planned in for March 2024.</li>
<li>Wesley Aptekar-Cassels tells us why <a href="https://blog.wesleyac.com/posts/why-not-javascript-cdn">we should avoid using JavaScript CDNs</a>.</li>
</ul>
<h2 id="other-random-links">Other random links</h2>
<ul>
<li><a href="https://chimeraos.org/about/">ChimeraOS</a> is an OS that provides an out of the box couch gaming experience&mdash;it basically transforms your Steam library into a console. I didn&rsquo;t know it existed, cool!</li>
<li>If you&rsquo;re on the lookout for a robust plain-text accounting app, <a href="https://hledger.org/">Hledger</a> has got you covered.</li>
<li><a href="https://binarynights.com/">Forklift 4</a> is an interesting alternative to MacOS&rsquo; built-in Finder I have yet to try out.</li>
<li><a href="https://keeperfx.net/screenshots">KeeperFX</a> is an open-source remake &amp; fan expansion to Dungeon Keeper. It hit version 1.0 in November! (Thanks, <a href="https://virtualmoose.org/2023/11/12/keeperfx-1-0-released/">Michael</a>)</li>
<li><a href="https://pudding.cool/pudding-cup/">The Pudding Cup</a> is an award for the best visual and data-driven stories of 2023, which will likely inspire your information visualization thinking mode.</li>
<li><a href="https://www.gnu.org/software/guile/">Guile</a> looks like an interesting Scheme implementation and extension language platform that I&rsquo;d want to play with soon.</li>
<li>Want to run a large language model such as Llama2 locally? Download <a href="https://ollama.ai/">Ollama</a> and off you go.</li>
<li>Remember big box PC games? If you&rsquo;re the kind of person who threw away these cardboard boxes, no worries: you can marvel at the sizable artwork online via <a href="https://bigboxcollection.com/">bigboxcollectin.com</a>.</li>
</ul>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 5 December 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Favorites%20of%20November%202023">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Current Trends In Local Software Development Job Advertisements</title>
      <link>https://brainbaking.com/post/2023/11/local-trends-in-software-development-ads/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Thu, 30 Nov 2023 09:30:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/11/local-trends-in-software-development-ads/</guid>
      
        
          <category domain="https://brainbaking.com/tags/jobs">jobs</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>As I once again find myself staring at local software dev job ads, I can&rsquo;t help but wonder: <em>what are the current trends in local software dev ads?</em> In other words, can we identify patterns by data mining job ads? The answer is, of course, yes, but the results are disappointingly comparable with the last time I was flipping through ads, in 2014&mdash;nine years ago! Java programming jobs are still the most popular ones, followed by the .NET stack, and HR still thinks recurring buzzwords such as <em>agile</em> and <em>teamwork</em> should be heavily sprinkled throughout the ad descriptions. Let&rsquo;s take a closer look.</p>
<h2 id="data-mining-approach">Data mining approach</h2>
<p>Instead of digging through company-specific <code>/jobs</code> pages, I decided to scrape from the aggregate giant <code>indeed.com</code>, except that scraping wasn&rsquo;t that easy as the whole site is a big ball of JavaScript mud&mdash;presumably to make scraping more difficult. Most <a href="https://github.com/topics/indeed-scraping">GitHub Indeed scraping projects</a> stopped working because of that. I approached this semi-automatically by just pasting snippets of JS code in the browser, although WebDriver-alike headless browser steps could be taken to fully automate this. My IP was blocked after a few automated <code>curl</code> attempts: their rate-limiter is very aggressive.</p>
<p>The Indeed URL used was <a href="https://be.indeed.com/jobs?q=software+developer&amp;l=hasselt&amp;start=1">https://be.indeed.com/jobs?q=software+developer&amp;l=hasselt&amp;start=1</a> meaning I searched for &ldquo;<strong>software developer</strong>&rdquo; near (within 25 miles) location &ldquo;<strong>Hasselt</strong>&rdquo;, near where I live. The results are paginated; fiddling with the start parameter (multiply by ten) flips to the next 15 results. Clickable small cards summarizing search results are presented to the visitor, but these do not contain the full ad description, rendering the data useless. Instead, we&rsquo;re interested in the <code>job_id</code> and have to find the rest of the info in a separate URL, <a href="https://be.indeed.com/viewjob?jk=jobid">https://be.indeed.com/viewjob?jk=jobid</a>. Execute this JS:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-js" data-lang="js"><span style="display:flex;"><span>[...<span style="color:#728e00">document</span>.<span style="color:#728e00">querySelectorAll</span>(<span style="color:#7f8c8d">&#39;.tapItem&#39;</span>)].<span style="color:#728e00">map</span>(<span style="color:#728e00">itm</span> =&gt; 
</span></span><span style="display:flex;"><span>  [...<span style="color:#728e00">itm</span>.<span style="color:#728e00">classList</span>].<span style="color:#728e00">find</span>(<span style="color:#728e00">cls</span> =&gt; <span style="color:#728e00">cls</span>.<span style="color:#728e00">indexOf</span>(<span style="color:#7f8c8d">&#39;job_&#39;</span>) <span style="color:#728e00">===</span> <span style="color:#8a7b52">0</span>)
</span></span><span style="display:flex;"><span>    .<span style="color:#728e00">replace</span>(<span style="color:#7f8c8d">&#39;job_&#39;</span>, <span style="color:#7f8c8d">&#39;https://be.indeed.com/viewjob?jk=&#39;</span>)
</span></span><span style="display:flex;"><span>)
</span></span></code></pre></div><p>And simply click on each link by holding down <code>CMD</code> to open them in new tabs. For each tab, execute this JS:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-js" data-lang="js"><span style="display:flex;"><span><span style="color:#00979d">const</span> <span style="color:#728e00">job</span> <span style="color:#728e00">=</span> {
</span></span><span style="display:flex;"><span>  <span style="color:#728e00">title</span><span style="color:#728e00">:</span> <span style="color:#728e00">document</span>.<span style="color:#728e00">querySelector</span>(<span style="color:#7f8c8d">&#39;.jobsearch-JobInfoHeader-title&#39;</span>).<span style="color:#728e00">textContent</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#728e00">location</span><span style="color:#728e00">:</span> <span style="color:#728e00">document</span>.<span style="color:#728e00">querySelector</span>(<span style="color:#7f8c8d">&#39;.jobsearch-CompanyInfoWithoutHeaderImage&#39;</span>).<span style="color:#728e00">textContent</span>,
</span></span><span style="display:flex;"><span>  <span style="color:#728e00">description</span><span style="color:#728e00">:</span> <span style="color:#728e00">document</span>.<span style="color:#728e00">querySelector</span>(<span style="color:#7f8c8d">&#39;#jobDescriptionText&#39;</span>).<span style="color:#728e00">textContent</span>
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span><span style="color:#728e00">job</span>
</span></span></code></pre></div><p>Resulting in a JSON object containing the title, location, and full description. Right-click, select &ldquo;copy object&rdquo;, and paste in your text editor, adding a comma (<code>,</code>) in-between results to form a giant result array. Fifteen minutes of mindless copy-pasting later, you&rsquo;ve got yourself 80+ scraped jobs. Not bad. After that, it&rsquo;s a matter of finding occurrences of terms, but first, a few extra steps of data cleaning are needed:</p>
<ol>
<li>Remove false positives. Mine contained titles like &ldquo;business manager&rdquo;, &ldquo;SAP consultant&rdquo;, or &ldquo;product owner&rdquo;.</li>
<li>Remove additional &ldquo;ad spam&rdquo;. Some descriptions like to cram in as much cool terms as possible, as if it would increase the &ldquo;job ad SEO&rdquo;, muddling our results.</li>
<li>Enrich data if needed. I manually analyzed each one and added flags <code>recruitment</code> and <code>consultancy</code>.</li>
</ol>
<p>Then, <code>jobs.filter(x =&gt; x.description.toLowerCase().indexOf(code) &gt;= 0)</code> usually does what it needs to do.</p>
<h2 id="results">Results</h2>
<p>In total, 68 of the 75 mined job ads were deemed relevant and included, of which a depressingly high number were either consultancy-based (33.8%) or posted via a specialized recruitment agency (32.4%). This means 66.2% of the jobs are not completely what they&rsquo;re pretending to be. We&rsquo;re off to a great start here.</p>
<p>Further programming language and general term usage trends are summarized in the following figure:</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2023/11/local-trends-in-software-development-ads/../jobtrends.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2023/11/local-trends-in-software-development-ads/../jobtrends.jpg" loading="lazy" title="Left: programming language trends (in occurrence %). Right: a word cloud of most used terms." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>Left: programming language trends (in occurrence %). Right: a word cloud of most used terms.</figcaption>
	
</figure>
</p>
<p>A few highlights of the above bar chart:</p>
<ul>
<li>50% of the job ads are java-based, of which the Spring framework is mentioned 33% and Hibernate 9%.</li>
<li>The second most popular language stack is, unsurprisingly, .NET/C#, at 27%. That&rsquo;s a stark popularity drop, by the way!</li>
<li>Python and Go jobs are few and far between.</li>
<li>Only one ad falsely advertised Kotlin (a job as a &ldquo;Technical Software Development Lead&rdquo;: &ldquo;Experience with Android Studio / Java / Kotlin is a Plus&rdquo;). None of them mentioned Rust, Elixir, Scala, or anything else exciting.</li>
<li>Some more tech term matches:
<ul>
<li><code>cloud</code>: 38% (<code>azure</code>: 22%, <code>aws</code>/<code>amazon</code>: 15%)</li>
<li><code>sql</code>: 28% (<code>nosql</code>: 3%, <code>mongo</code>: 6%, <code>graphql</code>: none!)</li>
<li><code>angular</code>: 24% (<code>react</code>: 19%, <code>vue</code>: 4%)</li>
<li><code>AI</code>: 7%</li>
</ul>
</li>
</ul>
<p>The majority of the ads are tailored specifically for one (backend) programming language; I encountered none explicitly asking for a generalist. Some mention the whole stack; e.g. &ldquo;The technology stack is Java-based docker containers running on Openshift&rdquo; or &ldquo;Development of advanced solutions on our new platform with the newest tools and technologies on a Google stack&rdquo;.</p>
<p>The word cloud&mdash;courtesy of <a href="https://github.com/daidr/node-wordcloud">node-wordcloud</a>&mdash;is only partially usable as some job ads are posted in English while most are written in Dutch, meaning I&rsquo;d have to translate them in order to group translations of the same word. Still, as you can see, English loanwords&mdash;the bulk of the industry&rsquo;s buzzwords&mdash;easily came floating on top. I had to cut out words smaller than 3 characters, numbers, and words matching against a custom ignore list for terms like &ldquo;such&rdquo;, &ldquo;with&rdquo;, &ldquo;our&rdquo;, &ldquo;from&rdquo;, &ldquo;join&rdquo;, and so forth.</p>
<p>Interestingly, the term <code>creativ</code> (creativity, creative, the Dutch alternative <em>creativiteit</em>) was found in <code>19%</code> of all job ads, for instance:</p>
<blockquote>
<p>You have an analytical and creative mind and can get things done.</p>
</blockquote>
<p>Or:</p>
<blockquote>
<p>Within our department, there is a lot of attention for innovation and creativity.</p>
</blockquote>
<p>These sentences basically mean nothing and are just there to entice you to apply. Creativity is usually put forward as a requirement for problem-solving, but only mentioned in passing, although I was surprised that the occurrence percentage was that high.</p>
<p>Diagonally scanning each job ad description is very sobering. The <a href="https://brainbaking.com/post/2023/07/logo-convergence-design-mistakes/">age of average effect</a> is very much present here: all texts are written in the same obnoxious way, with company cultures and technical opportunities no doubt made to sound better and more interesting than they actually are. You can&rsquo;t derive this from the texts, but I used to work for quite a few of the companies that ended up in the result set, so let&rsquo;s call this anecdotal but relevant evidence.</p>
<h3 id="compared-to-global-trends">Compared to global trends</h3>
<p>When we compare these results with Stack Overflow&rsquo;s <a href="https://survey.stackoverflow.co/2023/#technology-most-popular-technologies">2023 Developer Survey</a>, querying most popular technologies, Python and even TypeScript beats the crap out of Java (which is, at 30.55%, still more popular than C#, at 27.62%&mdash;even for the subgroup of professional developers). Admittedly, we&rsquo;re comparing apples with oranges here, as there&rsquo;s a big difference between a popular language and a language you have to work with on your day job. In addition, Stack Overflow also caters to data scientists and other hackers that might pass the survey&rsquo;s &ldquo;professional developer&rdquo; category.</p>
<p>AWS at 48.62% is much more popular than Azure at 26.03%, while in my findings, more jobs require you to work with Azure. Same thing for React: 40.58%, with Angular lagging (far!) behind at 17.46%. Another striking difference, as I found more jobs in my neighborhood for Angular.</p>
<p>Inspecting the <a href="https://2022.stateofjs.com/en-US/libraries/">State of JS 2022 Libraries</a>, this becomes even more painful, as Angular has an overwhelming amount of negative opinions and its adoption rate is slowing down. I guess we in Belgium&mdash;or at least the companies in my vicinity, probably building enterprise services&mdash;are quite slow to react (ha!). Although to be honest, I&rsquo;m not sure how trustworthy this data is, since <em>State of JS</em> also ranks PHP and even Rust above .NET/C# in the question &ldquo;Which other programming languages do you use?&rdquo;. For reference, 17.5% respondents are from USA, and only 1.1% from Belgium. Stack Overflow lacks any meaningful demographics information.</p>
<p>Hacker News&rsquo; <a href="https://www.hntrends.com/2023/june.html">2023 Hiring Trend Analysis</a> contains graphs of top 10 programming languages. Since 2020, both Python and TypeScript are comfortably on top, with even Go coming in at third (!). Java sits somewhere at the bottom, and .NET/C# isn&rsquo;t even mentioned. Again, nothing about demographics, but considering AI is the most popular term/trend right now, while it&rsquo;s not in our ads, I&rsquo;d say its majority is again USA.</p>
<p>Turning to academic papers, publications like <em>What Soft Skills Does the Software Industry Really Want? An Exploratory Study of Software Positions in New Zealand</em> by Galster et al. (2022) categorize the soft side of the terms used in job ads, such as:</p>
<ul>
<li><code>Communication</code>: 33%, <code>Team</code>: 20%. Well, duh, see the word cloud!</li>
<li><code>Analytical</code>: 15%</li>
<li><code>Creativ</code>: 1%. Ouch! Luckily, 17% of the ads were categorized under problem-solving.</li>
</ul>
<hr>
<p>In a 2023 Europe-specific report entitled the <a href="https://www.offerzen.com/reports/software-developer-europe#software_engineer_skills">State of Software Developer Nation</a> by Offer Zen, Java is the third most used language, but Go and Python are the most wanted programming languages. I guess this confirms all of the above and can serve as a nice conclusion: we&rsquo;re all dying to program with tools that don&rsquo;t scream enterprise yet we&rsquo;re all stuck with job (ads) that require us to work in typical corporate software development environments that haven&rsquo;t really changed in the last ten years.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 30 November 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Current%20Trends%20In%20Local%20Software%20Development%20Job%20Advertisements">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>FPGAs And The Renaissance Of Retro Hardware</title>
      <link>https://brainbaking.com/post/2023/11/fpgas-and-the-renaissance-of-retro-hardware/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Mon, 27 Nov 2023 10:12:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/11/fpgas-and-the-renaissance-of-retro-hardware/</guid>
      
        
          <category domain="https://brainbaking.com/tags/hardware">hardware</category>
        
          <category domain="https://brainbaking.com/tags/fpga">fpga</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Almost every few weeks, a new and exciting retro hardware project is announced. These are truly great times for retro computing enthusiasts. How come these hobby projects explore in popularity lately, besides the obvious growth in demand and the availability of crowdfunding platforms such as Kickstarter that at least partially remove the stress of funding? One answer could be the rapid evolution and availability of FPGA chips.</p>
<p>An FPGA or <em>Field Programmable Gate Array</em> is a chip that can be &ldquo;programmed in the field&rdquo;&mdash;unlike a typical ASIC or <em>Application-Specific Integrated Circuit</em> chip that is engineered to do only one thing. This means that if you get your hands on an FPGA board, you can flash the chip on it to act like a Game Boy. Or a Mega Drive. Or a Commodore 64. Or anything else you can possibly think of, within the limits of that particular board.</p>
<p>Xilinx, one of the most popular manufacturers of such chips, <a href="https://www.xilinx.com/products/boards-and-kits/device-family/nav-artix-7.html">sells development and evaluation kits</a> at very acceptable prices, depending on the power of the chip you&rsquo;re after. If you&rsquo;re just looking to mess around with the FPGA concept, you can treat yourself with a very hackable <a href="http://www.pynq.io/">PYNQ board</a>. These boards come with all manner of trinkets&mdash;8 DMA channels, high-and low-bandwidth controllers, an FPA comparable to the above Artix-7, 512 MB DDR3&mdash;and are specifically built for rapid prototyping and teaching. We use them at our faculty to introduce students to various concepts of digital electronic design and hardware/software co-design.</p>
<p>Even if you&rsquo;re not that technical, I&rsquo;m sure you&rsquo;ve at least heard of the term &ldquo;FPGA&rdquo;, as it has the tendency to pop up everywhere, especially in groups discussing retro computing. Why? Because you don&rsquo;t need a powerful FPGA chip to emulate an old embedded 8-bit CPU. In other words: slap an FPGA on a board, flash it to perfectly emulate your favorite retro hardware, and you&rsquo;ve got yourself a beefed up Game Boy/Commodore/Whatever! A few examples of FPGA-enabled retro hardware projects I&rsquo;ve encountered in the last few years:</p>
<ul>
<li><a href="https://mega65.org/">Mega 65</a>, a realization of the C65 but running 40x faster;</li>
<li><a href="https://www.specnext.com/">ZX Spectrum Next</a>, the next generation ZX Spectrum with backwards compatibility for old accessories including tape recorders;</li>
<li>Anything that <a href="https://www.analogue.co/">Analogue.co</a> puts out: The <a href="https://brainbaking.com/post/2022/04/analogue-pocket/">Analogue Pocket</a>, The Mega ST, &hellip;;</li>
<li>The <a href="https://www.retrorgb.com/mister.html">MiSTer</a> project used to perfectly emulate and/or upscale analog signals;</li>
<li><a href="https://gc-loader.com/">GC Loader</a>, the DVD drive replacement for the GameCube;</li>
<li>In ever-increasing emulation GitHub Projects targeting Xilinx FPGA boards <a href="https://github.com/zf3/nes260">such as this NES one</a>.</li>
</ul>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2023/11/fpgas-and-the-renaissance-of-retro-hardware/../mega65board.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2023/11/fpgas-and-the-renaissance-of-retro-hardware/../mega65board.jpg" loading="lazy" title="The Mega65 board housing a Xilinx Artix-7 chip (in the middle)." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>The Mega65 board housing a Xilinx Artix-7 chip (in the middle).</figcaption>
	
</figure>
</p>
<p>Most of these projects are open-source inviting an endless horde of retro enthusiasts hacking away and building/improving upon emulation systems. For example, the Analogue Pocket was initially made to perfectly emulate Game Boy family games, but the community already developed an impressive amount of what they call &ldquo;cores&rdquo; that suddenly turn your Pocket into a handheld (S)NES, Mega Drive, or anything your heart desires&mdash;usually derived from earlier MiSTer work.</p>
<p>Most hardware that&rsquo;s perfectly emulated right now has been fully reverse-engineered, with ample of documentation available. We now perfectly know how the Game Boy internally works, which as a software engineer I can use to write software that emulates the system and is able to boot <code>.GB</code> ROMs, but my colleagues as hardware engineers can use to program an FPGA so that the system is emulated in hardware instead of in software. The difference for the Game Boy happens to be minimal because our ASIC hardware&mdash;the CPU and RAM in your PC&mdash;is more than powerful enough, and Game Boy emulators have been around for twenty plus years.</p>
<p>However, for other either more finicky (think CPU cycle timing, vertical/horizontal refresh rates, RTC clocks, &hellip;) or more demanding systems, FPGAs usually outperform software emulation as being closer to the bare metal eliminates a lot of latency and makes it easier to implement specific components. Of course, companies like Analogue love to convince us that their FPGA-based game consoles have nothing to do with the laden concept &ldquo;emulation&rdquo;, but instead perfectly reimplement the original hardware design, tossing in additional and more modern bells and whistles.</p>
<p>If you were to play the NES game <em>Mario Bros. 3</em> on your official NES Mini, you would be playing it through a software emulator on an Allwinner R16 4x Cortex A7 ASIC system-on-a-chip with 256 MB DDR3 RAM running on 512 MB flash storage. That quad core is, in essence, a conventional mini-computer that&rsquo;s more than powerful enough to emulate 8-bit systems. But if you were to play <em>Mario Bros. 3</em> using an FPGA core on the MiSTer or the Analogue Pocket, that software layer is absent: its hardware behaves exactly like the original NES did.</p>
<p>For those interested in slight latency or image quality differences of specific hardware systems, YouTube has got you covered, hosting a plethora of <a href="https://www.youtube.com/watch?v=StqrUPawyJI">MiSTer FPGA vs Mednafen emulation</a>-alike videos, in this case taking a close look at PC Engine/TurboGrafx 16 software vs. hardware emulation. I honestly don&rsquo;t think I would notice the difference when playing.</p>
<hr>
<p>These useless software vs. hardware emulation debates do neglect one important aspect: new (old?) FPGA-based retro hardware is more than just recreating the old CPU core. It&rsquo;s about the physicality of the hardware itself. It&rsquo;s about plugging in that dusty cart you so carefully preserved all these years. It&rsquo;s about seeing if that Spectrum tape still works and getting excited by the pressure of the authentic-feeling keyboard that comes with the device. It&rsquo;s about <a href="https://en.wikipedia.org/wiki/Retrobright">retrobrighting</a> your old plastic case to compare old with new! It&rsquo;s about the hackability of the new (old?) system that comes with a thick BASIC or PASCAL-like programming manual that is supposed to reinvigorate eighties bedroom game programming.</p>
<p>Happy FPGA hacking/playing!</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 27 November 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: FPGAs%20And%20The%20Renaissance%20Of%20Retro%20Hardware">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Combating Spam With Email Obfuscation</title>
      <link>https://brainbaking.com/post/2023/11/combating-spam-with-email-obfuscation/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Wed, 22 Nov 2023 10:30:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/11/combating-spam-with-email-obfuscation/</guid>
      
        
          <category domain="https://brainbaking.com/tags/spam">spam</category>
        
          <category domain="https://brainbaking.com/tags/email">email</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>The articles here at <em>Brain Baking</em> end with a footer that contains the author bio and ways to contact me, including my preferred channel, email. Instead of including a simple <code>&lt;a href='mailto:blah@blieh.com' /&gt;</code> link, however, the email link, when clicked on, is being replaced by the actual email address with the help of a small JavaScript function. Why?</p>
<p>The question shouldn&rsquo;t be <em>why</em>&mdash;everyone knows why: to help keep spam bots at bay. The question instead should be <em>how</em>, as recent emails clearly indicate that the current method still isn&rsquo;t waterproof. It&rsquo;s not that I receive heaps of spam on a daily basis: <em>Brain Baking</em> simply isn&rsquo;t popular enough for that. Still, I&rsquo;d like to quickly go over a few methods you can employ to keep bots from scraping off email addresses too easily from your website. Others like <a href="https://spencermortensen.com/articles/email-obfuscation/">Spencer Mortensen</a> tested these methods by setting up different email addresses and monitoring the incoming amounts of spam. Silvan Mühlemann even <a href="https://web.archive.org/web/20110218074628/http://techblog.tilllate.com/2008/07/20/ten-methods-to-obfuscate-e-mail-addresses-compared/">waited 1.5 years</a> to see the impact of each approach!</p>
<p>The easiest method, applied as early as the dawn of the internet, is to simply <strong>remove a few characters</strong> or to spell out the <code>@</code> symbol. Instead of putting up a link, you write: &lsquo;contact me via <code>info at mydomain dot com</code>&rsquo;. Unfortunately, that simply doesn&rsquo;t work anymore. Even a very simple string matcher can still pick up the address. What you&rsquo;re doing here is making it difficult for your visitors to email you while also making it easy for scrapers to steal the address.</p>
<p>A slightly more involved approach is to resort to <strong>HTML Character Entries</strong> that will replace characters like <code>.com</code> with <code>&amp;#046;&amp;#099;&amp;#111;&amp;#109;</code>. You can use <a href="http://www.wbwip.com/wbw/emailencoder.html">encoders like these</a> to speed up the process. Again, most spam bots are clever enough to scan for encoded <code>@</code> signs with common domain TLDs, so I don&rsquo;t think this will get you very far.</p>
<p>What about <strong>adding JavaScript</strong> to inject the <code>href</code> attribute (or perhaps the <code>&lt;a/&gt;</code> tag itself) after clicking on a link? Depending on the implementation, the success varies. I&rsquo;ve been using a simple ROT13 replacement mechanism that&rsquo;s good enough. A simple click listener replaces the inner HTML of a <code>&lt;span/&gt;</code> element:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-js" data-lang="js"><span style="display:flex;"><span>  <span style="color:#00979d">const</span> <span style="color:#728e00">meel</span> <span style="color:#728e00">=</span> <span style="color:#728e00">document</span>.<span style="color:#728e00">querySelector</span>(<span style="color:#7f8c8d">&#39;.meel&#39;</span>);
</span></span><span style="display:flex;"><span>  <span style="color:#00979d">const</span> <span style="color:#728e00">enc</span> <span style="color:#728e00">=</span> <span style="color:#7f8c8d">&#34;&lt;o ofwo-zopsz=&#39;aowz orrfsgg&#39; vfst=&#39;aowzhc:kcihsf@pfowbpoywbu.qca&#39;&gt;kcihsf@pfowbpoywbu.qca&lt;/o&gt;&#34;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#728e00">meel</span>.<span style="color:#728e00">addEventListener</span>(<span style="color:#7f8c8d">&#39;click&#39;</span>, <span style="color:#728e00">function</span>() {
</span></span><span style="display:flex;"><span>    <span style="color:#728e00">meel</span>.<span style="color:#728e00">setAttribute</span>(<span style="color:#7f8c8d">&#39;class&#39;</span>, <span style="color:#7f8c8d">&#39;&#39;</span>)
</span></span><span style="display:flex;"><span>    <span style="color:#728e00">meel</span>.<span style="color:#728e00">innerHTML</span> <span style="color:#728e00">=</span> <span style="color:#728e00">enc</span>.<span style="color:#728e00">replace</span>(<span style="color:#7f8c8d">/[a-zA-Z]/g</span>,<span style="color:#728e00">function</span>(<span style="color:#728e00">c</span>){<span style="color:#728e00">return</span> <span style="color:#728e00">String</span>.<span style="color:#728e00">fromCharCode</span>((<span style="color:#728e00">c</span><span style="color:#728e00">&lt;=</span><span style="color:#7f8c8d">&#34;Z&#34;</span><span style="color:#728e00">?</span><span style="color:#8a7b52">90</span><span style="color:#728e00">:</span><span style="color:#8a7b52">122</span>)<span style="color:#728e00">&gt;=</span>(<span style="color:#728e00">c</span><span style="color:#728e00">=</span><span style="color:#728e00">c</span>.<span style="color:#728e00">charCodeAt</span>(<span style="color:#8a7b52">0</span>)<span style="color:#728e00">+</span><span style="color:#8a7b52">12</span>)<span style="color:#728e00">?</span><span style="color:#728e00">c</span><span style="color:#728e00">:</span><span style="color:#728e00">c</span><span style="color:#728e00">-</span><span style="color:#8a7b52">26</span>);});
</span></span><span style="display:flex;"><span>  })
</span></span></code></pre></div><p>Remember that you&rsquo;ll need <code>&lt;noscript/&gt;</code> alternatives&mdash;mine simply dictates the address by relying on the visitors&rsquo; knowledge of the author and the domain: &ldquo;my name at this domain&rdquo;.</p>
<p>We don&rsquo;t really need JS and could just rely on a few <strong>CSS tricks</strong><sup id="fnref:1"><a href="https://brainbaking.com/post/2023/11/combating-spam-with-email-obfuscation/#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> to create a &ldquo;honeypot&rdquo;, a trap for bots where they think they extracted the correct email address while in fact you&rsquo;re handing out the wrong thing. A few examples:</p>
<ul>
<li>Use <code>display:none</code> to append nonsense: <code>info&lt;span style='display: none;'&gt;gotcha&lt;/span&gt;@mydomain.com</code>. Your readers won&rsquo;t see the <code>gotcha</code> but the bots (hopefully) will. You can&rsquo;t create a clickable <code>mailto:</code> link with this technique though.</li>
<li>Use direction overrides: <code>span style='unicode-bidi:bidi-override; direction: rtl;'&gt;moc.niamodym@ofni&lt;/span&gt;</code>. One of the more original approaches!</li>
</ul>
<p>If you don&rsquo;t mind adding even more cruft to your site, you can require visitors to first fill in a <strong>captcha system</strong> such as Google&rsquo;s reCaptcha before revealing your contact information. Personally, if I had to go through a process like that, I wouldn&rsquo;t bother emailing the person.</p>
<p>Besides cleverly hiding your email address in plain sight in the HTML/JS, <strong>cloud-based service provides</strong> such as CloudFlare offer <a href="https://developers.cloudflare.com/support/more-dashboard-apps/cloudflare-scrape-shield/what-is-email-address-obfuscation/">advanced email obfuscation methods</a> that does not lose the advantage of simply clicking on a link, as for your visitors, nothing visible will change. Of course, this requires your website to be served through CloudFlare.</p>
<p>You can also expect your contacts to <strong>only send encrypted email</strong> and simply dump all non-encrypted ones into your spam folder. But the email protocol was never meant to be encrypted, so for your super-secret messages you should <a href="https://latacora.micro.blog/2020/02/19/stop-using-encrypted.html">stop using encrypted email</a> and resort to other means of messaging instead, such as Signal.</p>
<p>Others like <a href="https://kevquirk.com/segregating-email-with-sub-domains">Kev Quirk</a> rely on disposable subdomains or temporary email addresses with forwards that can also be handed out when filling in a form, negating the need to obfuscate anything in HTML.</p>
<hr>
<p>The problem worsens when you take my &ldquo;<strong>Reply Via Email</strong>&rdquo; <code>&lt;a/&gt;</code> mailto link into account that is embedded in RSS <code>&lt;description/&gt;</code> tags. There is no way of knowing which RSS client is able to parse the above CSS or JS tricks, and to ensure maximum compatibility, there shouldn&rsquo;t be any obfuscation at all. Since RSS is made to be parsed easily, I&rsquo;ve had more spam entered through this way than through the site itself. Semi-hiding the address by spelling it out loses the ease of use of a simple reply button.</p>
<p>I even forgot that I wired my RSS feed to my GoodReads profile, meaning all of a sudden my email address is embedded into a popular Amazon-owned external website&mdash;whoops. The easiest solution is not to have such a link in your feed but I do get a few emails that way so currently it&rsquo;s worth the occasional spam that will put SpamSieve to work anyway. If the shit hits the fan, I can still delete the &ldquo;hifromrss&rdquo; email alias.</p>
<p>Most spam I receive unfortunately doesn&rsquo;t come from bots but from pushy people thinking I&rsquo;m in dire need of SEO help and willing to pay large sums of money for it, frequently reminding me that I didn&rsquo;t respond to their initial generous request. To those &ldquo;manual spammers&rdquo;, I have only one thing to say: bugger off.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Do be aware that some aggressive forms of CSS obfuscation can break the accessibility of your website! Come to think of it, that includes the captcha approach.&#160;<a href="https://brainbaking.com/post/2023/11/combating-spam-with-email-obfuscation/#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 22 November 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Combating%20Spam%20With%20Email%20Obfuscation">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Four Podcasts Maximum</title>
      <link>https://brainbaking.com/post/2023/11/four-podcasts-maximum/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Fri, 17 Nov 2023 21:40:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/11/four-podcasts-maximum/</guid>
      
        
          <category domain="https://brainbaking.com/tags/podcasts">podcasts</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p><em>Four Podcasts is my upper limit</em>&mdash;that&rsquo;s the remark of a friend while discussing the overabundance of podcasts in the last few years. I was curious how friends managed to listen to so many of them. I&rsquo;m a Patreon supporter of Retronauts that puts out lengthy new episodes weekly, and even that is sometimes hard to keep up with. <a href="https://apas.gr/2018/06/what-i-listen-to/">What I Listen To</a> blog posts from others that boast a huge <em>listen lists</em>&mdash;woah, that&rsquo;s difficult to pronounce&mdash;can come across as quite intimidating.</p>
<p>It turns out that we mainly listen to podcasts while preparing dinner or doing other chores around the house. I never understood how people can actively listen while driving. I struggle to pick up on interesting facts if I have to do something else that occupies another portion of my attention.</p>
<p>How many podcasts are you subscribed to? Let me rephrase the question: how many podcasts do you regularly listen to? If the answer differs radically, it&rsquo;s perhaps time to admit there&rsquo;s too much <em>casting</em> on that <em>pod</em> plate. On top of that, as most episodes of the ones I&rsquo;m interested in take up to two hours, I resort to chunk-consuming, picking up where I left off in the next day(s).</p>
<p><a href="https://joelchrono.xyz/">Joel</a> and I have exchanged a few podcast recommendations, and this seems like a good place to list the ones I&rsquo;ve at least once listened to (but rarely regularly listen to except for Retronauts).</p>
<p><strong>Tech</strong></p>
<ul>
<li><a href="https://techleadjournal.dev/">TechLead Journal</a>, on software tech leadership beyond coding.</li>
<li><a href="https://www.se-radio.net/">Software Engineering Radio</a>, on professional software development.</li>
</ul>
<p><strong>Gaming</strong></p>
<ul>
<li><a href="https://bloodgodpod.com/">Axe of the Blood God</a>, an RPG-focused one with ties to Retronauts.</li>
<li><a href="https://www.newgameoldflame.com/">New Game, Old Flame</a>, on new games for old platforms.</li>
<li><a href="https://www.dosgameclub.com/">DOS Game Club</a>, our club talks about the games we play each month.</li>
<li><a href="https://intothecast.online/">Into the Aether</a>, a low key video gaming podcast.</li>
<li><a href="https://soundcloud.com/collectors-quest">Collectors Quest</a> on (retro) game collecting.</li>
<li><a href="https://www.shutupandsitdown.com/podcastle/">Shut Up &amp; Sit Down</a> &ldquo;podcastle&rdquo; on card and board games.</li>
<li><a href="https://casualmagic.libsyn.com/">Casual Magic</a> on casual Magic the Gathering play sessions.</li>
</ul>
<p><strong>Other</strong></p>
<ul>
<li><a href="https://klara.be/lees/dooddoeners">Dooddoeners</a>, two Flemish philosophers discussing sayings.</li>
<li><a href="https://fs.blog/knowledge-project-podcast/">The Knowledge Project</a>, learn from the world&rsquo;s experts via Farnam Street.</li>
<li><a href="https://www.theminimalists.com/podcast/">The Minimalists</a>, on eliminating physical and mental clutter.</li>
<li><a href="https://hurryslowly.co/">Hurry Slowly</a>, ideas on tech, creativity, and consciousness.</li>
<li><a href="https://rubenerd.com/show/">The Rubenerd Show</a>, Ruben Schade&rsquo;s quirky self at his best.</li>
</ul>
<p>Needless to say, there&rsquo;s a podcast for any topic or hobby, ranging from short and sweet to very long digressions. <em>Into the Aether</em> has a four hour long summer special where the hosts discuss a single game: <em>Paper Mario: Thousand Year Door</em>. I&rsquo;m a sucker for these kinds of things. On the other hand, <em>Dooddoeners</em> released a limited number of episodes, each only about fifteen minutes long. These are ideal to take your mind off work and get in a philosophical mood.</p>
<p>As the amount of released podcasts increase, it&rsquo;s becoming more and more difficult to identify the genuine ones. Every respectable professional news site has their own. I generally try to avoid subscribing to those to favor the shows hosted by truly passionate people.</p>
<p>I&rsquo;m curious to hear your podcast listening and/or subscribing strategies. Drop me a line if you also struggle to keep up!</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 17 November 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Four%20Podcasts%20Maximum">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>App Defaults In Late 2023</title>
      <link>https://brainbaking.com/post/2023/11/app-defaults-in-late-2023/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Tue, 14 Nov 2023 10:00:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/11/app-defaults-in-late-2023/</guid>
      
        
          <category domain="https://brainbaking.com/tags/lists">lists</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Everyone&rsquo;s doing these <a href="https://defaults.rknight.me/">app defaults</a> lists lately. Since they&rsquo;re <a href="https://brainbaking.com/tags/lists">lists</a> and I happen to like lists, I guess I&rsquo;ll chime in, even though I don&rsquo;t think these blog posts add much value for others. Instead, they could be interesting to look back to for myself in a far future? Here goes.</p>
<ul>
<li><strong>Backup system</strong>: <a href="https://brainbaking.com/post/2023/03/verify-your-backup-strategy/">Restic</a> synced to the NAS with my own system-tray wrapper.</li>
<li><strong>Bookmarks and <em>Read It Later</em> systems</strong>: I paste links that interest me into <a href="https://www.alfredapp.com/">Alfred</a> that has a workflow to Obsidian. To be honest, most interesting stuff is just jotted down on paper. I have almost no &ldquo;read it later&rdquo; backlog.</li>
<li><strong>Browser</strong>: Firefox.</li>
<li><strong>Calendar and contacts</strong>: Self-hosted <a href="https://radicale.org/v3.html">Radicale</a> CalDAV/CardDAV.</li>
<li><strong>Chat</strong>: Signal with literally four people willing to do so, everything else&rsquo;s still WhatsApp.</li>
<li><strong>Cloud File Storage</strong>: lol, good one.</li>
<li><strong>Coding environment</strong>: For light and quick scripting, Sublime Text. Otherwise, any of the dedicated tools from the JetBrains folks.</li>
<li><strong>Image editor</strong>: <a href="https://imagemagick.org/">ImageMagick</a> and occasionally GIMP.</li>
<li><strong>Mail</strong>: Apple Mail for macOS for <code>brainbaking</code>&mdash;hosted by Mailbox.org after <a href="https://brainbaking.com/post/2023/01/goodbye-protonmail/">being fed up with ProtonMail</a>&mdash;and unfortunately Microsoft Outlook for work. I don&rsquo;t want to mix these, and the latter is an Exchange server. I don&rsquo;t have a mail client on my smartphone and neither should you.</li>
<li><strong>Music</strong>: Self-hosted <a href="https://brainbaking.com/post/2022/03/how-to-stream-your-own-music-reprise/">Navidrome</a> + Substreamer Android app.</li>
<li><strong>News</strong>: I try to avoid these but out of boredom regularly fail to do so.</li>
<li><strong>Notes</strong>: Primarily <a href="https://brainbaking.com/tags/journaling/">fountain pen and paper</a>&mdash;this includes todo lists&mdash;mixed with digital notes in Obsidian.</li>
<li><strong>Password Management</strong>: KeePassXC.</li>
<li><strong>Photo Management</strong>: Self-hosted <a href="https://www.photoprism.app/">PhotoPrism</a>, although we have difficulties finding stuff once the photos are poured into this system. I&rsquo;d like something even simpler.</li>
<li><strong>Podcasts</strong>: I just press play in the browser? Subscribing goes via RSS.</li>
<li><strong>Presentations</strong>: Hugo + <a href="https://revealjs.com/">RevealJS</a>.</li>
<li><strong>RSS</strong>: <a href="https://netnewswire.com/">NetNewsWire</a>.</li>
<li><strong>Shopping Lists</strong>: What&rsquo;s wrong with recycling a piece of paper?</li>
<li><strong>Spreadsheets</strong>: For student grading, Google Sheets or Excel if I have to share it with colleagues.</li>
<li><strong>Text Editor</strong>: I&rsquo;m typing this Markdown post in Sublime Text.</li>
<li><strong>Word Processing</strong>: lol, another good one. For my writing, I use <a href="https://brainbaking.com/post/2021/02/writing-academic-papers-in-markdown/">Markdown + Pandoc + LaTeX</a>.</li>
</ul>
<p>Conclusion: I have a preference for simple analog and self-hosted tools.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 14 November 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: App%20Defaults%20In%20Late%202023">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>In Academia We Write Throwaway Code</title>
      <link>https://brainbaking.com/post/2023/11/in-academia-we-write-throwaway-code/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Fri, 10 Nov 2023 14:07:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/11/in-academia-we-write-throwaway-code/</guid>
      
        
          <category domain="https://brainbaking.com/tags/code quality">code quality</category>
        
          <category domain="https://brainbaking.com/tags/academia">academia</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Something scary dawned to me recently after having peeked into several source code repositories of funded projects here in academia. Most of these repositories contain code that would instantly make my software engineering ex-colleagues sick&mdash;and by sick, I mean suddenly-needing-a-bucket sick. What gives?</p>
<p>In academia, we write throwaway code. There&rsquo;s nothing inherently wrong with that. For most projects, that is. For some of these that we want to keep in the air for just a little while longer, where the adoption rate gradually increases, the scope is ultimately stretched out beyond the lifetime of a typical project. In that case, leaning on something called <em>clean code</em> to increase maintainability is no longer a luxury: it&rsquo;s a requirement. Sadly, that&rsquo;s never taken into account during the development of these prototypes&mdash;because that&rsquo;s what these are.</p>
<p>The code I write<sup id="fnref:1"><a href="https://brainbaking.com/post/2023/11/in-academia-we-write-throwaway-code/#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> for my research has the following purposes:</p>
<ol>
<li>It queries and stores data. Bespoke surveys with specific drag-and-drop components fall into this category. In case I help out an engineering or computer scientist colleague: it produces data.</li>
<li>It manipulates, aggregates, and summarizes data. The program and its output is mostly used once, as part of the publication process.</li>
<li>It presents data. Simple websites to help disseminate the results are put online, sometimes also as appendix to a paper.</li>
</ol>
<p>Presenting data doesn&rsquo;t really come with domain logic. Manipulating and producing data is usually a one-time job where hacking together a few Python scripts can be called good enough. Then it makes sense to question the whole test-first approach: if all there&rsquo;s to do is a few <code>map()</code>, <code>join()</code>, and <code>filter()</code> functions slapped together that will only be used once as part of a short-lived project where the budget is&mdash;as always&mdash;too tight, then who cares about re-usability?</p>
<p>Sometimes though, it can happen that the query thing might get expanded upon to query a different population in a follow-up project, or even to be commercialized in hopes of getting sold to generate a bit more much-needed research funding. Revisiting that source code, which in academia happens years later thanks to painfully slow lead times, then becomes very painful. Not only because the code is throwaway code, but also because chances are that project was passed on to you, as its creator probably left academia. Congrats, you&rsquo;re now the proud maintainer of something unmaintainable! Now what?</p>
<p>Good question, and honestly, I don&rsquo;t know the answer. If time and budget allows for it, trash the whole thing and re-write it properly, taking into account it&rsquo;s now a piece of software that should outlive the research project. Unfortunately, time and budget never allows for it. Now imagine the code we write in academia isn&rsquo;t throwaway code, but instead properly tested, easily maintainable, clean code (lol). If that was the case, the above problem would never surface&hellip;.</p>
<p>This again touches upon a lot of philosophically oriented programming questions I&rsquo;ve been struggling with during my career as a software engineer:</p>
<ul>
<li><a href="https://softwareengineering.stackexchange.com/questions/66480/when-is-it-appropriate-to-not-unit-test">When is it appropriate not to unit test?</a></li>
<li>Is it fine not to unit tests for prototypes? <a href="http://www.se-radio.net/2010/09/episode-167-the-history-of-junit-and-the-future-of-testing-with-kent-beck/">In an SE-Radio episode Kent Beck says yes</a>.</li>
<li>Should you unit test R? <a href="https://towardsdatascience.com/unit-testing-in-r-68ab9cc8d211">Some data scientists do it</a>, (most) others don&rsquo;t. (<a href="https://blog.codinghorror.com/i-pity-the-fool-who-doesnt-write-unit-tests/">I Pity The Fool Who Doesn&rsquo;t Write Unit Tests</a>!)</li>
<li>Most agree that <a href="https://www.quora.com/As-a-software-engineer-would-you-add-unit-tests-for-one-time-scripts">writing tests for one-time scripts</a> is unnecessary. Except that these &ldquo;one-timers&rdquo; might become &ldquo;multiple-timers&rdquo;, and retroactively injecting quality becomes next to impossible&hellip;</li>
</ul>
<p>It seems that I&rsquo;m not the only one struggling with this. <a href="https://academia.stackexchange.com/questions/21276/best-practice-models-for-research-code">Ben at Stack Exchange</a> explains:</p>
<blockquote>
<p>I sometimes feel as though my industrial experience has been a hindrance in my research, as the goals of writing software in a research context feel contradictory to the goals in industry, [where] code needs to be (ideally): maintainable, bug-free, refactored, well-documented, rigorously tested&mdash;good quality&mdash;best practice says that these things are worth the time (I agree).</p>
</blockquote>
<p>He continues:</p>
<blockquote>
<p>In academia, the goal is to write as many quality research papers in the shortest possible time. In this context, code is written to run the experiment, and might never be looked at again (we are judged on our papers, not our code). There seems to be no motivation to write tested, maintainable, documented code&mdash;I just need to run it and get the result in my paper or whatever ASAP. Consequently, the &ldquo;academic&rdquo; code I&rsquo;ve written is poor quality, from a software engineering perspective.</p>
</blockquote>
<p>The first person replying throws in a hilarious link: <a href="https://academia.stackexchange.com/questions/17781/why-do-many-talented-scientists-write-horrible-software">why do so many talented scientists write horrible software?</a> Exactly. <a href="https://danielhnyk.cz/academia-people-are-terrible-programmers/">Researchers are not programmers</a> (and in my experience also lousy programming teachers: how can we teach clean code techniques when we don&rsquo;t employ them ourselves?). But wait. I&rsquo;ve been a programmer for 11 years. I&rsquo;ve also been a researcher for the last 5 years. Am I slowly becoming one of those horrible software developers?</p>
<p>Wow. This post has just taken a turn for the worse&hellip;</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>A notable exception is the <a href="https://brainbaking.com/post/2019/04/teaching-oo-with-gba/">gba-sprite-engine</a> I wrote to aid teaching object-oriented programming using the GBA. I approached that as a hobby side-project, where oddly enough I employ higher standards?&#160;<a href="https://brainbaking.com/post/2023/11/in-academia-we-write-throwaway-code/#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 10 November 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: In%20Academia%20We%20Write%20Throwaway%20Code">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>On Writing For Yourself In Public</title>
      <link>https://brainbaking.com/post/2023/11/on-writing-for-yourself-in-public/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Mon, 06 Nov 2023 10:00:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/11/on-writing-for-yourself-in-public/</guid>
      
        
          <category domain="https://brainbaking.com/tags/writing">writing</category>
        
          <category domain="https://brainbaking.com/tags/blogging">blogging</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>I&rsquo;ve had an interesting conversation with <a href="https://dosgame.club/@mr_creosote">Mr Creosote</a> on Mastodon a few months ago that lingered in the cavernous debts of my subconsciousness until another related thought dragged it back up. Mr Creosote is the founder of <a href="https://www.goodolddays.net/">The Good Old Days</a>, a befriended retro game review website that&mdash;and this is the beginning of the problem&mdash;gets almost no views.</p>
<p>The Good Old Days has been around <a href="https://www.goodolddays.net/article/id%2C-11/">in various shapes and forms since 2000</a>: it is no stranger to text-based internet publishing, and yet, according to Mr Creosote, nowadays, almost nobody cares. One of the major causes could very much be the shift towards video game reviews on a certain singular huge hosted platform. The decline in visits caused the following question to pop up:</p>
<blockquote>
<p>Why write if nobody reads it?</p>
</blockquote>
<p>Why bother keeping a site up in the air when it is clear that the majority moved on? Who are we still writing for, then? The obvious answer is <em>for yourself</em>. Or is it?</p>
<p>My own retro game website <a href="https://jefklakscodex.com">Jefklak&rsquo;s Codex</a> has also <a href="https://jefklakscodex.com/about/">been around for a long time</a> in one way or another&mdash;since 2001, to be exact. In that time span, it morphed into many different things: a personal game news and review site, an amateurish Flemish game news site, a wiki focusing on guides, and a retro game log webpage. It never attracted a lot of visitors, and it still doesn&rsquo;t: around 600 visits a month, of which the vast majority is just there for one specific guide I wrote more than a decade ago. Writing about games won&rsquo;t win much attention if you cannot match the quality and quantity that professional gaming journalists manage to put out.</p>
<p>Instead, you can look into the more obscure topics that might earn some search engine hits. But as soon as you&rsquo;re thinking that way, you start going down the &ldquo;attention economy&rdquo; path. Why not write about the stuff that interests <em>you</em>? You&rsquo;re the one who&rsquo;s playing these games and solidifying thoughts about them. In essence, you&rsquo;re your own most devoted reader. If someone else happens to find your stuff and likes it: great! If not: who cares! Writing should be fun, not work.</p>
<p>I now approach my own <em>Codex</em> as a personal game log that summarizes my experience with the games and acts as a historical time capsule. I like <a href="https://jefklakscodex.com/games/">scrolling though the play list</a> and nobody will enjoy this as much as I do as these experiences (or &ldquo;reviews&rdquo; or &ldquo;game logs&rdquo; or whatever you want to call them) are deeply personal. I sometimes forget what I thought of a certain game. Now, I can look it up on my own site and share it with friends if we happen to be discussing that particular game. I have zero interest in generating more &ldquo;views&rdquo; or &ldquo;visits&rdquo; or whatever you want to call them.</p>
<p>But I would be lying if I said I don&rsquo;t care about my <em>Brain Baking</em> readers. Here, I write both for myself and for others. Sometimes for the former, sometimes for the latter, most of the times for both at once. I&rsquo;ll try to come up with a few examples that hopefully clarify this. Below are sets of articles that I either write for myself (👤) or for others (👥):</p>
<ul>
<li>👤 More philosophical thought experiments start out as a few scribbles in my notebook and become a bit more fleshed out on <em>Brain Baking</em>. These might lead to other ideas that have to be fermented in my brain. Others don&rsquo;t have the context to do so.</li>
<li>👥 The monthly favorite overview posts are mainly there to share interesting links I already saved and read myself.</li>
<li>👥 A more elaborate piece on something I find interesting gets published to entice others to join in on the fun.</li>
<li>👥 Shorter summaries of my academic research or books are here to help promote and distribute my work.</li>
<li>👤 Summarizing howto&rsquo;s are here for my future self to find them, but they might also interest you 👥.</li>
<li>👤 Silly retro hardware reports and photos are here because I like to keep track of and document these projects, but I know a few of you enjoy these as well 👥.</li>
</ul>
<p>Judging from the feedback I get from readers, any of these sets is enjoyed by at least someone. On <em>Brain Baking</em>, I think I never fully write for myself, but never fully write for others either. It takes a deliberate action to press the publish button: private thoughts stay comfortably within the private analog journal. I also very much enjoy the occasional conversation that comes out of these posts, even though that rarely happens (and never does for <em>Jefklak&rsquo;s Codex</em>).</p>
<p>Writing in public with low monthly visitor counts has the additional benefit of daring to experiment in absence of pressure. Not that I&rsquo;d completely change the way I approach writing on these sites if they would rack in the $1.5 million of revenue that <em>The Pragmatic Engineer</em> does. I am sometimes surprised that my posts end up on bigger aggregate news sites like Hacker News, but I&rsquo;m never actively fishing for that. More often than not, the superficial reactions on these sites indicate that&rsquo;s not my desired audience at all. I prefer one email from an acquaintance commenting on a piece over a thousand Hacker News reactions.</p>
<p>But yes, I admit: I still prefer <em>one</em> mail over no mail at all. As Henrik Karlsson writes, <em>a blog post is a very long and complex search query to find fascinating people and <a href="https://www.henrikkarlsson.xyz/p/search-query">make them route interesting stuff to your inbox</a></em>. I still prefer writing in public, thereby hopefully positively influencing my little community the same way as my little community influences me.</p>
<p>Others approach writing in public differently. For example, Julia Evans&rsquo; <a href="https://jvns.ca/blog/2023/08/07/tactics-for-writing-in-public/">tactics for writing in public</a> can act as sound advice for very technical howto-like writers. For me, these do not align with how I envision the act of <em>brain baking</em>, but for you, these might make much more sense than the rubbish you&rsquo;re currently reading.</p>
<hr>
<p>Addendum, 8th Nov: a reader reached out and mentioned the interesting distinction between writing and publishing. The act of writing doesn&rsquo;t have to end in output for someone: it can just be brain exercise&mdash;to build one&rsquo;s inner world. Publishing, on the other hand, could mean having to polish the thoughts in order for it to be good enough for others to read. Also, is a lack of feedback an indicator of a good or bad piece? Thanks for sharing these thoughts!</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 6 November 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: On%20Writing%20For%20Yourself%20In%20Public">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Favorites of October 2023</title>
      <link>https://brainbaking.com/post/2023/11/october-2023/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Thu, 02 Nov 2023 10:00:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/11/october-2023/</guid>
      
        
          <category domain="https://brainbaking.com/tags/metapost">metapost</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>It&rsquo;s spooky season! Wait, no, again. Spooky season is over! Or are we still in it? For just this week you say? I never really understood the Halloween craze and dismissed it as yet another Americanized craze that made its way to Europe, but after participating in a ghost hunt for children, I revised my opinion: it can be a lot of fun, both for the children and their parents. Luckily, our daughter is still too young to get frightened by the man with the creepy mask and hopefully dull axe. She looked at everything with great interest, including the gory props. Don&rsquo;t worry, there was still plenty of daylight left, keeping the truly horrifying jump-scares at bay.</p>
<p>Somehow, last month&rsquo;s <a href="https://brainbaking.com/post/2023/09/overlooked-reasons-to-still-buy-physical-media/">Overlooked Reasons To Still Buy Physical Media</a> post recently blew up in popularity and made it to Hacker News. I&rsquo;m glad to see others still fighting the fight as well. The comments on that site are&hellip; interesting.</p>
<p>Previous month: <a href="https://brainbaking.com/post/2023/10/september-2023">September 2023</a>.</p>
<h2 id="books-ive-read">Books I&rsquo;ve read</h2>
<p>Ilja Leonard Pfeijffer’s Brieven uit Genua (<em>Letters from Genoa</em>) is finished at last. Although the writing in <em>Genoa</em> is as excellent and erudite as can be expected of a Pfeijffer work, I still prefer <a href="https://brainbaking.com/post/2022/12/grand-hotel-europa/">Grand Hotel Europa</a>.</p>
<p>I tried getting into several books, such as John Cleese&rsquo;s <em>On Life And How To Survive It</em>, but the writing was surprisingly small (and unstructured). On top of that, the material isn&rsquo;t easy to digest just before bedtime, and as I realized I was in need of a good fiction work instead, so I switched to my twenty year old <em>Mallorea</em> series by David Eddings. Judging by the yellowed pages and musty smell, it&rsquo;s been a long time since I&rsquo;ve picked these up. I guess it&rsquo;s a good thing I can&rsquo;t remember the details.</p>
<h2 id="games-ive-played">Games I&rsquo;ve played</h2>
<p>Speaking of spooky season, I picked <a href="https://jefklakscodex.com/games/switch/dusk/">DUSK</a> as the matching game to play during Halloween after finishing the perhaps even more bloody <a href="https://jefklakscodex.com/games/switch/nightmare-reaper/">Nightmare Reaper</a>. The latter employs procedural generation for its levels while the former boasts truly excellent hand-crafted level design. <em>DUSK</em> might be my new favorite retro-inspired shooter, it&rsquo;s amazing, as is the flawless 60 FPS Nintendo Switch port.</p>
<p>For those of you living under a rock, Nintendo surprised us with a new 2D Mario game called <em>Super Mario Wonder</em>. In anticipation of its release, I (re)played <a href="https://jefklakscodex.com/games/3ds/new-super-mario-bros-2/">New Super Mario Bros. 2</a> and <a href="https://jefklakscodex.com/games/ds/new-super-mario-bros/">its 2006 predecessor</a> on the original Nintendo DS. They&rsquo;re fun, but the formula has been recycled to death, and the <a href="https://www.youtube.com/watch?v=YOxqgLUPFHg">cheerful theme song</a> the Koopas and Goombas dance to quickly gets on my nerves. It&rsquo;s wonderful (ha!) that <em>Wonder</em> finally moves on from this formula.</p>
<p>In-between the horror shooters and Mario plumbing, my wife discovered a few small indie games on sale: <a href="https://jefklakscodex.com/games/switch/freaky-trip/">Freaky Trip</a>&mdash;a disappointingly buggy single-screen point &amp; click game&mdash;and <a href="https://jefklakscodex.com/games/switch/a-tiny-sticker-tale/">A Tiny Sticker Tale</a>&mdash;a wholesome but too short scrapbook adventure.</p>
<h2 id="selected-blog-posts">Selected (blog) posts</h2>
<p>Not much this month. I haven&rsquo;t kept up with things on the internet, and it feels great.</p>
<ul>
<li>To keep up with the theme of this month, Wired put up a scary article: <a href="https://www.wired.com/story/google-antitrust-lawsuit-search-results/">How Google Alters Search Queries To Get At Your Wallet</a>. Strangely enough, it has been removed because &ldquo;it did not meed the editorial standards&rdquo;. I wonder what&rsquo;s behind that&hellip;</li>
<li>Niki summarized <a href="https://tonsky.me/blog/unicode/">the absolute minimum you should know about Unicode in 2023</a>.</li>
<li>If you want to have a laugh, try scrolling through Rock Paper Shotgun&rsquo;s <a href="https://www.rockpapershotgun.com/topics/the-very-important-list-of-pc-games">Very Important List of PC Games</a>.</li>
<li>Florian Sauer over at Game Developer wrote a great piece on <a href="https://www.gamedeveloper.com/programming/bringing-dr-jones-to-the-infernal-machine-dealing-with-memory-constraints">how to deal with memory constraints</a> using the <em>Indiana Jones</em> port adventure to the N64 as an example. It&rsquo;s very old&mdash;both the game and the article&mdash;but still.</li>
<li>I loved Joel Chrono&rsquo;s <a href="https://joelchrono.xyz/blog/what-is-on-my-psp/">What&rsquo;s on my PSP?</a>. Reminds me to write a <em>What&rsquo;s on my 3DS?</em> one as a response.</li>
<li>André Garzia shared how he hacked together a way to <a href="https://andregarzia.com/2023/10/sharing-contacts-using-qr-code.html">share contacts using QR codes</a> without requiring a network connection.</li>
<li>Kev Quirk wrote <a href="https://kevquirk.com/im-too-addicted-to-my-iphone">about his iPhone addiction</a>, and the general smartphone usage a day numbers are staggering: &ldquo;In 2022, users in the United Kingdom spent an average of four hours and 14 minutes per day using their mobile devices&rdquo;. Holy crap, we need help.</li>
<li>Rach Smith&rsquo;s children asked her <a href="https://rachsmith.com/if-i-could-be-anything/">if you could be anything, what would you be?</a>, and she answered: &ldquo;I would be exactly what I am, doing the job I do now, and being your mum, of course!&rdquo; and asks herself whether or not that&rsquo;s due to a lack of imagination as an adult? I wouldn&rsquo;t know how to answer this either&hellip;</li>
<li>Bix Frankonis emailed me a link to his <a href="https://bix.blog/2023/Sep/25/the-identity-of-blogging-and-the-blogging-of-identity/">The Identity Of Blogging And The Blogging Of Identity</a> post as a follow-up to my <a href="https://brainbaking.com/post/2023/10/blogging-nets-more-than-just-text/">Blogging Nets More Than Just Text</a>&mdash;thanks!</li>
</ul>
<h2 id="other-random-links">Other random links</h2>
<ul>
<li><em>Ion Fury</em>, the 2018 game running on Duke Nukem 3D&rsquo;s Build Engine I really liked, has got <a href="https://www.youtube.com/watch?v=lWUIlOvgz3U">an expansion called Aftershock</a>! I hope it makes its way to the Switch.</li>
<li>Did you know they&rsquo;re still building expansions for <a href="https://www.resetera.com/threads/age-of-empires-ii-the-mountain-royals-dlc-launching-oct-31st.775529/">Age of Empires II</a> (Definitive Edition), in essence a 24 year old game? Woah!</li>
<li><a href="https://docs.invidious.io/instances/">Invidious</a> seems to be a good alternative for watching YouTube videos.</li>
<li>Joel pointed me towards a few game-related podcasts I didn&rsquo;t know: <a href="https://intothecast.online">Into the Aether</a> and <a href="https://www.retrogametimemachine.com/home">Retro Game Time Machine</a>.</li>
</ul>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 2 November 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Favorites%20of%20October%202023">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Achievement Fatigue</title>
      <link>https://brainbaking.com/post/2023/10/achievement-fatigue/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Tue, 31 Oct 2023 10:09:00 +0100</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/10/achievement-fatigue/</guid>
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>For decades, I&rsquo;ve been trained to optimize my thinking in terms of numbers. I&rsquo;ve been pushed to be more productive, and enjoyed being more productive, which in turn led to searchers on how to be even more productive. I&rsquo;ve accomplished things and felt good about it, motivating myself to accomplish more things.</p>
<p>But I&rsquo;ve always been quite bad at stopping and reflecting back on the accomplished thing. I rarely compliment myself, I usually think the things achieved are nothing special, and I keep my eyes focused on the future, where more things need to be produced, optimized, and accomplished. There&rsquo;s barely time left to breathe, let alone pat myself on the back: that time is better spend doing more stuff.</p>
<p>Yet sometimes, I suffer from what you might call <em>achievement fatigue</em>: I question my motives, I ask myself what the hell I&rsquo;m doing or supposed to be doing, and sometimes, I cut myself some slack. I&rsquo;m clearly over-exaggerating here to make the point come across: I&rsquo;m not a workaholic&mdash;far from it. I detest working after 5 PM (nowadays even 4 PM is a stretch) or working more than 38 hours a week (nowadays even 30 hours is a stretch). I have that luxury precisely <em>because</em> I trained myself to be highly efficient and productive. I publish more by doing less.</p>
<p>Yet sometimes, I suffer from what you might call <em>achievement fatigue</em>: I question why I publish, what I&rsquo;m supposed to be publishing instead, and why I keep track of the things I&rsquo;ve achieved. On the one hand, I&rsquo;m proud of myself for having done the things I did, but on the other hand, one voice in my head says it&rsquo;s nothing special (it really isn&rsquo;t&mdash;see?) and I should get off my ass to do more.</p>
<hr>
<p>I shouldn&rsquo;t be too hard for myself, as in modern society, it&rsquo;s very <em>very</em> hard to get out of the achievement loop. Every single thing we come into contact with every single day subconsciously pushed everyone to achieve more: from the mundane clock that is ticking to job descriptions, superficial conversations about job descriptions on cocktail parties, any news article on any website, newspaper, or TV station, every single ad that gets shoved down our throats, &hellip;</p>
<p>I&rsquo;ve been in teams where going home at 4:30 PM is being frowned upon, even though the obligatory eight hours of sitting behind a computer for that day were thankfully over: it somehow is cool to compete with colleagues in the battle for the best workaholic. It&rsquo;s not cool if you&rsquo;ve got other interests or hobbies. I consider myself lucky that after rejoining academia and ending up in a small research group where nobody cares about anyone&rsquo;s whereabouts or work status, I can do whatever I want at my own pace. Yet in academia, the general work pressure and focus on numbers is arguably even more unhealthy than in industry. If I meet colleagues who ask whether or not it&rsquo;s busy at our faculty/campus, remember that that isn&rsquo;t a question: they won&rsquo;t listen for the answer&mdash;it&rsquo;s a resounding yes. It&rsquo;s always a yes. Busy busy busy. If you&rsquo;re not busy, you&rsquo;re simply a slacker.</p>
<p>I try very hard to be a slacker while keeping my productive engine online, and for the last five years, that has worked out pretty well. But still, to what end? Why do I have to dance the dance or to compete in the first place? I find it very disturbing that nobody is asking these questions.</p>
<p>Nobody but a group of philosophers, that is. Reading Epicurus or Montaigne feels very refreshing, even though their manuscripts are hundreds of years old, and even though Montaigne simply inherited his wealthy castle domain significantly easing the decision to live a secluded writer&rsquo;s life and Epicurus&rsquo;s way of life was extreme compared to the expectations of our contemporary peers. The problem doesn&rsquo;t go away, though: as soon as you want to put theory into practice, judgement of others (and the self) will be there waiting for you.</p>
<hr>
<p>I like achieving things. I&rsquo;m a <em>box-ticker</em>: it feels great to put something online, finish a work, produce something, and of course, because of that, be approved by peers. Yet I have the feeling that I need to stop and reflect more. I need to put something online, finish a work, and produce something to gain recognition of myself. I need to say to myself that it <em>is</em> something special.</p>
<p>Will that be enough? I&rsquo;m afraid I&rsquo;ll always feel the influence of the inescapable capitalism that without a doubt will corrupt the way I see myself doing or not doing things. This makes it especially hard to think about the concept of achievement fatigue: is this my own self yelling to stop and think, or is this some kind of trick to motivate me to keep on pushing forward and doing more? Despite having achieved quite a bit (according to myself?), a little voice tells me I could have done so much more in the time that was given to me but now is squandered.</p>
<p>I am tired, yet I find it impossible to stop doing anything. I get restless. I hate having nothing to do on a week of holiday. I despise the period in-between waiting for a grant, and even though I could convert the current time into yet another personal project, my mind keeps on wandering, thinking how I could be more productive. I <em>need</em> to tick boxes. I have to write this article because it&rsquo;s been four days since I published anything on <em>Brain Baking</em>.</p>
<p>This drive to achieve, this wonderful feeling of accomplishment, sometimes very much feels like poison running through my veins.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 31 October 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Achievement%20Fatigue">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Top 25 Best Music Albums Of All Time</title>
      <link>https://brainbaking.com/post/2023/10/top-25-best-music-albums-of-all-time/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Fri, 27 Oct 2023 13:03:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/10/top-25-best-music-albums-of-all-time/</guid>
      
        
          <category domain="https://brainbaking.com/tags/lists">lists</category>
        
          <category domain="https://brainbaking.com/tags/music">music</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>After compiling my <a href="https://brainbaking.com/post/2023/10/top-25-best-games-of-all-time">top 25 best games of all time list</a>, I started drafting a list of my 25 best albums of all time, which after several revisions, I still have conflicted feelings about. It somehow was much harder for me to come up with 25 musical entries compared to the video game one, in part because I&rsquo;m not a big music nut and in part because I wanted the list to showcase a bit of variety. Simply dumping 25 hip-hop albums in there&mdash;my favorite genre according to the <a href="https://brainbaking.com/post/2022/12/2022-in-music/">2022 in music</a> post&mdash;would not suffice.</p>
<p>Anyway. Here goes. Caveat Lector. Here be dragons. And so forth.</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2023/10/top-25-best-music-albums-of-all-time/../topsters-music25.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2023/10/top-25-best-music-albums-of-all-time/../topsters-music25.jpg" loading="lazy" title="My Top 25 Best Music Albums Of All Time." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>My Top 25 Best Music Albums Of All Time.</figcaption>
	
</figure>
</p>
<p>Again, bear in mind that it&rsquo;s <em>unsorted</em>. Contrary to the top 25 game list, I wouldn&rsquo;t know where to start when trying to pick a single favorite: it&rsquo;s much more dependent on my mood than anything else. A first glance immediately reveals my preference for (1) eighties alt pop/rock, (2) game soundtracks and chiptunes, and (3) hip-hop.</p>
<p>Row 1:</p>
<ol>
<li><strong>Pink Floyd: Wish You Were Here</strong>. This one has been burned into my brain by endless sessions on repeat. When we were little, my dad copied the CD to a cassette to listen to on my Sony Walkman while we drove to our yearly holiday destination in Spain. Needless to say, I know about every position of about every <em>ploing</em> by heart.</li>
<li><strong>Genesis: Invisible Touch</strong>. It has <em>Land of Confusion</em> on it. Nuff said.</li>
<li><strong>Michael Jackson: Thriller</strong>. I had difficulties choosing between <em>Thriller</em> and <em>Bad</em>, both are superb. Gotta pay respects to the King Of Pop, deservedly so.</li>
<li><strong>Cory &amp; The Wongnotes</strong>. A recent entry thanks to Ruben Schade&rsquo;s Music Mondays. The up-beat cheerfulness always puts me in a good mood. Even the <a href="https://www.youtube.com/watch?v=IvMUDLyMCf4">full recording session on video</a> radiates happiness.</li>
<li><strong>Duran Duran: Decade</strong>. Okay, I admit, I cheated by picking a compilation album, but I wanted to get a <em>James Bond</em> song on here as well, and all others are scattered throughout their impressive discography.</li>
</ol>
<p>Row 2:</p>
<ol>
<li><strong>Ratatat: Classics</strong>. It was either this or <em>St Germain</em>&rsquo;s <em>Tourist</em> as the perfect ambient music to facilitate focus.</li>
<li><strong>Boss Fight: Caps On, Hats Off</strong>. It was either this or one of <em>Dubmood</em>&rsquo;s <em>Lost Floppies</em> as the perfect modern chiptune mixture.</li>
<li><strong>Pizza Tower</strong> the soundtrack. As I said before, <a href="https://brainbaking.com/post/2023/03/pizza-towers-soundtrack-is-amazing/">I can&rsquo;t get enough of this soundtrack</a>, it has no business being this good for a small indie game release.</li>
<li><strong>Castlevania: Order of Ecclesia</strong> the soundtrack. Any <em>Castlevania</em> game comes with an amazing soundtrack, of which the three Nintendo DS incarnations&mdash;<em>Dawn of Sorrow</em>, <em>Portrait of Ruin</em>, and <em>Order of Ecclesia</em>&mdash;are my favorites.</li>
<li><strong>Mega Ran: Castlevania: The Nocturnal Cantata</strong>. I only recently discovered the concept of <em>nerdcore</em>, the phenomena where video games and rap, two very <em>Brain Bakey</em> things, meet. <em>Mega Ran</em> portrays this perfectly by leaning on the <em>Castlevania</em> tunes: a triple win!</li>
</ol>
<p>Row 3:</p>
<ol>
<li><strong>GTA Vice City: Wave 103 FM</strong>. A second nod to (British) new wave music, but really, any of the <em>Vice City</em> radio stations are brilliant. The ones I listen to mostly are: V-Rock, Wave 103, Radio Espantoso, Flash FM, and Wildstyle. Is this</li>
<li><strong>Ancient Astronauts: Into Bass And Time</strong>. German band <em>Ancient Astronauts</em> successfully revived classic west-coast beats in <em>Into Bass And Time</em>. Its simplicity and consistent pace makes me even prefer it over its progenitors.</li>
<li><strong>Wu-Tang Clan: Enter The Wu-Tang (36 Chambers)</strong>. Probably the best thing ever to come out of Brooklyn, and despite the huge <em>Wu-Tang</em> discography, the first is still the one I go back to the most, thanks to RZA&rsquo;s masterful sampling skills.</li>
<li><strong>GZA: Liquid Swords</strong>. Selecting a single best <em>Wu-Tang</em> solo album is no simple task, so I cheated yet again and included a <em>GZA</em> and <em>Ghostface</em> instead.</li>
<li><strong>MF DOOM: MM&hellip; Food</strong>. After making this pick, I realized I should have picked <em>MF DOOM</em>&rsquo;s collaboration with <em>Madlib</em> instead, <em>Madvillainy</em>.</li>
</ol>
<p>Row 4:</p>
<ol>
<li><strong>Deltron 3030: Deltron 3030</strong>. In case that wasn&rsquo;t clear, I love the <em>Dan The Automator</em> and <em>Del the Funky Homosapien</em> (who&rsquo;s also a <em>Hieroglyphics</em> member) duo: they reappear in the next choice and in the virtual group <em>Gorillaz</em>. <em>Deltron 3030</em> was one of the first prophetic space tales spiced up by <em>Kid Koala</em>. Perhaps I should have picked one of <em>Kid</em>&rsquo;s mixtapes instead.</li>
<li><strong>Handsome Boy Modeling School: So&hellip; How&rsquo;s Your Girl?</strong>. This is so very much strange, I love it. Their second album, <em>White People</em>, is less stellar but still wonderfully weird.</li>
<li><strong>Hieroglyphics: Full Circle</strong>. Another super group that drops less harsh beats than <em>Wu-Tang</em> does, something I prefer as I get older.</li>
<li><strong>Swollen Members: Bad Dreams</strong>. Canadian horrorcore that successfully crawled out of the underground scene. Their latest albums seemed to have lost their roots which is a shame.</li>
<li><strong>RJD2: Dead Ringer</strong>. Either a <em>RJD2</em> album as a DJ or in the form of <em>Soul Position</em> could be slotted in here. Perhaps also <em>Kid Koala</em>? By this point, I was having a lot of trouble selecting the &ldquo;best of all time&rdquo; ones.</li>
</ol>
<p>Row 5:</p>
<ol>
<li><strong>Ghostface Killah: Supreme Clientele</strong>. After realizing I needed one more <em>Wu</em> solo album, I included <em>Ghostface</em>, as he&rsquo;s the most compelling to listen to. I still need to listen to <em>Fishscale</em>, but it probably won&rsquo;t be as good as this.</li>
<li><strong>Sonic Mania</strong> the soundtrack. When it comes to video game soundtracks, oldie Sonics just beat the crap out of Mario. <em>Sonic Mania</em> offers stellar remixes of Hydro City tracks, making me pick this one instead of <em>Sonic 3</em>.</li>
<li><strong>Age of Mythology</strong> the soundtrack. This or the <em>Sim City 4</em> soundtrack is the perfect background music when I&rsquo;m getting bored of <em>Ratatat</em>, but in practice, the <em>Diablo II</em> ambient music also frequently makes an appearance.</li>
<li><strong>Gorillaz: Demon Dayz</strong>. Perhaps the original album is the better one? I don&rsquo;t know, again, it depends on the day of the week and the position of the moon.</li>
<li><strong>Jurassic 5: Power In Numbers</strong>. Another super group, but at this point, I only had one slot left, and just picked the CD I had lying around.</li>
</ol>
<p>I&rsquo;m upset the following albums didn&rsquo;t make it: <em>IAM: L&rsquo;école Du Micro D&rsquo;argent</em>, <em>Jedi Mind Tricks:  &ldquo;The Psycho-Social, Chemical, Biological, And Electro-Magnetic Manipulation Of Human Consciousness</em>, anything from <em>Gravediggaz</em>, the soundtrack of <em>The Messenger</em>, <em>Wax Tailor: Hope &amp; Sorrow</em>, &hellip;</p>
<p>What was the point of this exercise again?</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 27 October 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Top%2025%20Best%20Music%20Albums%20Of%20All%20Time">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Blogging Nets More Than Just Text</title>
      <link>https://brainbaking.com/post/2023/10/blogging-nets-more-than-just-text/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Sun, 22 Oct 2023 14:50:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/10/blogging-nets-more-than-just-text/</guid>
      
        
          <category domain="https://brainbaking.com/tags/blogging">blogging</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>A recurring trend among bloggers is <em>meta-blogging</em>: blogging about blogging. My pristine AI model&mdash;namely, my own brain&mdash;spotted another variation of this pattern in the RSS feed reader this month, and since I like all things meta except for a certain company called Meta, I want in on it. Here&rsquo;s a short summary of statements I very much align with.</p>
<ul>
<li>Kev Quirk <a href="https://kevquirk.com/friends-from-blogging">made friends thanks to blogging</a>.</li>
<li>Frank Meeuwsen links <em>Punkrock Publishing</em> <a href="https://diggingthedigital.com/naief-optimisme/">to naive blogging optimism</a>.</li>
<li>Frank also promotes blogging as a <a href="https://diggingthedigital.com/digital-domestic-cozy-op-het-web/">cozy social place for the web</a>.</li>
<li>Roy Tang compares <a href="https://roytang.net/2023/10/social-media-lurkers-introverts-blogging/">social media, lurkers, introverts, and blogging</a>.</li>
<li>Ruben Schade <a href="https://rubenerd.com/lack-of-email-replies/">receives too many emails from his readers</a>.</li>
<li>Ruben also finds <a href="https://rubenerd.com/finding-bloggers-all-those-years-later/">what&rsquo;s up with bloggers all those years later</a>.</li>
<li>Manuel Moreale <a href="https://manuelmoreale.com/people-and-blogs">writes about the people behind their blogs</a>.</li>
<li>Joel Chrono invited his readers to <a href="https://joelchrono.xyz/blog/ama-responses-1/">ask him anything</a>.</li>
<li>Ben Werdmuller ponders on <a href="https://werd.io/view/650f67a2d1d7ee402703b7e2">long-term effects of blogging</a>.</li>
<li>Tracy Durnell summarizes <a href="https://tracydurnell.com/2023/09/23/my-20th-anniversary-of-blogging/">what she&rsquo;s gotten out of 20 years of blogging</a>.</li>
</ul>
<p>I&rsquo;m sure I&rsquo;ve missed a few, feel free to send in more related posts.</p>
<p>As for myself, in 2021 I&rsquo;ve already proclaimed <a href="https://brainbaking.com/post/2021/10/a-triumph-for-blogging/">the triumph of blogging</a> that netted wonderful friends that I still converse with to this day, had me join random Zoom meetings, inspires and expands my thinking, and had me writing and sending letters through snail mail. Looking at the above articles of fellow bloggers, I can only conclude that <em>Blogging Nets More Than Just Text</em>: it slowly but surely builds up a following, grows both shallow and deep friendships, keeps you on your toes, constructs a digital archive of your many previous selves, &hellip;</p>
<p>Although my online presence <a href="https://brainbaking.com/post/2020/10/a-personal-journey-through-the-history-of-webdesign/">dates back to 1998</a>, <em>Brain Baking</em> is ten years old, of which I only started taking up blogging seriously six years ago. Most of the above articles focus on the social gains, but seem to undervalue having a wholesome online part of the internet just for yourself. I&rsquo;m the biggest fan of <em>Brain Baking</em> and <em>Jefklak&rsquo;s Codex</em>: I regularly look up and re-read my own writings&mdash;not just as a digital knowledge garden where pieces of ideas are be stored that later can be twisted and turned into something else entirely, but also to relive that feeling of that particular period in my life. A blog is also a personal time capsule.</p>
<p>On top of that, as a non-native English speaker and writer, blogging in English immensely helped in mastering the English language where exotic diction, word order, weird hyphenation, wrongly literally translated proverbs, and the Oxford comma reign supreme.</p>
<p>I tip my hat to all fellow bloggers out there. I had to look up the correct usage for tipping that hat, but don&rsquo;t let that stop you from writing (or tipping?) that, given enough patience, will grow into something more than just text.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 22 October 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Blogging%20Nets%20More%20Than%20Just%20Text">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Acquisitions</title>
      <link>https://brainbaking.com/post/2023/10/acquisition/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Wed, 18 Oct 2023 15:00:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/10/acquisition/</guid>
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>After a lengthy regulatory review, Microsoft now officially closes its $69 billion acquisition of Activision Blizzard. Seventy <em>billion</em>, the largest transfer sum to date in the video gaming industry. The EU was worried this might cause harm to the industry as Microsoft comfortably wiggles itself in an even bigger monopoly position, but after enough bribery and ass-kissing, the worries seemed to have evaporated and the lights have been set on green.</p>
<p>Microsoft now owns Activision Blizzard, which in itself already was a conglomerate of giant buy-ups, including ZeniMax Media, which already was a conglomerate of giant buy-ups, including Bethesda, id Software, Alpha Dog, &hellip; <em>Mind-boggling</em> is putting it mildly. And yet, if you inspect <a href="https://www.cbinsights.com/research/tech-giants-billion-dollar-acquisitions-infographic/">infographics of tech giants&rsquo; billion-dollar acquisitions</a>, these buy-ups seem to be rapidly increasing daily happenings. I don&rsquo;t know why we as a collective don&rsquo;t care, but if this doesn&rsquo;t sound alarming to you, then I don&rsquo;t know what does. For reference, MS&rsquo; gobbled up GitHub and ZeniMax for &ldquo;only&rdquo; $7.5B each. I didn&rsquo;t even know LinkedIn is also owned by MS nowadays. Other giant tech companies <a href="https://en.wikipedia.org/wiki/List_of_mergers_and_acquisitions_by_Alphabet">such as Alphabet</a> apply the same strategy. Innovating seems to equal buying up the competition.</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2023/10/acquisition/../acquisitions.png" class="lbox">
		<img src="https://brainbaking.com/post/2023/10/acquisition/../acquisitions.png" loading="lazy" title="Timeline of Tech Giants&#39; Acquisitions as of 2021, copyright CB Insights." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>Timeline of Tech Giants&#39; Acquisitions as of 2021, copyright CB Insights.</figcaption>
	
</figure>
</p>
<p>None of this is particularly new, but the frequency and total amounts seem to be rising at an alarming rate. And I wonder: to what end? Where does this end? When one of those companies owns <em>everything</em>?</p>
<hr>
<p>What perhaps worries me the most is that this poisonous innovation philosophy has seeped through the cracks of everyday life: everyone that even remotely runs a business is doomed to eventually start thinking this way&mdash;courtesy of capitalism. Below are a few examples of the poison spreading in my own social environment.</p>
<p>Every single company I&rsquo;ve worked for is guilty of the &ldquo;innovation through acquisition&rdquo; strategy. The first software development company I&rsquo;ve worked for, in 2007, counted 400+ employees. When I left, seven years later, that was 900. Now, it&rsquo;s 4000. This number does not go up because they hire every graduate software developer they encounter, but rather because they simply buy up every small, medium, and even large competitor that puts out software on the same market as they&rsquo;re fishing in. This&mdash;of course&mdash;extends well beyond the Belgian borders, with obvious cultural clashes, nearshoring and offshoring catastrophes, and returning mass layoff and hiring sprees as a result. It was the reason why I quit.</p>
<p>Not that the next company I worked for fared any better when it comes to what they call &ldquo;seamless integration of innovation capital&rdquo;. Culture clashes, however small, are extremely difficult to iron out, especially if you&rsquo;re not given any wiggle room to focus on exactly that instead of putting half-baked ideas into production.</p>
<p>But these are tech companies, of which we almost expect this stupidity to happen. How about the retail industry? Same thing. Small and local toy shops we loved to frequent are gone because they&rsquo;ve been gobbled up by larger but still local ones. These too are long gone: instead, there&rsquo;s just one giant toy company that now controls all these franchises. The result? Mediocrity, sameness, and on our part, an aversion to go shopping there. All in all, a good and logical evolution, wouldn&rsquo;t you say? Just take a minute to inspect every packet you&rsquo;ve got in your pantry right now: chances are high you&rsquo;ll encounter either the logo of Unilever, Danone, Coca Cola, or General Mills.</p>
<p>It gets worse. Even a small local organic bakery that started out in their personal kitchen a few years ago somehow had to &ldquo;grow&rdquo; by franchising out to different towns. Guess what, now they&rsquo;re bankrupt. I&rsquo;ve seen the bakery industry acquire smaller bakeries that are struggling but still worked hard to serve their customers unique delicious products that now have been replaced by bland squishy bread that I don&rsquo;t even want to give to our chickens. A good and logical evolution, wouldn&rsquo;t you say?</p>
<p>Even our tiny daycare, part of a larger Flemish daycare network, next year has us slogging through yet another administrative tool because, guess what, the network was bought up and is now part of an even bigger network. Another potential problem this causes is data leakage: do you know what happens to your data when another company swoops in and grabs everything? That bigger network no doubt has all our and our child&rsquo;s information now, with or without our consent. I wonder what Microsoft does with their recently acquired LinkedIn and GitHub data. Great sets to mach using AI, no doubt.</p>
<p>Why can&rsquo;t people just be content with their yearly revenue? Why does everything have to be bigger&mdash;and clearly, <em>not</em> better? If the revenue curve doesn&rsquo;t go up each year, blind panic seems to help us gravitate towards that poisonous philosophy: why not try an acquisition or two to give sales a healthy boost? The more I think about this, the more I get sick of the way (we seem to accept that) this world works right now.</p>
<hr>
<p>Thanks to this gobble-up-or-die philosophy, smaller game development studios that refuse to be bought up instead have to close doors, such as <a href="https://www.mimimi.games/our-final-game/">Mimimi Studios</a> who quote increased financial pressure and risk to be the main perpetrators. Mimimi made superb stealth strategy games such as <em>Shadow Tactics</em> and <em>Desperados III</em>. Unfortunately, that genre is a bit of a niche, and no doubt partially thanks to the mainstream <em>Call of Duty</em> craze&mdash;now comfortably owned by Microsoft, by the way&mdash;Mimimi is forced to seize operations.</p>
<p>Time for <em>Queen</em> to kick off <em>Another One Bites the Dust</em> again.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 18 October 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Acquisitions">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>What&#39;s The Best Programming Language For A CS1 Course?</title>
      <link>https://brainbaking.com/post/2023/10/whats-the-best-programming-language-for-a-cs1-course/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Sun, 15 Oct 2023 21:50:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/10/whats-the-best-programming-language-for-a-cs1-course/</guid>
      
        
          <category domain="https://brainbaking.com/tags/cs1">cs1</category>
        
          <category domain="https://brainbaking.com/tags/programming languages">programming languages</category>
        
          <category domain="https://brainbaking.com/tags/c&#43;&#43;">c&#43;&#43;</category>
        
          <category domain="https://brainbaking.com/tags/java">java</category>
        
          <category domain="https://brainbaking.com/tags/python">python</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>That&rsquo;s a good question! CS1 courses, or <em>Computer Science 1</em>, are typically the first computing courses in higher education where students are exposed to a programming language. They traditionally teach concepts such as variables and scoping, control blocks, code flow, and some, like in our own faculty, even immediately introduce object-oriented programming. Whether or not that&rsquo;s a smart move is another matter.</p>
<p>For every single language, there are odd features and easy problems that are hard to explain to newcomers, and simply hiding these has backfired often:</p>
<p><strong>Python</strong></p>
<div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#728e00">def</span> <span style="color:#d35400">add</span>(<span style="color:#434f54">one</span>, <span style="color:#434f54">two</span>):
</span></span><span style="display:flex;"><span>  <span style="color:#434f54">result</span> <span style="color:#728e00">=</span> <span style="color:#434f54">one</span> <span style="color:#728e00">+</span> <span style="color:#434f54">two</span>
</span></span><span style="display:flex;"><span><span style="color:#728e00">print</span>(<span style="color:#434f54">result</span>)
</span></span><span style="display:flex;"><span>  <span style="color:#728e00">return</span> <span style="color:#434f54">result</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#434f54">add</span>(<span style="color:#7f8c8d">&#34;1&#34;</span>, <span style="color:#7f8c8d">&#34;2&#34;</span>)
</span></span></code></pre></div><p><em>Error: Unexpected indent</em>. Upon fixing that, the result is &ldquo;12&rdquo;. Woah? Not Python, then?</p>
<p><strong>Go</strong></p>
<div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-go" data-lang="go"><span style="display:flex;"><span><span style="color:#728e00">func</span> <span style="color:#d35400">add</span>(<span style="color:#728e00">one</span> <span style="color:#00979d">int</span>, <span style="color:#728e00">two</span> <span style="color:#00979d">int</span>) <span style="color:#728e00">*</span><span style="color:#00979d">int</span> {
</span></span><span style="display:flex;"><span>  <span style="color:#728e00">result</span> <span style="color:#728e00">:=</span> <span style="color:#728e00">one</span> <span style="color:#728e00">+</span> <span style="color:#728e00">two</span>
</span></span><span style="display:flex;"><span>  <span style="color:#728e00">return</span> <span style="color:#728e00">&amp;</span><span style="color:#728e00">result</span>
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Woah, what&rsquo;s that <code>*</code>? Not Go, then?</p>
<p><strong>C++</strong></p>
<div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-C++" data-lang="C++"><span style="display:flex;"><span><span style="color:#728e00">template</span><span style="color:#728e00">&lt;</span><span style="color:#728e00">typename</span> <span style="color:#434f54">T</span><span style="color:#728e00">&gt;</span> <span style="color:#728e00">class</span> <span style="color:#434f54">Thing</span> {
</span></span><span style="display:flex;"><span><span style="color:#728e00">private</span><span style="color:#728e00">:</span>
</span></span><span style="display:flex;"><span>  <span style="color:#434f54">T</span> <span style="color:#434f54">x</span>, <span style="color:#434f54">y</span>;
</span></span><span style="display:flex;"><span><span style="color:#728e00">public</span><span style="color:#728e00">:</span>
</span></span><span style="display:flex;"><span>    <span style="color:#728e00">friend</span> <span style="color:#434f54">ostream</span><span style="color:#728e00">&amp;</span> <span style="color:#728e00">operator</span><span style="color:#728e00">&lt;&lt;</span>(<span style="color:#434f54">ostream</span><span style="color:#728e00">&amp;</span> <span style="color:#434f54">os</span>, <span style="color:#434f54">Thing</span> <span style="color:#434f54">t</span>);
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Woah, what&rsquo;s the difference between a <em>template</em> and proper inheritance? Hey, diamond inheritance works here, Good Luck Have Fun? Not C++, then?</p>
<p><strong>Kotlin</strong></p>
<div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-kotlin" data-lang="kotlin"><span style="display:flex;"><span><span style="color:#728e00">class</span> <span style="color:#434f54">Calc</span>(<span style="color:#728e00">val</span> <span style="color:#434f54">one</span>: <span style="color:#434f54">Int</span>, <span style="color:#728e00">val</span> <span style="color:#434f54">two</span>: <span style="color:#434f54">Int</span>) {
</span></span><span style="display:flex;"><span>  <span style="color:#728e00">init</span> { <span style="color:#434f54">println</span>(<span style="color:#7f8c8d">&#34;oncreate&#34;</span>) }
</span></span><span style="display:flex;"><span>  <span style="color:#728e00">fun</span> <span style="color:#d35400">add</span>(): <span style="color:#434f54">Int</span> {
</span></span><span style="display:flex;"><span>    <span style="color:#728e00">return</span> <span style="color:#434f54">one</span> + <span style="color:#434f54">two</span>
</span></span><span style="display:flex;"><span>  }
</span></span><span style="display:flex;"><span>}
</span></span></code></pre></div><p>Once you realize this is just Java: Woah, not Kotlin, then? And so forth.</p>
<hr>
<p>What&rsquo;s the solution here, then? According to Tew and Guzdial, sidestep the problem by developing a FCS1 (Foundational CS1) language-agnostic test instrument. This means it doesn&rsquo;t matter, as long as the basic features in introductory courses as tested by FCS1 are present. That feels a bit cheap to me, as I&rsquo;ve seen students trip over certain languages more easily than others, meaning the choice of the language still matters.</p>
<p>Siegfried et al. analyzed current programming language trends in CS1 and CS2 courses. Guess what, Java and Python are the most popular choices. More shockingly, perhaps: is that in 88% of the surveyed schools, they only ever teach Java, Python, C++ and C&mdash;with the adoption of Python growing steadily at the expense of the other languages. For CS2, that&rsquo;s typically an object-oriented heavy course, Java is the most popular, closely followed by C++.</p>
<p>That&rsquo;s a recent study of 2021, of which out of 409 schools, only 2 use JavaScript or Scala, 1 uses C# or Haskell, and 6 use Racket/Scheme. Completely absent languages that are present in <a href="https://spectrum.ieee.org/the-top-programming-languages-2023">IEEE Spectrum&rsquo;s Top Languages of 2023</a>: Go, TypeScript, PHP, Ruby, Swift, Rust, Kotlin.</p>
<p>The Spectrum&rsquo;s top 5 is Python, Java, C++, C, JavaScript, which apart from JS neatly overlaps with Siegfried&rsquo;s findings. This is not to say that academia should follow the whims of the ever-changing preferences in industry, but I&rsquo;m a bit surprised by the low adoption rate of Go. Then again, to get to know Go well, you should really know C, and for our operating systems courses, it still makes sense to reach for C instead of Go.</p>
<p>In 2001, in a report called <em>CS1: Perspectives on Programming Languages and the Breadth-First Approach</em> by Close et al., the authors look back at the adoption rates of languages from Fortran to Java and beyond. It&rsquo;s funny to read these by now ancient perspectives:</p>
<blockquote>
<p>The C++ craze, however, may have been short-lived. The emergence of the Internet must be acknowledged and reflected in our courses. Recent conferences have produced an impressive number of papers on the use of Java at the introductory level. C++ is often represented as a better C. In that sense, Java may be viewed as a (slightly) simpler version of C++. While its overall utility for Internet programming may be somewhat specious, Java does project the aura of modern practice and with the implication that jobs may be available for the cognoscenti.</p>
</blockquote>
<p>According to them, Pascal is didactically speaking the soundest language, but it became unfashionable due to the C++ emergence, and the explosion of the World Wide Web caused Java to rapidly grow in popularity as well. Funny, as I have the feeling that in 2023, the web and Java are trying very hard not to know each other.</p>
<p>The evolution towards Python is also visible in the &ldquo;<a href="https://home.adelphi.edu/~siegfried/SIGCSE2019Poster.pdf">Reid List</a>&rdquo;&mdash;Richard Reid who tracked programming language usage in computing courses in the early nineties which was kept alive by colleagues up to 2015. In 2011: Java (50%) #1, C++ (21%) #2, Python (11%) #3. In 2015: Java (46%) #1, Python (20%) #2, C++ (19%) #3. The trend watchers also note the apparent movement both away from Java and to Java. I guess the order doesn&rsquo;t really matter?</p>
<p>Perhaps Java and Python are still the most sensible choices.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 15 October 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: What%27s%20The%20Best%20Programming%20Language%20For%20A%20CS1%20Course%3f">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>About Published But Inaccessible Test Scales</title>
      <link>https://brainbaking.com/post/2023/10/about-published-but-inaccessible-test-scales/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Thu, 12 Oct 2023 09:59:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/10/about-published-but-inaccessible-test-scales/</guid>
      
        
          <category domain="https://brainbaking.com/tags/academia">academia</category>
        
          <category domain="https://brainbaking.com/tags/papers">papers</category>
        
          <category domain="https://brainbaking.com/tags/scale">scale</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>My general conclusion after a day of digging through and studying a semi-random pile of academic papers on the subject of creative confidence is that authors put in disturbingly little effort to effectively make their results and created tools accessible to the general public. I even wonder why some high profile papers published in acclaimed Elsevier journals were accepted when half of their methodology consists of hand-waiving the reader to a ten year older paper that&rsquo;s not only behind closed doors but simply unfindable.</p>
<p>I presume you&rsquo;re expecting me to come up with an example in the next paragraph? Okay. Creative behavior is partially determined by previous creative effort, by socio-cultural influence, and partially by self-confidence&mdash;which, if you really want, can be further divided into creative self-efficacy and creative self-concept. For each of these terms, there exist scales to measure current confidence levels, such as the <em>Short Scale of Creative Self</em> or <em>Creative SElf-Efficacy Scale</em>. Since I was just as confused as you probably are after getting slapped around by these terms, I wanted to take a look at the questionnaire itself that no doubt will help clear things up.</p>
<p>Except that I can&rsquo;t. The papers I found using the above scales obviously correctly cite their source, but never directly include the survey themselves, even though they proceed explaining in detail how the Likert-scale analysis was carried out, which is far less interesting than the questions themselves. Some papers dare to include one question &ldquo;as an example&rdquo;: <em>I trust in my creative abilities</em>. Aha! But where&rsquo;s the rest? It&rsquo;s only a 6-item scale, for god&rsquo;s sake, just include the six damn questions!</p>
<p>The reason why the source material is inaccessible has to do with money&mdash;of course it does. Unfortunately, most of these cognitive psychology-oriented papers are published in closed access journals, making them findable only to the select club of experts that are already familiar with the various concepts. For me as a researcher connected to a university that provides access to library sets, that in itself is a nuisance, but not necessarily a problem. For you as a non-academic person who&rsquo;s interested in the field, it is a problem, unless you use <a href="https://sci-hub.se/">https://sci-hub.se/</a>, hoping it correctly mirrored the reference, as I&rsquo;ve found out that more often than not Sci-Hub doesn&rsquo;t have the requested document.</p>
<p>The problem is worsened by my field of expertise. Most authoritative publications in cognitive psychology are published in venues connected to the American Psychology Association (APA), the largest scientific organization of psychologists in the United Stats, which happily gatekeeps anything that goes in. As a European university, KU Leuven, my institution, does <em>not</em> provide access to APA-published works. Every single time one of my digs encounters an APA paper, I curse.</p>
<p>What&rsquo;s the purpose of you developing a scale when you put it behind closed doors? This is even dumber when the scale consists of just a few items that&rsquo;s easily repeatable in another paper.</p>
<hr>
<p>Another thing I noticed. It seems that very few scientists think beyond papers when it comes to promoting and publishing their work. The <em>Short Scale of Creative Self</em> could easily be converted into a simple single <code>.html</code> webpage for anyone to access. Imagine that, anyone who can take the test, let&rsquo;s make sure that never happens, we cannot and will not have that!</p>
<p>And yet that&rsquo;s exactly what we did with our own <em>Creative Programming Problem Solving Test</em> (CPPST). Here&rsquo;s the test: <a href="https://brainbaking.com/cppst/">https://brainbaking.com/cppst/</a> and it even comes with a nice summary after you&rsquo;re finished with it. Do with the questions whatever you want. They&rsquo;re also published in the book <a href="https://brainbaking.com/works/the-creative-programmer">The Creative Programmer</a>. That&rsquo;s called <em>spreading the word</em>, you should try it sometime dear researcher. My hope is that if someone stumbles upon our papers where we used CPPST, that they just find it online. Either way, our papers are published as open access, and lo and behold, they just contain all questions.</p>
<p>Something I&rsquo;ve seen research groups of our faculty do as well is to develop and publish a pilot version of a scale, only to commercialize and try to sell it afterwards. Even though I admit that funding is <em>very</em> tight nowadays, especially in the field of engineering education, and I applaud original efforts to bring in some more, this practice only worsens the problem, as obviously the improved version of the test can no longer be open sourced, meaning it&rsquo;s once again closed off for the general public.</p>
<p>Most scales are not even that useful. They&rsquo;re a quick quantitative way to help identify the first layer of the problem, but nothing more.</p>
<p>I wish universities would mandate (1) publishing works as open access and (2) the spreading of findings, results, and developed tools such as test scales through multiple channels. Even a simple webpage hosted by the faculty will do.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 12 October 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: About%20Published%20But%20Inaccessible%20Test%20Scales">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Top 25 Best Games Of All Time (GOAT)</title>
      <link>https://brainbaking.com/post/2023/10/top-25-best-games-of-all-time/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Sun, 08 Oct 2023 09:00:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/10/top-25-best-games-of-all-time/</guid>
      
        
          <category domain="https://brainbaking.com/tags/lists">lists</category>
        
          <category domain="https://brainbaking.com/tags/games">games</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Edge Magazine <a href="https://www.resetera.com/threads/edge-magazine-ranks-the-100-greatest-videogames-of-the-past-30-years.771485/">put out another ranking</a>, this time the 100 greatest video games of the past 30 years, which yet again fueled my <a href="https://brainbaking.com/tags/lists">obsession with lists</a>. The list is&mdash;of course&mdash;depressingly inaccurate, with giant holes in it such as <em>Diablo II</em> or <em>Final Fantasy VI</em>.</p>
<p>And then someone at Mastodon shared his &ldquo;top 25 GOAT&rdquo; video game list, created with <a href="https://topsters.org/">https://topsters.org/</a>, convincing me to do the same difficult but fun exercise. I probably fall down that trap once a year, yet the result is consistent enough to share here.</p>
<p>In 2021, I participated in the <a href="https://brainbaking.com/post/2021/09/favorite-game-meme/">Favorite Game Meme</a>, another list that partially overlaps. This time, however, the GOAT list is deceptively simple to put together: <em>what are your 25 best games of all time</em>? You don&rsquo;t need to rank them. For me, that would be a next to impossible task. Here&rsquo;s my take on the answer:</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2023/10/top-25-best-games-of-all-time/../topsters-goat25.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2023/10/top-25-best-games-of-all-time/../topsters-goat25.jpg" loading="lazy" title="My Top 25 GOAT Games." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>My Top 25 GOAT Games.</figcaption>
	
</figure>
</p>
<p>Again, bear in mind that it&rsquo;s <em>unsorted</em>&mdash;although the first mention is my number one.</p>
<p>Row 1:</p>
<ol>
<li><strong>Baldur&rsquo;s Gate II</strong>. There&rsquo;s nothing that will ever beat it, and while BG3 does an admirable effort, it doesn&rsquo;t look like it will either.</li>
<li><strong>Wario Land 3</strong>. I chose the wrong cover here (depicting <em>Super Mario Land 3: Wario Land 1</em> instead), but Wario 3&rsquo;s metroid-y level design, invincibility, and transitions are amazing. It&rsquo;s still great to play today.</li>
<li><strong>Wizardry 8</strong>. The swan song of Sir-Tech that&rsquo;s imperfectly perfect&mdash;or the other way around? I love the atmosphere, number crunching and voice acting here. I wish there was room for <em>Jagged Alliance 2</em> as well.</li>
<li><strong>Castlevania: Aria of Sorrow</strong>. The best GBA game and the best Metroidvania. Yes, it&rsquo;s better than <em>Symphony of the Night</em>.</li>
<li><strong>Goblins 3</strong>. Partial nostalgia bias speaking here: <em>Broken Sword</em> is the much better fit, but I can&rsquo;t part with a Goblins game that I grew up with.</li>
</ol>
<p>Row 2:</p>
<ol>
<li><strong>Monkey Island 2: LeChuck&rsquo;s Revenge</strong>. After creating this list, I&rsquo;ve been thinking about swapping it out in favor of <em>Day of the Tentacle</em>. Any great Lucas adventure can slot in here.</li>
<li><strong>Diablo II</strong>. The game that made me join a clan, go figure.</li>
<li><strong>Commandos 2</strong>. We played endless missions cooperatively. Finishing a big map together is very satisfying, as long as you don&rsquo;t jam quick save instead of quick load.</li>
<li><strong>Rainbow Six 3: Raven Shield</strong>. This, together with <em>Commandos</em>, was me and my friend&rsquo;s go-to for years and years. <em>Threat neutralized</em>.</li>
<li><strong>The Legend of Zelda: A Link to the Past</strong>. Maybe <em>Link&rsquo;s Awakening</em> should be here instead? Both games are the pinnacle of 2D Zelda&mdash;or any Zelda or exploration adventure, for that matter.</li>
</ol>
<p>Row 3:</p>
<ol>
<li><strong>Tactics Ogre: Reborn</strong>. Recency bias speaking, but the original <em>Let us Cling Together</em> is not as accessible, and I always preferred <em>Tactics Ogre</em> to <em>Final Fantasy Tactics</em>, which is also a great choice.</li>
<li><strong>Paper Mario 2: Thousand Year Door</strong>. The best GameCube game, and the funniest <em>Paper Mario</em> and a grand adventure.</li>
<li><strong>Super Metroid</strong>. This and <em>Metroid Fusion</em> are pinnacles of the genre that I go back to every year. I&rsquo;ve been thinking about swapping it out for <em>Hollow Knight</em> but just can&rsquo;t.</li>
<li><strong>Animal Crossing: Wild World</strong>. The de facto mobile feel-good game that had me picking a stranger&rsquo;s peaches at night. What&rsquo;s your friend code? I didn&rsquo;t like the latest installment&rsquo;s focus on design instead of neighbor socialism.</li>
<li><strong>Pizza Tower</strong>. The only modern PC game on the list that supersedes its lineage <em>Wario Land 4</em> and completely blew me away.</li>
</ol>
<p>Row 4:</p>
<ol>
<li><strong>Deus Ex</strong>. A RPG masterpiece told in FPS perspective. The series never reached the same heights ever since. If I had played <em>Ultima Underworld</em> as much, it would be occupying this spot.</li>
<li><strong>Sonic 3</strong>. Still the best Sonic game, and the only MegaDrive one on the list, even though I was a SEGA boy when I was little: ouch?</li>
<li><strong>The Legend of Zelda: Wind Waker</strong>. It came bundled with my GameCube and I played it together with my sister. If you have fond memories of <em>Ocarina of Time</em> instead, swap both versions&mdash;as long as you keep out the more recent 3D ones.</li>
<li><strong>Fire Emblem: the Sacred Stones</strong>. Perhaps <em>Awakening</em> is better, but I love the pixel art style of the GBA installments. I&rsquo;m a sucker for turn-based tactical roleplaying.</li>
<li><strong>Super Mario World</strong>. The best 2D platformer of all time? Some prefer <em>Yoshi&rsquo;s Island</em> or <em>Mario 3</em>. Good for you!</li>
</ol>
<p>Row 5:</p>
<ol>
<li><strong>Kirby&rsquo;s Dream Land 2</strong>. I knew I wanted a <em>Kirby</em> game in there but couldn&rsquo;t choose so I ended with my favorite GB one. In retrospect, <em>Super Star (Ultra)</em> for the SNES/DS is probably better.</li>
<li><strong>Mario &amp; Luigi: Superstar Saga</strong>. Next to <em>Aria of Sorrow</em> the best GBA game. I the humor, love collecting beans, and the tight collaboration between both brothers. Later <em>Mario &amp; Luigi</em> games are okay as well, but this one&rsquo;s simply the best.</li>
<li><strong>Age of Empires II: The Age of Kings</strong>. My favorite RTS game, although I wish there was room for <em>Warcraft III</em>, and I was thinking of swapping AoE for <em>Rise of Nations</em>.</li>
<li><strong>Duke Nukem 3D</strong>. Duke voice: <em>I don&rsquo;t have time to play with myself</em>. My seminal 2.5D DOS shooter.</li>
<li><strong>Zeus: Master of Olympus</strong>. I felt the need to include at least one 4X/simulation/city builder and couldn&rsquo;t choose between <em>Zeus</em>, <em>Pharaoh</em>, <em>Sim City 3000/4</em> or <em>Civilization</em>. I picked the one I played the most.</li>
</ol>
<hr>
<p>After redoing the exercise a few times, the list became pretty stable. It surprised me that: many of my older (DOS) &ldquo;great games&rdquo; are superseded by newer ones, no Wii or 3DS games are on the list, only one DS game is on the list, and most newer games I played in the last few years aren&rsquo;t on it. If there was more space for one more row, I&rsquo;d add <em>GTA: Vice City</em>, <em>Into the Breach</em>, <em>Hollow Knight</em>, <em>Tetris (DS?)</em>, and <em>Fallout</em>.</p>
<p>What&rsquo;s on your top 25 GOAT? I&rsquo;d love to hear from you! Here are a few questions that might help you make the choice:</p>
<ul>
<li>Which game would you want to take with you to a deserted island?</li>
<li>Which game do you regularly replay? Which one have you played the most?</li>
<li>Which game ticks all boxes, including amazing soundtrack?</li>
<li>Which genre you love is still missing in the list? Which platform?</li>
<li>Which game stands the test of time and is still great in 2023?</li>
</ul>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 8 October 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Top%2025%20Best%20Games%20Of%20All%20Time%20%28GOAT%29">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>ChatGPT Is Worse For Students Than Stack Overflow</title>
      <link>https://brainbaking.com/post/2023/10/chatgpt-is-worse-for-students-than-stack-overflow/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Thu, 05 Oct 2023 10:11:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/10/chatgpt-is-worse-for-students-than-stack-overflow/</guid>
      
        
          <category domain="https://brainbaking.com/tags/AI">AI</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Our first-year engineering students have been exposed to higher education for a good two weeks now, and as is typical for each &ldquo;virgin&rdquo; semester, casualties are slowly but surely starting to appear. This year, however, as a teacher, something irritated me more than usual: the quickness of giving up.</p>
<p>Focus has been a worsening problem for decades now, thanks to the invention of smartphones and social media, and even though I tell myself not to pay too much attention to the slackers on the last few rows that do nothing but scroll on their phone, I always return home disappointed and annoyed. This time even more so, thanks to the speed at which students whip up answers by just asking ChatGPT to do their Python exercise<sup id="fnref:1"><a href="https://brainbaking.com/post/2023/10/chatgpt-is-worse-for-students-than-stack-overflow/#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>.</p>
<p>When I confront them with this, they quipped: &ldquo;how else should I learn this?&rdquo; Perhaps by trying the exercise yourself? Perhaps by getting used to failing, asking for help, studying the given material, and retrying? It dawned to me that this phenomena isn&rsquo;t exactly new: high school students regularly dare to outsource (and even pay for) their work, which is easy to do through the internet. It can be as simple as asking the Stack Overflow community to solve it for you.</p>
<p>But chances are low of your Stack Overflow question being answered as soon as it&rsquo;s posted. That means that students usually won&rsquo;t get the answer handed to them within the time frame of my class. This dynamic completely changed with the release of ChatGPT&mdash;which, again to my frustration, first-year students are more than happy to exploit.</p>
<p>I know a lot of papers are being published concluding that we&rsquo;ll have to accept that ChatGPT is there and our way of teaching should change because of it. I disagree. That&rsquo;s like saying &ldquo;okay people can&rsquo;t stop scrolling on their phones, I guess we shorten and cut up our content &lsquo;cause they can&rsquo;t handle it anymore&rdquo;&mdash;which, to an extend, is exactly what&rsquo;s happening with education, by the way. I admit that restricting usage usually has the opposite effect, but the way technology is heading right now only gives me headaches.</p>
<p>Here&rsquo;s a simple example: Given a string in Python, write a function that converts each character that&rsquo;s not in uppercase to uppercase and the other way around:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#434f54">sentence</span> <span style="color:#728e00">=</span> <span style="color:#7f8c8d">&#34;Hi There Sup?&#34;</span>
</span></span><span style="display:flex;"><span><span style="color:#434f54">expected</span> <span style="color:#728e00">=</span> <span style="color:#7f8c8d">&#34;hI tHERE sUP?&#34;</span>
</span></span></code></pre></div><p>If you were to ask this using ChatGPT, I&rsquo;ve seen it produce something like:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#728e00">def</span> <span style="color:#d35400">convert</span>(<span style="color:#434f54">sentence</span>):
</span></span><span style="display:flex;"><span>  <span style="color:#434f54">result</span> <span style="color:#728e00">=</span> []
</span></span><span style="display:flex;"><span>  <span style="color:#728e00">for</span> <span style="color:#434f54">c</span> <span style="color:#728e00">in</span> <span style="color:#434f54">sentence</span>:
</span></span><span style="display:flex;"><span>      <span style="color:#728e00">if</span> <span style="color:#434f54">c</span><span style="color:#728e00">.</span><span style="color:#434f54">isupper</span>():
</span></span><span style="display:flex;"><span>          <span style="color:#434f54">result</span><span style="color:#728e00">.</span><span style="color:#434f54">append</span>(<span style="color:#434f54">c</span><span style="color:#728e00">.</span><span style="color:#434f54">lower</span>())
</span></span><span style="display:flex;"><span>      <span style="color:#728e00">else</span>:
</span></span><span style="display:flex;"><span>          <span style="color:#434f54">result</span><span style="color:#728e00">.</span><span style="color:#434f54">append</span>(<span style="color:#434f54">c</span><span style="color:#728e00">.</span><span style="color:#434f54">upper</span>())
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>  <span style="color:#728e00">return</span> <span style="color:#7f8c8d">&#34;&#34;</span><span style="color:#728e00">.</span><span style="color:#434f54">join</span>(<span style="color:#434f54">result</span>)
</span></span></code></pre></div><p>Then the student has the guts to ask me to explain this code, since they don&rsquo;t understand it&mdash;especially the weird <code>join()</code> statement that of course we haven&rsquo;t seen yet, while the easy solution that we expect students to come up with is:</p>
<div class="highlight"><pre tabindex="0" style="background-color:#fff;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-python" data-lang="python"><span style="display:flex;"><span><span style="color:#728e00">def</span> <span style="color:#d35400">convert</span>(<span style="color:#434f54">sentence</span>):
</span></span><span style="display:flex;"><span>  <span style="color:#434f54">result</span> <span style="color:#728e00">=</span> <span style="color:#7f8c8d">&#34;&#34;</span>
</span></span><span style="display:flex;"><span>  <span style="color:#728e00">for</span> <span style="color:#434f54">c</span> <span style="color:#728e00">in</span> <span style="color:#434f54">sentence</span>:
</span></span><span style="display:flex;"><span>      <span style="color:#728e00">if</span> <span style="color:#434f54">c</span><span style="color:#728e00">.</span><span style="color:#434f54">isupper</span>():
</span></span><span style="display:flex;"><span>          <span style="color:#434f54">result</span> <span style="color:#728e00">=</span> <span style="color:#434f54">result</span> <span style="color:#728e00">+</span> <span style="color:#434f54">c</span><span style="color:#728e00">.</span><span style="color:#434f54">lower</span>()
</span></span><span style="display:flex;"><span>      <span style="color:#728e00">else</span>:
</span></span><span style="display:flex;"><span>          <span style="color:#434f54">result</span> <span style="color:#728e00">=</span> <span style="color:#434f54">result</span> <span style="color:#728e00">+</span> <span style="color:#434f54">c</span><span style="color:#728e00">.</span><span style="color:#434f54">upper</span>()
</span></span><span style="display:flex;"><span>  <span style="color:#728e00">return</span> <span style="color:#434f54">result</span>
</span></span></code></pre></div><p>This exercise is just there to get to know <code>def</code> and <code>for</code>, while they should be familiar with strings and how to append things from a previous class. To make matters worse, I was heavily confused after seeing <code>&quot;&quot;.join()</code>, since I regularly use that trick myself, and instead of explaining the simple version, I explained the hard one. Then the student proceeded by yelling &ldquo;See? ChatGPT!&rdquo; Right. Time for my blood pressure pills.</p>
<p>If we as a society keep on creating and accepting tools like ChatGPT (and smartphones&hellip;) that can clearly be exploited in all manner of ways, then I wonder what kind of world our daughter is going to live in thirty-forty years from now. These first-year students are probably proud of themselves of having the ability to copy-paste and quickly &ldquo;finishing&rdquo; the assignment, but in reality:</p>
<ul>
<li>They have no idea how good or how bad the proposed solution is, since they&rsquo;re still lacking critical thinking skills and programming experience;</li>
<li>They have no idea that some proposed solutions are plain wrong and accept most or all of it anyway;</li>
<li>They have no idea on which data the model is based on, and how unethically it was assembled;</li>
<li>They have no idea that anything your put in will also be gobbled up and used in some way;</li>
<li>They have no idea they gave away their data such as mobile number etc. to create an OpenAI account, and how it undoubtedly will be misused in the future.</li>
<li>The worst part: if you try to explain the points raised in this post, they won&rsquo;t listen.</li>
</ul>
<p>The problem is that teaching ethics, critical thinking, and other key abilities that help put a much-needed perspective to use these tools with responsibility simply cannot be done within the first two semesters in higher education, which means entry courses such as the Python one will always be suspect to copy-paste bragging. Sure, exams with no access to these tools can easily expose these students, but does this mean that in the end ChatGPT is partially responsible for an even higher drop-out rate?</p>
<p>I increasingly feel like an old man yelling at clouds&hellip;</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Before it starts raining complaints: no, this isn&rsquo;t a generalization, it never is, and yes, there are still ample prime examples of good achievers, but that&rsquo;s beside the point here: please bear with me.&#160;<a href="https://brainbaking.com/post/2023/10/chatgpt-is-worse-for-students-than-stack-overflow/#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 5 October 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: ChatGPT%20Is%20Worse%20For%20Students%20Than%20Stack%20Overflow">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Favorites of September 2023</title>
      <link>https://brainbaking.com/post/2023/10/september-2023/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Mon, 02 Oct 2023 14:48:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/10/september-2023/</guid>
      
        
          <category domain="https://brainbaking.com/tags/metapost">metapost</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p><em>Dear dr. Groeneveld, when are you finally going to properly start preparing for your next big thing? Time is ticking! Yours sincerely, just Wouter.</em> I know, I know, Wouter, but all in due time. October is still a long way off, and&mdash;woah, did that just creep up on us? It&rsquo;s still twenty plus degrees (Celcius) outside! Our lovely capitalist-powered CO2-producing economy seems to have abolished autumn, which in turn seems to have messed with my ability to get off my ass. All in due time?</p>
<p>Anyway, that&rsquo;s more than enough waffling. Let&rsquo;s see whether or not I have interesting links to share.</p>
<p>Previous month: <a href="https://brainbaking.com/post/2023/09/august-2023">August 2023</a>.</p>
<h2 id="books-ive-read">Books I&rsquo;ve read</h2>
<p>I&rsquo;m still powering thorugh Ilja Leonard Pfeijffer&rsquo;s Brieven uit Genua (<em>Letters from Genoa</em>), currently on page 400 of 650 or so. As usual, it&rsquo;s great, and I especially love the letters he writes to his former self. It seems like a good idea to jump-start a bit of reflection (and a lot of dirty humor).</p>
<p>Apart from that, in September, I did finish:</p>
<ul>
<li>The School of Life&rsquo;s <a href="https://www.theschooloflife.com/shop/what-they-forgot-to-teach-you-at-school/">What They Forgot To Teach You At School</a>: a collection of short essays that dip a toe in subjects such as self-love, beginning (and especially ending) relationships, emotional maturity, and more. It&rsquo;s very easy to recommend but not very thorough.</li>
<li>Mary Karr&rsquo;s The Art of Memoir that <a href="https://brainbaking.com/post/2023/09/short-author-bios-on-books/">left me disgusted</a> thanks to the Americanized writing style, ridiculous showcase of diction, and the words shit or fuck thrown in on every odd page. Deep down there, there&rsquo;s some good advice on how to write. I guess.</li>
<li>Daniel Klein&rsquo;s <a href="http://www.travelswithepicurus.com/">Travels with Epicurus</a> (in Dutch: <em>De wijsheid van de tandeloze glimlach: gelukkig ouder worden met Epicurus</em>); probably the one I enjoyed the most because of the laid-back writing style and the philosophical point of view. I especially enjoyed sections where the Kairos vs. Chronos interpretation of time debate (re)appeared.</li>
</ul>
<h2 id="games-ive-played">Games I&rsquo;ve played</h2>
<p>Yes! I mean, <em>yes</em>, I finally made some time to pick up a game or two.</p>
<ul>
<li><a href="https://jefklakscodex.com/games/pc/jazz-jackrabbit/">Jazz Jackrabbit</a> was the DOS Game Club&rsquo;s August game I finished 2 days overtime. I used to love the shareware episodes. Now I think it&rsquo;s a mediocre Sonic impression on PC. The soundtrack still rocks, though.</li>
<li>I&rsquo;m going back to retro shooters or retro-inspired ones, with <a href="https://jefklakscodex.com/games/switch/quake/">Quake (2021 Remaster)</a> as the first I thought I&rsquo;d enjoy less than I did. As a Duke 3D fan, I never really played it back in 1996 (and I probably didn&rsquo;t have the Voodoo card that helped run it). The remaster is awesome, and the new expansion map pack alone is worth its ridiculously low €10 price. I collected some thoughts and screenshots, so be sure to give click on the above link.</li>
</ul>
<p>After <em>Quake</em>, I wanted to play <a href="https://jefklakscodex.com/games/switch/dusk/">DUSK</a>, a more recent shooter with <em>Quake</em>/<em>DOOM</em> influences that&rsquo;s supposedly very <em>very</em> good, and also a good fit for the Month of Spookiness. But then I bought <em>Nightmare Reaper</em> instead&mdash;after years of secretly admiring gameplay footage, but without access to a console port. I&rsquo;m almost done with it: boredom is setting in.</p>
<h2 id="selected-blog-posts">Selected (blog) posts</h2>
<ul>
<li>Slightly related, here&rsquo;s a YouTube video of <a href="https://www.youtube.com/watch?v=AGP9c61125k">10 essential components behind every great nineties shooter</a>. Just in case you need a reminder.</li>
<li>Feenk talks about <a href="https://lepiter.io/feenk/teaching-moldable-development-dkbj2hlidhiph2eodusb87ye6.html/">teaching moldable development</a>, a way of programming in which you build custom tools for reach solution to help systems become more explainable. I need to let this one ferment for another month: it&rsquo;s a lot to take in!</li>
<li>Koshka&rsquo;s <a href="http://koshka.love/dos/reminiscences.html">Dos/Windows 9x Game Reminiscences</a> were fun to read. Another good <em>searchmysite.net</em> find.</li>
<li>Alan Moore implies us to <a href="https://austinkleon.com/2023/09/07/read-terrible-books-too/">read terrible books, too</a> (via Austin Kleon).</li>
<li>A paper by Michael Muthukrishna and Joseph Henrich called <a href="https://royalsocietypublishing.org/doi/epdf/10.1098/rstb.2015.0192">Innovation in the collective brain</a> yet again confirms my ideas on collective creativity.</li>
<li>Ruben Schade made a startling discovery: some 486 <a href="https://rubenerd.com/fake-486-cache-chips/">cache chips can be fake</a>? I didn&rsquo;t know that! Better be careful out there on eBay, kids!</li>
<li>I love Ernst Meijer&rsquo;s <a href="https://komdenken.nl/">Kom Denken</a> approach to philosophical practice: you can book him to talk about anything, and he also does walk-in consults in the library of Utrecht.</li>
<li>Timo Tijhof wrote <a href="https://timotijhof.net/posts/2023/an-internet-of-php/">An Internet of PHP</a>: PHP is still impressively <em>huge</em>!</li>
<li>Dan North&rsquo;s <a href="https://dannorth.net/the-worst-programmer/">The Worst Programmer I know</a> perfectly illustrates why developer efficiency metrics are bollocks.</li>
<li>I switched from Node to Bun, but perhaps that&rsquo;s not such a good idea, since apparently we <a href="https://dev.to/thejaredwilcurt/bun-hype-how-we-learned-nothing-from-yarn-2n3j">learned nothing from Yarn</a>? An interesting perspective on the evolution (and staggering speed) of JS build tools.</li>
<li>I used Edward Tufte&rsquo;s layout for my dissertation in <code>TeX</code>, but using smart <a href="https://meyerweb.com/eric/thoughts/2023/09/12/nuclear-anchored-sidenotes/">nuclear anchored sidenotes</a>, Eric Meyer teaches us that you can do so too in CSS!</li>
</ul>
<h2 id="other-random-links">Other random links</h2>
<ul>
<li>Dopefish has its own <a href="https://www.dopefish.com/fishinfo.html">official webpage</a>, yay! Dopefish lives, people!</li>
<li>In <a href="http://www.rinkworks.com/apogee/s/2.1.shtml">The old Apogee FAQ</a>, we can read where the Apogee theme jingle came from.</li>
<li>In case anyone wants an overview: someone made a <a href="https://docs.google.com/spreadsheets/d/1ko7iYqZDcr5Leq6I_1byupsVcyFjFZDYItTK5qhOwxk/htmlview#">Google Sheet for Limited Run releases</a>, because their own site is incapable of rendering a decent overview.</li>
<li><a href="https://www.doshaven.eu/">DOS Haven</a> houses hidden 21st century DOS games, complete in stylized ASCII prompt.</li>
<li><a href="https://strudel.tidalcycles.org/">Strudel</a> is a live REPL where you can hack together dynamic music pieces. It&rsquo;s basically the JS version of Tidalwaves.</li>
<li>The Kagi search engine has a <a href="https://kagi.com/smallweb">Small Web webring</a> that acts as a Stumbleupon for smaller sites. Be sure to add your favorites!</li>
</ul>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 2 October 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Favorites%20of%20September%202023">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Overlooked Reasons To Still Buy Physical Media</title>
      <link>https://brainbaking.com/post/2023/09/overlooked-reasons-to-still-buy-physical-media/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Mon, 25 Sep 2023 08:44:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/09/overlooked-reasons-to-still-buy-physical-media/</guid>
      
        
          <category domain="https://brainbaking.com/tags/collecting">collecting</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>With Microsoft&rsquo;s reportedly <em>digital only</em> plans for Xbox&rsquo;s future <a href="https://www.eurogamer.net/its-a-good-thing-microsoft-now-says-its-adorably-all-digital-future-plans-are-outdated">now leaked</a>, Xbox boss Phil Spencer had to be quick to dismiss the information as <em>outdated</em>, as physical collectors and preservationists were already starting to panic on social media. Regular readers will undoubtedly know I&rsquo;m mostly a physical kind of guy as well&mdash;see <a href="https://brainbaking.com/post/2022/10/is-collecting-physical-games-worth-it-part-iii/">is collecting physical games worth it part III</a>&mdash;although no panic attacks were induced here, as I don&rsquo;t care about Xbox.</p>
<p>The Xbox plan leak wasn&rsquo;t the first to try and push cloud-based gaming: hello, Stadia&mdash;hey, where are you going? Okay, <a href="https://killedbygoogle.com/">bye, Stadia</a>! Yet it reminded me yet again why buying and playing physical games has, for me, many advantages over a digital purchase. Unconventional advantages that I see rarely mentioned, beyond the obvious preservationist perspective, which, if you factor in DLC, patches, and sometimes even required online connections, is more of an illusion than anything else. Most of these reasons to still buy physical games can also be applied to DVDs so I generalized the title to <em>media</em>. Here&rsquo;s why I still like buying tangible things.</p>
<p>Physical games are <strong>more expensive</strong>. I think that&rsquo;s a feature, not a bug. I finished 18 of the 36 digital Switch games I own (<code>50%</code>), while I finished 22 of the 28 physical games (<code>79%</code>). That ratio rapidly propels itself towards the lower tenths if I inspect my digital-only Steam library. If I have to pay more for a game, I don&rsquo;t buy it on a whim: I buy it if I want to really, really, really play it. Which digital purchases you made lately were nothing but impulse buys because of Black Whateverday?</p>
<p>Physical games can be <strong>more difficult to get</strong>. I&rsquo;m not just talking about the unfortunate limited supply of publishers like Limited Run Games (LRG) that confuse preservation with commercialism, but about the added hassle of biking to a brick &amp; mortar store, hoping it&rsquo;ll be in stock (and in sale, which it never is). Most of you probably buy through online resellers or hunt for a discount on eBay&mdash;which is fine as well&mdash;but I prefer first sweating and then clenching something in hand to return home. That also means, to a lesser extend, that buying physical media can still be considered a somewhat social event.</p>
<p>Physical games <strong>require motor actions</strong> to boot up. That&rsquo;s a fancy word for saying you need to pull out the previous disc or cartridge and insert the one you want to play now, possibly followed by a curse and searching for the correct box to put that other thing in. I <em>love</em> the physical action of a cart insert, whether it&rsquo;s a spring-loaded <em>click</em> like the Switch or a good old whack for older consoles. It helps makes my mind ready for the play session. I sometimes put the cart back in the case after the session just to repeat this ritual the next time.</p>
<p>Physical games <strong>retain their value</strong>. Sometimes, a game disappoints. In that case, I&rsquo;d like to have the option to sell it. I&rsquo;m not a collector in the sense that my collection can only grow and never shrink&mdash;but even then, genuine cartridge-based physical games only go up in price. Not that I&rsquo;d recommend viewing the hobby as an investment: you&rsquo;re better off buying and storing sealed Magic the Gathering booster boxes.</p>
<p>Physical games <strong>are mine</strong> once I bought them. I generally dislike subscription-based media where one week your favorite thing is available and the next, <em>poof</em>, it&rsquo;s gone. This doesn&rsquo;t apply to digitally bought games, but if I sell my Wii/Switch/whatever, what to do with my account that&rsquo;s linked with these purchases? It&rsquo;s a bit more complicated than just having them, you know, in your hand.</p>
<p>Physical games make <strong>lending</strong> possible, precisely because of the above point: they&rsquo;re tangible, and they&rsquo;re mine. I like lending games, as it helps either enthusing others or making my mind up whether or not I want to play it. I wish the Nintendo DS&rsquo;s Download Play was still a thing.</p>
<p>Physical games are usually <strong>released later</strong> than their digital counterpart. Yet again, I think that&rsquo;s a feature, not a bug. By then, the consensus of the critics is known, the initial bugs have been patched, and perhaps, my initial enthusiasm for the game has waned. Besides, nowadays, I find it impossible to keep up with releases and play stuff as it gets released.</p>
<p>Physical games are usually <strong>not bundled</strong>. While I applaud Humble Bumble and the like for their charity work, I actually don&rsquo;t like having three crappy or less interesting games come with that one game I actually want. Can you permanently remove games from your Steam library?</p>
<p>Physical games help <strong>provide an overview</strong> on the shelf. Yes, accumulating stuff can get both tiresome and result in clutter, but if you just buy what you want to play instead of collect, for me, it&rsquo;s easier to keep track of what I have. Probably also because I buy less often (see the more expensive argument).</p>
<p>Physical games help <strong>reduce required disk space</strong>. This is only true for cartridge-based media that don&rsquo;t need an install and instantly load, like the Nintendo Switch. I know microSD cards are dirt cheap nowadays, but it&rsquo;s not fun to regularly move data around. I made the mistake of buying <em>Animal Crossing: New Horizons</em> digitally because we couldn&rsquo;t wait. Now it&rsquo;s eating up <code>6 GB</code>+ of my smallish HDD space, and that&rsquo;s only base game data.</p>
<p>Reasons I&rsquo;ve seen overused that I think have evolved from something genuine to something hollow:</p>
<ul>
<li>preservation&mdash;companies like Strictly Limited and LRG might claim they&rsquo;re doing it to preserve games, but we know they just like the heaps of money that&rsquo;s flowing in. Remember the DOOM fiasco, that required an online account, or the Scott Pilgrim fiasco, that had important DLC left out intentionally, or the Shredder&rsquo;s Revenge DLC physical re-release to screw over faithful buyers of the original cart? Right. In addition, I don&rsquo;t think building a private collection is contributing towards public preservation.</li>
<li>Instruction manuals&mdash;new physical media usually comes without, and while LRG initially put in a lot of effort to publish high-quality booklets like in Axiom Verge 1+2, my DUSK manual is a flimsy piece of paper folded in half. Right.</li>
</ul>
<p>That said, I of course still buy digital games. Many indie games never make it to physical media, old and forgotten DOS games are only available through GOG.com&rsquo;s digital-only store, and sometimes, I break my own rules and cannot wait. Don&rsquo;t worry though, if it&rsquo;s a truly remarkable game, I buy both versions to support the developers!</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 25 September 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Overlooked%20Reasons%20To%20Still%20Buy%20Physical%20Media">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>AI Allegedly Beats Humans in Creativity</title>
      <link>https://brainbaking.com/post/2023/09/ai-allegedly-beats-humans-in-creativity/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Thu, 21 Sep 2023 09:00:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/09/ai-allegedly-beats-humans-in-creativity/</guid>
      
        
          <category domain="https://brainbaking.com/tags/creativity">creativity</category>
        
          <category domain="https://brainbaking.com/tags/AI">AI</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>The MIT Technology Review headline on artificial intelligence reads: <em>AI just beat a human test for creativity. What does that even mean?</em> I&rsquo;ll tell you what it means. It means we&rsquo;re in dire need of a better universally accepted definition of creativity. All those scare makers are just there to ride on the popularity of the terms &ldquo;AI&rdquo; and &ldquo;Language Learning Model&rdquo;. AI does what AI does: it generates stuff. That&rsquo;s not creative at all&mdash;it&rsquo;s just <em>a single part</em> of creativity.</p>
<p>Shallow articles that have nothing to say aside, I was all the more disappointed when reading Mika Koivisto and Simone Grassini&rsquo;s<sup id="fnref:1"><a href="https://brainbaking.com/post/2023/09/ai-allegedly-beats-humans-in-creativity/#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup> paper called <em><a href="https://www.nature.com/articles/s41598-023-40858-3">Best humans still outperform artificial intelligence in a creative divergent thinking task</a></em>, where the abstract mentioned that on average, AI chatbots outperformed human participants (going even further: <em>while human responses included poor-quality ideas, the chatbots generally produced more creative responses.</em>)</p>
<p>The term &ldquo;creative&rdquo; or &ldquo;creativity&rdquo; should <em>not</em> have been used in the above paper: the title itself indicates that it&rsquo;s all about divergent thinking. <em>Of course</em> AI is better at generating a more diverse set of so-to-speak original ideas: its gargantuan dataset is based on the ideas of millions of other humans! We could never possibly have that much experience, meaning we can never possibly come up with that many diverse answers&mdash;and that&rsquo;s okay. In an interview with software developers, while probing how they perceive creativity and creative problem solving, one participant said: &ldquo;creativity is the brew of different inputs&rdquo;. Chatbots have had a lot more input than we&rsquo;ll ever be capable of processing.</p>
<p>If you dig deeper, you&rsquo;ll uncover even more evidence proving the misuse of the term creativity. Those &ldquo;tests for creativity&rdquo;? Those are either Torrance&rsquo;s Test of Creative Thinking (TTCT) or the Alternate Uses Task (UAT), both one-dimensional divergent thinking tasks developed in the seventies that have little to do with modern creative problem solving. Of course coming up with as many different alternative solutions as possible is still relevant today, but like I mentioned before, it&rsquo;s only <em>one</em> dimension of creativity. It begets all the others: collaboration, critical thinking, a creative mindset, tooling, etc (see <a href="https://brainbaking.com/post/2021/01/what-is-creativity-in-software-engineering/">what is creativity in software engineering?</a>).</p>
<p>Chatbots, AI, Language Learning Models, code-generation tools&mdash;or whatever you want to call them&mdash;should be treated as just another way of getting input. Input that still needs to pass the different critical thinking phases: if you proudly claim never to blindly copy-paste Stack Overflow answers, then why are you blindly (and still proudly?) accepting Copilot&rsquo;s proposal to generate that piece of code? Perhaps it&rsquo;s not the best fit here. Perhaps the proposed code reminds you of another problem that you once discussed with a colleague, concluding that the best way to proceed here is to reject the proposal and implement a variant of the one you were reminded of. Without the proposal, you probably didn&rsquo;t remember. But without critically evaluating the proposal, that part of the code wouldn&rsquo;t have been as reusable and clear as it is now.</p>
<p>Granted, Koivisto and Grassini do make amends in the last sentence of their conclusion:</p>
<blockquote>
<p>It should be noted that creativity is a multifaceted phenomenon, and we have focused here only on performance in the most used task (AUT) measuring divergent thinking.</p>
</blockquote>
<p>That warning should have been placed in the beginning, in the middle, <em>and</em> in the end, as people are quick to generalize and some pages contain the word creativity more than 30 times.</p>
<p>In the academic field of cognitive psychology, a once generally accepted definition of creativity (something original, qualitative, and relevant) long evolved into a more multidimensional socio-cultural phenomenon. Unfortunately, in the field of computing (education), we found that this evolution hasn&rsquo;t seeped trough yet. That means many very recent published works are still relying on obsolete ideas of the concept of creativity! Long live the speeds at which interdisciplinary research travels.</p>
<p>In the above paper, the authors more or less refer to the aged definition:</p>
<blockquote>
<p>The standard definition of creativity describes it as the ability to produce ideas that are, to some extend, original and useful.</p>
</blockquote>
<p>Hence something hot in computing (AI) is wrongly correlated against another hot topic outside of computing (creativity) using old&mdash;and incomplete!&mdash;definitions and even more obsolete tests.</p>
<p>AI does not beat humans in creativity. AI beats humans in generating new subsets of something based on millions of records&mdash;records that human artists once painstakingly crafted, by the way, but the ethical aspects of all this is a whole different problem I&rsquo;ll leave for another rant. Creativity is more than generating ideas. Please stop equating divergent thinking with creativity. Thank you. End of message.</p>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>Interestingly, both authors do not have any other paper published in their name with the word &ldquo;creativ*&rdquo; in it.&#160;<a href="https://brainbaking.com/post/2023/09/ai-allegedly-beats-humans-in-creativity/#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 21 September 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: AI%20Allegedly%20Beats%20Humans%20in%20Creativity">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>I&#39;m A Doctor!</title>
      <link>https://brainbaking.com/post/2023/09/im-a-doctor/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Mon, 18 Sep 2023 08:40:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/09/im-a-doctor/</guid>
      
        
          <category domain="https://brainbaking.com/tags/phd">phd</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>It&rsquo;s finally and officially done! I&rsquo;m now the proud holder of a Doctor of Engineering Technology degree. That means, from now on, the only correct way to address me is by starting your communication with &ldquo;Dear dr. Groeneveld&rdquo;.</p>
<p>In case that wasn&rsquo;t clear: I&rsquo;m kidding. Outside of academia, the title of course has little use, although it&rsquo;s nice to replay certain scenes from <em>Friends</em>, such as the one where <a href="https://www.youtube.com/shorts/YKcDScj-uW4">Ross admits to Rachel that doctors also do get sick</a> (not to be confused with the <em>oh doctor Geller, stop it!</em> one).</p>
<p>In case you&rsquo;re interested in the thesis I&rsquo;ve successfully defended, <a href="https://brainbaking.com/post/2023/07/identifying-and-amplifying-non-technical-skills-in-se-education/">this post summarizes</a> what I&rsquo;ve been up to the past five years.</p>
<p>As for what&rsquo;s next&hellip; Well&hellip; I don&rsquo;t know yet. I&rsquo;ll be teaching one more semester at our local campus, and in the meantime, try to score an internal research funding scholarship as a leverage to hopefully more long-term European funds. If that doesn&rsquo;t work out, there&rsquo;s always software development to go back to.</p>
<p>That pair programmer better at least start the conversation with <em>dr. Groeneveld</em>, though. I could get used to this. Now I know where those delusions of grandeur as visible in <a href="https://brainbaking.com/post/2023/09/short-author-bios-on-books/">author bios on books</a> come from.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 18 September 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: I%27m%20A%20Doctor%21">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Short Author Bios on Books</title>
      <link>https://brainbaking.com/post/2023/09/short-author-bios-on-books/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Thu, 14 Sep 2023 11:30:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/09/short-author-bios-on-books/</guid>
      
        
          <category domain="https://brainbaking.com/tags/books">books</category>
        
          <category domain="https://brainbaking.com/tags/reading">reading</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Speaking of Mary Karr (see <a href="https://brainbaking.com/post/2023/09/on-revisiting-media/">On Revisiting Media</a>), my eyes semi-automatically zoomed in on her author bio on the back of <em>The Art of Memoir</em> as it somehow is longer than the summary of the book itself:</p>
<blockquote>
<p>Mary Karr is the author of three award-winning, best-selling memoirs: <em>The Liars&rsquo; Club</em>, which was a finalist for the National Book Critics Circle Award; <em>Cherry</em>, which was selected as a &ldquo;notable book&rdquo; by book reviews nationwide; and <em>Lit</em>, which was one of the <em>New York Times Book Review&rsquo;s</em> Ten Best Books of the Year and a National Book Critics Circle Award finalist. A Guggenheim Fellow in poetry, Karr has won Pushcart Prizes for both verse and essays. She is the Peck Professor of Literature at Syracuse University.</p>
</blockquote>
<p>What was that all about? I have no idea what a <em>Guggenheim Fellow</em> is, let alone a <em>Peck Professor</em> , but it sure sounds important. Additionally, the <em>&ldquo;notable book&rdquo; by book reviews nationwide</em> part&mdash;with added quotes, no less&mdash;comes across as &ldquo;we don&rsquo;t have anything on <em>Cherry</em> so let&rsquo;s just write this&rdquo;. I presume this long-winded bio is supposed to wow potential readers, but to be honest, to me, it comes across as smug.</p>
<p>Let&rsquo;s take a look at a few other author bios of books that are within my reach. This should be fun!</p>
<p>Danny Gregory&rsquo;s <em>The Creative License</em>:</p>
<blockquote>
<p>Danny Gregory is the author of several books, including an illustrated memoir, <em>Everyday Matters</em>. Tens of thousands of creative aspirants regularly visit his weblog, <em><a href="https://www.dannygregory.com">www.dannygregory.com</a></em>, he has created illustrations for numerous books and magazines and is the creative director of many award-winning global advertising campaigns. Danny lives in Greenwich Village with his wife and son.</p>
</blockquote>
<p>More usage of the term <em>award-winning</em>, of course, although a bit more down-to-earth. The purpose of these blurbs seems to be trying to evoke a feeling of grandeur? <em>You&rsquo;re holding something precious here, dear reader, this person is well-decorated!</em></p>
<p>Dietmar Sternad&rsquo;s <em>Solve It!</em>:</p>
<blockquote>
<p>Dr Dietmar Sternad is a multiple award-winning management professor with a passion for teaching his students how to become smart problem solvers. He has faced a lot of problems (and has been able to solve quite a few) as a media executive, researcher, entrepreneur, management consultant, and father of two children.</p>
</blockquote>
<p>Award-winning! A few more of those and the term loses its significance, doesn&rsquo;t it? Some folks also like clinging to their (doctoral) titles. If you&rsquo;re a professor, you&rsquo;ve got a PhD, no need to add the &ldquo;dr.&rdquo; prefix or &ldquo;, PhD&rdquo; suffix. You&rsquo;re already <em>Certified Smart</em> enough. It also seems good to mention as much professional titles as possible.</p>
<p>Ryan Holiday &amp; Stephen Hanselman&rsquo;s <em>Lives of the Stoics</em>:</p>
<blockquote>
<p>Ryan Holiday is one of the world&rsquo;s foremost thinkers and writers on ancient philosophy and its space in everyday life. He is a sought-after speaker and strategist, and is the author of many bestselling books including <em>The Daily Stoic</em>, <em>The Obstacle is the Way</em>, <em>Ego is the Enemy</em> and <em>Stillness is the Key</em>. His books have been translated into more than thirty languages and read by over three million people worldwide. He lives outside Austin, Texas, with his family.</p>
</blockquote>
<p>As expected, more boasting. Is <em>best-selling</em> better or worse than <em>award-winning</em>? When it comes to the wallet, I&rsquo;d say the former. We&rsquo;re starting to see a pattern here folks!</p>
<p>Will it hold true for more technical books, like <em>The Go Programming Language</em> from Alan A. A. Donovan and Brain W. Kernighan?</p>
<blockquote>
<p>Alan A. A. Donovan is a member of Google&rsquo;s Go team in New York. He hold computer science degrees from Cambridge and MIT and has been programming in industry since 1996. Since 2005, he has worked at Google on infrastructure projects and was the co-designer of its proprietary build system, Blaze. He has built many libraries and tools for static analysis of Go programs, including <code>oracle</code>, <code>godoc-analysis</code>, <code>eg</code>, and <code>gorename</code>.</p>
</blockquote>
<p>A slightly different approach here. This reads a bit like a heavily compressed CV. Potential readers are scanning for technical certificates of expertise, I guess. It doesn&rsquo;t say whether or not Blaze was a best-seller though! These days, is having &ldquo;a member of Google&rsquo;s [whatever] team&rdquo; on there a good or a bad thing?</p>
<p>Carol Dweck&rsquo;s <em>Mindset</em>:</p>
<blockquote>
<p>DR CAROL S. DWECK is widely regarded as one of the world&rsquo;s leading researchers in the fields of personality, social psychology and developmental psychology. Her work has been featured in such publications as the <em>New Yorker</em>, <em>The Times</em>, and the <em>Guardian</em>.</p>
</blockquote>
<p>This pocket format doesn&rsquo;t leave a lot of room resulting in a short bio that still leaves you mesmerized: world-renowned, woah! Admittedly, Dweck&rsquo;s <em>Mindset</em> is hugely popular. Perhaps I should stop buying books from people that already sell like hot cakes.</p>
<p>All right, one more. Michael Booth&rsquo;s <em>Sushi &amp; Beyond</em>:</p>
<blockquote>
<p>Michael Booth is a travel writer and journalist who contributes regularly to <em>Condé Nast Traveller</em>, the <em>Independent on Sunday</em> and <em>Monocle</em>, among many other publications at home and abroad. His last book, <em>Doing Without Delia</em>, was Book of the Week on Radio 4.</p>
</blockquote>
<p>How about that, Book of the Week on Radio 4! Without context, for me in Belgium, that&rsquo;s&hellip; completely useless. We do have a local Radio 2 though. Again, we see a neat list of things he&rsquo;s contributed to, leading us to believe Booth is a competent travel writer (he is).</p>
<hr>
<p>Perhaps I should revise my own author bio on <em>The Creative Programmer</em>. This is what&rsquo;s printed now:</p>
<blockquote>
<p>Wouter Groeneveld is a software engineer and computer science education researcher at KU Leuven, where he researchers the importance of creativity in software engineering.</p>
</blockquote>
<p>Where&rsquo;s that best-selling flash? Where&rsquo;s the list-of-amazing-things this author has done before? What about degrees? Surely this can be improved upon! Here&rsquo;s an attempt:</p>
<blockquote>
<p>Dr. Wouter Groeneveld holds a PhD in Engineering Technology and MSc in Computer Science and is a distinguished software engineer who&rsquo;s worked in various roles in industry since 2007, from technical lead to development coach. He&rsquo;s currently a computer science education researcher at KU Leuven, where he published in top tier venues such as ACM&rsquo;s <em>Transactions on Computing Education</em>. His Dutch bread baking book <em>Red Zuurdesem</em> appeared on many notable &ldquo;tip of the week&rdquo; post-it notes.</p>
</blockquote>
<p>Ahh. Much better.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 14 September 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Short%20Author%20Bios%20on%20Books">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>On Revisiting Media</title>
      <link>https://brainbaking.com/post/2023/09/on-revisiting-media/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Wed, 13 Sep 2023 09:45:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/09/on-revisiting-media/</guid>
      
        
          <category domain="https://brainbaking.com/tags/books">books</category>
        
          <category domain="https://brainbaking.com/tags/reading">reading</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>I&rsquo;ve been reading Mary Karr&rsquo;s <em>The Art of Memoir</em> lately&mdash;<a href="https://austinkleon.com/2023/08/17/be-a-good-date/">thanks, Austin</a>&mdash;which, besides the needlessly excessive display of intricate diction and Texan-American sauce slathered royally throughout all chapters that endlessly rankle me as a non-native English reader (see, I can do that too), does contain lots of great insights in how to compose a memoir.</p>
<p>In one of the earlier chapters, she probes: <em>what is the ultimate proof of a truly compelling memoir?</em> The answer is when one cannot resist the urge to re-read such a book. And to me, when thinking about books and re-reading them in general, that rang very much true. I own lots of classic fantasy novel series (Terry Brooks, Robin Hobb, Roger Zelazny, Jane Routley, &hellip;) but only a few series are deemed compelling enough to now and then revisit. I think that&rsquo;s indeed a great way to decide whether or not to keep a book in your collection, should the need to clean out arise&mdash;which it does: that&rsquo;s called lack of space.</p>
<p>A few years ago, I had this stupid productivity-focused shallow mindset of approaching books quantitatively: as one-time consumable media, since there are so many books and there&rsquo;s so little time in our lives. I&rsquo;m now convinced I had it completely wrong. I made it my personal motto never to re-read a book: if I wanted to go back to something to refresh my memory or find specific information, I&rsquo;d consult my notes instead, which in case of prose of course never happened. Instead, I think we should approach books qualitatively: if there&rsquo;s something that grabs you by the throat, or something on the shelf that lures you back in once in a while, why not let it? Who cares if we only get to read 5 &ldquo;new&rdquo; books this year? (Shut up you stupid inner voice!)</p>
<p>If something is worth revisiting, revisit it, I say. Mary Karr&rsquo;s definitely on to something here. To take the idea even further, I&rsquo;d say this is also applicable other media, such as movies and video games. Or are you the kind of person who doesn&rsquo;t like re-watching movies because that&rsquo;s a few hours you could spent gnawing at the internals of a new release? As a retro gamer, I like playing older games, but that doesn&rsquo;t mean I only play games I played as a kid to get that much-needed nostalgic kick&mdash;nor does it mean I only play &ldquo;new&rdquo; (to me) old games. Indeed, some games (and possibly also books?) are meant to be revisited over and over again.</p>
<p>Yet every time I pick up a yellowed fantasy work from the shelf that&rsquo;s been patiently sitting there for almost twenty years now, that self-proclaimed exalted inner voice very nearly stifles the revisit attempt. There&rsquo;s something sinister deeper rooted in society that works against recycling your existing copies, something the inner voice loves shoving in my face:</p>
<ul>
<li>This way you&rsquo;ll never be able to tackle your to-read list!</li>
<li>You&rsquo;ve got to buy new stuff instead of rehashing old and dusty things, that&rsquo;s the way this world works!</li>
<li>Boring! You already know all the plot twists! Why not try that latest release?</li>
<li>Is this being productive? Will it count towards your amount of read books? Make sure the numbers keep on going up!</li>
<li>The reviews say this is garbage, why don&rsquo;t you treat yourself by buying something new from the top charts?</li>
<li>That old edition isn&rsquo;t the revised one! Will you at least get the revised one?</li>
<li>&hellip;</li>
</ul>
<p>I sometimes hate the way this capitalist world is focused on quantitative data, spending, and the new and shiny, because inevitably, I&rsquo;ve internalized many of these so-called great ideas.</p>
<p>Next time the inner voice starts complaining, I&rsquo;ll try to whack it out of my head using my <em>The Art of Memoir</em> copy. At least that&rsquo;s one way of reusing the book.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 13 September 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: On%20Revisiting%20Media">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Denken mit der Hand</title>
      <link>https://brainbaking.com/post/2023/09/denken-mit-der-hand/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Fri, 08 Sep 2023 14:15:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/09/denken-mit-der-hand/</guid>
      
        
          <category domain="https://brainbaking.com/tags/journaling">journaling</category>
        
          <category domain="https://brainbaking.com/tags/writing">writing</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Denken mit der Hand&mdash;Leuchtturm&rsquo;s slogan for their <a href="https://www.leuchtturm1917.us/denken-mit-der-hand/leuchtturm1917/denken-mit-der-hand/">1917 notebook series</a>&mdash;is, perhaps unsurprisingly, quite accurate. Over the years, <a href="https://brainbaking.com/tags/journaling">journaling</a> has helped me countless times to do many things: capture ideas, slowly but surely marinate, cross-polinate, develop, and help publish them, cope with daily life, record events and milestones I don&rsquo;t want to forget, and facilitate my learning. When it comes to the German and Dutch <em>Denken</em> or thinking, that last one is especially relevant. Every single thing I&rsquo;ve ever done started out with pen and paper.</p>
<p>People don&rsquo;t really write anymore. That&rsquo;s a damn shame. Not just because I like writing and can&rsquo;t find any snail mail pen pals, but because writing <em>is</em> Denken mit der Hand! No single keyboard will ever replace that, and no single digital device will ever come close to emulating its thinking-enhancement capabilities. The handwriting of my students gets worse by the year: it&rsquo;s clear that they don&rsquo;t write at all except at exams when they have to. There, <em>old man yells at clouds</em>!</p>
<p>Let&rsquo;s level the field. Instead of me yelling at clouds, how about me summarizing published scientific evidence of the superiority of Denken mit der Hand instead of mit der Tastatur (keyboard)? Here goes.</p>
<p><strong>The Pen Is Mightier Than the Keyboard: Advantages of Longhand Over Laptop Note Taking</strong> by Pam A. Mueller and Daniel M. Oppenheimer (2014). Their results:</p>
<blockquote>
<p>The present research suggests that even when laptops are used solely to take notes, they may still be impairing learning because their use results in shallower processing. [&hellip;] students who took notes on laptops performed worse on conceptual questions than students who took notes longhand.</p>
</blockquote>
<p>In other words, note-taking with a pen, rather than a laptop, gives students a better grasp of the subject. To be fair, laptop note-taking isn&rsquo;t the problem. The problem is blindly copying what&rsquo;s being said, which obviously can be done much quicker when typing fast on a keyboard than writing with a pen. Therefore, students resort more often to transcribing when on a laptop. And precisely that seems to be a bad idea to facilitate learning:</p>
<blockquote>
<p>[&hellip; ] the tendency to transcribe lectures verbatim rather than processing information and reframing it in their own words is detrimental to learning.</p>
</blockquote>
<p><strong>Writing by hand or digitally in first grade: Effects on rate of learning to compose text</strong> by Spilling et al. (2023). Researchers found no specific evidence for or against digital writing for first graders that learn to write for the first time. I think this shows how important it is to take context into account: first graders aren&rsquo;t asked to summarize, compose, rebuild and extrapolate knowledge. They&rsquo;re simply asked to write their first few sentences. That&rsquo;s not <em>Denken</em>.</p>
<p><strong>Why Writing by Hand Could Make You Smarter</strong> by William R. Klemm cites a 2009 study on the role of the sensorimotor learning in the perception of letter-like forms. In it, researchers study how we learn by compacting and summarizing information. Our brain does this by what they call &ldquo;functional specialization&rdquo;: optimizing for efficiency. In addition, when cursive writing,</p>
<blockquote>
<p>[&hellip;] the brain develops functional specialization that integrates both sensation, movement control, and thinking. Brain imaging studies reveal that multiple areas of brain become co-activated during the learning of cursive writing of pseudo-letters, as opposed to typing or just visual practice.</p>
</blockquote>
<p>That means more parts of our brain is activated during writing compared to typing. I found that a bit odd: isn&rsquo;t movement control also needed to correctly type on a keyboard? I do love the sensation of writing, especially when writing with a <a href="https://brainbaking.com/tags/fountain-pens">fountain pen</a>, but I know some folks who find typing on a mechanical keyboard to be satisfactory as well. Are these two different kinds of the aforementioned &ldquo;sensation&rdquo;?</p>
<p><strong>Modes of writing in a digital age: the good, the bad, and the unknown</strong> by Anne Mangen (2018). Future reading and writing will inevitably be more screen-based instead of hand-based, as our ever evolving technological advances carry us further and further away from pen and paper. Mangen summarizes existing research and concludes that we shouldn&rsquo;t just throw our analog writing material out of our windows:</p>
<blockquote>
<p>[&hellip;] based on extant empirical research, it seems worth pausing to reflect on the ways in which different technologies&mdash;tools and substrates&mdash;affect the ways in which we engage, cognitively and emotionally, with whatever we read, write and communicate.</p>
</blockquote>
<p>In the <a href="https://firstmonday.org/ojs/index.php/fm/article/download/9419/7593#p6">publicly available article</a>, she mentions several different aspects that point towards increased (and linked) brain activity when taking out that pen. Below is a selection of reasons why to write, as highlighted by Mangen:</p>
<ul>
<li>Handwriting requires the integration of visual, haptic, and tactile information&mdash;hence, motor commands and kinesthetic feedback are closely linked to visual information when we write by hand, while this is not the case with typewriting.</li>
<li>Alexander Lurija calls the formation of letters with particular shapes and sizes &ldquo;kinetic energy&rdquo; that helps facilitate, among others, motor support.</li>
<li>[&hellip;] they (Longcamp et al., 2008) found that those who had learned to write the letters by hand performed better on memory tasks and visual recognition tasks.</li>
<li>[&hellip;] for certain writing tasks, the speed of handwriting comes with a perhaps unexpected flip side. When used for note-taking, the fact that we can type practically as fast as someone speaks, may have as a consequence that note-taking turns into mere copying and, this way, ends up supporting shallow retention of facts rather than deeper comprehension. (See Mueller and Oppenheimer above!) According to Mangen herself: [&hellip;] the writer may be focusing mostly on the screen. In this respect, typewriting may be described as more abstract and phenomenologically detached than writing by hand. This division makes it easier to separate thinking from listening, which might or might not be a good thing.</li>
</ul>
<hr>
<p>To conclude, there&rsquo;s something special involved when a writing instrument tenderly gripped between our fingers touches the paper and starts making intricate swirls that ultimately form inky words, sentences, and schematics. This seemingly mundane operation, that nowadays is easily dismissed in favor of a hyper-modern scissor or mechanical keyboard, in reality involves a plethora of brain activities that work together in magical and complex ways.</p>
<p>I prefer my Denken the way people have been thinking for thousands of years&mdash;mit der Hand (exclaimed the digital blogger who wrote this on a MacBook Air).</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 8 September 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Denken%20mit%20der%20Hand">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Favorites of August 2023</title>
      <link>https://brainbaking.com/post/2023/09/august-2023/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Sat, 02 Sep 2023 09:53:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/09/august-2023/</guid>
      
        
          <category domain="https://brainbaking.com/tags/metapost">metapost</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>Ehhh&hellip; What&rsquo;s up, September? Strange, and just like that, Summer is preparing to pack its bags. The continuous downpour of yesterday served as proof, even though we&rsquo;ve had more than enough rain during the last two months&mdash;good for <a href="https://frankdeboosere.be/klimaatukkel/klimaatzomer.php">yet another climate-related record</a>. Perhaps Summer is only feinting to leave for the year, only to strike back twice as hard with its sunrays in September? I wish.</p>
<p>As part of my <a href="https://brainbaking.com/works/the-creative-programmer">The Creative Programmer</a> book promotion, last month I wrote an article on CodeMotion called <a href="https://www.codemotion.com/magazine/ai-ml/combating-ai-code-generation-with-creativity/">Combating AI Code Generation with Creativity</a> on finding the right balance between using AI-assisted code generation tools and creativity. I usually hate writing about AI but this was a fun diversion, since I start with a reassuring message (AI won&rsquo;t replace human creativity) and I focus on how to leverage these tools (up to a point) to boost your own creativity.</p>
<p>Previous month: <a href="https://brainbaking.com/post/2023/08/july-2023">July 2023</a>.</p>
<h2 id="books-ive-read">Books I&rsquo;ve read</h2>
<p>Rebecca Solnit&rsquo;s <a href="https://www.goodreads.com/book/show/78287">Wanderlust: A History of Walking</a> has been lying on my nightstand for months now. I tried many times getting into it, but as much as the alluring topic kept drawing me in, the enormously long-winded writing style kept pushing me back. Every odd sentence, I completely lost what I was trying to read. Fatigue or a mediocre Dutch translation might have something to do with it, but I blame the author&rsquo;s attempt to build too prose-verbose chapters. After 170 pages, I gave up&mdash;again. This time, for good. I gave the book away.</p>
<p>I then switched to Ilja Leonard Pfeijffer&rsquo;s Brieven uit Genua (<em>Letters from Genoa</em>). What a relief! I knew this was going to be good as I love letter-style books and Ilja&rsquo;s <a href="https://brainbaking.com/post/2022/12/grand-hotel-europa">Grand Hotel Europa</a>. It&rsquo;s a thick tome but reads very smoothly.</p>
<h2 id="games-ive-played">Games I&rsquo;ve played</h2>
<p>I got back into nineties DOOM clones, or more modernly called, <em>boomer shooters</em>. I suck at them, but they&rsquo;re loads of fun to relieve (or induce more?) stress.</p>
<p>I finished <a href="https://jefklakscodex.com/games/pc/outlaws/">Outlaws</a>, a classic Western LucasArts shooter from 1997. As a kid, I somehow never made it beyond the canyon level. LucasArts&rsquo; story-based shooter oozes with charm and there&rsquo;s never been a game quite like it. Next up is the seminal <em>Quake</em>, id&rsquo;s first fully 3D-rendered brown drab, of which the 2021 remaster done with the <a href="https://brainbaking.com/post/2023/08/playing-old-games-in-new-engines">KEX Engine</a> is quite impressive.</p>
<p>For the DOS Game Club, in August, we played <em>Jazz Jackrabbit</em>, Epic Megagames&rsquo; Sonic imitation for PCs. I remember being completely blown away with it as a kid, but now that we took a second look at the game, it only left a mediocre impression, which admittedly was a bit depressing. DOS Game Club, Destroyer of Happy Childhood Memories? Expect an in-depth review to be up soon at the Codex.</p>
<h2 id="selected-blog-posts">Selected (blog) posts</h2>
<ul>
<li>Brian Evans loves <a href="https://brianevansphoto.com/i-can-see-for-piles-and-piles-and-piles/">photographing piles and piles and piles</a> and I loved reading about it and being amazed by the pictures.</li>
<li>Birgitta Böckeler explores <a href="https://martinfowler.com/articles/exploring-gen-ai.html#in-line-assistance---when-is-it-more-useful">Generative AI</a> and its use at ThoughtWorks, but there&rsquo;s no single mention of the ethics involved, which for such a big and famous company is a big let-down. I think every software developer should know where the generated code comes from <em>before</em> deciding to use these tools.</li>
<li>Rona Akbari wrote a <a href="https://thecreativeindependent.com/guides/how-to-make-a-zine/">how to make a zine</a> guide on <em>The Creative Independent</em>. What a lovely website, by the way!</li>
<li>Speaking of zines, I&rsquo;m sure everyone knows these by know: another shout-out to <a href="https://wizardzines.com/">Julia Evan&rsquo;s Wizard zines</a> on programming!</li>
<li>Rock Paper Shotgun published their RPS 100: <a href="https://www.rockpapershotgun.com/the-rps-100-reader-edition-2023">Reader Edition for 2023</a>: the favorite PC games of all time, according to the readers. That list was a bit less baffling than the editor&rsquo;s list. My beloved <em>Baldur&rsquo;s Gate II</em> is on #21. <em>Disco Elysium</em> is the winner here.</li>
<li>Jessica Kerr summarized Carol Sanford&rsquo;s <a href="https://jessitron.com/2023/07/03/no-more-feedback-book-summary/">No More Feedback</a>. According to Sanford, the benefits of feedback are purely mythological&mdash;feedback as in, corporate core competencies evaluation bullshit feedback.</li>
<li>Ruben Schade tell us that <a href="https://rubenerd.com/camera-specs-dont-tell-the-whole-story/">camera specs aren&rsquo;t telling the whole story</a>, and we experienced something similar lately.</li>
<li>Dave Rupert links the gist of two books together in <a href="https://daverupert.com/2023/08/personality-tests-and-nazis/">personality test and nazis</a>, where Myers-Briggs possibly helped nudge towards right fascism. An eye-opener, for sure!</li>
<li>Jim Nielsen calls the careless usage of others&rsquo; data by LLM models <a href="https://blog.jim-nielsen.com/2023/knowledge-laundering/">knowledge laundering</a> and I love that term: it&rsquo;s spot-on.</li>
<li>John Walker points us towards <a href="https://buried-treasure.org/2023/08/frogs-adventure/">Frog&rsquo;s Adventure</a>, a lovely micro adventure game in which a frog is suddenly given a brain.</li>
<li>Via Winnie Lim: Paul Klee&rsquo;s notebooks&mdash;3900 pages, no less&mdash;are <a href="https://www.openculture.com/2023/06/3900-pages-of-paul-klees-personal-notebooks-are-now-online-highlighting-his-bauhaus-teachings-1921-1931.html">now available online</a>. And I thought my handwriting was small&hellip;</li>
<li>Matthew Byrd explains <a href="https://www.denofgeek.com/games/how-quake-sparked-a-filmmaking-revolution/">how Quake sparked a filmmaking revolution</a> over at Den of Geek. Before listening to the 2022 <a href="https://www.dosgameclub.com/quake/">Quake DOS Game Club podcast episode</a>, I never heard about <em>machinima</em>.</li>
</ul>
<h2 id="other-random-links">Other random links</h2>
<ul>
<li>Something that might once come in handy: there&rsquo;s something called the <a href="https://www.allianceindependentauthors.org/">Alliance of Independent Authors</a>.</li>
<li>In need of more focus? Here&rsquo;s a <a href="https://datadetoxkit.org/en/home/">Data Detox Kit</a> just for you!</li>
<li>Have you ever obtained the Triforce in <em>The Legend of Zelda: Ocarina of Time</em> with <a href="https://www.youtube.com/watch?v=qBK1sq1BQ2Q">nothing but N64 and ROM hacks</a>? I bet you did(n&rsquo;t).</li>
<li>Have you ever played <em>DOOM (II)</em> with a 3D voxel graphics mod? It looks amazing:</li>
</ul>
<figure>
	<a href="https://www.youtube.com/watch?v=nN_th4cnSfI" class="lbox">
		<img loading="lazy" class="img-responsive" src="/img/yt/nN_th4cnSfI.jpg" alt="YouTube video nN_th4cnSfI">
	</a>
</figure>



          <p>
            By <a href="/about">Wouter Groeneveld</a> on 2 September 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Favorites%20of%20August%202023">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Playing Old Games In New Engines</title>
      <link>https://brainbaking.com/post/2023/08/playing-old-games-in-new-engines/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Wed, 30 Aug 2023 08:57:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/08/playing-old-games-in-new-engines/</guid>
      
        
          <category domain="https://brainbaking.com/tags/games">games</category>
        
          <category domain="https://brainbaking.com/tags/engines">engines</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>I&rsquo;m replaying Quake&mdash;or rather, finally giving it a proper playthrough since I was a <em>Duke boy</em> back in the day, and even though I too &ldquo;wasn&rsquo;t afraid of no Quake&rdquo;<sup id="fnref:1"><a href="https://brainbaking.com/post/2023/08/playing-old-games-in-new-engines/#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, I never really looked past the monotonous brownness<sup id="fnref:2"><a href="https://brainbaking.com/post/2023/08/playing-old-games-in-new-engines/#fn:2" class="footnote-ref" role="doc-noteref">2</a></sup> of the first few levels. So I booted up my almost but not quite time period correct <a href="https://brainbaking.com/post/2020/10/building-an-athlon-win98-retro-pc/">Windows 98 retro PC</a>, like a gentleman, and started playing the first shareware episode with the software renderer from 1996, as I don&rsquo;t have a Voodoo card.</p>
<p>Truth to be told, in that state, the game doesn&rsquo;t look particularly compelling. At <code>800x600</code>, the frames drop below 15 FPS, reducing a fast-paced shooter to a slide show when a couple of ogres appear on stage. I don&rsquo;t think my Athlon CPU is to blame. Have no fear, dear GeForce owner, because the official GLQuake and WinQuake EXEs offer OpenGL and DirectX-based hardware acceleration (that crash my system at higher resolutions).</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2023/08/playing-old-games-in-new-engines/../quake-software.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2023/08/playing-old-games-in-new-engines/../quake-software.jpg" loading="lazy" title="The Gloom Keep, 640x480 (enlarged to 800x600), software mode." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>The Gloom Keep, 640x480 (enlarged to 800x600), software mode.</figcaption>
	
</figure>
</p>
<p>But for the lesser fortunate people that don&rsquo;t have a retro PC or simply don&rsquo;t want to bother building one, there are plenty of alternative modern complaint executables that can boot Quake thanks to the source code release in December 1999. What followed was an explosion of so-called &ldquo;source ports&rdquo;: DarkPlaces, ezQuake, ProQuake, Mark V, QuakeForge, Quakespasm, vkQuake, &hellip; Simply picking any of these to get your game on the road seems to require a day of research.</p>
<p>But I&rsquo;m not playing any of the source ports for the episodes beyond the shareware version. Instead, I&rsquo;m playing the recent re-release by Nightdive Studios, just <em>Quake</em>, to add to the confusion. Nightdive developed their own proprietary game engine called the <a href="https://www.nightdivestudios.com/kex/">KEX Engine</a>, which with its flexible high-level design and easy plug-in support, powers all of Nightdive&rsquo;s recent re-releases: <em>Blood: Fresh Supply</em>, <em>PowerSlave: Exhumed</em>, <em>DOOM 64</em>, <em>Quake</em>, &hellip;</p>
<p>If this doesn&rsquo;t sound strange to you, let me rephrase that. Blood was a 1997 Build engine game: the same engine that powered Duke Nukem 3D. Technically speaking, The Build engine is a 2.5D engine with enemies and items as 2D sprites, while Quake&rsquo;s engine is one of the first real 3D engines. Under the hood, these game engines share little, yet Nightdive&rsquo;s KEX manages to perfectly emulate them both, even adding in additional impressive features such as dynamic lightning and shadow effects!</p>
<p>
<figure>
	
		
	
	<a href="https://brainbaking.com/post/2023/08/playing-old-games-in-new-engines/../quake-kex.jpg" class="lbox">
		<img src="https://brainbaking.com/post/2023/08/playing-old-games-in-new-engines/../quake-kex.jpg" loading="lazy" title="The same Gloom Keep in KEX. Spot the differences." data-pagefind-index-attrs="title">
	</a>
	
		<figcaption>The same Gloom Keep in KEX. Spot the differences.</figcaption>
	
</figure>
</p>
<p>Unlike the various source ports, KEX games are a commercial product, but for <code>€10</code>, you not only get a widescreen-supported flashy re-implementation of the engine, but also all expansion packs and a brand new episode that&rsquo;s said to be excellent&mdash;I haven&rsquo;t got that far yet. The only downside so far is the annoying Bethesda name sticking to it after the id buyout. You&rsquo;ll need a Bethesda account to download mod packs. Remember that source ports only deliver the engine, not the actual content of the game: the levels, textures, and enemies.</p>
<p>Purists might start grumbling that KEX isn&rsquo;t Quake but another engine loading Quake textures and maps, and they are right, but I don&rsquo;t care. Nightdive has done an excellent job perfectly emulating the gritty, dark&mdash;and especially, brown!&mdash;feel of the original, and you can trust them to do the same with hopefully many other older games getting the same treatment.</p>
<hr>
<p>This KEX thing got me thinking. There are so many great ways to play old games nowadays, especially with the availability of new engines. Jazz Jackrabbit has got <a href="https://github.com/AlisterT/openjazz">OpenJazz</a>, Rollercoaster Tycoon has got <a href="https://github.com/OpenRCT2/OpenRCT2">OpenRCT</a>, Duke Nukem 3D has got <a href="http://www.eduke32.com/">eDuke32</a>, Age of Empires has got <a href="https://github.com/SFTtech/openage">OpenAge</a>, many old adventure games have got <a href="https://www.scummvm.org/">ScummVM</a>, Might and Magic V-VIII have got <a href="https://github.com/OpenEnroth/OpenEnroth">OpenEnroth</a>, &hellip; Even though some of these projects are abandoned or incomplete, the community has done so much great work to rejuvenate old classics!</p>
<p>If you want to replay an older game but don&rsquo;t want to bother (1) sourcing old hardware or (2) fconfiguring DOSBox, even though GOG mostly does this for you, perhaps next time try searching for a re-implementation. I found a couple of lists to help you get started:</p>
<ul>
<li>Wikipedia&rsquo;s <a href="https://en.wikipedia.org/wiki/List_of_game_engine_recreations">List of game engine recreations</a></li>
<li>A list of <a href="https://github.com/radek-sprta/awesome-game-remakes">awesome-game-remakes</a> on GitHub</li>
<li>Open source re-implementation projects and game clones via <a href="https://www.reddit.com/r/FoamList/comments/pdhzmo/open_source_reimplementation_projects_and_game/">r/FoamList on Reddit</a></li>
</ul>
<div class="footnotes" role="doc-endnotes">
<hr>
<ol>
<li id="fn:1">
<p>In Duke Nukem 3D, at one point in a level Duke calls out the game Quake by saying &ldquo;I ain&rsquo;t afraid of no Quake!&rdquo;.&#160;<a href="https://brainbaking.com/post/2023/08/playing-old-games-in-new-engines/#fnref:1" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
<li id="fn:2">
<p>If people said &ldquo;I&rsquo;m playing Brown tonight, you?&rdquo;, they meant Quake as a pun to the muted color palette used in the levels.&#160;<a href="https://brainbaking.com/post/2023/08/playing-old-games-in-new-engines/#fnref:2" class="footnote-backref" role="doc-backlink">&#x21a9;&#xfe0e;</a></p>
</li>
</ol>
</div>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 30 August 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Playing%20Old%20Games%20In%20New%20Engines">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Thirty-Eight</title>
      <link>https://brainbaking.com/post/2023/08/thirty-eight/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Sat, 26 Aug 2023 12:56:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/08/thirty-eight/</guid>
      
        
          <category domain="https://brainbaking.com/tags/birthday">birthday</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>I turned thirty-eight today. That&rsquo;s the sum of the squares of the first three primes (thank you for that useless fact, Wikipedia). That&rsquo;s also eight more than thirty, and two less than a psychological crisis followed by a Harley-Davidson, possibly followed by either a sale or a divorce. A friend turned forty this year and needed a forthnight off work to cope with it. My sore back and worrying head says that won&rsquo;t do it for me.</p>
<p>Did you know that cats have 38 chromosomes in their genome? Okay I&rsquo;ll close that tab now. <a href="https://brainbaking.com/post/2022/08/thirty-seven">On my previous birthday</a>, I bought myself a board game and wrote:</p>
<blockquote>
<p>If there&rsquo;s one thing I wish for my thirty-eight birthday, it&rsquo;s having played <em>Grand Austria Hotel</em> at least 20 times. Nineteen more to go!</p>
</blockquote>
<p>Guess how many times I played that game? Exactly four times. Perhaps now it&rsquo;s time to start thinking about introducing a regular game night, otherwise those projected &ldquo;20 times&rdquo; will never become a reality.</p>
<p>As you get older, traditional wrapped gifts seem to gradually make way for financial transfers, sometimes a few days before your &ldquo;special&rdquo; day. And I get it: like I wrote before, we have too many stuff&mdash;what kind of original thing <em>can</em> you still gift, then? Still, a part of me mourns this loss. I think that&rsquo;s why birthdays were much more fun when I was a kid: unwrapping that exciting new LEGO set and getting to play with it all day, only to take a break for dinner that you got to choose. Now I have to cook (or order) it myself.</p>
<p>My grandfather kept on buying LEGO sets for himself and played with it now and then when I visited. Perhaps even more when I wasn&rsquo;t there. Perhaps he even wrapped them just for the heck of it. I should learn from that. I think I&rsquo;m getting too serious. For us, the year 2023 has been too serious. When I asked <em>what&rsquo;s your take on life?</em> on Mastodon, Tijn of the DOS Game Club answered simply with &ldquo;try to have fun&rdquo;.</p>
<p>Perhaps I should remember this day to be a bit more playful, and not limit that state of mind just to playing games.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 26 August 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Thirty-Eight">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Remembering Daily Commutes By Train</title>
      <link>https://brainbaking.com/post/2023/08/remembering-daily-commutes-by-train/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Wed, 23 Aug 2023 08:20:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/08/remembering-daily-commutes-by-train/</guid>
      
        
          <category domain="https://brainbaking.com/tags/commute">commute</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>It seems ages ago (11 years to be exact) that I spent too many hours trying to <a href="https://brainbaking.com/post/2022/05/on-commuting-by-bike/">get to work by train</a>&mdash;with emphasis on <em>trying</em>. I mostly remember that period as a dreadful one where the long hours, both from work and from the commute, gradually turned me into a zombie. <a href="https://jefklakscodex.com/games/pc/plants-vs-zombies/">Braaaainnnzz</a>! Brainz Baking and then Eating? Does this also go with cool dance moves? I digress.</p>
<p>There were some good moments there as well, and in this post, I&rsquo;d like to try and remember them both&mdash;with emphasis on <em>try</em>.</p>
<p>The positive experiences I recall from commuting by train:</p>
<ul>
<li>Mostly traveling together with colleagues. Sometimes seeing them run and fail to catch the train on the platform of my next stop.</li>
<li>Dragging along a book, the Nintendo (3)DS, or the laptop to have some fun while we move along, and then falling asleep because of the aforementioned zombie state. You&rsquo;ll want to sit next to colleagues that wake you up in time for this one.</li>
<li>Traveling with colleagues that are also transitioning into a zombie is great: they also don&rsquo;t want to talk in the morning! Go ahead, close your eyes. In the late afternoon, during the long trip back home, we of course ranted about the stupid things co-workers did that day.</li>
<li>This may sound silly but standing on a platform waiting in the cold at the crack of dawn sometimes felt just perfect. Until that smoker takes their stance too close to you, even though the platform is nearly empty.</li>
<li>Just by talking to strangers on the train, I met a colleague of my dad who even seemed to know him. We even agreed to have a drink a few weeks later just to chit-chat a bit.</li>
<li>Just by talking to strangers on the train, I met someone who was interested in what I was doing on my laptop, which was writing a National Novel Writing Month excerpt. I even ended up selling a book to her.</li>
<li>It&rsquo;s crazy to see the exact same people waiting for the exact same train every single day. After a while, and especially during delays or other problems, you start to bond. <em>We&rsquo;re in this misery together!</em></li>
<li>I&rsquo;m glad I never had to drive the car right into the heart of the capital of Europe. Even if the commute by train was too long, I don&rsquo;t think defying traffic would have shortened it.</li>
<li>Looking through the window and seeing the landscape and obligatory cows flash by without you doing anything is just great. Provided the train is capable of moving, that is.</li>
<li>Some people leave the train a few stops before mind and &ldquo;forget&rdquo; their newspaper. I didn&rsquo;t mind&mdash;<em>yoink</em>!</li>
<li>Flashing that subscription badge towards the conductor is awesome. Yeah, that&rsquo;s right, I&rsquo;m one of them seasoned folks, I ain&rsquo;t got no stupid one-time ticket!</li>
</ul>
<p>Speaking of not moving, that&rsquo;s a negative experience:</p>
<ul>
<li>The Belgian railway is notoriously bad when it comes to timing. You almost feel like winning the lottery if the train arrives on time.</li>
<li>Timing isn&rsquo;t the only problem. In the winter, the overhead lines are frozen and the locomotives won&rsquo;t budge, and in the summer, locomotives overheat and won&rsquo;t budge either. Doors that are stuck is a problem for all seasons.</li>
<li>Or how about this: in very dry and hot weather, the greenery next to the tracks is on fire.</li>
<li>What else, you ask? Does kids playing on the tracks near Brussels count? <em>Our apologies for the delay</em>.</li>
<li>Sadly, I&rsquo;ve also been in trains involved in suicides. I do wonder why these people planned to kill themselves during rush hour. A last sadistic attempt at sabotaging society? This ain&rsquo;t no small delay either.</li>
<li>After a while, you&rsquo;re sick of hearing <em>our apologies for the delay</em> blast through the speakers. Railway employees must have picked up on that: sometimes, the speakers don&rsquo;t work at all. This also means you didn&rsquo;t notice that last minute track change. Oops. Better start mailing <em>apologies for the delay</em> to your boss.</li>
<li>During summertime, having to go back home in one of those hand-me-down older trains without air conditioning that has been sitting in the sun all day isn&rsquo;t exactly a present either.</li>
<li>Especially if another train has been cancelled and all those people have to somehow board yours. Looking forward to being jammed between overly sweaty people for one-and-a-half hours.</li>
<li>Another unfortunate fact is harassment. I&rsquo;ve witnessed people getting harassed and experienced it myself.</li>
<li>While I never got my bike stolen during these years, I was always anxious about returning to the bike after the train ride. I&rsquo;ve had a few nicked attachable lights and one time nearly the seat. This depends from station to station, of course, and I&rsquo;d rather go by bike than having to park the car which I did the first years due to extra time pressure. <em>Braaaainnnzz</em>!</li>
<li>I remember being sick and wanting to go back home, but the train was (of course) delayed. Those minutes rapidly start to feel like hours.</li>
<li>I always hated my employer&rsquo;s ridiculous argument to convince me to take on the job far away from home: &ldquo;but you can work on the train!&rdquo; I&rsquo;m a zombie thanks to your so-called great commute, do I look like I can be productive right now?</li>
</ul>
<p>While I do miss the social experience of the train rides, I&rsquo;m relieved that biking to work has permanently cured my zombie illness, and there&rsquo;s no amount of money that&rsquo;ll ever convince me to commute for hours five times a week ever again&mdash;whether that&rsquo;s by train or by car. Sure, I do catch a train now and then to another university campus, but that&rsquo;s (1) occasional, (2) not during rush hour, and (3) spanning less distance.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 23 August 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Remembering%20Daily%20Commutes%20By%20Train">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
    
    <item>
      <title>Product Placement Kills Fun</title>
      <link>https://brainbaking.com/post/2023/08/product-placement-kills-fun/</link>
      <comments>https://dosgame.club/@jefklak</comments>
      <pubDate>Sun, 20 Aug 2023 09:16:00 +0200</pubDate>
      <dc:creator>Wouter Groeneveld</dc:creator>
      <guid isPermaLink="true">https://brainbaking.com/post/2023/08/product-placement-kills-fun/</guid>
      
        
          <category domain="https://brainbaking.com/tags/boardgames">boardgames</category>
        
      

      
      
      
      
      
      <description>
          <![CDATA[ 
          

          <p>A quick one today: something I noticed in the margins while reading Jonathan Schindler&rsquo;s <a href="https://boardgamegeek.com/blogpost/151187/shadow-greatness">Shelf Wear blog</a> over at Board Game Geek: does <em>having</em> to play a game because of product placement kills the joy and fun of playing a game? The answer seems to be yes:</p>
<blockquote>
<p>I was just at a game night with a fellow writer from the (now defunct) iSlaytheDragon, and we were commenting how grateful we were to not have our game nights scripted by review copies anymore. It&rsquo;s a wonderful thing to choose what you want to play!</p>
</blockquote>
<p>It never really occurred to me reading through these dedicated blogs that some or many of them actually are following a semi-tight script because they&rsquo;re sent review copies, meaning someone else dictates what gets played. This sucks! To credit the reviewers, as a reader, I wasn&rsquo;t really aware of this, but I wouldn&rsquo;t want my &ldquo;fun time&rdquo; to be ruled over by yet another employer-like behavior, even if it&rsquo;s a great way to get loads of games for free&mdash;of which most you don&rsquo;t even like anyway, as you don&rsquo;t get to chose which ones.</p>
<p>Hence my conclusion: Product Placement Kills Fun. This reminds me of the many comics making fun of the so-called side hustle: the hobby turned into a thing for money (or free games) in exchange for&hellip; fun? Why would you entangle yourself in yet another work-alike script if it&rsquo;s just a thing on the side that ruins your off-time? From what I can gather, people like Jonathan receive too many board games that have to be sold off or given away anyway, so you&rsquo;re better of just buying the ones you really want and ignoring the rest.</p>
<p>It&rsquo;s sad to see that hobbies and passions get ruined just because we think we need to do something with them, exploit them, earn more thanks to them, or squeeze out a few freebies because of them. The same thing applies to the too many YouTubers I&rsquo;ve seen employ the &ldquo;<em>I&rsquo;m going to interrupt this program to praise this useless product that sponsors us</em>&rdquo; tactic. If this is just something you&rsquo;re doing for fun, then why take on a sponsor that completely kills your fun, and on top of that, also ruins the flow of your videos (and motivation of your viewers)?</p>
<p>Some eventually replace the obligatory ads with &ldquo;<em>I&rsquo;m going to interrupt this program for a special message, please support me via Patreon</em>&rdquo; tactic. There&rsquo;s nothing wrong with taking donations&mdash;in fact, I very much support these creatives: toss a coin to them every time you can! But to me, abruptly interrupting the viewer or reader still comes across as begging.</p>
<p>I wonder how many content is riddled with this product placement problem. Do fountain pen and ink review sites get sent pens and bottles? Do video game review sites get sent games or access codes? In a non-commercial world, I might have considered answering these questions with a <em>maybe</em> or <em>don&rsquo;t know</em>. If this is what you do, then there&rsquo;s nothing wrong with reviewing these products, but if this is just a hobby you picked up in the lobby, why would you do that?</p>
<p>Don&rsquo;t let materialism ruin the few moments of fun you have left at the end of your day. Don&rsquo;t let capitalism dictate what you should do when you finally can choose what to do.</p>


          <p>
            By <a href="/about">Wouter Groeneveld</a> on 20 August 2023.&nbsp;
            <a href="mailto:hifromrss@brainbaking.com?subject=Re: Product%20Placement%20Kills%20Fun">Reply via email</a>.
          </p>
          ]]>
      </description>
    </item>
    
    
  </channel>
</rss>