New Countries

April 2021

@balajis has recently proposed how futuristic countries may come about. This seems enabled by a combination of dissatisfaction at existing governments[1] and new technologies (blockchains and cryptocurrencies, in particular) which are prompting ideas of radically different social structures. It's an interesting and thought-provoking idea. He's also offering $100 in BTC for constructive feedback... so here goes.

TL;DR: He's a strong and convincing storyteller. Ignoring that, the idea still appears to stand on its own fairly well, and he's not the only one doing it. Amoveo (cryptocurrency) has some related ideas.

Context

In March 2021, Balaji spoke with Tim Ferris for over 3 hours (one of Tim's longest interviews) about this and several other dramatically futuristic topics, reaching millions of listeners. This episode might go on to become one of Tim's most important episodes. Or possibly the most comical. Either way, why should society remain the way it is now anyway? Of course it'll change. And since innovation seems to happen simultanously, there are probably other people thinking about crazy new country structures[2].

So what is Balaji doing?

He has a new project called 1729. It's a kind of community, centered (for now) around a newsletter and website. Nothing new there.

He's made one important change to the standard "newsletter community" model: he's building an economic model of participation into it which rewards value-adding activities like learning skills (education) or being healthy (healthcare) with cryptocash that holds value outside the community. It's like someone offering you money to quit your job and move across the ocean to join their startup.

Except he's doing this with the whole world, and it's a country you're being paid to join, not a business.

Even this isn't that novel; online-to-offline communities have been done before, or are being done (eg the Roam Research community maybe starting a ranch in Utah and living together under the iconic/heroic Conor). But not at this scale.

Possible Outcomes

Let's assume he has the funds to support $5000 ($100 for the first 10 submissions for 5 tasks) per week for 5 years ($1.3M).

After a few years there'll be several million people begin participating in this community (citizens of this country). They'll be talking, doing life together, sharing conversations and experiences.

Over time, shared beliefs are established, built around real economic value (and therefore minimising spam/trolls).

As these real relationships build, people who interact online start to move closer together offline, because some things are just easier and nicer to do offline (eg have dinner together). There may be some critical number of members in a particular location to catalyse this, but a physical community absolutely could form, like many other existing physical communities.

As the community grows, gains members, and prospers, the members of this "diaspora" become influential outside the community. This is really the cornerstone of the theory, and depends on the community being filled with people interested in adding value. Are Balaji's heuristics for people sufficient? The critical ones might be:

  • Willingness to do "tasks" (work) for others
  • Interest in personal health (decreasing need for a healthcare system)
  • Desire to learn (which increases the quality of task work and compounds in value)
  • Willingness to invest financially in the community (pay others for their work)

Alternatively, after some time, people might just become jaded and leave. Possible reasons:

  • Unhappy with governance
  • Insufficient real liquidity or value creation
  • Some unknown reason

More likely, other people will have similar ideas and we'll see lots of other new countries beginning, and possibly some long-existing digital communities realising their power and deciding to exercise it.[3]

Metrics

Balaji includes some metrics for his country.

Population

An obvious one. One less obvious by-product if this metric is highly public is that it may encourage people to spread the word, prompting FOMO just like you get when you see a green stock ticker.

On-chain GDP

I love this metric, because measuring it will encourage economic activity to move on-chain.

There will be (even more) really interesting dynamics with local governments as this happens. For example, if you are earning, investing and spending Bitcoin in a "foreign nation", what should your local tax contribution really be, and why? How could that happen?

Earning

  • If you're providing value to someone online, cryptocurrency is the most efficient way to compensate you. Think this is a strong statement? Consider the work required to transfer traditional currency, making sure to include all the work, and not just the energy used by the network infrastructure at transaction time. The bulk of the energy consumed by traditional currency is actually in the financial institutions, the people working at those institutions, the laws (and lawyers) to govern it, etc. Next to that huge energy expenditure, Bitcoin might seem pretty green. And there are new blockchains offering more efficient systems (though there are stability arguments and philosophical arguments[4] against this).
  • So it's likely that compensation in cryptocurrency will increase and eventually (mostly) replace traditional currency.

Investing

  • Like traditional currency, crypto can be invested, loaned, and otherwise used to grow wealth. But more generally if you're holding the currency and using it for a significant percentage of your expenditure then, through opportunity cost, you're invested.

Spending

  • Why isn't this happening already? Probably regulation.

Acreage

And here the virtual community is tied into something undeniably and measureably physical. This metric is related to the requirement of community influence, as those holding land tend, historically, to influence those who don't.

There's already a lot of real-estate wealth held by people who became rich on-chain, and it's likely these people would be interested in this new country since it'll be full of other people like them (network effects), so there's a good chance that this metric could rise pretty quickly.

It's worth mentioning that, similar to futarchy, this is something that @zack_bitcoin has been thinking about for Amoveo.

Questions and Thoughts

How is policy created?

ie, how does politics work? How are decisions made in this country? How is a military mustered, or education provided, or taxes levied? And are those even necessary in this new country? Could the country use a futarchy-based system? Amoveo is one crypto-currency experimenting with futarchy built into the protocol. Essentially this allows citizens to "vote with their wallets" on everything, not just which companies or products they like.

Will there be a barrier to entry?

There's a growing gap between those who believe in crypto, and those who don't. There are already many Bitcoin millionaires. If this continues, and it seems likely it will, then at some point it'll be extremely hard to catch up with those who believed from the beginning, and at that point, those people are their community with their own financial moat. Even if the blockchain growth doesn't continue, maybe there's already enough "off-chain" wealth which was created "on-chain" that those wealthy people (and their ideologies) can bootstrap a very real new physical community.

What could we throw away in current systems?

How much baggage do our current governing or societal structures carry which we could throw away in Balajistan? Policy is organisational scar tissue (something bad-a wound-happens, and a the policy-a scar-forms in its place). Some institutions are clearly outdated:

  • Banks and classical financial institutions (DeFi + Blockchain are inevitable)
  • Schools (glorified day-care -> guided creativity)
  • Legal systems (lawyers -> blockchain programmers & mathematicians)

What happens when people do bad things?

They can be fired from companies, but how will this new country deal with that? This could be delegated to the question of governance, but that feels like a bit of a cop-out. Policing and maintaining law-and-order are necessary and will be tricky. Then again, these problems of policy are well; it's just a case of implementing them.

Will there be reification competition?

(Thanks @mkstra for this thought) Will real cities compete to host this country (or part of it)? As the massively beneficial outputs and wealth become obvious, it seems likely that savvy mayors will work on making their cities attractive for members of the community. And would this conflict with the sovereignty of either party?

When and where will it be?

Are we building this thing for us, or for our children? Which countries will allow such a self-governing state to exist in their territory?

One way to start small: take, for example, a small US state, and convince enough people of influence there to join, so that, over time, this state effectively turns into the Balaji-state. The new state would have to abide by the same federal laws, but internally would be full of the new state values and culture. This probably isn't optimal as US immigration laws will prevent many people from taking part.

Instead of congregating in one place, the more likely (and simpler) scenario is that this society would congregate in multiple physical places simultaneously. This could begin with local meetups over the next year or two. The people attending those meetups would be the early-adopters, and those keen to build, so would probably be keen to, for example, move close together, begin working together in spare time, etc.

What about a military?

As the china-taiwan conflict reminds us, brute force and violence is still very much in vogue.


Notes

[1] - Is this a good proxy at dissatisfaction with life in general, and so is the government able to regain their reputation with some clever policy changes? Or is this a one-way change?

[2] - If societal change is fuelled by technological change, as it feels it might be, and if technological change is accelerating due some compounding effects, we should expect society to change more in the next 100 years than it did in the last 100 years. Though this is not necessarily true; technological change tends to come in unpredictable steps.

[3] - As artists are realising, they have so much power in being the gatekeepers to their community. In the information age, they own the labels, not the other way round. See Non Fungible Taylor Swift

[4] - Proof of stake allows the rich to get richer (rewards are a percentage of staked amount, resulting in compound growth for the stakers). Proof of work allows anyone to do "an honest day's work for a days wage". Counter-argument: the difficulty of that day's work has increased to a point where the wage isn't worth it for most people.

Thanks

Big thanks to Rico Meinl and Markus Strasser for reading drafts of this and suggesting improvements.

Blockchain mail (b-mail)

March 2021 Draft - still thinking about this.

I keep coming back to this idea of an email-like system based on smart contracts.

The core proposal is that there should be economic incentive to only communicate valuable information. Sending an e-mail should cost "something".

Why doesn't this exist now? Possibly because the obvious way to do it involves a centralised authority which charges you (eg a post-office), and that isn't appealing for multiple reasons. But actually we could implement a system like this quite easily with blockchain (a mutually trusted mechanism of transferring wealth) and smart-contracts (a way to write decentralised software).

As a convenient bonus, encryption is first class.

The core challenge is to determine the pricing mechanism, and, ideally, the network itself would determine the pricing mechanism (eg automatically penalising spammers). A secondary question is whether we need a way of establishing some kind of trust between parties.

So how would this work?

The basic mechanism is straightforward:

  • To send a message to someone, you use their public key to encrypt and wrap the message (headers+body) into a token and publish it on the blockchain.
  • A smart contract takes up your message, determines a suitable messaging fee, and transfers the fee from your account to your recipient's account, pushing the message to the recipient at the same time.

    • There's some encryption magic to ensure the message is only readable once the smart contract has processed it.
  • The recipient decrypts your message with their private key and reads it.
  • After that, and depending on the messaging fee algorithm, or network rules, anything more complex could be done.

Pricing structures

The cost to send a message could be fixed or determined dynamically. For example, it could based on

  • The size of the message.
  • Some other property of the message content (eg "information density")
  • The number of times you've messaged that person before
  • The number of messages you send per T (rolling time window), which could discourage sending many messages
  • The "correspondence factor" of the two participants (eg ratio of to/from each party, possibly with a time-factor). This could reduce the cost for friends who talk often.
  • Could the contract involve a "contacts list"? ie the message is free if both people agree for it to be free.
  • The number of people you're sending the message to

Between friends, you'd probably want the cost of messaging to be extremely low, and in a situation where the correspondence factor is high, the cost would be expected to average out. In this situation, it would be important to have extremely low transaction fees, or to have a way to batch transactions (ie level 2). For ETH, this would probably be a level 2 protocol, though if a fast and cheap network like Avalanche is used, it could be done on-chain.

Note that this would be real wealth being transferred between people, alongside information. You'd literally be paying people to read your messages. The pricing mechanism would have to be designed to make it totally cost-prohibitive to spam people.

It's like the traditional post system, except that we pay each other instead of a centralised third party. We pay each other to contribute and act as valuable citizens.

Also, there could be many networks, and each network could have different rules. So, for example, you could have one b-mail for personal correspondence, and another for newsletter-style correspondence, and the pricing mechanisms could be quite different. Each network has a different set of smart contracts, built on the same fundamental mechanism.

Reputation

Why is reputation needed? Why can't we just use money? Because most games humans play are about winning either wealth or status, and we tend to trade one for the other. Blockchain communities are necessarily collaborative, and reputation is extremely valuable in a collaborative society.

How does one earn reputation? By sending emails which are not marked as spam.

In a system where we want to incorporate some kind of reputation system, after reading the message, the recipient could publish an acknowledgement on the chain with an indication of how valuable the information was. This could be as simple as yes/no/abstain. There would probably need to be rules here to prevent gaming the system. For example, the weight of the acknlowedgement could decrease over time. The pricing mechanism could then be based on your reputation.

The reputation would be stored in a token, and a set of smart contracts would goven their behaviour.

Reputation could be fungible (ie if I have 10 reputation, I can "endorse" someone else up to 10-N reputation, N tbd, for example - there could be other endorsement rules). This could permit anyone to create multiple pseudonyms which, with some ZKP magic, all "share" their reputation, but cannot be linked. This could even work across networks.

Issues/Questions

Reputation systems are hard, and this is vulnerable to the classic average rating problem, where one extremely negative review ("you killed my friend") is lost in a sea of mediocre reviews ("I use this sometimes, works ok")? (XKCD ~ TornadoGuard)

What does having more reputation "buy" you? Other than cheaper messages? Maybe there could be rules that allow people to block messages from senders with reputation below a given value.

Why does this work?

As a recipient, if you value the information, you're incentivised to not mark it as spam (because if you do, you're less likely to receive more of it).

