<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Michail K. Dimopoulos' journal</title>
    <link>https://mcdim.xyz/</link>
    <description>Philosophy, history theology, hacking</description>
    <generator>MK&#39;s blog script</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 22 Sep 2026 14:47:41 +0000</lastBuildDate>
    <atom:link href="https://mcdim.xyz/blog/index.xml" rel="self" type="application/rss+xml" />
<item>
      <title>The Projectification of Programming</title>
      <link>https://mcdim.xyz/p/the_projectification_of_programming.html</link>
      <pubDate>Fri, 18 Sep 2026 20:40:10 +0300</pubDate>
      <guid>https://mcdim.xyz/p/the_projectification_of_programming.html</guid>
      <description><![CDATA[
<p>You learn about new language X that you want to try out, so you install a suspiciously large package to get started and the first thing on the guide is how to &quot;initialize a project&quot; (???) You mean create a new directory and edit a program file?</p>

<p>Not quite. Apparently, it's this init command that you're never quite sure what it does but once finished you see a &quot;manifest&quot; file, a &quot;lockfile&quot;, and &quot;identity&quot; file, random directories and hidden cache folders, tool configs and whatever else that you apparently need to write a hello world</p>

<p>I'm sorry -- what is this stuff? Why do I need this stuff? Why was this mess added to my filesystem? What happened to <code>lang_x program.x</code>?</p>


<p>The reality is that modern programming languages are more so complete development environments. Each language essentially attempts to replace your entire operating system with an arguably worse alternative. Gone are the days of the lexer and the parser: modern languages are more about build systems, development pipelines, dependency management, formatters, tests, workspaces etc.</p>

<p>Why use a distro's package manager when you can create a separate package manager with a different interface that's not meaningfully better and possibly causes conflicts with the operating system? Why trust the user to a create a file structure that matches their own needs and not just create useless boilerplate directories for no reason? What's next? Language specific version control?</p>

<p>This is what turned me off from rust before seeing a single line of code. This is what has turned me off from multiple languages, and it's even worse when a language presents itself as minimal and no-BS (Zig is a great example, though like Golang, it's more sane). For some reason I do not understand, infiltrating your workflow seems appropriate, and presuming complex project needs for every would-be program is, apparently, not insane. &quot;Would-be program&quot;, because this all happens before a single line of code written. The program has been &quot;projectified&quot;.</p>

<p>By <i>projectification</i> I mean the process by which languages and their environments become project-first (as opposed to program-first): they treat the project -- not the program -- as the fundamental unit of programming.</p>

<p>I'd like to clarify a few things. Of course, these developer environments are (usually) not literally necessary to use the language. The issue is that they seem to become more and more assumed and expected. Likewise, manifest files, standardized integration testing, pipelines, build tools etc. aren't inherently bad. There are complex projects with complex needs. The issue arises when these things are assumed necessary for every 100-line script written in the language.</p>

<h2>The &quot;Reasons&quot;</h2>
<p>At this point, like me, you should probably be wondering what exactly causes this trend. The answer is complex, but the justification given is mostly that general purpose programming tools are not semantically aware, and therefore aren't appropriate for these languages.</p>

<p>I understand that the lack of semantic-awareness can be a limiting factor of some common general programming tools, however (and excuse my low wits), I still don't quite understand what these languages do that is so advanced and so unique that other languages that integrate fine with common toolchains don't do? And, perhaps more importantly, why the jump? Why do we jump from &quot;Make can't quite handle the orchestation of this build&quot; to &quot;we need to create a completely separate developing environment&quot;?</p>

<p>And have we considered that, if the language does not integrate well with existing toolkits, <b>maybe it isn't that good of a language?</b> Maybe if common tools cannot operate well on your language without knowing the project's context and structure, that's a sign that your language is placing too much semantic weight on those things? I understand there are domain-specific, or otherwise unique languages that will inevitably benefit from specialized toolchains, but isn't integration with existing environments a goal of PL design?</p>

<h2>The cultural domino</h2>
<p>Let's look at the effects of this language ecosystem design on your language's userbase:</p>
<ul>
<li><b>You drive experienced programmers away</b>: why should they bother to learn your own unique toolchain unless they absolutely have to? Why not prioritize a language that doesn't require them to change their habits? Expertise goes with them.</li>
<li><b>Toolchain expertise does not transfer</b>: the experienced programmers that do stick will inevitably become beginners again with regards to the environment, as they cannot just bring their toolchain expertise with them.</li>
<li><b>You prepare every program to become a large project with your inits.</b></li>
</ul>
<p>That last one is particularly important, I feel. Having a complex directory structure mentally guides the developer to comply with it (and the language's canonical workflow), even when that's completely unnecessary. <b>Do not assume that every program will need large build scripts, do not assume every program needs dependencies</b>. I believe this corporate-style project-mindset leads to more corporate-style bad software.

<h2>Any hope?</h2>
<p>What I'm arguing for is not difficult or complex. In fact, it's probably substantially easier than developing (or learning anew) a separate development environment: <b>Let the programmer decide when a program needs to become a structured project, and let the programmer define what that means. The compiler or the interpreter shouldn't know or care about that structure, and the toolchain needs to be separate and reasonably modular</b>.
<p>There are some modern languages that seem to have slipped through the cracks of forced project-design. Hare, Odin, Janet, and some modern-ish ones like D and Lua. And, of course, there's a whole tradition of older program-first languages still around, including C, Sh, Scheme, Tcl, Perl, awk, Forth etc., that you probably already know about. Languages like Go, Zig, Nim etc. appear to be somehwere in the middle but I've only seriously used Go (it works fine with just files, though dependencies can project-creep your programs). All of these languages are signs that project-madness isn't the only direction for language ecosystems.</p>

<h2>Suggested reading</h2>
<ul>
<li><a href="https://harelang.org/documentation/faq.html">https://harelang.org/documentation/faq.html</a></li>
<li><a href="https://kevincox.ca/2013/10/18/language-specific-package-managers/">https://kevincox.ca/2013/10/18/language-specific-package-managers/</a></li>
</ul>
      ]]></description></item>
