Building a computer from scratch part III: Memory


“The power of the memory is great, O Lord. It is awe-inspiring in its profound and incalculable complexity… The wide plains of my memory and its innumerable caverns and hollows are full beyond compute of countless things of all kinds.”

Confessions of St. Augustine, Book 10

Part I here.
Part II here.

So far, I’ve learned how to make combinational chips – chips designed to combine two or more inputs in different ways. In this section of the Nand2Tetris course, I focused on sequential chips – chips that control state within the computer. State fluctuates, it can be in one state at a moment in time, and in another state at another moment. The ability to recall this state, and change it at will is called the “memory” of a computer.

Human memory isn’t so much a collection of facts so much as impressions. These we can recall with decreasing accuracy as a function of time. Knowing this, if you could build a machine that could calculate anything and store its results, wouldn’t you want it to store things with perfect recall? Doing so would improve on our shortcomings and enable to do useful things with them. This is what a computer is able to do.

The simplest way to create and store finite values is through electromagnetic charge. We can turn the current on a chip to signify “on,” and turn the current off to signify “off”. Flipping in between these two states, we can create digital gates, called flip flops, that can store its previous state. The naming comes from how these chips behave internally – Nand gates flip in between true and false values thereby storing incoming values and outputting the previous value it received. Similar to how the ALU behaves by combining true/false statements and building complex operations from them, a computer’s memory is based on storing previous outputs and combining them into bits, registers, and eventually memory devices such as RAM, ROM, etc.

A flip flop is able to either “remember” its previous state, then output that, or output the current incoming signal. It can do this through a very simple digital gate design that combines a Multiplexer chip to control which signal gets stored in the flip flop:

A Neural Network design for emulating a 1-bit register
Source: Rick Dzekman

This is a 1-bit register, because it stores one value, 0 or 1 -or Bit. This is the fundamental building block of memory devices. We can easily chain multiple registers together to form registers that can hold inputs of arbitrary bus sizes. This creates a RAM, or Random Access Memory unit. So called because an input is able to access any register in constant time (it takes the same amount of time for the input to be stored in any register on the computer, even if there are 10, 1000, or a billion registers). To sum, we can visualize a unit of RAM memory through the following diagram supplied by the Nand2Tetris book:

The RAM unit has two inputs, a 16-bit “word” you want to store, and the address where you want to store the data in. There is also a “load” input, that controls whether the incoming signal will be stored or not. Finally, “out” will output the current signal it received (if load is false) or the previous state of it (if load is true).

Finally, there is a Counter chip that keeps track of the computations done in a computer. Because chips are located in different parts of a computer, and some calculations take more time than others, signals come to the ALU at different rates; if one signal arrives but another is still pending, the ALU will be outputting gibberish. To prevent this from happening a Counter chip is used to keeps all calculations done in a computer in sync with each other. The passage of time in a computer therefore, is measured in “cycles.” For each cycle, every gate in a computer will perform an action, then nothing more. Only after the counter chip increments time, or moves on to a new cycle, do the gates open up again and allow computations to be made. The cycle then repeats.

This sums the chapter on memory devices. Onwards now to machine language -the place where hardware and software meet.

Thank you for reading through this article. I haven’t stated what’s the purpose of these posts yet, so I’ll clarify now. The primary objective is to write out my learnings and thoughts in as clear way as I can about the subjects I’ve learned in the chapter. By writing and recalling what I learned, I hope to gain a deeper, more solid understanding of the material. The secondary object is simply to share with you all these learnings, and perhaps inspire you to explore on your own the questions you might have about computers in a way that is useful for you.

Building a computer from scratch part II

Part 1 is here.

After reviewing basic boolean operations and seeing how to implement them in their corresponding digital gates, we can now make boolean arithmetic operations. In chapter 3 of Nand2Tetris, we take the digital gates we created (And, Or, Mux, Xor, etc) and create an ALU, or Arithmetic Logic Unit. This is the heart of a computer.

But before going into the implementation of an ALU, it’s helpful to demonstrate how we can do basic arithmetic using boolean numbers.

Our numbering system is based on the decimal system, which was handed down to us by the Greeks, Roman and as far back as ancient Egypt. One way to represent a number, say 13, is by thinking about each decimal place as a digit times a multiple of ten, in increasing order. So, 5 could be thought of as 5 plus 10 to the power of 0 (since it’s the first position). 13 is 3 plus 10 to the power of one. 125 can be thus represented as follows:

