<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://tombh.co.uk/feed.xml" rel="self" type="application/atom+xml" /><link href="https://tombh.co.uk/" rel="alternate" type="text/html" /><updated>2026-10-16T09:04:08+00:00</updated><id>https://tombh.co.uk/feed.xml</id><title type="html">Thomas Buckley-Houston</title><subtitle>This is my website and blog</subtitle><entry><title type="html">Religious Studies In Software Engineering</title><link href="https://tombh.co.uk/religious-studies-in-software-engineering" rel="alternate" type="text/html" title="Religious Studies In Software Engineering" /><published>2026-10-13T00:00:00+00:00</published><updated>2026-10-13T00:00:00+00:00</updated><id>https://tombh.co.uk/religious-studies-in-software-engineering</id><content type="html" xml:base="https://tombh.co.uk/religious-studies-in-software-engineering"><![CDATA[<div style="text-align: right; font-style: italic">
<a href="https://youtu.be/bvdf9hbsh9c">
A video recording of this post is also available on Youtube.
</a>
<br />
<br />
</div>

<p>I graduated from Lampeter University, Wales in 2006, with a 2:1 in Religious Studies. Whilst I’ve earnt all my money since then from the seemingly unrelated world of software, my degree has been invaluable. Programming isn’t just something we do to computers, it’s something we do to humans and society as well. Ideologies, politics and religions can be thought of as a set of steps that, if followed, lead to a desirable outcome.</p>

<p>Religion is a deep and diverse subject: I studied everything from <a href="https://tricycle.org/magazine/buddhism-without-beliefs/">agnostic faith</a>, to <a href="https://en.wikipedia.org/wiki/Ayahuasca">hallucinogenics</a> and <a href="https://allabout-japan.com/en/article/3139/">Japanese traffic cone worship</a>. Although there is no one accepted academic definition of religion, I think a useful one to bear in mind for this blog post is, “the state of being ultimately concerned”<sup id="fnref:tillich" role="doc-noteref"><a href="#fn:tillich" class="footnote" rel="footnote">1</a></sup>. Ultimate concern can be seen in those great questions of life; what is existence, what happens when we die, what is our purpose, what does it mean to be good, why do we suffer? Although Religious Studies explicitly doesn’t offer any answers to these questions, it is a discipline that is ultimately concerned with taking <em>those that ask these questions</em> seriously.</p>

<p>Since 2015 I’ve been continuously travelling the world. Not having a fixed home has meant that I’ve slowly but surely reduced my possessions to a bare minimum. My entire worldly belongings fit in this 30 litre daypack:</p>

<p><img src="images/tom_and_bag.webp#wide" /></p>

<p>Despite its small size, I still carry some items of sentimental value. One of which is this handout from our Buddhism module:</p>

<p><img src="images/religion_definitions_handout.webp#wide" /></p>

<p>The handout contains a very much non-exhaustive selection of some 34 definitions of religion. Buddhism is an Eastern tradition and so has had a unique effect on the Western tradition of Religious Studies. Whilst Buddhism is clearly a fully-fledged religion, it is, in stark contrast to mainstream Western religions, godless. So however we define religion, it needs to take this and indeed many other diverse human beliefs and practices from around the world into account. This makes agreeing on one true definition hard if not impossible.</p>

<p>I think we can rightly be suspicious of a field that doesn’t precisely know what it’s actually studying. But for me this has always been one of the most interesting and useful aspects of my training. How do you sincerely and rigorously take something seriously without knowing what it is?</p>

<h2 id="the-insideroutsider-problem">The Insider/Outsider Problem</h2>

<p>One framing we were taught to approach this with was the Insider/Outsider problem. Those best suited to knowing what a given religion is, are those that practice it, namely <em>insiders</em>. But because of their commitment and investment they are also those most likely to be biased. Whilst <em>outsiders</em> on the other hand can be more objective, they’re also problematic as they’re not directly exposed to the subject of study. Therefore we should strive to consider both perspectives in order to arrive somewhere in the middle. We can do this both academically and individually.</p>

<p>Academically, we can consider both the outsider studies of say, anthropologists and the insider accounts of believers. Individually, as outsiders, we can be curious and think critically, but we can also, more interestingly, allow ourselves to be genuinely moved as sincere visiting insiders to specific responses to questions of ultimate concern. But given religion’s track record over the millennia, this seems dangerous. Why dignify some of the most damaging ideas in human history by letting them into our personal lives? For me this gets to the heart of what Religious Studies is and what I’ve found most valuable about it in my life and career over the last two decades.</p>

<p>Given the fact that religion is not easily defined, we must be prepared to entertain the fact that, whatever the dimensions of religions are, some of those dimensions may be present in worldviews that don’t immediately appear religious. Think of how capitalism puts money above all else to the detriment of social and ecological welfare. Profit may not be a god in the traditional sense, but the way in which it so fundamentally permeates modernity notably echoes the great world religions like Buddhism and Christianity. Whilst it’s perfectly possible for somebody to not profess an <em>ism</em> of any kind, I think Religious Studies shows us that we’re all, to some extent, inevitably inside one <em>ism</em> or another. That’s not to suggest that anybody can speak as if inside any other religion or <em>ism</em>. But rather that Religious Studies, in its sincere and holistic approach, neither demotes religiousness to a mere object of scientific dissection, nor promotes it to a source of unverifiable truth. I always have been and still am, deeply sceptical of religion. But I don’t get to smugly point at it from my high horse thinking I’m a “clean” outsider untainted by insider-ism.</p>

<p>One of the fathers of Religious Studies, Ninian Smart, had this to say about the Philosophy Of Religion, an adjacent discipline focussed on religious truth claims<sup id="fnref:ninian" role="doc-noteref"><a href="#fn:ninian" class="footnote" rel="footnote">2</a></sup>:</p>

<blockquote>
  <p>The fabled Martian arriving on the planet and inspecting among other things our intellectual resources might also be struck by a strange thing. Journals he would note, devoted to the philosophy of religion. The more advanced essays therein might discuss the question of truth as between religions. But over Cambodia he would not look down to perceive Christians struggling spiritually with Buddhists: he would find Marxist rural anarchosyndicalism destroying temples and monks. In Tibet he would see the clash of ancient religion and Maoism. In Romania he would note subversive Baptists. In Sweden he would see Christianity softly overwhelmed by social democracy. In brief, he would think that as far as rivalry goes […] religions and ideologies were tugging against each other, and that really from a practical point of view it was odd that such a struggle was rarely depicted in the journals of the philosophers of religion. […]</p>

  <p>He might be further puzzled at how blithely men could come to put religion in a sort of ghetto, considering so many professed not to be able to clearly define it.</p>
</blockquote>

<p>To a Martian there is no significant difference between religion and ideology. What’s paramount and starkly obvious is that, whatever its name, and however it’s defined, it’s one of the defining aspects of the earthly life to which we all belong.</p>

<h2 id="earthly-life">Earthly Life</h2>

<p>My father died from alcoholism during my final year at university. I am forever grateful for how immensely supportive my tutors were during that time. Just a few weeks after his death our final exams started. For my Buddhism exam I chose to answer the question, “Why Do Buddhists Meditate?”. It was a topic close to my heart as I had myself been meditating daily for 5 years at that point. As I entered the exam hall I unexpectedly saw my ex-girlfriend. I kept my composure, but when I came to write the words, “…as opposed to a belief, meditation as a practice exists beyond statements on the true nature of things…”, I broke down in tears. I was overwhelmed by the convergence of so many things; academic achievement, personal fulfillment, loss and love. My tears softened the paper upon which I was writing such that any ink would run. I started writing again further down, leaving what must have appeared to be a curious empty paragraph.</p>

<p>I wasn’t just an outsider to my degree. It fundamentally shaped who I am. I literally, as in literally literally, submitted tears to my formal academic record.</p>

<p>In that same Buddhism module for which I still carry a handout, we also learnt that before the arrival of Alexander The Great in India during the 4<sup>th</sup> century BCE, the Buddha wasn’t represented in human form. Rather he was depicted by absence, such as an empty chair or footprints.</p>

<p><img src="images/buddha_footprints.webp#wide" />
<small class="caption">
Buddhapada (Footprints of the Buddha). Gandhara, South Asia, 2nd century. Schist. Yale University Art Gallery.
</small></p>

<p>There are various interpretations for why this was. My favourite is because it represented the central Buddhist concept of emptiness. <em>Emptiness</em> is often misunderstood as the idea that there exists some fundamentally empty dimension to existence. In fact, it’s just the observation that you can’t point to any one aspect of a thing in order to locate that thing. Typically this is applied to a person: whilst I am made up of my body, thoughts and feelings, I can’t point to any one cell, utterance or emotion and say that that is what I most fundamentally am. This can be applied to anything, even, as we have just seen, the definition of religion itself.</p>

<p>My empty paragraph, like the Buddha’s footprints, showed me that I was really there, that I didn’t just peer at my university experience from the outside. I saw, and still see, the temptation to blithely put religion in a sort of ghetto, to keep it at a safe distance, to believe that I am somehow above and beyond all that fantasy and violence. But questions of ultimate concern don’t leave me unscathed.</p>

<p>Once I’d graduated, I had to find a way to make a living. I’d learnt about software since before I could remember, from my father, the alcoholic. So whilst I already had some fluency in that world, it wasn’t  immediately appealing. I wanted a roof over my head, but I wanted fulfillment too. How could the world of computers offer me the same warmth and stimulation as my degree? This is still a question I come back to time and time again, and even though the answers don’t always feel within reach, the tools and perspectives I was taught have time and time again guided me.</p>

<h2 id="the-technologising-of-the-word">The Technologising of the Word</h2>

<p>Another of my favourite course modules was <em>Religion And Media</em>. My first thought was that this was going to be about <em>mass</em> media, like how religion is represented on TV and the internet. But “media” here was more in the sense of the plural of “medium” of communication. We explored the effects that the four great paradigm shifts in media technology had on religion and culture; orality, literacy, print and digitisation.</p>

<h3 id="orality">Orality</h3>

<p>It’s funny thinking of speaking as a technology. Did we invent it? It feels more like it was given to us by evolution. But there are nuances to the medium of speech that make its influence more concrete. In Walter Ong’s <em>Orality and Literacy: The Technologizing of the Word</em><sup id="fnref:ong" role="doc-noteref"><a href="#fn:ong" class="footnote" rel="footnote">3</a></sup> he considers the power of narrative, rhyme and song. These are clearly our innovations, those ancient and perennially celebrated traditions of poetry and music for example. For millennia these media have been the dominant technologies recording and transmitting human knowledge across time and space. Carefully created stories, with engaging characters, stimulating adventures and performed with pleasing rhymes and melodies, are more easily remembered and more readily heard. Think of those poetic epics like The Odyssey or Ramayana.</p>

<p>Seen from the enormity of today’s digital revolution it’s hard to imagine how linguistic tools as seemingly trivial as song and story precipitated changes in the fundamental structure of human culture. But we can reasonably form an argument that this is where religion’s DNA emerges. Oral technology leads to codification. By preserving a particular representation of the world and events, it inevitably also favours particular views, opinions and indeed beliefs. We can even begin to imagine how it might contribute to social hierarchies: memorisation takes time, time that can’t be used for say manual labour. If the keepers of the stories become sources of truth then they are afforded certain powers over others. This is of course not inevitable but it does sketch out the potential ramifications of what at first seem like inconsequential technologies.</p>

<h3 id="literacy">Literacy</h3>

<p>It’s easier to see the relevance of writing on religion. Today we have what are considered to be 6 World Religions, religions that have spread across diverse geographies and cultures; Christianity, Islam, Judaism, Hinduism, Sikhism and Buddhism. These are all also religions for whom literature plays a central role. The <em>written</em> word is even more ossifying in its codifications and so even more pronounced in its effects on religion and culture.</p>

<h3 id="print">Print</h3>

<p>Print continues the trajectory, but here it’s interesting to consider how media technology can also promote the opposite of codification, like secularisation for example. Clay Shirky argues that it was the printing press that led to the creation of the nation-state in Europe during the 17<sup>th</sup> century<sup id="fnref:shirky" role="doc-noteref"><a href="#fn:shirky" class="footnote" rel="footnote">4</a></sup>. Until then the ultimate power in European states lay with the Church. A large part of that power was mediated via Latin-speaking priests who were the single source of truth for interpreting labouriously hand-written and thus conveniently rare Latin bibles. The printing press made it economically viable to give ordinary people access to canonical Christian texts in their local vernacular languages. This undermined the power of the Church, allowing other forms of political organisation to flourish.</p>