As a sender, you're incentivised to think carefully about the information you send, because it costs you real money to send it. The meaning of "think carefully" would depend on the network rules as described above, and it could, for example, involve some kind of reputation consideration.

If (and only if) the rules are chosen carefully, and assuming there is an equilibrium condition (that is, the cost of messaging is stable in some sense), the net effect is that the information transferred is mutually valuable to both the sender and recipient, and everyone is happy.

Of course, this system doesn't feel at all necessary for communicating between friends, and it seems likely that email could continue to be the protocol of choice there. However, as a mechanism of communication between organisations, or as a mechanism of news-distribution, this could be nice.

Appendix

A deep problem with blockchain: how to change applications after they've been deployed.

  • One general solution might be a kind of contract which automatically transfers wealth (eg COIN1 -> COIN2) when certain conditions are satisfied. But is there a Gödel loophole here where the master contract itself can be changed (maliciously) to extract wealth?

What does decentralised mean? Ethereum is a platform for hosted protocols (smart contracts). The current internet is a home for applications. Protocols are valuable because anyone can participate without needing to obtain consent from a central party.

2020: A Year Of Serverless

February 2021 Draft - still thinking about this.

I spent most of 2020 working with Serverless systems, and this is a summary of my thoughts and findings.

Here's a controversial statement: cloud engineers are not programmers. The industry (including me) is building cloud applications like hardware, not software. Most cloud teams have a heavily waterfall (!) style process, though they won't admit to it.