1 * 102 + 2 * 101 + 5 * 100 = 100 + 20 + 5 = 125

Hieroglyphs of numbers carved into a temple wall in Egypt | Ancient history  archaeology, Ancient world history, Ancient egyptian
Egyptian glyphs for the number 1 million, three hundred thousand, thirty thousand thirty three hundred and thirty three.
AtoZChallenge X for X - that's ten in Roman Numerals - TravelGenee
Are those numbers or roman numerals?

In a generalized form:

(x_{n}x_{n-1}…x_{0}) = \sum_{i=0}^{n} x_{i}b^{i}

Where b is the base system we want to use (10, 2 or even 16!), x is the number we want to represent and i is the index.

Adding two numbers in binary is easy:

1 + 0 = 1
0 + 1 = 1
0 + 0 = 0
1 + 1 = 10

When two ones are added, we get zero and move a carry to the next place, just like we do in our own decimal numbering system. What happens if we get 5 – 3? What about subtraction? To calculate this, we have to include negative numbers in our computer. To do it, we use the 2’s complement system:

  1. We use the last bit as a sign operator (0 denoting positive, 1, denoting negative)
  2. We represent negative numbers by taking the 2’s complement of the number.

The number 4 in a 4-bit computer is 0010, and -4 is 1101, which also represents the number 13. We know this represents a negative number because the first sign bit is 1, meaning negative. To get the 2’s complement, we reverse the numbers so that 0s become 1s and 1s become 0s, and then add 1 to it.

Dropping In on Gottfried Leibniz—Stephen Wolfram Writings
Gottfried Leibniz’s explanation on binary numbers is unfortunately not much better than mine.

A special feature of using the 2’s complement system is that subtraction can be performed by using addition. For example, let’s say you want to do the following calculation, 5-3. To do it, we can represent the operation as 5 – 3 = 5 + (-3). To solve, we can just add five to the 2’s complement of 3 and get our result:

5 in binary: 0101

3 in binary: 0011
1’s complement of 3: 1100
2’s complement of 3: 1101

To subtract 5 from 3, add the 2’s complement of 5 and -3, then drop the overflow:
0101 + 1101 = 0010.

Which is 2. The implications of these results are significant, it means that a single chip will be able to encapsulate all the basic arithmetic operators on a hardware unit. This unit we call the ALU (Arithmetic Logic Unit).

The course was smart, in my opinion, in having the student create incremental chips that make up the ALU, rather than diving head first into it. Like many things in engineering, solving a really hard problem usually starts by breaking it into smaller, more manageable problems. Thus the following chips were incrementally implemented:

  • Half Adder: a chip that can add two bits
  • Full Adder: a chip that can add two bits plus a carry
  • Adder: a chip that add two binary numbers up to n bits (in our case, 16 bits)
  • Incrementor: Adds a binary number by 1, takes care of carry.

Compared with the rest of the chips that I previously implemented, the ALU is a monster of a chip:

Elements of Computing Systems

Let’s break it down. On the input side:
zx: zero the x input
ny: negate the x input
zy: zero the y input
ny: negate the y input
f: function that computes the output to be x + y (if f is 1) or x & y (if f is 0)
no: negate the output

On the output side:
out: output of the computation
zr: 1 if out is 0, 0 otherwise
ng: 1 if out is less than 0,  0 otherwise

Conceptually, we can think of the ALU as a chip that takes two input numbers and applies a series of boolean functions to it depending on whether those “control bits” are 1 or 0. The making of the ALU took quite some time to figure out, but it ended up being, as the previous lesson proved, an exercise in breaking down complex problems into smaller, more manageable problems. One thing to note is that this ALU was designed specifically for the Nand2Tetris course and the professors cautioned that this is a very simple version of an ALU, yet it is completely functional.

A small part of the logic gate design for my ALU

This was a great lesson where I was able to my continue learnings on how to make digital gates. It’s humbling to think, as a software engineer, that all operations and fancy code libraries we create are reduced to simple addition operations between two binary numbers – done billions of times over. I think it’s a testament to the rock-solid mathematical principles that underly these systems. The early programmers did not have a bunch of code libraries to help them: they had to rely on themselves to create these extremely complex systems at very small scale and I think the only way they were able to do it was by relying on mathematical certainty and reliable hardware engineering to enable their creations to work.

