Crest

Posts tagged "technology":

13 Jul 2025

Deepseek is not the Chinese OpenAI

This is part of a series of posts written during or shortly after my visits to the mainland of the People’s Republic of China in the summer of 2025.

Introduction

The thoughts underlying this thesis have been with me some time, and have been slowly been crystallising more and more clearly as time goes on and I realise that the rest of the world is seemingly diverging more and more with my own thoughts on the subject. This is not a fully formed proposal, and I will not attempt any detailed plan of action. As always, it is instead an attempt to try and formulate my own thinking on the subject, as well as to offer the reader a perspective on the Chinese economic philosophy that is heavily overlooked in the west. While informed by reading scholarly material and following the ongoing discussion about China, it is prompted mainly by my visit there and getting an idea of how the country works. That idea may be incorrect, and so feel free to e-mail me your thoughts on the subject.

In short, I am of the opinion that American and China are in a sort of dialectical movement with each other, with America (and Europe) wishing to copy the industrial strategy that it sees as having been key to China’s modernisation, and China simultaneously trying to create a hyper-competitive environment that fosters innovation. I think that the Chinese approach will succeed, and the western one will not. America and Europe risks losing the dynamism and economic resilience that free-market economics offers, while China encroaches on the gap that we gained during the great divergence.

The General Economic Environment of the Mainland

China is grossly misunderstood in the west. I do not claim to be a Sinologist, but merely in my brief visits to the mainland I have gained much insight that I do not believe most policymakers have. First of all, the PRC is not the Soviet Union. This might seem obvious at first, but it is the viewpoint that I hear between the lines of much literature on how to deal with China. Instead of vast defence spending, it is industrial policy. The opponent is a vast authoritarian system that efficiently the production of a continent to those areas where it most serves the national interest. This straw man is not a reality. The authoritarian government of the PRC is its greatest weakness, just as it was for the USSR, and for the Russian Republic that succeeded it. But while both the Soviet and Chinese communists ruled over oppressive regimes, the similarity mostly ends there.

The ideological system of “Socialism with Chinese Characteristics” (中国特色社会主义, SCC) as straightforwardly viewed from a Marxist point of view, is an attempt to create a system of pure capitalism as quickly as possible. A broader, more holistic, and more radical form of Lenin’s New Economic Policy where the rural Soviet Union and PRC would both allow capitalist enterprise to grow, as long as it did so under the auspices of the communist party. This is precisely the path that societies follow according to orthodox Marxist theory (Feudalism -> Capitalism -> Socialism -> Communism). In the west, Socialism with Chinese Characteristics is instead commonly understood to be some sort of attempt by the CCP to maintain a veneer of communist ideology while in practice becoming a free-market dictatorship. This is also not the case. The CCP is communist through and through, and SCC is a genuine attempt to achieve it. When spending time on the mainland, one is struck by the sheer presence of the party, of the praise for workers, of and of what seems to be authentic belief.

On the ground, there is a feeling of division between state control and private enterprise. Roads are meticulously cleaned and well-maintained, while at the same time lined by buildings almost falling into disrepair. The state wishes that certain things, like the power grid, should be fully controlled, but in other sectors the private sector should be able to flourish freely. This schizophrenic reality is that of SCC, with certain industries — primarily related to infrastructure — fully nationalised and others in an almost Laissez-Faire environment.

To try and achieve socialism (and eventually communism) China must unleash the free-market completely. The “weariness” of big tech that the CCP is sometimes reported to hold is not just grounded in a fear of large corporate interests clashing against the party, but is also an attempt to genuinely increase competition and increase the freedom of the market. Another example behind this might paradoxically be the intervention that is most talked about, that being the production of Electric Vehicles (EVs). Chinese EV subsides are not oriented toward building “national champions” like the Export-oriented approaches undertaken across the Yellow Sea in the Republic of Korea. Instead it has tried to foster a breadth of EV producers that are now aggressively undercutting each other, becoming internationally competitive in the process.

What is Deepseek?

In the beginning of AI 2027, a short story of rapid AI development1, the leading Chinese AI company (collectively called DeepCent, a portmanteau of Deepseek and Tencent) becomes the leader of a nationalised and consolidated “collective”. Researchers and new integrated circuits (ICs) are sent to a secure centralised facility where AI development and strategy are carried out. This is a very accurate view of how American and western strategists view China, as a singular entity that makes unified decisions that are fully carried out. But this is perhaps the exact opposite of reality. Instead the rapid industrialisation of China has been due to thousands of decisions made by comparatively low-level provincial officials and below, all competing to look good in the eyes of higher-ups by growing GDP2. There has been no large change in CCP governance that would suggest a different approach when it comes to AI development.