There's a requriements gathering phase, a design phase, an implementation phase, and a test phase (all of this usually spread over several weeks). Care is taken at every step to plan things because infrastructure, like hardware, is hard.

Shouldn't we aspire to treat cloud applications just like real software?

Serverless technology (cloud functions, not platforms) is moving us in the right direction, but isn't there yet.

Microservices are an anti-pattern?

Why do we use microservices?

  • Simple replacement of service components (deployment)
  • Separation of concerns
  • Multiple programming languages in one system
  • Other reasons?

Problems they cause:

  • Rigidity and brittleness, leading to up-front design work.
  • Testing complexity
  • Waterfall-style development (services, agree on apis, implement, integrate, test).

Microservices done badly are just distributed monoliths, which are 10x worse than normal monoliths, because network unreliability.

Are they an anti-pattern which only exist because current deployment methods aren't good enough, and the application abstractions are leaky? Maybe we formally optimise structure because there isn't a compiler which can optimise it for us).

Could we apply traditional software engineering approaches to cloud systems?

For example, if we had a C/C++ program with multiple components, we would compile each component individually, and then link them together to form the complete application. We could let multiple teams work on the complete application - each team builds libraries (microservices).

If our cloud deployment system was smart enough, it could iteratively deploy the application, so we eliminate all the reasons to use microservices (except the multiple languages reason).