After this lesson, I wonder what methods or processes I can use to enable me to write code that accomplishes the task well and does it in a way that takes advantage of the hardware beneath it.

Building a computer from scratch

“People who are really serious about software should make their own hardware.”

Alan Kay

I grew up learning about software like what imagine many developers do nowadays: doing tutorials online and building cool apps in my spare time. I learned about algorithms and data structures and got to learn a LOT more in my job by seeing “how the sausage is made.”

While browsing though online forums, I came across a video of Alan Kay, the creator of the GUI interface and object-oriented programming – ubiquitous inventions that in their absence would make the current world unrecognizable. In this video he mentioned something that blew me away. To paraphrase:

Most ideas don’t scale well, they merely provide incremental change. What’s needed is a change in perspective, an opening up of the world, to look at something in totally new ways, that can provide order of magnitude improvements.

In my day-to-day job, I look at incremental improvements in my program by using shorthand notation, eliminating redundant dependencies, and using design patterns to solve common problems. But if I want to really make a change, if I want to become a really good programmer, I had to change my perspective at a fundamental level. More fundamental than software. More fundamental than the operating system. I needed to understand how a computer works.

Isn’t it amazing? As a software engineer, I have no idea how a computer works. I can say that I know how it works, such as “instructions are sent to the CPU which calculates stuff, and those results are in binary which get translated to assembly which get translated into code by a compiler.” But I don’t really know how that works or even what I am saying when I state these things.

That is why I decided to start the course, Nand2Tetris. It’s a freely given course with an accompanying textbook that teaches you, step by step, on how to make a computer from scratch.

The first lesson of this course focused on Boolean algebra. It’s essentially a branch of mathematics that deals with truthy statements. This is what computers boil down to. Statement are either true or false, 1 or 0. Combined together, they can form complex operations which, almost miraculously, give rise to the computer itself.

There are many different kinds of such statements, or Boolean functions. These include:

  • And
  • Or
  • Not
  • Nand
  • Xor
  • Mux
  • DMux

Each of these can be implemented through physical chips, called digital gates. These gates implement a a boolean function, which provide different outputs depending on their inputs. These input/output combinations are described by Truth Table, as shown below:

AND Gate | Digital Logic Gates | Electronics Tutorial

The first week of Nand2Tetris involved creating the digital gates described above through a single, primitive gate, the Nand gate. Based on the truth table representation of the chip, and its API, I had to create the chip based only on Nand gates and other gates which I previously made. Thus, brick by brick, a house is starting to be built. Some of the gates were straightforward to implement. For example, a Nand gate is simply an And gate connected to a Not gate:

logic nand gate

Another gate, the Xor gate was not so trivial. To come up with it, we can look at the desired truth table we want to achieve with the gate:


Then, we can create a boolean function that could represent the inputs and output, as long as the output is true. One such function is the following:

Thus by creating a statement that fulfills the truth table’s conditions, and simplifying it to its canonical representation, we can create a digital gate diagram that corresponds to that.

These digital gates don’t necessarily have to take a single number input, they can take a group of them, called a “bus.” The course specifies creating a “16-bit” computer, meaning that it is able to compute binary numbers up to 16 bits in length at a time.

This was an excellent exercise in flexing my logic muscles and brushing up on my Math skills. The next week will be a big step forward: building an ALU and Memory that will be able to both compute and store the processes that my computer will perform.

De-cluttering your digital life

If you aren’t paying for the product, you are the product

There’s a popular movement in the West called, “minimalism.” Although it spans many fields, a particular application is the de-cluttering of people’s homes, the cleaning out of extraneous possessions. As it clears out a space, so it clears up the mind –even the soul. I would like to propose we do the same with our digital lives. Why bother filling your life with Netflix subscriptions and purchases of latest phones when we know that life is most clearly enjoyed in the company of other human beings? Why would you let someone else steal your personal information and profit from their sharing? To this end, I’ve compiled a few questions which you can ask yourself to de-clutter your digital life, and perhaps break the addiction of screens that are dragging your life down.

  • Do I store my music on my devices or with a cloud provider? If it’s by a cloud provider, do I have a compelling reason to do so?
  • Who do I share my personal information with?
  • Do I use an ad blocker? If not, you should get one immediately. I recommend Brave.
  • Can I list, on a napkin or post-it note, the number of services that I’m subscribed to online? If you can’t remember, you should research and know; if the number goes past the length of the note, it’s too much. Digital services should be considered utilities and given the same kind of attention to each month.
  • When I open my computer, do I know exactly what I’m using it for? In other words, am I using my computer to accomplish a task, or is the computer using me to accomplish a profit?