<h3 id="digitisation">Digitisation</h3>

<p>Although digitisation, or let’s just say the internet for convenience’s sake, has obviously had a massive impact on humanity, I’d like to temper its commonly perceived impact. I suspect most of us, and especially myself as a software engineer, are problematically <em>inside</em> the convulsions of this paradigm shift. It’s hard to have an outsider’s perspective. I am after all writing this on, and you are likely reading it from, a digital device. As Marshall McLuhan said, “The medium is the message”<sup id="fnref:mcluhan" role="doc-noteref"><a href="#fn:mcluhan" class="footnote" rel="footnote">5</a></sup>,</p>

<blockquote>
  <p>This is merely to say that the personal and social consequences of any medium – that is, of any extension of ourselves – results from the new scale that is introduced into our affairs by each extension of ourselves, or by any new technology.</p>
</blockquote>

<p>Many of the richest companies in the world are digital; Amazon, Google, Microsoft, Apple, etc. Whilst the remaining non-digital companies are themselves fundamentally dependant on digital products and services. The amount of power underlying digital mediums of communication inevitably shapes the messages it carries.</p>

<p>A quintessential example of digital insiderism is belief in the technological singularity, as espoused by writers like Ray Kurzweil<sup id="fnref:kurzweil" role="doc-noteref"><a href="#fn:kurzweil" class="footnote" rel="footnote">6</a></sup>. The idea goes that, if the rate of technological advancement is itself increasing, then it stands to mathematical reason that at some point in the near future the rate of change will tend to infinity. A concrete pathway for this could be imagined via self-improving AIs. If LLMs are increasingly capable of writing software, and indeed the very software that creates themselves, as long as they have the necessary computing power, then in theory their evolution should become exponential. Which leads to a super-intelligence beyond human comprehension.</p>

<p>I don’t think it takes a Religious Studies graduate to notice the religious themes here. The singularity rhymes with monotheism, the traditional staple of Abrahamic religions; Judaism, Christianity and Islam. The predictions of an imminent upheaval sound like prophecy, a useful tool of charismatic leaders to attract and maintain followers without having to actually provide concrete evidence. And super-intelligence is another way of talking about omniscience.</p>

<p>I of course don’t know what the future holds, but I am at least sceptical of this sort of religious rhetoric. I would instead like to offer another perspective that I came across during my studies: the idea that rhetoric surrounding questions of ultimate concern is cyclical.</p>

<h2 id="the-sect-church-sect-cycle-theory">The Sect-Church-Sect Cycle Theory</h2>

<p>The roots of Sect-Church-Sect Cycle Theory can be traced back to well known sociologist Max Weber’s ideas about Church-Sect Theory in the 1900s. But I will outline the theory as it was later developed by the American sociologists Stark and Bainbridge in the 1980s<sup id="fnref:church-sect-theory" role="doc-noteref"><a href="#fn:church-sect-theory" class="footnote" rel="footnote">7</a></sup>. Broadly speaking, a sect is an offshoot of a larger organisation like an established church for example. Classic examples in Christianity would be; Mormons, Baptists, Quakers, etc. The cyclic version of the church-sect split argues that most religions are in fact continuously moving back and forth along a church-sect <em>spectrum</em>. So for example, in many ways it can be said that Christianity itself started out as a sect within Judaism. And now Christianity has many sects, which themselves have become churches in their own rights. Consider how Protestantism broke off from Catholicism in the 16<sup>th</sup> century, and Evangelical Christianity split off from Protestantism in the 18<sup>th</sup> century, which now has literal <a href="https://en.wikipedia.org/wiki/Megachurch">megachurches</a>!</p>

<p>The proposed mechanism powering this cycle is the tension between the established religion and the surrounding society. Let’s see how this plays out by returning to the era leading up to the printing press in Europe. For centuries, Christianity, or more correctly, Catholicism, was an all-pervasive, monopolistic, institution inseparable from the very fabric of society<sup id="fnref:catholic-history" role="doc-noteref"><a href="#fn:catholic-history" class="footnote" rel="footnote">8</a></sup>. It was the largest European landowner and levied a 10% tax from all members of society under its jurisdiction. The way to salvation was to receive The Seven Sacraments (Baptism, Confession, Eucharist, etc) which conveniently could only be performed by ordained priests. If priests, or indeed any members of the clergy broke the law, they weren’t tried in common courts, but ecclesiastical courts. This was the Church, with a capital C, and it essentially held ultimate power, even over royalty.</p>

<p>But it would be unfair to imply that Catholicism achieved its prominence purely by coercive and malicious means. It also promoted and financed what we’d now call social welfare: charity, supporting the poor and the afflicted, and creating hospitals. It literally invented the university, such as those in Bologna, Paris and Oxford during the 11<sup>th</sup> century. For those under the Church’s sphere of influence, Catholicism was a politically stabilising force: it essentially replaced much of the civilising infrastructure of the fallen Roman Empire.</p>

<p>The tensions between the established religion and surrounding society are nuanced. It’s not a matter of simply replacing the church wholesale, but rather of reformulating. Ironically sects often claim they are more true to the original meaning of the church than the church itself. This is exactly how Martin Luther, the seminal figure of the Protestant Reformation, began his protest. He was a priest and professor of moral theology at the University of Wittenberg, Germany. In 1517, he published <em>The Ninety-five Theses</em> or <em>Disputation on the Power and Effıcacy of Indulgences</em>, which were inspired by a scandal where clergy were selling certificates that would supposedly reduce punishments received on the journey to Heaven. Unsurprisingly, he was excommunicated.</p>

<p>But thanks to inventors like Johannes Gutenberg, Luther’s ideas quickly spread across Europe in the pages of printed books. Small unornate churches started to be built that didn’t perform Latin Eucharists, but rather gave vernacular sermons. Christianity was given a new life that was direct, simple and accessible. And of course, soon enough, so successful were these albeit humble beginnings that protestantism came to grow its own powers and thus its own abuses of those powers. In England, King Henry VIII made the protestant sect, Anglicanism, the state religion, only for it a generation later to become another Church mandating compulsory attendance to its services. This then led to the formation of new sects like the Puritans and Pilgrims, which due to their subsequent persecution, fled to North America to be part of its earliest colonies. And so the Sect-Church-Sect Cycle continued.</p>

<p>Despite its church/sect naming, this cycle is considered to be a process that occurs in all religions and ideologies. Its extremes don’t need to be called church and sect, another vocabulary could be traditionalists and trendsetters, or conservatives and radicals. So let’s look at a non-Christian example. Buddhism itself began as an offshoot of early Hinduism, it spread to China, became a powerful institution much like Catholicism and, similar to the birth of Protestantism, inspired a radical reinvention now most commonly known as Zen. A traditional Zen founding verse says this<sup id="fnref:bodhidharma" role="doc-noteref"><a href="#fn:bodhidharma" class="footnote" rel="footnote">9</a></sup>:</p>

<blockquote>
  <p>A special transmission outside the scriptures,<br />
Not depending on words and letters;<br />
Directly pointing to the mind<br />
Seeing into one’s true nature and attaining Buddhahood.</p>
</blockquote>

<p>Whereas Protestantism translated esoteric Latin into common parlance, Zen skips out language altogether. It’s as if “words and letters” are the primordial “church”. That any time we commit to codifying responses to questions of ultimate concern we essentially create a mini church that must at some point cede to a “sect” that, should we choose to accept it, updates our view of the world with fresh insight. Now of course it’s ironic that Zen has so many words and letters arguing against words and letters. But that’s why I think the Sect-Church-Sect Cycle Theory is so useful. Whilst there is no one religion nor statement that can eternally enshrine the nature of reality, we must nevertheless risk the treacherous currents of assertion and rebuttal in order to keep alive the responses to the most pressing questions of our time.</p>

<h2 id="programming-as-sect-building">Programming As Sect Building</h2>

<p>In Peter Naur’s 1985 software engineering paper, <em>Programming As Theory Building</em><sup id="fnref:naur" role="doc-noteref"><a href="#fn:naur" class="footnote" rel="footnote">10</a></sup>, he argues that the real location of a computer program is in the mind of the programmer.</p>

<blockquote>
  <p>On the Theory Building View of programming the theory built by the programmers has primacy over such other products as program texts, user documentation, and additional documentation such as specifications.</p>
</blockquote>

<p>Naur is highlighting a distinct aspect of software: unlike say mathematical proofs or physical laws, computer programs are not static statements, they change as new requirements arise and bugs are found. The text of a program is merely one of many concrete, snapshot articulations of the conceptual understanding of the problem possessed by the programmer.</p>

<p>Program text, as a commitment to a single, static response to a problem, suffers many of the same issues as a church. Without modifications, it inevitably becomes less and less capable of effectively responding to the questions it was originally designed to answer. But new sect-like versions of a program aren’t guaranteed to be effective either. It’s only after feedback from encountering the real world that new theories can be either validated or repudiated. Therefore, healthy software, like sects and churches, is in constant tension between the two poles of a proven but increasingly irrelevant status quo and an unproven but possibly more relevant update.</p>

<p>Programs are of course rarely written by just a single person. They may be written by a whole team, sometimes involving hundreds or perhaps thousands of members. And even when a single person does work on their own, they’re almost always doing so with the help of existing dependencies. By “dependencies” I mean software whose primary goal is to serve as a specialised component within a larger project, like <code class="language-plaintext highlighter-rouge">openssl</code> for example, that handles encrypting and decrypting data for sending over the internet. In reality most software is not merely the instantiation of a single programmer’s theory, but a complex interplay of many. Programmer’s inevitably need to communicate and organise.</p>

<p>The computer scientist Melvin E. Conway, wrote in his 1967 paper, <em>How Do Committees Invent?</em><sup id="fnref:conway" role="doc-noteref"><a href="#fn:conway" class="footnote" rel="footnote">11</a></sup>:</p>

<blockquote>
  <p>[O]rganizations which design systems […] are constrained to produce designs which are copies of the communication structures of these organizations.</p>
</blockquote>

<p>Within the field of Software Engineering this has come to be known as Conway’s Law. If true software resides in the minds of programmers, and those programmers must communicate amongst themselves in order to create coherent program text, then program text will inevitably reflect the structure of the communication. A classic online example of this is the common asymmetry between the ease of subscribing to a service and the difficulty of unsubscribing. Think of those bright and obvious sign up boxes, perhaps with a supposedly limited time offer. And then think of canceling that same subscription, which is so often a dreary chore of patiently peering through reams of obscure menu items. We don’t even need to posit malicious intent here: an organisation will naturally prioritise internal technical communications about increasing revenue, therefore the implementation of features contributing to that goal will be better developed than those that contribute to losing revenue.</p>

<p>But ultimately Conway’s Law has far greater repercussions: it is essentially a formulation of McLuhan’s, “The medium is the message”. Namely that the structures through which we communicate are more pertinent than any specific message, or in our current case, any specific program text. This doesn’t just have negative implications though. In Eric S. Raymond’s 1999 book, <em>The Cathedral and the Bazaar</em><sup id="fnref:raymond" role="doc-noteref"><a href="#fn:raymond" class="footnote" rel="footnote">12</a></sup>, he contrasts two opposing approaches to creating and maintaining software. The first can be understood through the metaphor of a cathedral: there is a clear plan from an overseeing body that delegates specific tasks to managers and teams. I think this is how we most often imagine the endeavour of software engineering, that it is so esoteric and complex that it somehow becomes monumental. However, the metaphor of the bazaar articulates something quite distinct: an ad hoc, seemingly random arrangement of diverse buyers, sellers, locals and foreigners, exchanging whatever goods and consumables happen to be available on the day. It may be surprising that any software of note could ever be made like this, but in actual fact it is not only foundational to the modern software landscape, it is responsible for perhaps the most successful piece of software yet created: Linux.</p>

<p>Linux is a general purpose Operating System (OS) like Microsoft Windows or macOS. It began in 1991 as the personal project of the Finnish Computer Science student Linus Torvalds. He publicly released the program text, which is more commonly known as, the source code, and welcomed contributions to it from everybody. It was not his explicit intention to model development in the form of Raymond’s bazaar, but nevertheless Linux has since enjoyed an ever growing international community of passionate and voluntary contributors. It is used in many contexts, most notably on Android phones, of which <a href="https://www.demandsage.com/android-statistics/">there are nearly 4 billion</a>. Due to its liberal public licensing it can be legally copied, or colloquially, “forked”. Here is a family tree of some popular Linux forks:</p>