The authors of AI 2027 agree that there is no clear leading Chinese company, and in a footnote they remark that:

We consider DeepSeek, Tencent, Alibaba, and others to have strong AGI projects in China. To avoid singling out a specific one, our scenario will follow a fictional “DeepCent”.

But it is precisely this multifaceted competition that makes Chinese AI development different from its American counterpart. The competition between AI companies, all with extremely limiting compute resources, forces Chinese firms to compete using talent — something they will likely have more of in the foreseeable future due to what will probably be decreased brain drain to the US.

The “hawks in the CCP” warning about AGI do not exist, at least in the same way they do in America. Instead, the Chinese leadership is committed to using its dominance in manufacturing and infrastructure development to expand in the field of “Embodied AI” (具身人工智能). This approach requires numerous companies to make tailor-made AI solutions for different industries and tasks, and therefore motivates the opposite strategy from the centralised one that AI 2027 predicts. An example of this would be ZTE’s ongoing application merging drone use, 5G connectivity and AI to monitor things like the maintenance requirements for infrastructure.

Xi Jinping himself, the paramount leader of the PRC, seems quite keen on AI, having ordered a 2025 “study session” (集体学习) on the subject for the top CCP leadership. But he is old-fashioned, having gotten into Tsingua University (China’s top university) as a worker-peasant-soldier student during the Cultural Revolution. He has a greater interest in “hard” development like infrastructure; even in Made in China 2025, the CCP plan to expand into higher value-add manufacturing, it is specifically manufacturing that is the focus, not the service economy or software developments — areas where AI makes the biggest amount of sense. Chinese industrialisation through state-led infrastructure initiatives has been incredibly successful, and the CCP is much more likely to stick to what they know works (even if it is with new fancy tools).

His study notes from the aforementioned study session does mention a need to “concentrate forces” (集中力量) on high-end ICs and “foundational” software, but he also mentions creating an “enterprise-led industry-academia-research-user collaborative innovation system”, a far cry from a secret power plant/data center under state control. It also mentions such things like “Highlighting applied directions” (突出应用导向) and “Helping traditional industry reform and upgrade” (助力传统产业改造升级). These things are in-line with the ideas of embodied AI more than they are a centralisation of compute.

Deepseek then is not a state-sponsored champion, but one of many companies experimenting with AI development. This will likely accelerate AI development, and force AI firms adopt shorter release cycles and lower prices. The huge size of the Chinese market also allows for increased experimentation and development, experimentation that Western firms will not have access to. R1’s open source3 nature helps this further, by helping deploy AI in novel ways across the Chinese economy faster than in America, also increasing innovation. There is no large consolidation of the AI industry in the PRC.

The Risks of American AI Strategy

American governance is in a unique place on the spectrum. Contrary to the PRC, there are enough checks and balances for the executive arm to feel “restrained” by them, but it is still empowered enough to project a significant amount of power. This seems like a worst-case scenario to me — not enough power to take the seat as an “enlightened despot”, but still enough to break things if you aren’t careful. This is the issue at the heart of American AI strategy. The bureaucracy does not have the capacity to grasp the development of AI, but it feels it necessary to intervene regardless.

When Deepseek’s R1 model was first publicly released, it was widely reported as a “Sputnik moment”, as a wakeup-call to the American government that it no longer held a decisive technological advantage over its strategic rival. But this is an over-exaggeration. In 1957, with the launch of Sputnik, the Soviets attained a technological capability that the Americans did not posses at all, not merely a level of parity. But one might argue that what Deepseek showed was Chinese capability to do something, but to do it at a fraction of the cost of American alternatives. But this is not exactly the case either, as Semianalysis recently showed, Deepseek’s low price-per-token has not resulted in companies flocking to Deepseek, but instead a slow decline in users, even as the overall market has grown. This is because they have merely chosen to make certain trade-offs to lower prices due to their compute-restrained nature, rather than any underlying technical improvement.

This compute-restrained environment that Chinese firms find themselves in is of course artificially created by American export-controls. As is being increasingly argued, perhaps most prominently by Nvidia CEO Jensen Huang, these export-controls might actually be decreasing American power relative to China, by effectively tariffing American ICs in the Chinese market, allowing domestic AI-chip manufacturers to catch up with Nvidia, TSMC, and the non-Chinese semiconductor manufacturing industry.