The computer and the internet were made to make men more free in their ability to know and create. However, a person lacking in virtue can easily let these freedoms overwhelm their temperance and cause one to gorge on the endless variety of pleasures it provides. A virtuous individual will be able to use these tools to make him/herself better. A virtuous citizen will be able to use them to make the community around them, and their country as a whole, better. If we cannot make the right decisions about how we use computers, we risk having the organizations behind them (whether it be the manufacturer, political party, etc.) take control over our attention, and therefore, our minds.

Welcome to class, this app will be your teacher

In becoming a teacher, I’ve lost my mind…but found my heart and soul.”  

Students looking at the Museum’s mobile app

When was the last time you downloaded an app to learn something? This month? This week? Today? Education is one the largest app categories on the App Store, and the advent of COVID has only increased the number of educational apps that assist with remote learning. The trend of online learning has increased in recent years thanks to the advent of machine learning and big data —an increased amount of data means recommendations and attuned instruction can be provided to users based on their previous behavior. This generated enormous success for software companies: apps like Duolingo, Coursera, Lynda, etc. have become household names, and the companies behind them became multi-billion-dollar enterprises.

At the same time, the number of education majors in the United States has decreased over 20% in the last years, one the greatest declines in all majors. The salary of a teacher, especially primary education, is one of the lowest in the nation. So much so that 1 in 6 teachers need to take another job to make ends meet. It is a difficult, stressful job with an enormous workload and little to no recognition.

If the success of educational applications are increasing, why is the number of people who live for education declining? What has happened that’s caused our society to shift the responsibility of learning, one the most fundamental aspects of being human, from teachers, to software?

Like an artist that draws lines and ovals to ketch a painting, I won’t be answering this question fully, but rather hint at where the answer may lie. This will be forthcoming in my next post…

The Culture of Space-Faring People

Up there, just above us, is the Moon…Unrubbed by wind. Unwashed by rain…Standing there, unblinking since time began.” — Moonwalk One, 2009.

Fifty years after men first walked on the moon, private corporations are readying to make space travel, in the words of Elon Musk, “as common as air travel.” The science of space exploration, much like the other sciences we study in the modern world, frequently eclipse the values and meaning we derive from them. What are we to do with the realization that space travel will be so common? How would we define ourselves as a species, as a community no longer bound by Earth? Is venturing out into the lifeless void of space even worth it? 

These and other questions linger about like dirty dishes we leave in the kitchen sink —they are ever present in our minds, and will start to stink if we don’t do anything about them. For decades, a techno-centric view of the world has been dominating the discourse of education and in the minds of our leaders: STEM-focused curriculums, the rise in engineering degrees coupled with a precipitous decline in the humanities, are evidence to the decline of “value-based thinking.” As the popular intellectual Sam Harris succinctly stated: “When you are adhering to the highest standards of logic and evidence, you are thinking scientifically. And when you’re not, you’re not.” That is, all human knowledge is scientific knowledge; if it isn’t scientific, it is not real knowledge. 

By reducing our view of the world in this strict sense, we become blinded to the other kinds of ways of knowing about the world, such as stories. But the stories our culture sells aren’t “fiction” anymore: they are “science fiction,” as if to indicate the supremacy of scientific thought in our collective imagination–now bound by the physical laws of our universe. No more talking animals, bring in the aliens instead! A wardrobe that leads to another world? Well that’s just a wormhole built by scientists. No heroes that hurl thunder, only genetically modified soldiers. I don’t want to give the reader the impression that I’m a science-basher–I am a software engineer after all. Science helps us understand the natural world by observing it and deriving laws that describe our universe at large; it does not tell us about what makes for a happy life, what a rose smells like, or why we should even bother to study the universe at all. In this sense, there’s a dire need to ask, and answer, the moral questions that arise from our exploration into space, and not just the scientific ones. This isn’t just an ethical question, it’s an epistemological one: if we don’t ask the whys, we will never attain a full understanding of the universe. 