<p><img src="images/linux-family-tree.webp#wide" />
<small class="caption">
Credit to <a href="https://www.reddit.com/r/linux/comments/1rme0p3/i_made_a_map_family_tree_of_all_the_popular/">@codywohlers on reddit.com</a>
</small></p>

<p>Even though there is a “GNU/Linux” (GNU is the accompanying OS applications) at the base of the family tree, it doesn’t actually exist anymore. In the Buddhist sense Linux is “empty”, as in you can’t point to any one particular existing fork and say that that is the true Linux. It is free to travel along a “sect-church” spectrum at will and with little ceremony. It is as spontaneous and diverse as a bazaar.</p>

<p>The marvel of Linux isn’t so much about Linus Torvalds, although he does play a huge part. It’s more so about open-source software (OSS) in general. OSS isn’t an invention, it’s merely what happens when you choose, for whatever reason, to share your source code. In a sense it is a bedrock case of Conway’s Law: the communication structures employed by OSS are nothing short of all the communication structures employed by humans in general. <a href="https://www.linuxfoundation.org/blog/blog/a-summary-of-census-ii-open-source-software-application-libraries-the-world-depends-on">It is estimated that 70-90% of <em>all</em> software is open-source</a>. There is something poetic about OSS. Nobody invented poetry, there are just poets that have popularised it. We are all free to write poetry, whether it’s for our eyes only, a close circle of friends or an internationally best selling anthology. Poetry thrives where ever there are Naur-like minds that grapple with the challenge of finding words for the wordless. For as long as we are free to communicate with each other, there will be poetry and there will be software.</p>

<h2 id="the-digital-church">The Digital Church</h2>

<p>As a software engineer it seems reasonable to ask: if OSS is so successful, shouldn’t all software follow the bazaar model? But as a graduate of Religious Studies I have a different question: in a world dominated by software, what role does a software engineer play? Dear reader, I am inside the church.</p>

<p>Sing in me, Muse, and through me tell the story<sup id="fnref:fitzegelard" role="doc-noteref"><a href="#fn:fitzegelard" class="footnote" rel="footnote">13</a></sup>.</p>

<p>Hear my gospel. <br />
This prose my technology. <br />
This narrative my craft. <br />
OSS is the way, the truth and the light. <br />
No one comes to success except through it.</p>

<p>Are you convinced? Or is the rhetoric too strong now?</p>

<p>I hope that, even as I confess to exaggerating for dramatic effect, your eyebrows are raised. To claim a relevant voice on digital matters in this day and age should not be taken lightly. It’s akin to claiming some priest-like exclusive access to the sacred Latin Bible of old. If I can harness, or even just appear to harness, a fraction of the power currently surging through the digital world, I could wield it for substantial personal gain. It doesn’t even matter what position I take, just to claim some relevancy is enough.</p>

<p>Up until 2018, Google’s official motto was “Don’t be evil”. Of course now that the motto has been removed doesn’t therefore make them evil, but it does highlight knowledge of a common narrative in Big Tech. To intend not to be evil implies that being evil is a common trait of those with great power. It should go without saying that <a href="https://en.wikipedia.org/wiki/Criticism_of_Google">Google is constantly under judgement from the highest courts of the world</a>. It’s just par for the Big Tech course; not paying taxes, monopolisation, political polarisation, promotion of disinformation, exploiting addictive behaviours, copyright infringements, and so on<sup id="fnref:google" role="doc-noteref"><a href="#fn:google" class="footnote" rel="footnote">14</a></sup>. But of course, as is common when such immense powers are involved, Big Tech’s legal repercussions look suspiciously like rulings of ecclesiastical courts giving special treatment to the faithful.</p>

<p>It is even argued by some, that Big Tech can be associated with its own unique “secular religion”, TESCREAL<sup id="fnref:tescreal" role="doc-noteref"><a href="#fn:tescreal" class="footnote" rel="footnote">15</a></sup>. The name is an acronym coined by computer scientist Timnit Gebru and philosopher Émile P. Torres, that refers to the “interconnected and overlapping” ideologies of; Transhumanism, Extropianism, Singularitarianism, Cosmism, Rationalism, Effective Altruism, and Longtermism. To quote Torres<sup id="fnref:torres" role="doc-noteref"><a href="#fn:torres" class="footnote" rel="footnote">16</a></sup>:</p>

<blockquote>
  <p>At the heart of TESCREALism is a “techno-utopian” vision of the future. It anticipates a time when advanced technologies enable humanity to accomplish things like: producing radical abundance, reengineering ourselves, becoming immortal, colonizing the universe and creating a sprawling “post-human” civilization among the stars full of trillions and trillions of people. The most straightforward way to realize this utopia is by building superintelligent AGI [Artificial General Intelligence].</p>
</blockquote>

<p>Adherents of such a worldview are commonly found in Big Tech, like: the father of Singularitarianism, Ray Kurzweil; CEO of Google, Larry Page; the richest man in the world, Elon Musk; and CEO of OpenAI, Sam Altman.</p>

<p>Again, I don’t think it’s difficult to see the echoes of traditional religious belief here. Particularly, TESCREAL seems to have a conception of Heaven: a utopia not of this world, where we will not want for anything and where death has been banished. There’s even belief that you can buy your way there: companies are offering to freeze your brain or body, so that when the technology arrives, you can be resurrected. Sam Altman is known to have payed for such a service from Nectome<sup id="fnref:nectome" role="doc-noteref"><a href="#fn:nectome" class="footnote" rel="footnote">17</a></sup>, which bears a curious resemblance to the certificates sold by Catholic priests that inspired Luther’s reformation.</p>

<p>What is a software engineer to think about all this? OSS may have its own anti-Big Tech ideologies, but they’re not immune from falling into the trap of churches. For example, the most famous OSS license, the GPL, was created by Richard Stallman in 1984 as protest against a corporation “hoarding” changes to his own publicly available source code<sup id="fnref:stallman" role="doc-noteref"><a href="#fn:stallman" class="footnote" rel="footnote">18</a></sup>. Yet today there are plenty of OSS projects that have gone on to become multi-billion dollar corporations in their own rights, like; RedHat, Docker and Hashicorp. It’s just the Sect-Church-Sect Cycle all over again.</p>

<p>What is important to understand is that a software engineer never <em>just</em> writes code: they are inextricably implicated in a Digital Church of global and historic influence. Whether consciously or not, every technical decision they make contributes to a confluence of power that effects nearly everybody on this planet.</p>

<h2 id="a-new-programmer-team">A New Programmer Team</h2>

<p>A program isn’t just for computers.</p>

<p>It can also be for politics: a set of rules and aspirations that direct the running of a country. Or for religion: a set of beliefs and practices for leading a fulfilling life. Even for software engineering itself: the theory and discipline of effectively using computers. Programs in and of themselves are not problematic <em>per se</em>. They only become an issue when, as Naur argues, we elevate the program text above the living theory held by the programmers. The presence of program text does not imply the presence of a functional program, quoting Naur again:</p>

<blockquote>
  <p>The death of a program happens when the programmer team possessing its theory is dissolved. A dead program may continue to be used for execution in a computer and to produce useful results. The actual state of death becomes visible when demands for modifications of the program cannot be intelligently
answered. Revival of a program is the rebuilding of its theory by a new programmer team.</p>
</blockquote>

<p>In politics, “demands for modifications”, could be, for example, the act of voting. In religion and ideology though, it doesn’t necessarily have to be the dramatic process of sect formation, it can simply be the way in which a worldview responds to unique circumstances. I find this often happens to me when I visit new countries. For example, as a European I’m used to waiting for traffic lights to signal when it’s safe to cross the road. But in South Asia I have to modify my habits by assertively yet carefully making a path across the road myself.</p>

<p>There is no one program text that fits all possible situations.</p>

<p><em>To drink the Kool-Aid</em> is a term in common parlance we use to describe the blind acceptance of a possibly problematic belief. It originates from the tragic deaths of over 900 members of the People’s Temple movement in 1978. Cyanide laced Kool-Aid was drunk both voluntarily and by coercion as a form of “revolutionary suicide”<sup id="fnref:peoples-temple" role="doc-noteref"><a href="#fn:peoples-temple" class="footnote" rel="footnote">19</a></sup>. Nowadays we don’t associate literal death with the term, but we do assume a worrying absence of critical thinking. We can lose friends, family and colleagues to metaphorical Kool-Aid, not mortally but emotionally and cognitively. Religion, Big Tech, money, OSS sectarianism: the bazaar of potential Kool-Aids is bustling.</p>

<p>Dissolving a programming team doesn’t just happen when a software company goes bankrupt, or the last member of a religion passes away. It also happens when the humans involved succumb to Kool-Aid, when they can no longer intelligently answer for their theories and beliefs. Demands for modifications will never end, they are part and parcel of engaging with the living world, whether you’re a software engineer, a voter, or a pedestrian. Every word we utter and every character we type, whether it’s prosaic or programmatic, is an opportunity to reflect, to build new theory:</p>

<p>A special transmission outside the program text,<br />
Not depending on words and letters;<br />
Directly pointing to the mind<br />
Seeing into the problem’s true nature and releasing a new version.</p>

<center>🙇</center>

<h3 id="footnotes">Footnotes</h3>

<div class="footnotes" role="doc-endnotes">
  <ol>
    <li id="fn:tillich" role="doc-endnote">
      <p>Paul Tillich, <em>Dynamics of Faith</em>, 1957. <a href="#fnref:tillich" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:ninian" role="doc-endnote">
      <p>Ninian Smart, <em>Concept and Empathy: Essays in the Study of Religion</em>, 1986. <a href="#fnref:ninian" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:ong" role="doc-endnote">
      <p>Walter J. Ong, <em>Orality and Literacy: The Technologizing of the Word</em>, 1982. <a href="#fnref:ong" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:shirky" role="doc-endnote">
      <p>Clay Shirky, <em>Here Comes Everybody: The Power of Organizing Without Organizations</em>, 2008. <a href="#fnref:shirky" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:mcluhan" role="doc-endnote">
      <p>Marshall McLuhan, <em>Understanding Media: The Extensions of Man</em>, 1964 <a href="#fnref:mcluhan" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:kurzweil" role="doc-endnote">
      <p>Ray Kurzweil, <em>The Singularity Is Near: When Humans Transcend Biology</em>, 2005 <a href="#fnref:kurzweil" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:church-sect-theory" role="doc-endnote">
      <p>Rodney Stark and William Sims Bainbridge, <em>The Future of Religion: Secularization, Revival, and Cult Formation</em>, 1985. I refreshed myself on the history of Church-Sect Theory with this article: <a href="https://hirr.hartfordinternational.edu/articles/4226/">hirr.hartfordinternational.edu/articles/4226</a>. <a href="#fnref:church-sect-theory" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:catholic-history" role="doc-endnote">
      <p>I’m taking most of my references for this section from <a href="https://en.wikipedia.org/wiki/Catholic_Church">en.wikipedia.org/wiki/Catholic_Church</a> <a href="#fnref:catholic-history" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:bodhidharma" role="doc-endnote">
      <p>Nobody actually knows where this verse comes from, but it’s commonly attributed to Bodhidharma, a monk that first brought Buddhism from India to China. <a href="#fnref:bodhidharma" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:naur" role="doc-endnote">
      <p><a href="https://pablorauzy.fr/dev/naur1985programming.pdf">pablorauzy.fr/dev/naur1985programming.pdf</a> <a href="#fnref:naur" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:conway" role="doc-endnote">
      <p><a href="https://www.melconway.com/Home/pdf/committees.pdf">www.melconway.com/Home/pdf/committees.pdf</a> <a href="#fnref:conway" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:raymond" role="doc-endnote">
      <p>Eric S. Raymond, <em>The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary</em>, 1999. <a href="#fnref:raymond" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:fitzegelard" role="doc-endnote">
      <p>This is the opening line to Robert Fitzegelard’s translation of Homer’s, <em>The Odyssey</em>, 1961. <a href="#fnref:fitzegelard" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:google" role="doc-endnote">
      <p><a href="https://en.wikipedia.org/wiki/Criticism_of_Google">en.wikipedia.org/wiki/Criticism_of_Google</a> <a href="#fnref:google" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:tescreal" role="doc-endnote">
      <p><a href="https://en.wikipedia.org/wiki/TESCREAL">en.wikipedia.org/wiki/TESCREAL</a> <a href="#fnref:tescreal" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:torres" role="doc-endnote">
      <p><a href="https://www.truthdig.com/articles/the-acronym-behind-our-wildest-ai-dreams-and-nightmares/">www.truthdig.com/articles/the-acronym-behind-our-wildest-ai-dreams-and-nightmares/</a> <a href="#fnref:torres" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:nectome" role="doc-endnote">
      <p><a href="https://www.technologyreview.com/2018/03/13/144721/a-startup-is-pitching-a-mind-uploading-service-that-is-100-percent-fatal/">www.technologyreview.com/2018/03/13/144721/a-startup-is-pitching-a-mind-uploading-service-that-is-100-percent-fatal/</a> <a href="#fnref:nectome" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:stallman" role="doc-endnote">
      <p><a href="https://en.wikipedia.org/wiki/Copyleft">en.wikipedia.org/wiki/Copyleft</a> <a href="#fnref:stallman" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
    <li id="fn:peoples-temple" role="doc-endnote">
      <p><a href="https://en.wikipedia.org/wiki/Drinking_the_Kool-Aid">en.wikipedia.org/wiki/Drinking_the_Kool-Aid</a> <a href="#fnref:peoples-temple" class="reversefootnote" role="doc-backlink">&#8617;</a></p>
    </li>
  </ol>