Serverless - Soft Infrastructure

There aren't that many ways to build serverless projects, Serverless Framework is great for small projects, but if you're doing something bigger, you'll need to understand AWS.

Cloud functions are probably commodities -- most cloud providers have them and prices are being driven downwards and performance is shooting upwards. This is great for us, so I spent a big chunk of 2020 (during the Covid-19 lockdowns) working on a different approach to serverlesss computation.

The key goal was to take the orchestration logic out of the programmers hands, so that a "compiler" can determine the optimal infrastructure and glue logic. Just like a C/C++ compiler determines the optimal sequence of CPU instructions. The novel contribution was to allow the programmer to use cloud functions as threads in a concurrent programming language. This is then general and poweful enough to implement any kind of workflow.

The implementation is a runtime (virtual machine) and a compiler. The runtime defines semantics for concurrent computation distributed across multiple threads. The compiler maps programs into infrastructure for specific cloud providers.

Secondary goals:

  • Development speed
  • Portability - as the programmer does not directly specify the infrastructure, one could define compilers and runtime environments for any cloud.
  • Zero infrastructure management - programmers shouldn't be doing infrastructure, because infrastructure is hardware.

Result: Hark.

Some questions

Is it better to build a new language and VM, or implement a cloud-native runtime for an existing language/VM (eg Python or Go)