One can think of the recent developments by SpaceX, NASA and other small companies in making accessible space travel as a distraction; a commendable but unnecessary enterprise that does more to fill up the ambitions of billionaires instead of the bellies of the poor and hungry. Isn’t our world enough to fill our needs? Can’t we instead spend our precious time and energy in creating communities of solidarity? Shouldn’t we learn to love one another first before venturing out into the void? 

I believe there are many answers to this question, but there’s one that stands out by its sheer compatibility with our biology and spiritual make up which I wish to make a case for. 

Fossil evidence tells us that man first appeared on Earth in the tropical heartland of Africa about two millions years ago. Since then, he ventured out: first into the Middle East and Europe, then India, China, the whole of Asia, and finally, the Americas. What drove those first people out of their evolutionary crib? Hunger? Competition? War? We don’t know. But then again, we surely know, as anyone who’s been forced to sit in a room for a long time can attest. Remember that time you were explicitly told not to do something and immediately felt a burning desire to do it? We all carry that fire within us — that curiosity, desire for exploration, rebelliousness even. Could this same feeling also have driven our ancestors out of their homelands? 

Our desire to explore is innate. What is the source of this desire is debatable, but to deny it exists is like saying we don’t feel cravings when presented with a delicious piece of cake. Like that piece of cake, we are compelled to engage in the act of discovery when given the chance, and the undertaking feels like a reward in itself. In the course of history, exploration has proven to be excellent at displaying the better parts of our nature: teamwork to accomplish a goal, patience in the face of overwhelming odds and suffering, ingenuity in crafting solutions, the list goes on. Aristotle tells us that something is most itself when it is able to demonstrate its own excellence. The function of excellence in man, according to him, is his reason. It is that higher capacity to think, discern and understand that separates us from the animals and makes us “a little less than the angels.” Isn’t this excellence present when man explores? Who can deny the teamwork involved to visit far-off places? Who can ignore the patience exercised in the face of overwhelming odds, of ingenuity required to craft solutions, of courage to face dangerous obstacles? To venture out into the unknown, is to venture into the deepest parts of our soul to find out what we’re made of. Outer space, the ultimate unknown, fascinates us in its ethereal brilliance and confronts us with cosmic dread. Space travel indeed can become the last, great frontier of exploration left for humanity to conquer. 

What does a society that accepts this proposition look like? What, in other words, does the culture of a space-faring civilization look like? Consider: the stories which space-faring people could tell one another will just, if not more outstanding, than any fantasy we can conjure up on Earth. By expanding our imagination to the literally cosmic level, we open up ourselves to a universe of unimaginable beauty, danger and excitement. These fantasies and stories meld closely with the amazing science which the civilization would have created. The achievements of the human mind would be in full display as people regularly bend the rules of space and time to travel vast distances to other worlds. The conception of what these people believe possible would be much more flexible than our own. The creation of such technologies and the incredible wealth of knowledge necessary to understand and describe them would probably mean that there would only be a few who understand how these machines function, with the vast majority of people content to go about their daily lives. It would be interesting to consider whether the common people would see the marvels of technologies which they come into contact with as “magic,” or accept a passing description of them much the same way one presses to ask a person how a plane flies.

Throughout the centuries, people have described the place they live in as a prologue to the history that took place there. A person born in France isn’t just born in the modern nation-state of “France” — she carries within herself a whole mythos of francophone culture, imbued with the spirit, blood and sweat that was poured within the bounds of the society she lives in. Even the first pilgrims that arrived to America could recognize that they weren’t alone, that the lands which they lived were inhabited far longer than their memories could imagine. But what of settlers who arrive on a new planet? What would they think of themselves as they start a new colony? With the only connection to the rest of humanity being the delicate strand of their own past, the new generations born out of their parents could feel far greater independence and self-reliance than societies on earth do. 