But what has not been discussed to the same degree is the risk that not only does this environment hurt the long-term prospects for the western-aligned IC industry, but it might also hurt American software as well. As Deepseek alarmists claim, China has largely caught up in the development of LLM, or are at least very close behind. But they have done so in a much less capital- and compute-rich environment. As Sutton writes in The Bitter Lesson, most of the gains in AI research have been due to increasing amounts of compute, and developments have rather been in how to make use of more and more computational resources, rather than in how to make use of it. Chinese development seems to have changed this trend, if only very slightly. If we then extrapolate Chinese AI so that it has the compute resources of OpenAI, would it not overtake OpenAI? There is a risk that, like the Sardaukar and Fremen from Frank Herbert’s Dune, we are helping Chinese AI develop in a more hostile environment, while at the same time supporting the development of a Chinese IC industry to support it in the long-term.

Similarly, American strategy, lead both by private-sector and public sector investment, risks “putting too many eggs in one basket”, that basket being OpenAI. 500 billion USD, the amount of money to be invested in the Stargate Project, is a lot of money, likely more than China is spending, so is it not important to get as much development as possible out of it? If China is able to us its compute more efficiently than the US and instead uses its money to bolster domestic manufacturing further, especially in the field of integrated circuits, it could undermine US national security. China’s vibrant free-market economy is a tremendous resource, exceeded only by that of the United States. It would be a shame to destroy that lead.

The US and Europe must resist the impulse to bet big on national champions, as (perhaps paradoxically to many) Deepseek shows. High technology advancements should instead be facilitated through an increase in basic research, ability for academia and free enterprise to intermingle, and deep capital markets that can bet big on new, innovative ideas.

Conclusion

China is a free-market economy, and it is committed to using the strengths inherent in that system to its national advantage. The PRC leadership will try and use AI to upgrade preëxisting industry, and will not engage in a rapid “race to AGI”, beyond continuing attempts to become a significant producer of integrated circuits. Its large domestic market allows it to rapidly test new innovations, but so does the vast American and (to some extent) European markets. While it the CCP is increasingly grasping after interventionism, it still is trying to remain committed to free enterprise.

The US and Europe must resist the impulse to bet big on national champions, as (perhaps paradoxically to many) Deepseek shows. High technology advancements should instead be facilitated through an increase in basic research, ability for academia and free enterprise to intermingle, and deep capital markets that can bet big on new, innovative ideas.

Footnotes:

1

AI 2027 seems to have numerous problems in predicting the rate of AI development, but they are irrelevant here. The misunderstanding made about Chinese AI, and China as a whole, are prevalent on all sides of the debate, and are not exclusive to the point of view of the authors of AI 2027. Reading AI 2027 when it was first published was however one of the reasons for more concretely wanting to write this counterargument.

2

This approach has had its downsides, and is perhaps the Achilles heel of Chinese modernisation. See this recent article in The Economist for an example.

3

I usually dislike the term open source and try to avoid it in favour of the term free software, but in this case I can not do so. R1’s (and Meta’s Llama LLMs) licenses are not free-as-in-freedom, since they restrict what the user can do with them — such as perform terrorism or directly compete with Meta.

Tags: technology China
13 Mar 2025

Functional Life Without Side-Effects

Programming languages (and their users) are often grouped into two main intellectual schools of thought: Object-oriented programming (OOP) and functional programming. These two schools both claim to offer ways to manage the increasing complexity that comes with the development of larger and larger programs. Functional programming states that this complexity can be managed by following these principles:

  1. Functions are first-class citizens.
  2. Functions are deterministic.
  3. Functions should not have side effects.
  4. Data is immutable.

Not all of these are directly applicable to non-programming concepts, but twisting them somewhat gives us an interesting perspective on how do deal with complexity and chaos in our lives.

Functions

In order to apply functional programming to our activities, we must first endeavour to understand what a function is in this new context. Strictly speaking a function transforms each element in the set X into exactly one element in set Y. This is where the second point listed earlier comes from, since each element in set X must always output the same element (so no randomness).

A function must therefore produce something; it is not a activity merely done for the sake of doing. Things like doomscrolling or verbal communication are not functions, since they do not produce a tangible output — even if they may impact you in some way.

In what activities do we produce things then? One obvious example is cooking. Ingredients are combined or separated and should hopefully come together to create the dish that you aimed for. This will not be entirely deterministic since ingredients may be of a differing quality, your tools may be different from time to time, and your own skills as a chef means that you will inevitably make mistakes. In reality — as opposed to the realm of mathematics and computer science — the world will never be truly deterministic. But this does not mean that we should surrender completely, instead we must aim toward cooking a dish as we intended each and every time.

Side Effects