</div>]]></content><author><name></name></author><category term="Musings" /><category term="Computing" /><summary type="html"><![CDATA[A video recording of this post is also available on Youtube.]]></summary></entry><entry><title type="html">The Longest Line Of Sight</title><link href="https://tombh.co.uk/longest-line-of-sight" rel="alternate" type="text/html" title="The Longest Line Of Sight" /><published>2026-02-09T00:00:00+00:00</published><updated>2026-02-09T00:00:00+00:00</updated><id>https://tombh.co.uk/longest-line-of-sight</id><content type="html" xml:base="https://tombh.co.uk/longest-line-of-sight"><![CDATA[<p>The place on Earth from which you can, in theory<a href="#footnotes" class="footnote">1</a>, see further than any other is between
<a href="https://map.alltheviews.world/longest/78.76539611816406-36.31400680541992">an unnamed Himalayan ridge near the Indian-Chinese border and Pik Dankova in Kyrgyzstan</a>. It is just over 530km.</p>

<p><img src="images/longest_line.webp#wide" /></p>

<p>Up until now this view has only been speculated<a href="#footnotes" class="footnote">2</a> to be the longest. But we can now empirically prove it. With the help of my good friend <a href="https://ryan.berge.rs/">Ryan Berger</a> we have literally calculated <em>every single line of sight on Earth</em>. This involved in the order of 10<span class="footnote">15</span>, or a million billion, calculations. Which outputs around 200GB of individual longest lines. We present our findings in an interactive map at <a href="https://map.alltheviews.world">map.alltheviews.world</a>.</p>

<h2 id="8-years-in-the-making">8 Years In The Making</h2>

<p>This journey started for me <a href="https://github.com/AllTheLines/CacheTVS/commit/d3a46baac7963b5ad1683e1b7f48e5768a30f38d">8 years ago</a> when I was staying on the island of Java in Indonesia:</p>

<p><img src="images/merapi.webp#wide" /></p>

<p>There are huge volcanoes everywhere there, and I wanted to know where the best place would be to see as many of them as I could. I was working for <a href="https://www.hotosm.org">The Humanitarian OpenStreetMap Team</a> at the time, so had gained some Geographic Information Systems (GIS) knowledge. I started trying to implement an algorithm from a paper entitled <a href="https://ieeexplore.ieee.org/document/6837455">Efficient Data Structure and Highly Scalable Algorithm for Total-Viewshed Computation</a>. The basic idea was that you could take advantage of the various repeated calculations when finding <em>all</em> the views, rather than just one view, for a given area. It was the hardest programming I’d ever done. But I managed to implement it from scratch and even made some significant improvements to the algorithm.</p>

<p>With my humble laptop of the time it took a good day of fan-spinning to calculate even just a section of the area I was staying in. And that section wouldn’t even contain the higher peaks of the volcanoes I was interested in. That’s because higher points can usually see further and so require checking more points. I realised that the scale of the problem was such that if I were to implement the code and infrastructure to cover the island of Java, then it would actually only be a matter of twiddling settings to calculate the entire planet.</p>

<p>The only issue was that my estimates for a global run were putting either the compute time at years or the compute costs at hundreds of thousands of dollars. So naturally the project fell to the wayside.</p>

<h2 id="the-flux-capacitor">The Flux Capacitor</h2>

<p>Thanks to some savings I was lucky enough to be able to spend all of last year working on personal projects. I mostly wanted to deepen my Rust skills. For the first 6 months I developed my terminal eye-candy project <a href="https://tattoy.sh">Tattoy</a>. Then, more as an afterthought, I just wondered what it would be like to take my Total Viewshed C++ algorithm and Rewrite It In Rust™. I mentioned this on Lobsters’ weekly <a href="https://lobste.rs/s/2ftfd1/what_are_you_doing_this_week#c_uiub1p">What Are You Doing This Week</a> thread and my good friend Ryan noticed and started asking me questions. I told him where I’d gotten stuck all those years ago and he confidently assured me that,</p>

<blockquote>
  <p>“Computers are fast, Tom.”</p>
</blockquote>

<p>He has a lot more experience with high performance computing than me, so when he started seriously talking about what it would take to compute the whole world, I believed him.</p>

<p>I had always considered the fundamental problem of the algorithm to be brute CPU cycles. But Ryan naturally intuited that it was more a problem of memory throughput and shape. The algorithm needed to be designed in such a way that the absolute minimum of data was being passed around, and that when it reached the CPU it was aligned so the registers could access it with the least amount of ceremony.</p>

<p>We spent hours on video calls hammering out the details. This diagram became our <a href="https://backtothefuture.fandom.com/wiki/Flux_capacitor">Flux Capacitor</a>:</p>

<p><img src="images/alltheviews_logo.webp#wide" /></p>

<p><a href="https://ryan.berge.rs/posts/total-viewshed-algorithm/">Ryan goes into all the details on his blog</a>, so here I’ll just give a brief overview.</p>

<p>All the coloured foreground squares represent grids of elevation data. Each point in the grid is equally spaced, typically by 100m. The red square is the total extent of the elevation data, but only the green square represents where we can do full line of sight calculations. Consider the upper-left most point in the red square, we can’t calculate what it sees above or to its left simply because the elevation data is not there. Whereas for the upper-left corner of the green square we have all the data needed for looking in all directions.</p>

<p>So staying with the upper-left most point in the green square, to calculate all its lines of sight we must first draw 360 lines eminating from that point. For each of those lines we then find all the other elevation points that the line intersects. With these intersecting points we can then shine a trigonomic “light” and see how far it gets. The light can terminate in 2 ways. Firstly because it hits a mountain or similar, which is either close enough or big enough, that nothing further on the horizon rises above it. Secondly, the light can terminate simply because the Earth is round — at an easily calculated point it will just fly off into space. This whole process is repeated for every point inside the green square.</p>

<p>Here is a simplified diagram of the first 4 points:</p>

<p><img src="images/dem_points.webp#wide" /></p>

<p>Now, let me show you some of the magic of our approach. What if instead of drawing 360 lines for each point, we instead just rotated the entire grid of data 360 times? To get an intuition for why this is helpful, consider the central horizontal line in the above diagram. Notice that on its left side it perfectly overlaps all the other points’ lines. It turns out that in fact all points can share lines at all angles. And not only does this reduce the amount of trigonometry that needs to be done, but more importantly it dramatically improves memory performance. Even though RAM is <em>Random</em> Access Memory, it is much happier if you read from it sequentially. And rotating the elevation grid ensures that that always happens.</p>

<p>But it gets better! You don’t even have to rotate the entire grid, you only need to rotate the central rectangle of the big white square in the Flux Capacitor diagram above. That’s because the rest of the white square is outside the green square, where, as I mentioned, there isn’t enough data to compute full lines of sight. We came to affectionately call this central rectangle the “Chocolate Bar”.</p>

<p>Eagle-eyed readers may notice that the Chocolate Bar doesn’t actually completely cover the all-important green square. In our video calls we’d rotate the green square with the mouse and it would appear as if the green square’s corners were like dolphins, constantly jumping out of and back into the Chocolate Bar. This led us to realise that the fundamental extent of the grid wasn’t actually a square, but a circle. You can begin to see this in the empty circular space caused by the many orange squares.</p>

<p>There’s even more geeky details, so do checkout Ryan’s post. We’re very proud of it. It’s a contribution to the state of the art and so plan on writing a paper. We’ve made all the code publicly available at: <a href="https://github.com/AllTheLines/CacheTVS">github.com/AllTheLines/CacheTVS</a></p>

<h2 id="the-pipeline">The Pipeline</h2>

<p>With the very real possibility that we had a tractable approach to calculating every single view on the planet, I set about designing a processing pipeline to handle the vast amount of data and compute we were going to need.</p>

<h3 id="nasa">NASA</h3>

<p>The raw data that makes this entire endeavour possible comes from NASA’s Shuttle Radar Topography Mission (SRTM). It is 70GB of raster data. Each point is roughly within the order of 100m apart and represents a single elevation measurement. However, because of the shape of the globe, the Space Shuttle can’t easily take measurements that are precisely the same metric distances from each other. Which is a showstopper for our algorithm, because why waste memory on individual distances if you can know that every point is already guaranteed to be 100m from its neighbour?</p>

<p>But as I would come to discover time and time again, one does not merely reproject distances on a geodesic surface. It is a minefield of nuance and tradeoffs. The gory details could easily go to make up a whole post on their own, but for now it’s enough to know that the approach I ended up with was a locally-anchored tile-specific azimuthal equidistant projection, or AEQD for short. I’ll define a tile after this, but the basic idea is that by giving each one its own custom projection system we reduce to a minimum the accumulation of errors in both distances and relative angular positions.</p>

<h3 id="tile-packing-the-world">Tile-Packing The World</h3>

<p>One of the first, and hopefully most obvious, optimisations that can be made to the audacious task of computing literally every single combination of mutually visible points on Earth, is just to ignore pairs of points that are say, in the extreme case, on opposite sides of the planet. Of course we can do even better, but how do we safely define a realistic cutoff point?</p>

<p>The theoretical maximum visibility for any given point is actually reliably defined by the height of the point and the radius of the globe. When you’re standing on a beach, your horizon is about 5km away. And indeed, if there were another beach on the other side of the horizon, that just happened to be the same distance from your shared horizon, then it would be possible to glimpse the head of another observer looking back at you. Therefore we can say, without doing any expensive visibility calculations, that the worst case size of data needed for any point at sea level is within a circular region of radius approximately 10km<a href="#footnotes" class="footnote">3</a>.</p>

<p>This is the basic definition of a <em>tile</em>.</p>

<p>But we don’t want to make a tile for every single point. We want to aggregate a region of points such that they all fall within the limits of the point with the theoretical longest line of sight. Again, the gory details are enough for <a href="https://tombh.co.uk/packing-world-lines-of-sight">another post, which I did in fact already write a few months ago</a>.</p>

<p>To cut a long story short, this is the result:</p>

<p><img src="images/tile-packing-red.webp#wide" /></p>

<h3 id="atlas-the-automater">Atlas: The Automater</h3>

<p>With both an algorithm and processed data ready at hand, it’s time to run all the compute. The packer currently creates 2489 tiles of varying sizes that cover all the landmass on Earth. Each tile requires its own beefy machine and can take anything from minutes to hours to complete. We want to be able to process tiles in parallel on multiple machines and for tile failures to not bring down the whole run.</p>

<p>Enter <a href="https://github.com/AllTheLines/viewview?tab=readme-ov-file#atlas">Atlas</a>, a classic worker queue designed specifically for our pipeline. It’s backed by SQLite and uses the excellent Rust <a href="https://github.com/apalis-dev">Apalis</a> background jobs project.</p>

<h3 id="visualising-the-data">Visualising The Data</h3>

<p>Let’s talk about these pretty heatmaps that I’ve already introduced but not explained yet. Here are some islands from South Korea:</p>

<p><img src="images/south-korea-tvs.webp#wide" /></p>

<p>Notice how they seem to be casting shadows? What is the “light” source?</p>

<p>Our algorithm outputs 2 pieces of data:</p>