The increase in technological prowess will not change how people behave, merely the means and ways in which they can pursue the object of their desire. As our mastery over matter increases, will the mastery over our senses increase as well? Our appetites are infinite, and nothing in the universe can satisfy them completely. It is plausible to assume that, if the technology becomes available, some will tap into the Tree of Life to create (as oppose to capture) human slaves that do their bidding. As the creation of nuclear weapons, biological and chemical weapons have shown, the capability for man to commit crimes of depravity increase as his means (i.e technological power) increase. Cain killed his only brother in jealousy; will a future Cain kill billions in amusement? Facts can tell us how the world works, values tell us how we should treat it. It remains to the hearts of future explorers to discern how they will educate their progeny in light of their increased power. A person in the 1800s could only harm as much as his rifle allowed; the same person in the year 2300 could destroy an entire continent (perhaps he/she have enough access to anti-matter). Alternatively, if individuals are not as effective in self-government as their technology would allow them, we could imagine a government that maintains absolute control over them to effectuate the safety of its citizens. A Leviathan-like state that tracks its citizens’ every move and quickly effectuates justice could maintain the tight grip required to keep society from obliterating itself. For “at the end of the path of liberation lies enslavement. Such liberation from all obstacles is finally illusory, for two simple reasons: human appetite is insatiable and the world is limited” (Patrick Deneen, Why Liberalism Failed).

When God gave Adam the garden of Eden to tend, He gave him dominion over all creation. He did not say, “Everything under the atmosphere you can explore,” or “stay within the bounds of the garden I made.” Yes, for a long time, our species has dwelt in the circle of the earth and looked above to the stars as the plane of the gods. We can now expand our horizon of understanding to include this plane, acknowledging that the eternal fire wasn’t contained there, or anywhere else for that matter, for it dwells outside and inside all there is. We can venture out with confidence therefore, into the unexplored realm of the celestial heavens, assured that the sense of wonder that propels us is good and guided by the creator himself.

A prayer before coding

Lord, I am about to begin work on my computer. I thank you father, for having given humanity the light of reason to be able to make such wondrous machines. I thank you for my desire for knowledge, which I know can only be filled by knowing you.

I pray, dear Lord, that you may help me in the work I am about to begin. Help me stay focused and keen in my work. Help me to control my mind and heart so that I don’t drift into distraction. No, Lord, be the cloud ahead of me, the pillar of fire above me that leads me to clear thinking and piercing insight.

Thank you Jesus. In the name of the Father, and of the Son, and of the Holy Spirit. Amen.

Lunar Man

Update: Hello dear readers. I apologize for not adding more content in recent months. Life’s taken a turn for me, thankfully for the better, but the rocking of my boat means I haven’t been able to post more on this blog as I’d like. But no fear – I have lots of ideas written down which I’d like to share in due course. They range from space travel to morality, to epic poems and potential new ventures.

I’d like to share a poem I just wrote that attempts to capture the character of what I believe could be the leaders who will take us to our Earth’s little sister, the Moon, and beyond. There was a lot of thinking behind it and I might even come up with another article just to explain what’s behind the smoky allusions and double-entendres.

I liberally took inspiration from Native Indian and Aztec dances. I also had some inspiration from the screenplay for a TV show, Moonwalk One. Finally, the thoughts came to my mind about the public character of the leaders we see such as Elon Musk and Jeff Bezos – people with immense power and wealth who dedicate their lives to creating incredible products and services, though perhaps at the cost of their own selves. Enjoy!

Behold the man from the moon!
See how he comes, conquering,
Averting earth’s nearing doom
Through cosmic tech conjuring
Machines and ships for the stellar road.

His Argent garb shines, dazzles,
The clinkering chains resound,
Hands are golden, smile is sly,
Surrounded by jewels, yet frowns
Behind a helmet with Draconian design.

Computers twinkle like a firefly,
His machines roar like a hurricane,
Like lightning they illuminate the sky.
Riches pile up beyond any reign.
They’re piloted by Apollos & Artemises.

His hands reach to the unknown,
Mars and Ceres they take hold,
And Jupiter he controls.
For him life’s only a fool’s gold.
He saves the world. But can’t save himself.

Our own little Eden

Thinking about the time he walked on the moon, astronaut Edgar Mitchell from Apollo 14 remarked that, while seeing the earth from afar, he developed “an instant global consciousness, a people orientation, an intense dissatisfaction with the state of the world…You want to grab a politician by the scruff of the neck…and say, “Look at that!”

It’s safe to say that during the last couple of decades, thanks to improvements in transportation and the invention of social media, people have developed a sense of “global community.” The plight of a starving African family can trigger a rallying of support in the form of a GoFundMe page in America. The sight of protests in America can inspire British students to do the same in Trafalgar Square. Our sense of belonging and need for community —heightened by the loneliness of quarantine— shows that we work and live best when we sense that our community is secure and flourishing.