<item>
      <title>The Imperialism of Cultural Relativism</title>
      <link>https://mcdim.xyz/p/imperialism_of_cultural_relativism.html</link>
      <pubDate>Tue, 15 Sep 2026 06:26:08 +0000</pubDate>
      <guid>https://mcdim.xyz/p/imperialism_of_cultural_relativism.html</guid>
      <description><![CDATA[<p>There's a tendency in contemporary progressive discourse to imagine itself as a defender of cultures around the world. While this political tradition may have brought greater attention to the importance of respecting other cultures, the issue of cultural appropriation and so on, I believe that its self-idolization as a kind of champion of non-Western cultures is not just misguided, but self-contradictory.</p

<p>I do not think of myself as belonging to the political sphere of the West, though this may be controversial as Greece is kind of at the borderlands of the Western world and its position is often ambiguous. Definitely, however, I do not belong to the Anglo-American political sphere, which I believe may make my perspective useful.</p>

<p>In this largely Anglo-American liberal understanding of reality, there appears to be a fundamental distinction between the West and the non West. Western culture is understood as self-imposing, oppressive and largely ignorant of the non-West. On the other hand, the rest of the world (which is usually just haphazardly grouped as the non-West by these people, whether admittedly ot not) is more in tune with nature, their unique culture and customs etc.</p>

<p>This worldview is fundamentalist in that it seems to place essential value to non-Western cultures, but not to the West. All the conservative, patriotic, or traditionalist tendencies of, e.g, the Middle East, or Africa are treated as unique cultural expressions that need to be understood and tolerated, whereas similar tendencies in the West are seen as evils that need to be crushed.</p>

<p>The left has always had an issue of supporting foreign nationalists when convenient (for example the Greek communist party and its historical obsession with the Bulgarian-speaking minority of northern Greece, and by extension Slavic Macedonian nationalist organizations). Modern progressive thought takes this worldview to new extremes: how many times do you see blatant criminal behavior excused as being part of a misunderstood culture? Likewise, how often do you see participation in Western traditions, folklore and cultural gender roles described as prejudiced, when similar cultural expressions from the non-West are celebrated?</p>

<p>The first problem with this is the appropriation of different Western cultures. The followers of this ideology, merely because they were raised in a specific strand of the West, believe they are entitled to speak for the whole West. There is a particular juxtaposition that arises, in which the rest of the world is regarded as varied and diverse, but the West as monolithic. The effects of this is Americans lecturing different European ethnicities on their own cultures, while making assumptions and generalizations on behalf of Europeans.</p>

<p>In the same way the West is generalized, the rest of the world is lumped in the category of "non-West". The very existence of this category implicitly sets Western culture apart as unique and defines other cultures as relative to the West.</p>

<p>The second, and largely more insidious and ironic problem with this mindset, is its imperialist presupposition.</p>

<p>Demanding higher expectations of the West than of the rest of the world sets a very disturbing precedence, that of Western superiority. Holding the West to a higher standard of progressivism, tolerance and political correctness risks treating Western people as morally and intellectually superior. In fact, all this worldview manages to accomplish is the infantilization of participants of non-Western culture as incapable to be moral agents.</p>

<p>If Western people are expected to transcend their inherited cultural prejudices, but non-Western people are expected to remain authentic to theirs, then we are assigning different capacities of self-transcendence to different people.</p>

<p>What causes this? Well, merely being resentful of your culture does not make you understanding of other cultures. Even when motivated by sympathy, this partenalistic exemption is itself a form of cultural imperialism, and, if one is to remain consistent with other progressive beliefs, systemic racism affecting multiple parties. I believe that people forget that we can assign moral value without making statements of superiority, and, likewise, we can morally condemn a practice without concluding the inferiority of its practitioners.</p>

<p>A question I consider more timely is: why is this double standard accepted? Why are we not pushing back against it more actively? How long until the socities affected by this political wave admit to themselves that this is bias against one's own nation and cultural heritage, and bar people who hold these beliefs from participating in political discourse when they clearly do not have their own nation's best interests at heart?</p>
      ]]></description></item>