<p>Firstly it outputs the longest line of sight found for every point. This is just a distance and an angle, which is enough to reconstruct the line on a map. So at the very least our app let’s you click anywhere on the planet and you’ll automatically be shown the longest line of sight at that point. But what if you want to get an overview of all the views in a particular region? You don’t want to be endlessly clicking on every point. Nor could we render all the lines at once, it would just be a noisy riot of slim triangles. This brings us to the other data our algorithm outputs.</p>

<p>Secondly, we calculate the total <em>surface area</em> visible from a given point. This is related to, but subtly different from, longest lines. It’s related in the sense that the further you can see then the wider your horizon. Think of how the small projectors at the back of the cinema can cast big scenes at the front of the cinema. But what if your vantage point was blocked on one side by a high ridge? And that your longest line of sight only appears through a gap in that ridge? That through-line could well be a record breaker, but it wouldn’t necessarily contribute to a record breaking total visible surface area if most of what you can see is merely close by.</p>

<p>In essence, visible surface area is an easily calculable metric that reflects how “good” the views are as a whole. Let’s look again at those apparent shadows in the image above. Just out of frame at the bottom is a large mountainous island. Now imagine you were behind one of those small islands in-frame such that it was blocking the view of the large island. At that point your view would be “worse”, or at least you’d be seeing less of the planet’s surface. And so we render that point with a darker colour. In this sense, the “light source” is land itself!</p>

<h3 id="a-custom-web-renderer">A Custom Web Renderer</h3>

<p>These days rendering global scale GIS data is well supported by a multitude of fantastic open source tooling. Special shout outs to; <a href="https://gdal.org/en/stable/">gdal</a>, <a href="https://cogeotiff.github.io/rio-tiler/">rio-tiler</a>, <a href="https://docs.protomaps.com/pmtiles/">PMTiles</a> and <a href="https://maplibre.org/maplibre-gl-js/docs/">MapLibre GL</a>. But we needed to go slightly off piste. Map rendering typically expects either vector data (think roads, bus stops, place names etc) and imagery (think satellite photos, cloud coverage, etc). But what we render is raw floating point surface area data. Though note that it would be possible to pre-render the heatmaps into conventional, say JPEGs, but that would have one significant downside: it’d be almost impossible to dynamically rescale the heatmap spectrum for different viewports and zoom levels. For example we want you to see both that the Himalayas as a whole have some of the best views on the planet, and that zoomed into the Himalayas themselves there’s a vast diversity of subtle variances amongst the peaks and valleys.</p>

<p>MapLibre has a feature called <a href="https://maplibre.org/maplibre-gl-js/docs/examples/add-a-custom-style-layer/">Custom Layers</a> where you can precisely control every aspect of the rendering, including the <a href="https://github.com/AllTheLines/viewview/blob/01d27d378e3f341b15290ba106d8476701016523/website/src/vertex.glsl">vertex</a> and <a href="https://github.com/AllTheLines/viewview/blob/01d27d378e3f341b15290ba106d8476701016523/website/src/fragment.glsl">fragment</a> shaders of the GL output. But with great power comes great responsibility. For example, you have to look after your own garbage collection, caching, zoom-level reuse (to prevent flashes of unloaded data), world-wrapping (so that you can infinitely scroll horizontally), and hardest of all, GL texture loading.</p>

<p>GL textures are the memory buffers that hold the raw data for rendering on a GPU. Typically they contain traditional RGBA image data. But as we’re not taking the aforementioned pre-rendered JPEG route, I had to bit-pack our raw <code class="language-plaintext highlighter-rouge">f32</code>s into the 4x8bit RGBA texture channels. Bit-packing just means taking the raw <code class="language-plaintext highlighter-rouge">0</code>s and <code class="language-plaintext highlighter-rouge">1</code>s, cutting them up, and moving them around. It’s something we would expect in the Total Viewshed algorithm, but I was surprised that I had to drop down to this level in the renderer. I should say that modern browsers do actually support special <code class="language-plaintext highlighter-rouge">R32F</code> buffers, so you can just load the raw float data as is. But unfortunately the support isn’t widespread yet, especially on mobile. And of course debugging this on mobile was way harder than implementing the fix.</p>

<h2 id="coda">Coda</h2>

<p>And there you have it, all that effort just to find a single line.</p>

<p>But of course it’s not about the destination, it’s about the journey. I’ve both learnt a huge amount of new technical skills and thoroughly enjoyed myself. It’s such an incredible privilege to have the time and energy to follow your passions and curiosities without the typical pressures of deadlines and profit.</p>

<p>Also it’s great to work with someone so closely at a technical level on a personal project. I don’t think I’ve ever done that. I’ve certainly been paid to work alongside technical colleagues, but now I realise that’s a different thing. You’re always thinking, “is this in the company’s best interests?”. Whereas here I was always thinking, “are we enjoying ourselves?”.</p>

<p>This certainly isn’t the end. We have loads more plans for the project. The main one is providing multiple world runs with varying settings. For example a run with a shorter observer and unfavourable atmospheric refraction, and another run with a taller observer and favourable atmospheric conditions. With that data we could in fact render <em>paired</em> lines of sight that suggest the extremes of visibility from a given point. There’s also NASA’s 30m resolution survey, which contains around 10 times as much data. It would require a lot more compute, but it’s the natural progression for higher resolution renders and more accurate lines.</p>

<p>There’s also the temptation of visiting some of these longest lines of sight. I think a lot of them might require some experienced mountaineering skills. But even it’s just a visit to the longest line of sight in the famously flat country of The Netherlands, it’s a great excuse to get out the house and explore new places on this beautiful and abundantly visible planet of ours.</p>

<h3 id="footnotes">Footnotes</h3>

<ol>
  <li>This view has not been photographed yet. Not only would it involve serious mountaineering, but also optimal atmospheric conditions: good weather, low pollution and favourable temperature gradients that produce assistive refraction.</li>
  <li>The main source of this speculation comes from <a href="https://www.summitpost.org/phpBB3/longest-lines-of-sight-photographed-t44409-150.html">a post on the Summit Post forum from 2012</a>. Forum member jbramel speculates that the view from Pik Dankova to China’s Kunlun range may be the longest in the world.</li>
  <li>Astute readers will notice that this also assumes <em>no other higher elevations exist within the region</em>. And you would be right. There are a number of details I’m glossing over in this short overview. Check out the blog post for more details <a href="https://tombh.co.uk/packing-world-lines-of-sight">tombh.co.uk/packing-world-lines-of-sight</a></li>
</ol>]]></content><author><name></name></author><category term="Computing" /><category term="Code" /><summary type="html"><![CDATA[The place on Earth from which you can, in theory1, see further than any other is between an unnamed Himalayan ridge near the Indian-Chinese border and Pik Dankova in Kyrgyzstan. It is just over 530km.]]></summary></entry><entry><title type="html">Packing The World For Longest Lines Of Sight</title><link href="https://tombh.co.uk/packing-world-lines-of-sight" rel="alternate" type="text/html" title="Packing The World For Longest Lines Of Sight" /><published>2025-10-05T00:00:00+00:00</published><updated>2025-10-05T00:00:00+00:00</updated><id>https://tombh.co.uk/packing-world-lines-of-sight</id><content type="html" xml:base="https://tombh.co.uk/packing-world-lines-of-sight"><![CDATA[<p>I have a side project to find the longest line of sight on the planet<a href="#footnotes" class="footnote">1</a> using a novel <a href="https://github.com/tombh/total-viewsheds">Total Viewshed algorithm</a>. At a resolution of 3 arc-seconds (~92m x 92m), the planet contains around 4.5 billion elevation samples<a href="#footnotes" class="footnote">2</a>. Now obviously we don’t need to calculate the visibility between literally every single one of those, so how do we begin to cut it up? That’s what I’ll explore in this post.</p>

<h2 id="theoretical-longest-lines-of-sight">Theoretical Longest Lines Of Sight</h2>
<p>A <a href="https://en.wikipedia.org/wiki/Viewshed">viewshed</a> is all the things that you can see from any given point. Here is an example from my home country, Wales, looking across a large estuary towards England:</p>

<p><img src="images/cardiff_viewshed.webp#wide" /></p>

<p>Notice how it seems that this viewshed is pretty much completely contained within the screenshot. I say “seems” because what if there’s some gigantic off-screen mountain that, even though it’s far away, its peak can be seen for hundreds of kilometres all around? The fact is that there is only one way to know whether you’ve found the true boundaries of a viewshed — going to the edge of where the Earth curves.</p>

<p>You may already know this bit of trivial knowledge: for an average height person standing on a beach, their horizon is around 4.5km away. So extending that example to Mount Everest, if it were unobstructed and looking at only sea, its horizon would be about 335km in the distance. Now we can add one more little case to this: what if there were <em>another</em> Mount Everest at exactly the right distance, such that it could see the same horizon, but from the other side? This would also mean that the peaks of these 2 Everests would be mutually visible. And so this is how we can construct theoretical maximums for viewsheds. Basically, for any given region, we find its highest point and assume that there is a perfectly placed sibling peak of the same height that is mutually visible. Here’s a list of some of these maximums:</p>

<ul>
  <li>8848m  670km (height of Everest)</li>
  <li>6km    553km</li>
  <li>4km    452km</li>
  <li>2km    319km</li>
  <li>1km    226km</li>
  <li>0.5km  160km</li>
  <li>1.65m  9km (height of an average human)</li>
</ul>

<p>Note how the distances are double that which I’ve already mentioned. This is because we assume the extreme perfect case where the 2 peaks are right at the edges of the other’s horizon. If one Everest can see 335km then 2 Everests can, in theory, see each other from a distance of 670km.</p>

<h2 id="total-viewshed-tiles">Total Viewshed Tiles</h2>

<p><img src="images/tvs.webp#wide" /></p>

<p>This is what’s called a Total Viewshed Surfaces (TVS) heatmap. Its source data is nothing other than the raw elevation values from the Welsh map above. But this time <em>every single possible viewshed</em> has been calculated for it! There’s no sensible way of rendering all those viewsheds, so instead just the surface area of each viewshed is recorded. Therefore the whiter pixels in the heatmap have larger viewsheds, namely, they can see more, and the darker pixels have smaller viewsheds, in other words they see less.</p>

<p>I find these TVS heatmaps eerily beautiful. There’s certainly a sense of light being shone, but it’s not quite clear from where. In this case it feels like the estuary is shining onto the mountains. But notice how that little island in the middle has what appears to be 4 or 5 shadows. I understand it like this: imagine you are in one of those “shadows” looking towards the island but instead looking at what’s behind the island in the distance. The “shadow” is indicating that the island is blocking a larger surface of land in the distance. The island may be small, but the nearer you are to it, the more of your field of vision it occupies, and thus the smaller your viewshed.</p>

<p>I will of course try to make as many of these publicly available as possible. Hopefully the whole world if practical. Watch this space. But for now back to the packing problem.</p>

<p>Notice how this TVS heatmap only covers a small region from the centre of the map above. In fact it is just the right size that every single point in it has enough elevation data from the surrounding map that none of its viewsheds are prematurely cut off. And this exact size is calculated using the theoretical longest line of sight formula we previously discussed. This is important for the packing problem because it shows us that we don’t need to think carefully about how TVS tiles themselves overlap. In fact ideally they just need to touch. It’s all of the surrounding auxiliary elevation data that has to overlap, and there’s just no way around that.</p>

<h2 id="covering-the-world">Covering The World</h2>
<p>If we could calculate the TVS for every part of the planet, at some point we would then also calculate the longest line of sight. Some of you may be thinking, well if your goal is to just find the longest, why calculate them <em>all</em>? Indeed, I could just find the largest TVS on the planet and be done with it. The short answer is that I also want to be able to answer questions like, what’s the longest line of sight in Wales? Or, from where can you see Africa from Europe? Or indeed, what’s the longest line of sight that is actually practically able to be seen due to not suffering from adverse conditions like low oxygen, bad weather, refraction, pollution, etc.</p>

<p>But another reason I can’t just take the largest TVS is that it only contains the <em>theoretical</em> longest line of sight. Not only might a peak not have its perfect sibling, but even in the rare case that it did, there could be plenty of terrain in between them that prevents them seeing each other. We would still need to search other tiles until we found a line of sight that was longer than any of the remaining TVSs’ theoretical maximums.</p>

<p>Whatever my goals, I need to consider how to at least find a not-terrible TVS packing of the world.</p>