C is heavily designed for a specific CPU architecture, which is precisely what allows you to build performant programs in it. Why should cloud be different?

Go might be "trivially" portable.

Is a turing complete language really necessary to describe the kind of

systems we implement in the cloud? Or is a workflow language sufficient (ie, Airflow, Dagster et al)?

My gut is that programmers using workflow-style systems eventually try to write "proper" programs in the workflow style, because that's what programmers do.

Could we build something like Hark on top of Firecracker to orchestrate functions?

This could reduce the startup overhead...

But it'd be a new platform, and would compete with AWS Lambda. Probably not a great idea.

How do we make data sharing performant?

Storage and sharing data across threads is slow, because there's network traffic and we can't control the placement of our containers in AWS's infrastructure. Are we just waiting for someone to build a better database? (distributed database optimised for specific workloads).

Reading Material

Quite a few institutions and clever people are thinking about ways to formalise serverless computation. This is great!

Formal foundations of serverless computing. 
Jangda, A., Pinckney, D., Brun, Y., & Guha, A. (2019). Proceedings of the ACM on Programming Languages, 3(OOPSLA), 1–26. https://doi.org/10.1145/3360575

  • Great academic paper which lays out a formal lamdba calculus for distributed computation across cloud functions, encapsulating the execution semantics (retries, etc).

Formalizing Event-Driven Behavior of Serverless Applications. 
Obetz, M., Patterson, S., & Milanova, A. (2019). http://arxiv.org/abs/1912.03584

  • Another nice formal definition of operation semantics for serverless systems.

The Stanford Builder (GG). https://www.usenix.org/system/files/atc19-fouladi.pdf

  • Some great work at Stanford. The ffmpeg demo is incredible.

The Design of Stateful Serverless Infrastructure. https://www.vikrams.io/papers/thesis.pdf

  • A completely new platform for stateful "serverless" computation. Very nice work; bold move to entirely replace AWS Lambda / GCF.

Serverless: I’m a big kid now. https://www.simplethread.com/serverless-im-a-big-kid-now/

  • A great summary article of serverlesss in 2020.

Build What They Want

January 2021

TL;DR: I spent years mistakenly thinking I understood what Paul Graham meant. I'm trying something slightly different now.

I prefer a different wording of Paul Graham's advice for startups.

Build What They Want makes the precedence obvious: before you start, you have to find out who they are, and what they want.

It’s not about building what you want.

Paul Graham starts with “build something”, and that’s what hits your subconscious first, allowing the “something” to remain ambiguous. I'd prefer to start with “build what”, so you’re forced to evaluate the “what”. The original wording lets you think that you can build something and convince people to want it later (once you show them and tell them how great it is, and all the important features it has...).

This changes everything.

My problem is that I find it too easy to imagine things that I could build, and once I’ve imagined something, I struggle to not want to build it exactly that like. Because I enjoy the process of building.

Building is a wonderful thing to enjoy. If you want to start a businesss, just do it differently.

Instead of applying imagination to products, apply imagination to companies. What company could exist if someone (you) went and built it? What excites you? A company is built on something that people want.

How do you know what people want?

Talk to people. Understand them. Ask questions.

Choose who you talk to. Talk to people who you think might want something that you would be excited to build. Don’t imagine the product though. Imagine the kind of change you could make in their lives.

They probably won’t be able to describe exactly what they want; the skill you must develop is in spotting the unexpressed (or inexpressible) want.

But whatever you do, your goal must be to build something they want.

This is strongly related to jobs to be done. The things they want will always be related to the things they already do. Find that link.

Last year I built something that I wanted to build. I only partly wanted the final product. Mostly, I wanted the experience of building it. And actually that turned out to be extremely valuable, though it wasn’t the right way to build a business.

Then again, it’s important to geek out and build interesting things without immediate value. Contribute something novel, and maybe one day it will be useful to someone else (even just as prior art).

And if you’re going to build something for the love of building, you should definitely do so in public. You’ll make new friends and learn much more. So publish your code, get a website up, and tell people what you're doing.

You can start by telling me.