<item>
      <title>Has Google search been neutered?</title>
      <link>https://mcdim.xyz/p/has_google_search_been_neutered.html</link>
      <pubDate>Thu, 23 November 2023 04:31:00 +0300</pubDate>
      <guid>https://mcdim.xyz/p/has_google_search_been_neutered.html</guid>
      <description><![CDATA[<p>I remember the days when using google meant you could find almost anything you wanted, without even using advanced syntax. You'd find links for forum discussions, quality articles, personal blogs & projects. It could actually be described as <i class="sarcasm">surfing</i>. It's not like you cannot find these things at all nowadays, but I can't be the only who has noticed that, for years now, searching on google has gradually become a worse exeprience. You know it's really bad when even redditors are catching on to it.</p>
<h2>About 6 gigatrillion results (0.0014 nanoseconds)</h2>
<p>It is relatively well known that the report of how many results google has retrieved with your query is off. It's not uncommon for me to be told my search has millions of results, only for them to not last more than 2 pages. There's nothing wrong with the number not being very accurate, it's an approximation afterall. It would be unnecessarily inefficient to trasverse all of the data in their database just to give you an accurate number. "Approximation", however, implies some kind of approximation. Claiming you have hundreds of thousands or even millions of results when, in reality, you only have 141 isn't an approximation. It's a lie.</p>
<p>I just did a little quick & dirty experiment. I searched a relatively non-controversial/political technical query that I knew wouldn't have too many or too few results: <code>"unifi" "openvpn" "expected"</code>. Google reported around 62.500 results. I counted them, I got less than 200. I even enabled the option to get duplicate/low-quality results. Before that, it was around 50. Who knows? Perhaps Google's approximation tolerance range is about 100%!</p>
<p>This has always been an issue on the site, but it may be the worst it's ever been, and I don't understand why google still has this non-feature. The number is not even close half the time, then what's the point of even reporting a number?</p>
<p><b>I can't shake the feeling that it's there to give you a false perception of freedom & variety.</b> Google knows most people won't go past the 3rd page (are pages on Google even a thing anymore?), and that they won't realise that that is where it ends. It's like a walled garden where the walls are transparent. You only realise there are walls when you try to go past them.</p>
<p>This is particularly eerie when you realise that the situation is worse with controversial political topics. I remember during the pandemic, searching for the vaccines you would get the same CNN article (or variations of it) over and over again for 3 pages and then nothing.</p>
<p>I decided to do a second experiment, I searched for <code>covid vaccine side effects</code>, for which Google reported 481.000.000 results for 0.65 seconds. <i class="sarcasm">Oh wow! Thanks Google for providing me with all these pages & diverse opinions on the topic!</i> I scrolled all the way to the bottom of the results, which stopped at 173. Google didn't consider any other pages high quality enough to be included in the search. In the entire English-speaking world, only 173 articles on the vaccine side effects were high quality enough. I mean how many articles did you expect the Google propaganda ministry to manually review all by themselves? Cut them some slack!</p><p>
I clicked on the option to allow duplicate & low quality results, scrolled all the way to the bottom, copied everything and pasted it to a file. I then greped that file for links & piped that to <code>wc -l</code>, which returned the true number of results: 434. <b>These are the 434 webpages you're allowed to read about covid vaccine side effects. Consider yourself informed.</b>

<h2>We've had AI search all along!</h2>
<p>If you've been wondering why articles on your google results are entirely unhelpful, use corporate-y language & read as if they were written by Chat-GPT, that's because they most likely were. The epidemic of trash articles written by AI is more real than COVID. What's worse is that these soulless websites have not only maxxed out their SEO, but have reached ad-to-content ratios previously thought impossible. </p>
<p>Many people make an effort to avoid these irritating websites by appending <code>site:reddit.com</code> or something along those lines to their search queries, with the goal to find actual human discussions. While that can work, I've found reddit to be just as frustrating & even more insidious in its political censorship. Plus, whether accounts on reddit are actual humans interacting is rather debatable at this point. Most discussions on large subreddits are sanitized, and besides, these redditors are the primary way Chat-GPT and other text-spitting neural networks are trained, so expect to find similar cookie-cutter opinions.</p>
<p>You could use these to be avoid reddit, or at least be more website-agnostic: <code>inurl:forum</code>, <code>inurl:thread</code>, <code>intext:reply</code></p>
<p>I was going to give more detailed information on how to effectively use google's advanced search syntax to avoid trash AI sites, however, I don't consider these to be solutions, and Google doesn't seem to like them either:</p>

<h2>Using advanced search syntax? Not in this site, punk!</h2>
<p>The main selling point of google to hackers, and me as well, is the powerful list of commands you can give google to perform precise searches. These include things like <code>-keyword</code>, <code>"keyword"</code>, <code>AROUND(0)</code>, <code>filetype:pdf</code>, <code>site:example.com</code> etc. In fact there is a whole science in the field of cracking that involves finding private information through web searching with google's advanced syntax, called <a href="https://en.wikipedia.org/wiki/Google_hacking">Google Dorks</a>.</p>

<p>Traditionally, these were used by powerusers, but nowadays, <b>these are necessary even the most basic of web searching</b>, at least if you don't wish to be bombarded with spam AI articles. Google, however, doesn't seem to think so, as they've been making it more and more frustrating to use them by spamming you with "I'm not a robot" captchas. And they exponentially increase the more you use them. Of course this is caused by many crackers using them, but as a result they're making the only way to properly use the engine a not-that-great experience.</p>

<p>Absit omen a man wants to read forum threads on how to fix his car, rather than read auto-generated junk posts filled with megabytes and megabytes of ads and trackers.</p>

<h2>Literally 1984</h2>
<p>No arguments needed.</p>

<h3>DuckDuckGo and other "private" search engines are not solutions</h3>
<p>Well DuckDuckGo definitely is not, as its very founder & CEO, Gabriel Weinberg, has admitted on twitter that <a href="https://digdeeper.club/articles/search.xhtml#ddg">DDG implements political censorship</a>. Apparently now they also include a fact-checker! <i class="sarcasm">Thanks DuckDuckGo for having my back against evil misinformation!</i></p>
<p>But, just like other private search engines, it was never going to be a solution, anyway. Its model is the same as that of Google: a centralized proprietary technology, only with the added marketing towards privacy enthusiasts. <b>In reality, you can never know what DDG, or any other private search engine, actually does with your search queries & data. Their claims are unverifiable & you can only trust their word</b>. Sure, it may not be as visibly intrusive as Google is, but once its on their servers, its theirs and we can never know what they do with that data, unless there's a server breach proving that they store them.</p>
<p>Similarly, you can simply never know whether the search engine you use is censoring websites or not. All you can do is trust their word. It just so happened that Gabriel Weinberg is an absolute fool and admitted to it. If he didn't, we simply couldn't have known.</p>
<h3>SearXNG, wiby or similar search engines can be a solution</h3>
<p><a href="https://github.com/searxng/searxng">SearXNG</a> (a maintained fork of SearX), unlike most search engines, is a free software meta-search engine that can be self hosted. It retrieves search results from other search engines, acting as a proxy & is very customizable.</p>
<p>Likewise, <a href="https://wiby.me/">wiby.me</a> is free software & can be self hosted. It has its own internal database with sites authored & submitted by actual people and, as such, has essentially no spammy AI articles.</p>
<p>If you want more information on alternative search engines, there's this <a href="https://digdeeper.club/articles/search.xhtml">great article at digdeeper.club</a> that analyzes them in detail.</p>
<h2>Do we even need search engines?</h2>
<p>Search engines are seen as an integral part of the internet, if not as the internet itself. In reality, the web can & has functioned without search engines. "Surfing" and discoverability can happen through word of mouth, links on personal sites & blogs, webpins, IRC/Matrix/XMPP, E-mail, RSS/Atom, and webrings like <a href="https://heaventree.xyz/">the one I belong to</a>. I, and others, have <a href="https://mcdim.xyz/links.html">link pages</a> on our websites to promote sites we find interesting. I've found a lot more intereting things this way than ever using a search engine, except perhaps for <a href="https://wiby.me">wiby.me</a>. That way we don't have to worry about being tracked by a mediator, or spammed by AI garbage articles, as everything is curated by actual humans.</p>
<p>Actually searching for something specific over the whole web, however, is a service that only search engines can provide, and for this reason we're stuck with them to some degree. However, as the Googles of the internet are gradually ceasing to be proper search engines, alternatives will have to take their place. We just have to make sure it's the right ones that do.
      ]]></description></item>
</channel>
</rss>