<p>So there are just 3 rules that a planet-covering algorithm needs to follow:</p>
<ol>
  <li>That each tile is perfectly square. (This is a requirement of the Total Viewshed algorithm.)</li>
  <li>That each tile overlaps its neighbours. Or in other words, that there are no gaps, on land at least.</li>
  <li>That each tile is big enough to contain the theoretically longest line of sight of its highest point.</li>
</ol>

<p>And there are 2 properties to optimise:</p>
<ol>
  <li>How well a tile fits its theoretical maximum line of sight. If a tile is bigger than it needs to be, then when it comes to calculating its viewsheds, more RAM and CPU cycles will be used than are necessary.</li>
  <li>How much the tile overlaps with other tiles. Viewsheds in overlapping regions will be redundantly re-calculated, again wasting RAM and CPU.</li>
</ol>

<p>Here’s how I’ve implemented it:</p>
<ol>
  <li>Create a “lower” resolution version of the global elevation data that for every N degrees (I chose 0.1°, or ~11km at the equator) there’s a <em>sub</em>-tile that captures the highest point within itself. So it is lower resolution but it hasn’t lost any critical data via the typical side effects of interpolation. These subtiles are like an accelerating data structure for all the lookups we’ll be doing to find TVS tiles.</li>
  <li>For each subtile on a popable stack:
    <ol>
      <li>Create any TVS tile that fits the highest elevation of all the subtiles it covers.</li>
      <li>If the tile overlaps with other tiles discard it and move on to the next subtile.</li>
      <li>If the tile doesn’t overlap then keep it and remove all the subtiles from the stack that the tile covers.</li>
      <li>Repeat this process until no more non-overlapping tiles can be found.</li>
    </ol>
  </li>
  <li>Repeat step 2 but allow for overlapping tiles.</li>
  <li>Once all subtiles are covered, run some cleanup, like removing tiles that are already encompassed by larger tiles.</li>
</ol>

<p>The only notable optimisation I’ve added is for step 3. Instead of just automatically adding any overlapping tile, I instead first see if extending an <em>existing</em> nearby TVS tile to cover the uncovered subtile would introduce less new surface area than the new overlapping tile itself. But this introduces an interesting problem: arbitrarily extending an existing tile might make it cover a new elevation that triggers a greater theoretical maximum line of sight, which in turn requires the tile to be extended yet again to ensure all its viewsheds are valid. This is fine for my not-terrible approach, but it adds complexity to the search space when a goal of the algorithm is to optimise for the lowest possible total area of overlaps across the world.</p>

<h2 id="the-results">The Results</h2>

<p><img src="images/world_packed.webp#wide" /></p>

<p>The blue squares in this screenshot are the TVS tiles that we’ve been talking about. They look distorted towards the poles just because of the <a href="https://en.wikipedia.org/wiki/Mercator_projection">Mercator projection</a>. There’s also <a href="https://alltheviews.world/tile-packing-the-world">an interactive version you can play with here</a> (click on the tiles to see their details). And <a href="https://github.com/tombh/viewview">the code is here</a>.</p>

<p>You can see there are quite a lot of overlaps. And even from a cursory amount of clicking on tile details I can see that there are many tiles that are bigger than they need to be. But I think it’s good enough for our needs. Nevertheless I’m curious as to what an <em>optimal</em> packing would look like.</p>

<p>I’m sure it could just be brute forced to find ever improved optimums. There are only a few thousand tiles after all. Though currently my implementation takes about 2 hours to tile the world, which doesn’t make brute forcing so approachable. Perhaps you could do some localised gradient descent and then apply the found input variable optimums globally. Ideally though, is there not an elegant and efficient solution? This isn’t the first packing problem to exist, I imagine there are similar problems that could inform this one.</p>

<p>I’d love to know about any better approaches, but for now I have something practical to get us onto the next step — actually running all the viewshed calculations for these tiles! You can <a href="https://www.twitch.tv/tom__bh">follow my progress live on Twitch</a>.</p>

<p><em>Special thanks to <a href="https://ryanberger.me/">Ryan Berger</a> for proofreading</em>.</p>

<h3 id="footnotes">Footnotes</h3>

<ol>
  <li>A quick Internet search suggests that we already know that the longest line of sight is from Mt. Dankova, Kyrgyzstan to Hindu Tagh, China, and is 538km long. See <a href="https://calgaryvisioncentre.com/news/2017/6/23/tdgft1bsbdlm8496ov7tn73kr0ci1q">calgaryvisioncentre.com/news/2017/6/23/tdgft1bsbdlm8496ov7tn73kr0ci1q</a>. But I have not found any evidence for how this is the actual longest and not just the longest found <em>so far</em>.</li>
  <li>I’m currently using <a href="https://www.earthdata.nasa.gov/data/instruments/srtm">NASA’s SRTM3 survey</a> data, that has been cleaned up by Jonathan de Ferranti who has kindly made his work available at <a href="https://www.viewfinderpanoramas.org">viewfinderpanoramas.org</a>.</li>
</ol>]]></content><author><name></name></author><category term="Computing" /><category term="Code" /><summary type="html"><![CDATA[I have a side project to find the longest line of sight on the planet1 using a novel Total Viewshed algorithm. At a resolution of 3 arc-seconds (~92m x 92m), the planet contains around 4.5 billion elevation samples2. Now obviously we don’t need to calculate the visibility between literally every single one of those, so how do we begin to cut it up? That’s what I’ll explore in this post.]]></summary></entry><entry><title type="html">Going Dark</title><link href="https://tombh.co.uk/going-dark" rel="alternate" type="text/html" title="Going Dark" /><published>2022-06-11T00:00:00+00:00</published><updated>2022-06-11T00:00:00+00:00</updated><id>https://tombh.co.uk/going-dark</id><content type="html" xml:base="https://tombh.co.uk/going-dark"><![CDATA[<p>I’ve changed the theme of my website to be dark. I generally prefer dark themes, so it makes sense for my own little corner of the internet to be in keeping.</p>

<p>I haven’t posted in a long time, just over 2 years! I’ve actually tried quite a few times, but they’re often pretty bogged down in politics, it just makes me feel too soapboxy and crackpotty to publish. Basically, the gist of them all is: I just like being outside the West, and that’s a part of why I continue to travel.</p>

<p>I’ve been travelling so long now, 7 years, and it must be nearly 60 countries. It’s such a habit that I often don’t even let my friends know where I am, let alone my website or Twitter or something.</p>

<p>Anyway, I’m in a small city called Salta in the very North of Argentina at the moment. I’ve been here about 4 months and South America as a whole about a year and half.</p>

<p>I’m generally well, still meditating, hacking on my own computer projects and managing to find remote software work. Though admittedly often feel lonelier than I’d like to, not that I didn’t feel so different when I wasn’t travelling.</p>

<p>Anyway, just a little note to say, though I might seem dark, the light still shines.</p>

<p><img src="images/elefante.jpg#wide" /></p>]]></content><author><name></name></author><category term="Mill Grist" /><summary type="html"><![CDATA[I’ve changed the theme of my website to be dark. I generally prefer dark themes, so it makes sense for my own little corner of the internet to be in keeping.]]></summary></entry><entry><title type="html">White Blood</title><link href="https://tombh.co.uk/white-blood" rel="alternate" type="text/html" title="White Blood" /><published>2020-06-01T00:00:00+00:00</published><updated>2020-06-01T00:00:00+00:00</updated><id>https://tombh.co.uk/white-blood</id><content type="html" xml:base="https://tombh.co.uk/white-blood"><![CDATA[<p>The now disgraced Louis CK once said, “if you’re white and you don’t admit that’s great, you’re an asshole”. His
disgrace only furthers his point. He abused his position of power by masturbating in front of women that looked up
to him. The mental gymnastics of white psychology is comical and grotesque. We are simultaneously almighty and
impotent. We rejoice at SpaceX’s docking with NASA’s International Space Station and dispair at the needless death of
George Floyd.</p>

<p>The sight of White blood is the truest thing that’s happening in the world at the moment. The sight of Black blood,
Indian blood, Chinese blood, Middle Eastern blood and Native American blood is lost, or even worse, reinterpreted in
the edits of history. It is fundamentally against the laws of physics for an undeveloped European society to go from
feudalism to space flight within a mere handful of centuries without looting, bloodshed and enslavement on an
Imperial scale. Modernity was stolen from behind the smashed windows of civilisations older and more respected than
its own.</p>

<p>I am blogging from behind the intact glass of my apartment. Is that because I didn’t take part in the theft and
brutalities of my ancestors? No it’s not. It’s simply sheer, cold accident that my white life is great. Just in the same
way that it was bleak, frigid chance that fell upon the individual lives of Kenyan, Lakota, Mayan, Bengali, Han and
Maori. They did not choose their fate and I did not choose my debt. Such is life. But indebted I am. I no more want my
blood to be drawn from black hands than non Europeans wanted to give their lives and land in the construction of the
great project of modernity.</p>

<p>Of all the philosophies, civil rights, hashtags, support groups, movements, liberal political policies, charities and
protests, the truest expression of them all is White blood. Modernity came at a price: for hundreds of years, we’ve been
either trying to forget that or claim that the price is less than it is. We faulter at the simple requirements of wealth
equality and social distancing, let alone the necessity for sustainable carbon-free energy. Why is it so difficult?
We’ve talked about this so much yet all our attempts at insight fall short. White blood as a formal policy is certainly
not the answer, but as a direct view onto the sobering reality of our predicament it is unambiguous. Modernity’s
foundations, by its own legal and ethical standards are illegal and unethical. Modernity’s foundations, by its own
legal and ethical standards, are illegal and unethical. Modernity’s foundations, by its own legal and ethical standards,
are illegal and unethical. The ends do not justify the means.</p>

<p>Despite this, I choose not to redistribute my own significant wealth. Nor exchange my British passport in protest. Rather
I masturbate these words in front of you as some sort of twisted tenuous attempt at self fulfillment.</p>]]></content><author><name></name></author><category term="Mill Grist" /><summary type="html"><![CDATA[The now disgraced Louis CK once said, “if you’re white and you don’t admit that’s great, you’re an asshole”. His disgrace only furthers his point. He abused his position of power by masturbating in front of women that looked up to him. The mental gymnastics of white psychology is comical and grotesque. We are simultaneously almighty and impotent. We rejoice at SpaceX’s docking with NASA’s International Space Station and dispair at the needless death of George Floyd.]]></summary></entry><entry><title type="html">Deleting Facebook and Google</title><link href="https://tombh.co.uk/deleting-facebook-and-google" rel="alternate" type="text/html" title="Deleting Facebook and Google" /><published>2019-05-26T00:00:00+00:00</published><updated>2019-05-26T00:00:00+00:00</updated><id>https://tombh.co.uk/deleting-facebook-and-google</id><content type="html" xml:base="https://tombh.co.uk/deleting-facebook-and-google"><![CDATA[<h2 id="why">Why?</h2>
<p>The gist of it is that I believe these companies now have too much power, perhaps even reaching a precedent unseen
in history. Much has been said about all this already and I don’t think I’ll add anything
particularly new. However, I feel a certain responsibility as a professional computer person to add to
the small but growing number of stakes in the ground. Whether boycotting these companies is right or
not, there at least needs to be a choice of reasonable paths for us all to take without needing specialist knowledge. Right now leaving Facebook and Google is hard, the only way it will get easier is if enough people
retread those other paths and leave signposts along the way.</p>

<p>There are certainly significant differences between the 2 companies, but the crux of the decision to leave both of them came when I heard about the <a href="https://en.wikipedia.org/wiki/Facebook%E2%80%93Cambridge_Analytica_data_scandal">Cambridge Analytica scandal</a> at Facebook. Even if the reports of that event
are largely conspiratorial, it nevertheless laid out to me, in an entirely plausible way, the mechanics of a new form of mass manipulation. If state-level actors haven’t yet exploited user data to shape the political landscape of countries, or indeed continents, they undoubtedly will.</p>

<p>On the face of it most of us think that Facebook and Google are in the businesses of social media and internet search respectively. The reality is however that they are both advertising companies. At their
very core, their DNA is a blueprint to make money from successful ads. My petty annoyances with poorly
produced, attention-grabbing ads aside, there is an inescapable, dangerous and fundamental overlap between advertising technology and propaganda technology. No matter how ethically principled an ad company is
it will always, to a greater or lesser extent, be facilitating propaganda. So in essence, one way of
looking at what Facebook and Google have created is that they’re virally-successful propaganda laboratories.
Every tiny tweak they make to their algorithms is simultaneously a contribution to the state of the art of
mass manipulation. We can argue about the extent to which this knowledge makes it into the hands of the unintended,
but the fact remains that this knowledge is being evolved at an unprecedented rate.</p>