Another example where it is perhaps not imminently obvious that the activity is functional is cleaning. It also highlights the aspect of functional programming that is perhaps most famous, and is also present in the act of cooking: side effects. Side effects are when a given function not only transforms the input X into output Y, but also modifies a third value. This impacts the global state and may mean that the function, or any other function, behaves differently when run in the future. When I vacuum my apartment I have to move furniture to reach all of the nooks and crannies where dust settles. This means that the function whose purpose is to rid the floor of dust causes the side effect of moving my furniture. These side effects have to be managed and dealt with quickly, and critically be seen as part of the task itself.

It is easy to dismiss many side effects as something that can be dealt with later, but this dramatically increases the mental effort involved. Not only are you more familiar with the various items whose position and status must be dealt with, but you are also already performing the task, and so there is no “startup” cost involved with dealing with it straight away. Staring at the dishes that need to be done after a meal is an experience I expect most people to be familiar with, but it can often times be avoided when they are seen as inexirably linked to the task itself.

Conclusion

Life may never reach the pure determinism prized by functional programming, but adopting its mindset allows us to manage the increasing complexity of everyday life. By thinking of our actions as functions we can try and deal with side-effects immidiately instead of waiting for them to pile up over time, minimizing unwanted distortions in our personal “global state”.

Tags: technology
27 Feb 2025

Email as a Revolutionary Medium

The nature of Email

In an increasingly interconnected and technologically sophisticated world, our capabilities for communication and diversity of ways to do so also increases. This is often approached as a problem, with each method merely remaining due to network effects, but I believe that this multitude of means are a strength and not a weakness. I do however still see what I deem as a misuse of tools, and I shall endeavour to explain, and hopefully convince you of, my ways of structuring communication in different spheres.

The key difference that I think many do not make is the division between urgency and importance. This might seem an unwieldy or arbitrary division, but I believe it is crucial. In many cases needing an answer quickly is the only thing one cares about, and in others it is the accuracy of the response that matters. To explain simply, here an order of different modes of communications:

By “Third-party messaging” I am referring to built-in modes of instant messaging into other applications, most often social media platforms.

Urgency Importance Means
1 3 Call
2 4 Text
3 5 Third-party messaging
4 2 Email
5 1 In-person

Sorted by importance:

Urgency Importance Means
5 1 In-person
4 2 Email
1 3 Call
2 4 Text
3 5 Third-party messaging

When you want to be very clear about something you always want to meet in person, and if speed is necessary nothing is faster than calling someone’s cellphone. But there is one medium that has been overlooked, or in many cases even despised, email.

The Indieweb wiki’s section on email describes an “Older [reason] to use email” as “messaging among older internet users” as if this is an archaic or outdated form of messaging. This is echoed by my anecdotal experiences with talking to younger generations of people who in many cases detest email, having only used it in a professional setting and for making “accounts” to websites that then flood them with newsletters and advertisements. I understand these experiences that I imagine many people have, but they do not mean that email should be thrown out altogether. Instead it should occupy a new place in the way people communicate.

The word revolution has an interesting history, meaning both a transformative change in a given field (although often political) as well as a simple revolution of a spinning object, returning to its starting position (see RPM; revolutions per minute)1. These two seemingly homonymous words are however deeply interconnected, and to explain this I want to use the example of the Glorious Revolution. It was not only a profound political development, overthrowing the established idea of the divine right of kings and replacing it with popular sovereignty, but also formulating it as a return to the normal political order of the ancient rights of the English people2. The Meiji Restoration in Japan was also of this nature, a profound and forward-looking development that framed itself as a return to the original state of things.

So what does this have to do with email communication for the kidz? I see email as a niche that no other medium occupies, that being asynchronous communication. All communication is of course asynchronous in some sense, but there is an expectation that texting should ideally be done instantly and intensely. One is expected to respond quickly, and “leaving” someone “on read” is seen as an insult. I think that this form of synchronous communication, when combined with the scale of modern technology, creates enormous stress on the individual. At all times one is able to intimately3 communicate with thousands of people, leaving the individual paralysed from overstimulation. Email by contrast emphasises long-form messaging, often being longer than posts on microblogging services meant for permanent or semi-permanent publication. This gives the individual more time to respond but also the sender to live their own life while waiting for a response. Originally this was of course a technological necessity — it was impossible to reach someone through the internet when they were not at their computer — but that limitation has since disappeared through the introduction of the cellular phone and later the smartphone.