But it’s the opinion of many and my opinion as well, that this shared sense of belonging is breaking, that the ice beneath us is cracking and the cold waters of uncertainty are beneath. There are many angles from which one can view the disintegration of communities around us, much like a diamond reflects the same light in a thousand different ways, but I’d like to hone in on two such reflections: our planet’s ecology and the formation of human virtue. The latter concerns the natural world and our behavior toward it, the latter concerns how we should behave as a society. 

The care for and protection of the environment is not just a point of interest to our generation, it is instinctual. It is an axiomatic proposition that every individual and community should do their best to take care of the resources they use and develop a consciousness of how they affect their environment. Different people carry different levels of this consciousness, but I haven’t found someone yet who’d prefer the construction of an oil rig over the preservation of a coral reef. We strive to take care of nature and shame those who don’t. But it is a point of fact that the resources we use are finite, and thousands of years of exploitation have left the world, well, looking quite exploited. There are so many forests we can use, so many miles of earth we can dig up for gold, so many tuna in the sea to make delicious sushi. Two thousand years of human activity — actually, more like 200 years of industrial activity— have shaped the world such that we can see the difference from space. Even the most committed Anti-Malthusians can recognize that two thousand years more of increasing activity won’t just do damage to the earth, it’ll damage us as a species. But it doesn’t take a Malthusian to resolve this problem, that is, population control is not the only answer to allow the species to continue. 

Just look up. 

At our cosmological doorstep is the moon and Mars, massive bodies full of usable land. We now know that we can grow plants on Mars, and we can make the desert bloom. And if we’re able to make the desert bloom, I can’t see why we can’t with Mars. 

Let us expand out into our solar neighbors: Mars, Venus, Titan, Ceres. These will become names our great-grandchildren will know just as they learn about the Moon. Mars has the combined surface area of all of the earth’s continents, and a mountain that’s the size of France. Venus’ thick atmosphere could harbor cloud cities akin to those in Star Wars. Titan’s got a complete water cycle (rain, rivers, oceans) but with liquid Methane; and Ceres could be the Solar System’s next biggest cantina joint — a stopping place between Mars and Jupiter. A nearby asteroid, 16 Psyche, has enough gold and precious metals to make everyone on Earth a trillionaire. Such wealth would make Jeff Bezos look like a beggar in comparison. The only limitations to access this wealth are human ingenuity and capital allocation. The universe therefore, can become as exploited as human vice desires it to be, whilst the earth, our Eden, can become a garden world, a beautiful reminder of the cosmological crib whence we came from. Feel free to drop a nuclear bomb on the next asteroid you find, but don’t cut down a forest on Earth. 

But there’s an ever deeper benefit to the exploration of the universe than mere resources. For man does not live from bread alone. My last point to make is probably more controversial but I’m confident that the lessons of history confirm it. That the exploration and colonization of the unknown will breed a society that is stronger, more ingenious, and more virtuous than that of our present, decadent age. Rome reached its glory when it defeated Hannibal and the Carthaginian Empire. Europe burst into a renaissance of art and science after history’s most fatal pandemic. America’s status as a superpower rose from the ruins of Pearl Harbor and into the Space Age. Faced with a mortal enemy, a hero rises up to defeat the great dragon. If we are to expand to space, the stakes could not be higher: a thin film is enough to separate our intrepid explorers from the vacuum of space. Great stars, black holes, gamma ray bursts, extreme heat and cold and all kinds of hostile environments to human life stand in our way. It is up to the genius of all people, and their will to find a way to survive, that will forge the virtues,  create incredible acts of heroism and ultimately drive the destiny of humankind. The peace and stability of earth is the universal anomaly, not the other way around. 

The expansion to space is not a far-off dream. SpaceX and a thriving startup space scene is making it easier than ever to get started on this promising industry. For now, it is the will of individuals that are deciding the course of our road to space, not governments. However, I can’t help but think of the possibilities if our government would organize around this goal. And if the government is made of the people, then I believe that we can find a way to move the culture towards this goal. This might be the final solution to our problem of global warming, the destruction of Earth’s ecology, and dwindling size of our natural resources. And it might just make better citizens too.