<p>In the grand scale of things I don’t suppose Facebook and Google are that bad. It’s just that we’ve reached a
notable watershed: the internet has become central to the functioning of the modern world, such a system must
have significant costs, those costs are implicitly paid for by our personal data, data which in turn pays for
itself by perfecting the art of advertising, an art inextricably linked to propaganda. These 2 companies just
happen to be easy pickings at the centre of this novel virtuous cycle. They’re also a good target because they
have so many associated properties; Youtube, Instagram, Whatsapp, Gmail, Android, Chrome, to name just a few.
It’s so easy to get caught up in using all these apps, indeed that is part of the success of the virtuous cycle.
Online life is hard without them, but rubbing up against the day to day inconveniences their absence generates
is also the very source of motivation to conceive of new landscapes. I admit it’s not much fun, but we’ve got
to start somewhere. Not to mention that I’m already addicted enough as it is, I’d do well to take every
opportunity I can to reimagine my digital life.</p>

<h2 id="how">How?</h2>

<h3 id="so-firstly-the-things-i-havent-managed-to-give-up">So firstly, the things I haven’t managed to give up.</h3>

<p>For a start I haven’t actually deleted my Google account,
because I still currently use Google’s Cloud servers for <a href="https://brow.sh">Browsh’s</a> SSH and HTML apps. Google Cloud
has cheap short-lived VMs available through their Kubernetes platform, that are just perfect for Browsh’s workloads.
I see that Digital Ocean can now probably do what I need, but that’s a migration I’m going to have to
do another time.</p>

<p>Then there’s Youtube. This surprised me, I just cannot imagine how I can be a digital citizen and not use it. There
are certainly alternative video sites, but they don’t have the content. I actually now think this might be a more
important asset to Google than search.</p>

<p>Google Translate. I’ve been a full time digital nomad for 3 years now and I don’t see that changing any time soon.
There just aren’t any other translation apps that come close to Google’s. Luckily at least you don’t need to be
logged in to use it.</p>

<p>Android. It’s actually entirely possible to use Android without making any requests to google.com domains. Which
is what I now do. But nevertheless, it is still fundamentally dependent on the Google ecosystem. For instance I
still download apps mirrored from the Google Play store. I’ve never been an Apple person, but I’m slowly becoming
even less of a Google person, to the point that I think an iPhone is probably the least worst option.</p>

<h3 id="what-i-have-quit">What I have quit</h3>

<p>Facebook and Instagram. I don’t really have much to share about leaving them. I think there’s a lot to say about the
superficiality they promote, but that’s another conversation.</p>

<p>Whatsapp. Such a great app! Everybody has it, great UI, works on the worst connections. This has been really
frustrating to have to explain to people I don’t have it. I opt for <a href="https://www.signal.org/">Signal</a> now, hardly
anyone uses it and the UX isn’t as nice, but it uses state of art in encryption. BTW you should all know about
<a href="https://riot.im/app">Riot</a>, for chat, voice and video: open source, decentralised, ok mobile app, in-browser client (even for video!) and modern encryption.</p>

<p>I swapped Gmail for <a href="https://www.fastmail.com">Fastmail</a>. It’s about $5/month.</p>

<p>DuckDuckGo is now my default search engine. I do however still fallback to Google sometimes for programming related
things.</p>

<p>I use Firefox instead of Chrome. The mobile app supports web extensions, it’s great to have ad-blocking on your mobile.</p>

<p>The crux of getting Android to stop using Google-based remote services is to install a custom ROM with Google’s
Play services app removed. Unfortunately there are a lot of apps that won’t work without it. Fortunately there’s
a commendable open source project to replace all Google Play’s endpoints with alternatives or at least stubs. The
project is <a href="https://microg.org/">MicroG</a>.</p>

<p>My biggest worry about not installing any Google apps was finding a replacement for Google Maps, but I’ve been
pleasantly surprised by <a href="https://osmand.net/">OSMAnd+</a>. They do want money for it, but they also generously make
it freely available on the F-Droid store. The one thing I’d say about Google Maps alternatives is that the norm
is actually to download offline data for the regions your interested in. This took me a while to get used to
because I rarely did that on Google Maps.</p>

<p>An interesting replacement I found for Google’s international internet-based phone calls (was that part of the Google Hangouts app?), was a mashup of <a href="https://www.twilio.com/">Twilio’s</a> VoIP API and the <a href="https://www.zoiper.com/">Zoiper</a> app. It was a little technical to setup and I didn’t make any notes, but I can assure you it’s possible without programming knowledge, just a little bit of informed clicking. So anyway now I can make local rate phone calls all over the world as if I’m in that country. Essential for a digital nomad.</p>

<p>And finally backups. Google-enabled Android will put all your media in the cloud for free. So I took the opportunity to overhaul all my syncing and backup needs. <a href="/synching-and-backup-notes">I wrote a separate blog post about that</a>. The short story is that I now sync my laptop, mobile and a remote VM with <a href="https://syncthing.net/">Syncthing</a>, and take regular backups with <a href="https://www.borgbackup.org/">Borg</a>. The VM which I already use for other things is the only cost, at round $5/month including the extra disk space.</p>

<h2 id="conclusion">Conclusion</h2>

<p>All in all I’m pretty happy with my new setup. There’s still some bits to shake off, but it’s a significant start. Life online is indeed possible without the giants of Google, Facebook and their offspring. The biggest problems are just knowing there are better versions of things out there and having to put up with annoyances that you know need not exist. But I’m a geek, so I enjoy all the extra tweaking and setup. I was interested in all these tools before anyway, but I’m forced to actually invest in them now that I need them to navigate my daily digital life. I’m not sure I’d recommend all this to most people, but I do hope you take solace knowing that such a path is possible.</p>]]></content><author><name></name></author><category term="Geeky" /><summary type="html"><![CDATA[Why? The gist of it is that I believe these companies now have too much power, perhaps even reaching a precedent unseen in history. Much has been said about all this already and I don’t think I’ll add anything particularly new. However, I feel a certain responsibility as a professional computer person to add to the small but growing number of stakes in the ground. Whether boycotting these companies is right or not, there at least needs to be a choice of reasonable paths for us all to take without needing specialist knowledge. Right now leaving Facebook and Google is hard, the only way it will get easier is if enough people retread those other paths and leave signposts along the way.]]></summary></entry><entry><title type="html">Synching and Backup Notes</title><link href="https://tombh.co.uk/synching-and-backup-notes" rel="alternate" type="text/html" title="Synching and Backup Notes" /><published>2019-04-20T00:00:00+00:00</published><updated>2019-04-20T00:00:00+00:00</updated><id>https://tombh.co.uk/synching-and-backup-notes</id><content type="html" xml:base="https://tombh.co.uk/synching-and-backup-notes"><![CDATA[<p>Here are some brief notes about installing <a href="https://syncthing.net/">Syncthing</a> and <a href="https://github.com/borgbackup/borg">Borg</a>.</p>

<p>I use Syncthing to synchronise certain files between my phone, laptop and remote VM. The files are mostly backups of things like; photos, wifi passwords, 2FA config, SSH keys, laptop config and ZSH history. There is also clipboard sync so that I can copy/paste between my local tmux environment and my remote environment.</p>

<p>Syncthing is peer to peer, so there is no client/server model. Every install can sync to every other install and vice versa. There are of course lots of config settings so you can do things like mark a folder as Send (or Recieve) only. The Syncthing design consists of just 2 concepts; Folders and Devices. When Syncthing says that a folder or device is in a certain state such as “Up To Date”, this just means <em>locally</em>, as in Syncthing is aware of the local state and is ready to transmit the metadata of that state elsewhere.</p>

<p>I originally spent about a month experimenting with mounting my remote VM Syncthing folder onto a Google Bucket (just like AWS S3) using <a href="https://github.com/GoogleCloudPlatform/gcsfuse">gcsfuse</a>. I wanted to not have to care about resizing my own disks, with a bucket you essentially have infinite pay-only-for-what-you-use storage. However, eventually I gave up on it as it caused some frustrating performance issues in Syncthing. The fact is that Syncthing does a lot of scanning, which just doesn’t play well with the unorthodox nature of a HTTP REST-based API file storage system mounted onto a local disk. Besides a 50Gb disk is way more than I need and only costs a couple of dollars per month.</p>

<p>Backups serve 2 purposes, extra redundancy and lightweight historical snapshots. Syncthing also has some history features, like keeping versions, or sending deleted files to an intermediate trash folder. But I decided to only use Borg’s history settings. Borg has a convenient wrapper tool called <a href="https://torsion.org/borgmatic/">Borgmatic</a>, it allows to simplify all your backup needs into a simple YAML file. I simply add paths to the Borgmatic YAML file and a <code class="language-plaintext highlighter-rouge">systemd</code> service does the backups, cleans up snapshots, checks for problems and ships off copies of the archives to other devices and a Borg-specific service called at <a href="https://www.borgbase.com">https://www.borgbase.com</a> which has a free 5Gb tier. This service has a nice feature where it emails you if it notices that too many scheduled backups have been missed.</p>]]></content><author><name></name></author><category term="Geeky" /><summary type="html"><![CDATA[Here are some brief notes about installing Syncthing and Borg.]]></summary></entry><entry><title type="html">A Year In China</title><link href="https://tombh.co.uk/a-year-in-china" rel="alternate" type="text/html" title="A Year In China" /><published>2018-10-12T00:00:00+00:00</published><updated>2018-10-12T00:00:00+00:00</updated><id>https://tombh.co.uk/a-year-in-china</id><content type="html" xml:base="https://tombh.co.uk/a-year-in-china"><![CDATA[<p>In the <a href="https://www.youtube.com/watch?v=hn1VxaMEjRU">short comedy sketch</a> by British comedians Mitchell and Webb entitled, “Are We The Baddies?”, two WWII German soldiers wonder whether the skulls on their uniforms might mean that they are in fact, the baddies. They literally use the word, ‘baddies’, no doubt intentionally attempting to evoke those harmless playground games of our youth, where there are usually also some ‘goodies’. Of course nothing could be further from the unfathomable violence of the Second World War than the innocence of childhood games. It’s this stark contradiction that provides one of the ingredients giving this sketch its humour. We can laugh, partly because so much time has passed since the actual historical events, but also because the juxtaposition is so absurd that there is no doubt as to its intended purpose of comedy.</p>

<p>However, there’s another interesting factor to consider: David Mitchell has a degree from Cambridge University in modern history. Apart from this particular comedy sketch, I’ve been a long time fan of Mitchell, his comedic bent is marked by an unapologetic progressive outlook, backed up by a clearly well educated world view. There is no doubt that he is the furthest one can be from the infantile attitude that splits the world into ‘goodies’ and ‘baddies’. He more than most will know that history is rarely that simple. So I think there is another comedic ingredient at play, one that pokes fun at that simplistic explanation of the Nazi’s behaviour as stemming merely from the motivations of pure evil. The sober realities are that German citizens from the first half of the 20th century were normal people, they were neither under the effects of malicious magic nor psychological pathologies. In fact the seeds of Nazi Germany can be all too easily found in various forms, both local and national, around the world today. As the proverb says, “The road to hell is paved with good intentions”. Mitchell and Web are right, it is comical, tragically so, to think that the Nazis perceived themselves as bad, or belonging to the wrong side. If history has taught us anything, it’s the conviction of being a ‘goodie’ that we should watch out for.</p>

<p>What if Germany had won? So that you were now most likely reading this blog post in German. And that the influence of the Third Reich was felt over the entire world from America to Europe and from Africa to Asia. It sounds impossible doesn’t it? Surely the resistance would eventually rise from the ashes victorious? OK, maybe Nazi victory is just too hard to fathom, then what about an equal but opposite thought experiment: what if Europe hadn’t colonised the world? At first this seems unrelated because, I would argue, Europeans are perennially seen as the ‘goodies’, protecting the world from harm. Speaking as a British-educated European, there’s just a deeply ingrained reluctance to map anything of what the wrong side of WWII stood for onto any of what the good side of my sea-faring ancestors stood for. As it was so unambiguously made clear to me at school, the Germans committed the Holocaust. It’s not that European colonialisation was ignored, but rather that any wrongs resulting from it had now either been righted or forgotten. So to pose the hypothetical scenario of Europeans not colonising the world as an equal but opposite parallel to Germany winning (the world) seems, at first glance, an unfair comparison. Surely if European colonialisation was even remotely equivalent to the atrocities of the Germans then it would be equivalently ingrained into European education, culture and consciousness?</p>