This does not mean that the problems with email are not real but that they are obscuring the usefulness of the technology. The primary change I would recommend (or that needs to be done) is the division between communication and information. There is no denying that a lot of services rely on email for registration and advertisements. But there is a clear mental barrier between receiving an email from a real human being and a machine sending you a morass of spam that one is not expected to reply to, but simply to consume4. The greatest damage to email has been done by no-reply@domain.com. To counter this one needs multiple email addresses, one for machine communication that is seldom used and another for human connection. This allows for the mental separation of messages so that the enormous flood of email does not drown out the signal, and so that individuals are not anxious when they are sent an email.

Challenges

What would then be required to return to the earlier asynchronous mode? It is unclear if the massive use by commercial-scale actors can be undone or reduced, and email spam filters mean that the system is heavily centralized to just a few big actors. But it is hard to deny the powerful networking effects of email, where almost every user of the internet can be assumed to have one. Would it be better to simply torch email and convince a new generation of users to move to a new system of E2EE async messaging? I do not know. But I do still believe that email has the potential to be the solution to many peoples’ problems with the internet and communication as a whole.

Footnotes:

1

This is actually the original meaning of the term — from the Latin revolvo, returning roll.

2

The late King James the Second … did endeavour to subvert and extirpate the … laws and liberties of this kingdom.

I got this example from Robinson’s Nobel lecture that I attended in 2024.

3

As in closely. Being able to directly reach someone no matter where they are or what they are doing is very much an intimate activity.

4

This includes emails that are not intended to be malicious, such as password resets or updates to terms of service.

Tags: communication technology
30 Dec 2024

About the website

I think every personal blog that is somewhat custom built should have documentation written on its design philosophy and implementation. I see this as an extension of the free-software ideal; you should not only be allowed but also able to extent and modify another program to your needs.

Design

The website is written in Emacs and in org mode, because I find the markup to be intuitive, natural, and easy1. I generally took a lot of inspiration from others using the same tooling as me, as well as from Gwern, Maggie Appleton and various other blogs and homepages I have read over the years. The colour scheme is a slightly adapted version of Protesilaos Stavrou’s modus themes and the paradise theme. I find them visually pleasing, and they are apparently very accessible to those with impaired vision. I use have used them in Emacs for a long time, and so they fit nicely visually on my desktop when editing content.

The primary font used is Vollkorn, but as a fallback font I also use the legendary Computer Modern, the default typeface used in TeX. Code (Such as the TeX you just read) uses Protesilaos’ Iosevka Comfy font. On my personal machines I use the amazing Cartograph, but I can not afford to use it on the website. The titles are typeset in Zedou, inspired by the French colonial administration in Madagascar.

Static website generation

The blog is genereted using org-static-blog. I have an elisp file that runs the necessary configuration code and acts like a declarative configuration for the deployment of the static site. It looks like this:

(require 'org-static-blog)

(setq org-static-blog-publish-title "Joar von Arndt")
(setq org-static-blog-publish-url "https://joarvarndt.se/")
(setq org-static-blog-publish-directory "~/Documents/blog")
(setq org-static-blog-posts-directory "~/Documents/blog/posts/")
(setq org-static-blog-drafts-directory "~/Documents/blog/drafts/")
(setq org-static-blog-enable-tags t)
(setq org-static-blog-enable-og-tags t)
(setq org-static-blog-image "https://joarvarndt.se/vonArndtCrestWhite.png")
(setq org-export-with-toc t)
(setq org-export-with-broken-links t)
(setq org-export-with-section-numbers nil)
(setq org-static-blog-index-length 1)
(setq org-static-blog-use-preview nil)

(setq org-static-blog-page-header
      "<meta name=\"Joar von Arndt\" content=\"Joar von Arndt\">
      <meta name=\"referrer\" content=\"no-referrer\">
      <meta name=\"viewport\" content=\"initial-scale=1,width=device-width,minimum-scale=1\">
      <link rel=\"stylesheet\" type=\"text/css\" href=\"https://cdn.jsdelivr.net/gh/bitmaks/cm-web-fonts@latest/fonts.css\">
      <script src=\"https://tinylytics.app/embed/xzJ638St84zSVeyVpBxf.js\" defer></script>
      <link href=\"static/style.css\" rel=\"stylesheet\" type=\"text/css\" />
      <link rel=\"icon\" href=\"static/favicon.ico\">
      <link rel=\"me\" href=\"https://github.com/JanJoar\" />
      <script src=\"https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js\"></script>
      <script src=\"static/sidenotes.js\"></script>
      <script id=\"MathJax-script\" async src=\"https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js\"></script>")


(setq org-static-blog-page-preamble "<div class=\"header\">
            <a href=\"https://joarvarndt.se/\"><img id=\"themeImageHeader\" src=\"vonArndtCrestBlack.png\" class=\"header-img\" alt=\"Crest\" width=\"50\"></a>
          </div>")

(setq org-static-blog-page-postamble
      "<div class=\"footer\">
            <ul>
            <li><a href=\"https://joarvarndt.se/about.html\">About\n</a></li>
            <li><a href=\"https://joarvarndt.se/archive.html\">Other posts\n</a></li>
            <li><a href=\"https://joarvarndt.se/now.html\">Now\n</a></li>
<script src=\"static/theme.js\" defer></script>

            <li><a href=\"https://joarvarndt.se/rss.xml\">RSS</a></li>
            </ul>
          </div>")

(setq org-static-blog-index-front-matter "<a href=\"https://joarvarndt.se/archive.html\"><h2>All Posts</h2></a>")

(setq org-static-blog-enable-tag-rss t)

;; For syntax highlighting of code (Like this).
(setq org-src-fontify-natively t)
(setq org-html-htmlize-output-type 'css)
(setq org-src-preserve-indentation t)

(setq org-image-actual-width nil)

This loads the required javascript2 and CSS for themeing, both of which you should have received if you’re reading this. I am a big fan of org-static-blog due to it’s simplicity3, extensibility (its just a simple HTML static site) and obvious org-mode support. I used to use Hugo, a widely praised static website generator, but it only has nominal org-mode support, it requires a special non-org-mode YAML frontmatter that I really dislike. When writing a post, I prefer to leave formatting mostly out of it, and with my main focus on text. Tinkering with the website’s appearance is great fun of course, but I like to keep the two as separate activities. Writing any sort of special syntax brings me out of the experience, and that is partly why I wrote my own javascript to create sidenotes out of basic pandoc (and therefore org-mode) style footnotes.

Sidenotes

The sidenotes are heavily inspired by Gwern and Tufte CSS, but the Gwern sidenotes.js is not portable and seems way too complex for my needs (it is 1150 lines long!!). In comparison, here is the the script that creates sidenotes. It is merely 70 lines long, including whitespace and comments. It also allows for easy reading on mobile, vertical monitors, and JS-free browsers, since if the dimensions are not adequate for displaying sidenotes or the javascript doesn’t run the content does not disappear. Instead it is shown as a footnote at the bottom of the page with bidirectional links between it and the reference. The Tufte CSS approach is admirable — relying only on pure HTML and CSS — but my aforementioned dislike of jumping between prose and “syntax” means that is is not an approach for me. I have however taken the liberty of inspiration from Tufte CSS in the CSS of sidenotes and margin notes. Margin notes are written in the form of an org-mode export block, and so have to be located at the beginning or end of paragraph.

This is how I write a margin note!

#+begin_marginnote
This is how I write a margin note!
#+end_marginnote

I can do this since org treats “special blocks” as a <div> with a synonymously named marginnote class. This can then be styled however you want using CSS. Margin notes are usually not as critical in my mind as foot/sidenotes, since they serve merely as a general guide to the text rather than an explicit pointed “reference”4. That’s why margin notes are not displayed on mobile devices. This is an opinionated change from Tufte CSS’ approach, where margin notes are instead treated as unnumbered sidenotes when there is no margin to display them in.

Hosting

The website is hosted on my own server at home, on an Intel NUC machine. It runs Debian GNU/Linux and serves the website primarily through an NGINX web server, but the Diplomacy page is served through a gunicorn server that displays a python application so that users can input data that is then saved. My internet connection is quite spotty (not only do I not have fiber, by building isn’t hooked up at all) and so there might be intermittent outages or slow load times. I do try and maintain at least 99% uptime however. I use loopia as my domain registrar, primarily due to having been recommended them from people I trust, however I have made no significant research into alternatives myself.

After writing the posts I used to manually use sftp to remotely connect to the server from my desktop, laptop, or phone (through Termux) and upload my files but this became quite tedious to do, so I wrote a quick script in elisp that does all this for me:

;;; blogPublish.el --- Summary:

;;; Uploads the contents of the blog folder to the required one on the server.

;;; Commentary:
;;; Probably not the most elegant nor beautiful solution, but it seems to work for me.
;;; The HTML files on the remote server are first deleted through tramp, and then
;;; the content is reuploaded in case there are any changes.  Since plain text is so
;;; quick to upload there is no issue with reuploading unaltered content. 

;;; Code:

(require 'org-static-blog)

(defun blog-delete-remote-html ()
  "Deletes all html files on the server."
  (let ((tramp-default-method "ssh")
        (remote-directory "/ssh:jovo@100.119.139.3:/var/www/html/blog/"))
    (with-current-buffer (find-file-noselect remote-directory)
      (let ((default-directory remote-directory))
        ;; Ensure the remote directory is accessible and its contents are loaded
        (revert-buffer)

        (dolist (file (directory-files default-directory t "\\.html$"))
          (when (file-exists-p file)
            (message "Deleting %s ..." file)
            (delete-file file)
            (message "Deleted all .html files in %s" remote-directory)))))))

(defun upload-blog-contents ()
  "Uploads the required HTML to the blog via SFTP for async."
  (let* ((local-dir "/home/jovo/Documents/blog/")
         (remote-dir "/var/www/html/blog/")
         (remote-host "100.119.139.3")
         (remote-user "jovo")
         (sftp-command (concat "echo \"put " local-dir "/*.html " remote-dir "\" " "| sftp " remote-user "@" remote-host)))
    (async-shell-command sftp-command (get-buffer-create "Blog upload"))))

(defun website-publish ()
  "Function running after org-static-blog-publish to publish to the website."
  (interactive)
  (blog-delete-remote-html)
  (upload-blog-contents))

(advice-add #'org-static-blog-publish :after #'website-publish)

;;; blogPublish.el ends here.

The function is triggered using advice-add after org-static-blog-publish so as to fit seamlessly into my preëxisting workflow. It removes old HTML content from the website using TRAMP, and then uploads it using sftp. TRAMP is of course also capable of uploading the files, but it is quite slow compared to async sftp. Deleting files however takes a comparatively short amount of time. Authentication is handled by tailscale SSH, so I don’t have to expose port 22 to the public internet and don’t have to enter any passwords for upload.

Footnotes:

1

Why would any markup not use “//” to italicise text? Markdown’s use of just asterisks is admirable, but unintuitive for reading in plaintext (Does two asterisks mean italic or bold?). Org mode’s choice of using __ to underline text is similarly elegant.

2

For dark/light mode, mathjax, and of course these sidenotes (But only if you are reading on a wide screen). Sadly the external mathjax reference makes this nontrivial javascript, but that is a sacrifice I am willing to make for easy and beautiful \(\LaTeX\) renderings.

3

From the repository:

Above all, I tried to make org-static-blog as simple as possible. There are no magic tricks, and all of the source code is meant to be easy to read, understand and modify.

4

Even if it is not a literal reference, but it may often be, especially when it comes to my academic writings.

Tags: technology website emacs
17 Aug 2024

Writing About Jacques Ellul

I am by no means an expert on Ellul, I have merely read three of his books (Presence in the Modern World, The Technological Society, and The Meaning of the City) But in trying to communicate his influence on my thinking, I have inadvertently written many times about him, albeit at an all too basic level. There are many theories claiming to explain all of human history, or at least the structure of our current society, but Ellul’s technique works because of its simplicity and deliberate vagueness. It is however this quality that makes explaining Ellul to others so challenging. Here is one example of an attempt made by me to quickly summarise the central ideas of Ellul’s technique.

The technical concept can be briefly summarized as a conglomerate of thoughts, methods, and approaches considered to be objectively the best for achieving a purpose. It is important to distinguish this concept from technology, such as computers, engines, weaving machines, and so on. Technology is merely a consequence of technique, not the cause. People in modern society can no longer imagine life in the way that prehistoric and medieval populations lived. Almost all problems are expected to have technical solutions; if the solution to a problem requires something to be done, then the problem is technical. This seems almost tautological — if nothing needs to be done, is there really a problem? However, problems often arise from attempts to improve the situation, and technique always demands solutions to increasingly complex problems.

This is by no means a short summary, it is longer than the introductory paragraph. But to compress it inevitably means allowing for serious misinterpretation, and readers are not often familiar with an obscure post-war anarchist Christian sociologist. This is made even more difficult owing to the fact that technique is applicable to such a wide number of disparate fields. It is for this reason that explaining Ellul has become dreadfully boring, despite the fact that I recognise Ellul as a figure that would bring enormous comfort — I almost dare to say enlightenment — to a great number of people. But I feel compelled to do so, again and again, because I too am a member of our technical society. Just like Kaczynski1 I feel compelled to utilize technique against itself despite being fully aware of the fruitlessness of doing so.

Ellul naturally takes inspiration from Marx’ historical materialism as well as Hegel’s idea of Geist. The main difference is that where Marx and Hegel both see an end point, a perfect communist society and Absolute knowledge respectively, Ellul instead sees technique as an ever-expanding — being driven only be a need to encompass every facet of human society. Technique per definition can have no limit because when it reaches absolute mastery over any one idea it will simply move on to greater and greater scales. Only something like the paperclip maximizer converting all of the mass-energy in the universe would ever reach a hard limited; technical society however still hopes for a continued advancement after that.

Since technique dominates every area of society, it has become relevant for an untold number of discussion I have come across. For example, in an article about the possibly planned use of TikTok by the CCP to destroy western civilization, Gurwinder effectively makes clear how Wang Huning describes America’s crisis of technology, and how it shares similarities with Nick Land’s view of accelerationism (all in attempt to expose a CCP accelerationist plot). I see Gurwinder’s thesis as fundamentally incorrect, the moral decline of western civilisation is not to be solved through any return to “traditional moral values”, technique only moves forward, though it very well might be marketed as such a return2. Gurwinder quotes Land’s A Quick-and-Dirty Introduction to Accelerationism:

The point of an analysis of capitalism, or of nihilism, is to do more of it. The process is not to be critiqued. The process is the critique, feeding back into itself, as it escalates. The only way forward is through, which means further in.

Land is entirely correct in his description of the symptom, but misattributes the cause. Capitalism is not a driving force of anything, it is simply a state of affairs itself caused by technique. As I write in my essay on the philosophy of nuclear weapons, technique is inherently alienating and a cause for nihilism, as Land has realized. But capitalism is not the cause of this; Soviet socialism is an even purer form of technique3. The planned economy requires a constant need for things to be done, for organisational meetings and for statistics to be collected so that more accurate and better choices can be made, even at exorbitant costs. Why socialism ceased in the USSR and China was because of a technical choice that free-market capitalism was more efficient, and it was this decision that Fukuyama described as his end of history; the triumph of free market liberal democracy as the most efficient mode of societal organisation. This does not mean that it will remain so forever of course, but that it is simply meaningless to discuss the issue, for when something more efficient comes along, it will simply be done.

Just like populism technique lacks any ideological motive. There is no serious ideology or movement that seeks to constrain to reduce technique, as doing so is seen as foolish. Ideas such as free-market libertarianism, anti-AI protestors, and environmentalism all want to use technique to offset its limitations. Libertarians want to move technical applications to private actors for efficiency gains, anti-AI protestors want to impose rules to guide AI development, and environmentalists want to build and expand renewable energies and recycling infrastructure to offset the negative effects of industrialization. These are all respectable in certain ways of course, but it showcases how even radical unorthodox ideas are really conforming to the mainstream more than any form of conservatism4.

Footnotes:

1

Kaczynski was also a reader of Ellul, and found that his experience of reading La Technique hugely influential.

2

Things like the Glorious Revolution, the rise of Napoleon, and the Treaty of Versailles were all seen as a return to the normalcy of things and to the romanticised idea of the times that came before, but they were all of a fundamentally progressive nature in their consequences.

3

In fact, the soviet establishment discusses the concept of Taylorism to a great extent, pursuing an ideal of industrial management that disregards the individual organic connections and methods practiced throughout most of human history. Taylorism in its goal is a clear example of large-scale technique.

4

Another example: “The paradox of Soviet communism was that it was really conservative”.

Tags: technology culture
17 Aug 2024

Diplomacy Today: A backstabbr and AI powered newspaper

Diplomacy Today is a python program and corresponding flask application that serves and hosts an early-twentieth-century-style newspapers generated from the turn orders of a game of Diplomacy hosted on backstabbr. The idea, and a large portion of the core code, are not my work, and I deserve none of the credit for it. But the original program seems to have been abandoned last year, and was perhaps only used for one game. But that is the beauty of free software, I have taken nraw’s original code and iterated upon it over the course of, so far, four games. It now contains more features and improved polish that builds upon the basic functionality of a GAI generated in-universe newspaper. I attempted to rewrite the program in chez scheme as a learning exercise, but ended up not using it as python has some nice libraries that I couldn’t bother to reimplement in scheme.

To use it you should:

  1. Make sure Mozilla Firefox is installed.
  2. Clone the Github repository:
git clone https://github.com/JanJoar/diplomacy_today.git
cd diplomacy_today
  1. Install all the python packages:
pip install -r requirements.txt
  1. Get your OpenAI API key and export it to the OPENAI_API_KEY environment variable.
  2. Generate the newspaper:
python3 main.py
  1. Run the web application using something like gunicorn:
gunicorn -b 0.0.0.0:1914 app:app

If you have any issues with installation or want to features, feel free to contact me, preferably at my email at joarxpablo@pm.me so that I can improve the program.

Tags: technology
Other posts