<p>Are we the baddies? If it were as caricatured as a comedy sketch then yes, ‘we’, the Europeans, absolutely are the baddies. The abominable acts that humans have committed can not and should not be compared, but nor should they be isolated as disconnected abnormalities. As much as European technological and economic development is profound it is also horrifying. The resources required to progress so far and so rapidly fundamentally depended, and still do depend, on profound exploitation of land and human labour. The wiping out of the indigenous populations of the Americas and Australia. The theft of African resources and the slave trade. The exploitation of India and South East Asia. Many millions of humans died and millions more suffered in the wake of Europe’s thirst for development.</p>

<p>The more common name for this hegemony of technology, culture and power is the West. It originated in Europe but has spread either directly, with the likes of the USA, Brazil and Australia, and indirectly via the mediums of the internet, the English language, medicine and the United Nations, to the whole world. Being a traveller I’ve become so use to this that I take it for granted. Especially being British, I forget that I enjoy an unparalleled level of respect and protection, because ultimately, if it comes down to it, I have the entire weight of the West on my side. So it is a particularly curious and jarring experience to be in a country characterised by its desire and ability to distance itself from Western influence.</p>

<p>We shudder to think of landing in a Chinese airport and seeing all the signs helpfully translated into German. Indeed, my actual response to China’s use of English in public contexts has been frustration as to its lack of quality; poor spelling, punctuation, grammar and even meaning. It is clear from the moment you arrive that China has a uniquely distinct relationship with the dominant culture of our modern world. That this is a surprise is more a symptom of the West’s hegemony than it is of China’s status. China is less a country than it is a civilisation. Not only is it numerically massive in terms of population, geography, resources and wealth, but it is culturally and historically significant in terms of its own contributions to the world. Since civilisations first arose, it is China that has by far seen the most number of years, indeed millennia, as the world’s prevailing power and influencer.</p>

<p>For me, a year in China has been more about being unprecedentedly outside my own culture, than it has been about being inside a new and different culture. Most significantly, and to my embarrassment, this has revealed how what I thought were features of the <em>world</em> were in fact features of the <em>West</em>. Good use of English is just one of them. In fact, the most notable has simply been the lack of collective amnesia about European history. It’s not that the average Chinese person knows about the West’s dark past and even less that they like to frequently remind you. It is simply the unnerving sense that those around you are not in the same ‘cult’. It would now seem an obvious —but all too easy and salacious— step, to criticise Chinese propaganda. But as serious as that topic is, I believe there is a more serious one. The <em>world</em> did not forgive Europe — the West, who does not even have the power to do so, forgave Europe. As much as Chinese communist authoritarianism disturbs me, the sobering revelation that the West’s self-perceived virtue is not a feature of Mother Earth herself, but rather the convenient kind of story that dominant, unchecked powers like to tell themselves, disturbs me more.</p>

<p>The West has not answered for its crimes. There is no one that has the power to require that of the West. Not even China, who are blindly chasing their own unchecked powers and who would, given the opportunity, sign up to powers equivalent to the West’s in a heartbeat. Of course, I need not worry about the West’s debts to humanity right? Why burden myself with problems that are neither mine to take responsibility, nor apologise, for? But I know this is not how it works. Whether you call it karma or psychological repression, actions have consequences and they will play out whether an external superior power asks us to or not. Mother Nature has a way of dealing with these things. The West is suffering, seemingly uncontrollably, by nothing less than its own hands. Poverty, mental health, physical health, addictions, violence and so on. I should know, these are all problems I have either directly suffered myself or seen in family and friends. The reason I was even motivated and able to spend so much time in China was the fundamental discontentment I felt with my life back in the UK. It is not a coincidence that the West so intractably suffers from seemingly solvable problems whilst at the same time not being able to fully acknowledge and grieve its past.</p>

<p>Even though I was born in England, whenever someone from a foreign country asks me where I’m from I try to tell them I’m Welsh, after all, I lived most of my life there. I don’t want to be seen as yet another arrogant white tourist. Maybe somehow, knowing that I’m not English might lead onto questions about how that might be different from the common perceptions of the West; about how I grew up in one of the poorest regions of Europe, that I suffered years of unemployment and depression, that I, my family and friends suffered drug addictions and in more than one case died from such substance abuses. Am I travelling thinking I might find another home, another identity I might feel pride associating with? But where can I possibly go, other than to a tribal culture, where I am at the very least, not tacitly enjoying the spoils of the West? Medicine, computing technology, cheap Chinese goods and so on. Somewhat ironically, my time in China has made me feel a greater urgency about openly and unambiguously identifying myself as English, British and Western — simply because the responsibility has to start somewhere. I can’t single-handedly redress the wrongs of the West, but I have the power, intelligence and courage to understand my heritage. If I don’t want to face the fact I’m a baddy, then who will?</p>

<p>Of course this isn’t a comedy sketch, matters as serious as these cannot be resolved with names as simplistic as ‘goodies’ and ‘baddies’. Indeed the very factors that led to the West’s power, such as academic rigour and transportation technology are also the ones leading to this new existential position in my life. An open mind and a willingness to experience foreign cultures is not actually something particularly exceptional in English and Western culture. Also I don’t need to flagellate myself, as I already mentioned, nature has ways of ensuring that our lessons get learnt eventually, one way or another. What I can do, is fully participate in the sober realities of the history that brought me to where I am right now. If the world is going to survive, then one way or another the work will have to be done. There will have to be people who take responsibility for actions not directly conducted by themselves.</p>

<p>Of course there are so many other not-so-serious aspects to my time in China; the food, the scenery and the hospitality for example. I hope to share those another time. This blog post is something I’ve been thinking about and trying to find a way to express for many months, I’m hoping it helps me digest this new understanding I have of myself and the world. Even though it’s not my favourite country, I will certainly be returning to China, hopefully for similar periods of time. I’ve made genuine friends there and I know that I’ve only just began to have a glimpse into the true extent of its culture.</p>

<p>谢谢中国，你的朋友。</p>]]></content><author><name></name></author><category term="Mill Grist" /><category term="Travelling" /><summary type="html"><![CDATA[In the short comedy sketch by British comedians Mitchell and Webb entitled, “Are We The Baddies?”, two WWII German soldiers wonder whether the skulls on their uniforms might mean that they are in fact, the baddies. They literally use the word, ‘baddies’, no doubt intentionally attempting to evoke those harmless playground games of our youth, where there are usually also some ‘goodies’. Of course nothing could be further from the unfathomable violence of the Second World War than the innocence of childhood games. It’s this stark contradiction that provides one of the ingredients giving this sketch its humour. We can laugh, partly because so much time has passed since the actual historical events, but also because the juxtaposition is so absurd that there is no doubt as to its intended purpose of comedy.]]></summary></entry><entry><title type="html">外来的语言</title><link href="https://tombh.co.uk/foreign-language" rel="alternate" type="text/html" title="外来的语言" /><published>2018-06-08T00:00:00+00:00</published><updated>2018-06-08T00:00:00+00:00</updated><id>https://tombh.co.uk/foreign-language</id><content type="html" xml:base="https://tombh.co.uk/foreign-language"><![CDATA[<p>Here is my entry into our school’s essay competition. The title can be translated as “Foreign Language”, however the word I use for <em>foreign</em> is 外来 which is more related to English’s <em>alien</em> or <em>exotic</em>. This is because the usal word for <em>foreign</em> when describing a foreign language is 外国 which could be literally translated as ‘outside country’. Therefore you can’t use 外国 if you want to say something like <em>a foreign concept</em>.</p>

<p>我正在学习一个外来的语言：中文。所以我很高兴和一个中国朋友一起去昆明博物馆。</p>

<p>昆明有很长和很有趣的历史。我看到很多艺术，诗歌，书法和陶器。但是最有意思是第二次世界大战的历史。我以前学过，美国在昆明建过一个大空军基地。美国要来帮助中国防御免被日本攻击。对我来说，美国能和中国一起联合战斗是一个新鲜和外来的想法。</p>

<p>所以为了了解更多有关这次战斗的历史。我一回家就马上要学习日本的历史。当时日本想变成现代国家。现代国家是什么？一个现代国家必须有很多权力。因为现代世界说有权力的言语。当时最权力的国家是欧洲的和美国。但是为了日本表示像欧洲和美国的权力日本需要更多资源。所以日本入侵中国。</p>

<p>现在我必须记得很难的事情。我是英国人。我们的历史非常骇人听闻。比如，英国从非洲偷百万奴隶，英国从百万印度人手里偷食物和资源。这导致百万人受苦甚至死亡。其实英国入侵这么多国家现在大部分的国家却说英语。这个很难想一想但是如果我想明白日本的历史我需要明白英国的历史。日本只想过成为现代的国家。</p>

<p>我在中国因为我想学习中国的文化和语言。但是我却学习了我自己的文化和语言。其实英语这种语言是权力的象征，它是一个外来的语言我发现很难明白。</p>]]></content><author><name></name></author><category term="Around The World" /><summary type="html"><![CDATA[Here is my entry into our school’s essay competition. The title can be translated as “Foreign Language”, however the word I use for foreign is 外来 which is more related to English’s alien or exotic. This is because the usal word for foreign when describing a foreign language is 外国 which could be literally translated as ‘outside country’. Therefore you can’t use 外国 if you want to say something like a foreign concept.]]></summary></entry><entry><title type="html">在威尔士的最高山睡觉</title><link href="https://tombh.co.uk/sleeping-on-wales-highest-mountain" rel="alternate" type="text/html" title="在威尔士的最高山睡觉" /><published>2018-05-01T00:00:00+00:00</published><updated>2018-05-01T00:00:00+00:00</updated><id>https://tombh.co.uk/sleeping-on-wales-highest-mountain</id><content type="html" xml:base="https://tombh.co.uk/sleeping-on-wales-highest-mountain"><![CDATA[<p>   <br />
<img src="/images/snowdon.jpg#wide" alt="" /></p>

<p><em>我在中国九个月，还有我在中文的学校两个月。所以我希望我中文开始有用。</em>
<em>我老师给我们作业：说一说奇怪的故事。所以我想写下这里然后大家觉得我很酷因为我知道中文:D</em>
<em>有更多从我大走路<a href="http://tombh.co.uk/walking-wales-tweet-archive">这里</a>。</em></p>

<p>年二零一五我走路从北边威尔士到我布里斯托家。是二百七十五公里。第二晚我上山斯诺登，这是最高山的威尔士。
我不觉得我可以晚过那里因为一点危险。我看到日落了。风景非常漂亮。我不想走。因为天空和风很好我决定试试
睡觉那里。先我一个人那里。这么安静。是很黑暗，我可以看到很多星星。我一点冷但是还可以睡觉。然后很多登山
来到！我们聊天。他们觉得奇怪看到有人睡觉上山，我觉得奇怪看到恨晚的登山！然后大部分的人走。剩下四个人。
一个有坏腿。他们有威士忌。我们看看星星的时候说一说生活。他们走的时候最后我又睡觉。</p>

<p><em>I’ve been in China 9 months now and the last 2 months of that I’ve been attending a Chinese school.
So I hope my Chinese is starting to become somewhat useful. Our teacher has given us some homework:
to talk about a strange story. So I thought I’d write it down here so that you all think I’m cool
because I know Chinese. You can find out more about the whole adventure <a href="http://tombh.co.uk/walking-wales-tweet-archive">here</a>.</em></p>

<p>In 2015 I walked from North Wales to my home in Bristol. It’s 275km. On the second night I climbed Snowden, the highest mountain in Wales. I didn’t think I could spend the night there because it was a
little dangerous. I watched the sunset. The view was extremely beautiful. I didn’t want to leave. Because the sky and the wind was good I decided to try to sleep there. At first I was alone. It was so peaceful. It was dark, I could see lots of stars. I was a little cold but I could still sleep. Then lots of mountaineers arrived! We chatted. They thought it was strange to see someone sleeping on the mountain, I though it was strange to see mountaineers so late on the mountain! Then most of the people left. Four people remained. One had a bad leg. They had whiskey. We talked about life whilst we looked at the stars. When they left I could finally sleep again.</p>]]></content><author><name></name></author><category term="Around The World" /><summary type="html"><![CDATA[ ]]></summary></entry></feed>