Imported two very old blog posts from medium

This commit is contained in:
JP Hastings-Spital 2023-05-21 21:15:56 +01:00
parent dad8253bc3
commit 1ec6441129
16 changed files with 347 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 KiB

View file

@ -0,0 +1,155 @@
---
title: "Why you should pay attention to Ethereum"
emoji: 🔷
date: 2017-05-21T18:53:19.558Z
draft: false
tags:
- cryptocurrency
- ethereum
- money
---
[Cryptocurrencies](https://en.wikipedia.org/wiki/Cryptocurrency) are [stealing](https://www.forbes.com/sites/laurashin/2017/05/20/as-cryptocurrency-markets-reach-new-highs-the-ethereal-summit-paints-a-rich-future) [the](http://fortune.com/2017/05/20/ethereum-ico-blockchain-token/) [limelight](https://www.ft.com/content/61cdc5c8-370e-11e7-bce4-9023f8c0fd2e) in the world of finance at the moment. They definitely deserve your attention but I wanted to voice some interesting implications of their success that bear levels of consideration that only getting thoughts down in words can provide!
The first section below goes through the basic concepts of digital currencies assuming as little prior knowledge as possible, and beneath is a more editorial look at why I think the complexities of systems like this are useful and bound for success.
## Foundational concepts
Before I start, I should give some background for readers who are less familiar with cryptocurrencies like Bitcoin and Ether and how they work. There are a host of articles you can find on every aspect Ill cover, so Ill try to keep it brief and let you dig deeper as you deem necessary.
### The premise
Cryptocurrencies are borne of the belief that some of the foundational issues that more traditional [fiat currencies](https://en.wikipedia.org/wiki/Fiat_money) struggle with can be solved with the application of suitably well thought-through technological processes.
There are a couple of concepts which well need a basic understanding of to grasp the potential of these new financial mechanisms, but while theyre hideously complicated in the detail, theyre not too complex at the high level.
### Cryptography
As the name implies, cryptography is critical to cryptocurrencies function. Proving who you are is hard enough in physical space, let alone online and cryptography provides humanitys best approach for this to date.
Its a massive topic, as you might expect, but suffice to say here that, digitally, proof of identity is based on the principle that multiplying two extremely large numbers together is easy, but taking one extremely large number and finding the numbers that divide into it without a remainder is very hard (and takes a very long time, even for a computer).
To operate with cryptocurrencies, you start by generating two extremely large random ([prime](https://en.wikipedia.org/wiki/Prime_number)) numbers, or “keys”. The chances of you generating the same ones as someone else is vanishingly small as these numbers have many thousands of digits in them.
You publish one publicly, which forms your “address” (think: sort code and account number), and keep the other private as proof of ownership. For every financial action you take (e.g. “Take 5 from account X and put it in account Y”), you “sign” that instruction with your private key and append the instruction-signature pair to a shared public ledger called the _blockchain_.
The beauty of maths means that Joe Bloggs can use your public key and the attached signature to confirm that it was really you who ordered that transaction, but neither he nor anyone else without your private key can create a valid signature, and thus a valid instruction for that accounts money.
### Decentralisation
Having one public ledger for all these transactions seems well and good (as it prevents double spending) but if you imagine a physical book with people writing their transactions down in it, you rapidly see that there are location and [locking](https://en.wikipedia.org/wiki/Lock_%28computer_science%29) issues: you need to be where the book is, and only one person can write in it at once.
That book is the equivalent of late 20th century banking. Then we didnt write in the ledger, we told our bank to write in the ledger for us. Each bank had its own book, and computers to write in them, each of which was very fast. This made centralised banking manageable, but coordinating a transaction from Alex in London to Brabra in Australia still took a long time as lots of banking authorities had to agree.
Decentralised banking, a core component of cryptocurrency construction, requires that _anyone_ can write in the ledger (even a thief or “bad actor”). A decentralised banking system is more like a series of noticeboards scattered around every city; when you want to make a transaction you just write it on a piece of paper and pin it up where anyone can look at it to see that it occurred. How is honesty and accuracy ensured? For that we require _the blockchain_.
### The Blockchain
Originally detailed by Satoshi Nakomoto, the still pseudonymous name chosen by the group or individual that penned the [whitepaper on Bitcoin](https://bitcoin.org/bitcoin.pdf), the blockchain is a way of structuring a ledger such that tampering with it or posting untruthfully is impossible by design, even when everyone has one and no-one owns a master copy.
The blockchain is an immutable list of parts of every transaction that has ever happened, organised in such a way that by reading it you can determine if the transaction youre suspicious of is legitimate or not.
To continue the metaphor above, imagine a messenger that would regularly travel between every noticeboard, arrange all the new transactions in alphabetical order, and add the first letter of each transactional instruction to his notepad. Upon completing the last noticeboard he would add the first letter of every _notepad_ from each previous round-the-world trip hed completed then add todays notepad to the library and call that days job complete.
In this analogy the notepads are _blocks_ and the library of notepads he has created is _the blockchain_. In truth, rather than just taking the first letter of an instruction or a notepad, the blockchain uses a method called _[hashing](https://en.wikipedia.org/wiki/Hash_function)_ to turn arbitrary information into a smaller, fixed length piece of information. Hashing algorithms use every letter of an instruction as part of their calculation, so that nipping back to the noticeboard and adding an extra zero to the transfer order giving you your salary would completely change the _hash_ of your instruction, which would then differ from the messengers notepad, marking your forged transaction as provably incorrect.
In fact, there are many messengers performing this verification service and they corroborate their hashes against each other, to ensure consistency, before taking each notebook and adding it to the library that is the immutable ledger: the truth of the currencys use.
On top of this, because the third notepad contains information from the second, and the second from the first, every subsequent round the messengers do further confirms and adds proof to all the transactions which came before. A concerned individual can wait for many rounds of proof before they agree that a transaction is truly verified and, of course, rather than happening once a day, these checks can occur in seconds.
This corroboration is the infrastructure that makes cryptocurrencies work and work requires incentive to be completed, so who does it and why do they bother?
### Mining
When people talk of “mining Bitcoin” or “mining Ether” what they mean is being the messenger of the analogy above. By inspecting transactions from around the world, hashing and arranging them in a specific way (such that completing that task is very hard, but proving that it has been completed is really easy), any individual can perform this task, and by performing it enough times a miner is rewarded with a currency coin. In fact, this is the _only_ way that new coins are introduced into circulation.
To control the rate of inflation some arbitrary complexity rules are imposed into the currencys definition, for example: a miner might be required to order all the transactions in a block such that the last digits of the hash are 3832. This means that the miner must try millions of combinations of all of the transactions to find the order that produces a hash with the right four last digits (which takes time), but anyone can look at the result and know that the work was done at a glance. It is restrictions like these, combined with [Moores Law](https://en.wikipedia.org/wiki/Moore%27s_law) and some fancy maths, which ensure that the inflation of cryptocurrencies like Bitcoin and Ether are predictable, regular and limited.
---
Theres much more that could be covered in this background, but lets get straight to the point.
## Why is all this complexity useful?
As I see it there are two foundational and relevant changes to the global post-millenium economy:
- Technology has progressed to the point where there are things consumers are willing to pay for that are just ones and zeroes
- The internet makes information transfer to any human effectively free
You may see where Im going with this: trade is no longer bound by geography. When I use the internet to buy a Chinese-made light bulb, it still has to be shipped to me; if I want to buy a computer game on a physical disc, there needs to be a store for me to walk into; but if an engineer sells her software through the internet she could be on the moon and the only difference to her being in the next door room would be the 1.3 second delay in delivery time imposed by the speed of light. Clearly if you dont need to rely on a physical store or distribution network your business is simpler and cheaper to run, I believe the same is true for non-physical currencies.
So what currency does our hypothetical lunar coder—lets call her Ada—charge her customers in? She weighs up the benefits each currency provides in terms of spending power (money is useless to her unless she can spend it), stability (so that a weeks work isnt worth only a loaf of bread by Saturday), and the features that currency offers (like fungibility, being [backed by gold](http://www.bankofengland.co.uk/banknotes/pages/about/faqs.aspx#general) or being [accepted in more countries](https://en.wikipedia.org/wiki/International_use_of_the_U.S._dollar) than any other).
So, if we assume cryptocurrencies have enough features that they gain popularity, and thus the _potential_ for spending power and stability, what features do they have that would make them a good choice for pure-digital traders?
### Cost
Though its not always visible to consumers, all financial transactions cost money to process. To pay for your beer with a bank note, there must be the infrastructure that prints those notes, that ensures forgeries are difficult and quickly identified and there must be staff that operate that infrastructure and _physically move the notes around_. If you think your bank is pushing [contactless payment](https://en.wikipedia.org/wiki/Contactless_payment) upon you, youre probably right; removing the cost of moving and verifying bits of paper has been a huge boon to banking.
Compare that to the infrastructural overhead of a cryptocurrency. As described in the background sections above the infrastructural cost of these new currencies is borne by machines; the cost of the electricity to run them paid for with controlled, predefined inflation of the currency.
Today the cost of a single low-volume digital transaction in GBP might be [20p + 1.4%](https://stripe.com/gb/pricing) but with Ethereum, being decentralised, you _specify_ how much youre willing to pay for others to verify your transaction. This makes the amount so small its measured in _[Wei](http://ethdocs.org/en/latest/ether.html#denominations)_ (the micro-micro-pence to Ethers pound) and, as I write, the [average amount spent per transaction](https://etherscan.io/chart/gasprice) (the _average GasPrice_) is 22 billion Wei which is easiest to conceptualise as ~4,300 verifications costing just a penny.
### Speed
Transfers within the same traditional bank are fast, seconds usually, because they operate entirely within the same ledger. Between banks in one country a couple of hours is normal and between countries with good foreign relations a couple of days. Trying to get money out of Egypt? Or China? Or large amounts of money between any two countries? Weeks of delay are often advised.
By contrast the speed of a transaction in Ethereum is blazingly fast and predictable. While it is proportional to your offered GasPrice or fee, on average a receiving entity can expect confidence in a transfer [with the next block](https://etherscan.io/chart/blocktime), or after about 15 seconds.
### Proof of ownership
In 1997 [Nick Szabo wrote a paper](http://journals.uic.edu/ojs/index.php/fm/article/view/548/469) detailing a framework for “Smart Contracts”, which Ill cover below, but it also included a description of the critically useful concept of digital _Bearer Certificates._
Just like a banknote is a certificate of your ownership of a sum of money, and a deed that of a plot of land, a single Ether coin is the certificate that you bear, or own, the value for some amount of work performed for the benefit of the Ethereum network (the coin was mined and passed on to you for goods or services). Now the currencys nomenclature becomes clearer: _Ethereum_ is a platform for bearer certificates; the _Ether_ currency is the core certificate of that platform (and the one in which the machines that maintain the infrastructure of that network are paid) but it is only one of an unlimited number of certificates which can be created and used by anyone.
If our lunar coder, Ada, has faith in Ethereum she can set up a type of bearer certificate that represents a license to use the software she builds. She can encode the ownership of one of these certificates into the Ethereum blockchain and thus ownership can be mechanically verified by anyone.
Whats more, she can have her software _check the blockchain_ when it starts up and ensure that the current user owns the private key thats paired with the owner of the licence—i.e. that the user has paid their dues. Ethereum provides a platform for the trade of more than money.
### Arbitration
So far the features described can broadly be provided by all cryptocurrencies, but Ethereum (amongst some less notable others) has an ace up its sleeve: Smart Contracts. These are, in essence, a way of creating conditions on transfers.
At this point Ada can set up a digital shop on a server on the Moon which accepts payments in Ether, waits for verification, then issues a new licence bearer certificate for that customer, then encodes the ownership of that certificate back to the blockchain. However this process could be quite slow as the data goes back and forward between the Earth and the Moon, a customer might get bored and not complete their purchase in the 2.6 seconds for each back and forth stage of that process. This is where Smart Contracts step in.
Smart Contracts can be thought of as a program in their own right. Ada can put one together that says: “Contract, issue a licence bearer certificate to anyone who deposits 0.5 ETH or more in this account.” When this contract is written to the blockchain it now exists on every machine that interacts with Ethereum, it is executed by the machines that are working to verify transactions (to hark back to my analogies above, it is executed by every messenger who picks up a payment to your account) and, even if the internet link to the Moon goes down, Ada will find 0.5 ETH more in her account for each licence that gets created when the connection returns and she updates her copy of the blockchain.
### Autonomous business
From these building blocks great things can be made. A collection of Smart Contracts operating together is called a _Decentralised Autonomous Organisation_—a DAO—and our talented protagonist, being a savvy entrepreneur, can decide to make great use of them.
She decides that shes very happy for people to pass on their licences to friends, but she feels like shes due a small portion of the proceeds if her software is sold on. Because all ownership transfers on the Ethereum platform are public (theyre in the blockchain) she can codify that a second-hand licence is only valid if 5% of the exchange fee is delivered to her; she can even write a Smart Contract to handle this accounting for her, so she can focus on fixing the bugs with her program and let her autonomous organisation handle the money, even when shes offline.
### Law and Tax
Where this automation becomes _really_ interesting is when it takes the place of complex manual processes.
> Tis impossible to be sure of anything but Death and Taxes
An idiom which surely predates even [Christopher Bullock](https://en.wikipedia.org/wiki/Death_and_taxes_%28idiom%29), but one that will remain true for a long time yet. Ethereum, or a framework like it, _will be_ the platform upon which community finance is built in the not-too-distant future.
Imagine Adas world, writing software on the Moon. Living there has some physical infrastructure costs that need to be paid somehow. The lunar government decides that it will extract 20% of its citizens income for repairs and useful things like oxygen and food. Being a forward-thinking celestial nation they offer small companies financial assistance and support writing Smart Contracts, on the condition that subscribed companies update their DAOs so that as they pay dividends, 20% goes to Lunar Governance, and 80% to the boards wallets.
It turns out that the support that Lunar Governance offers for digital enterprises is so excellent, that people _who dont live on the Moon_ decide that theyre going to register their DAOs there and benefit from the nations digital infrastructure for the low price of 20% in tax. With the complexities of extracting tax outsourced to machines, the Moons thriving corporate tourism fuels its economy and we slowly realise that [Matthew 5:5](https://en.wikipedia.org/wiki/Matthew_5:5) had a typo, and it is indeed the geeks that inherit the Earth.
Writing software on the Moon is something of a ridiculous example but there already exist a [host of micronations](https://en.wikipedia.org/wiki/List_of_micronations) which could, and in my opinion _will_, provide the physical location for digital-only communities, for a price, while our law-making struggles to catch up with our technological progress. Ethereum is the prototype, if not the platform, upon which this will occur.
---
The features described above make Ethereum an incredibly powerful platform, and Im positing that its success to date is based in the potential that its backers see in the advantages this technology provides, as Ive tried to describe above. Many of these backers are not curious individuals; the _[Blockchain Alliance](http://www.blockchainalliance.org/)_ is a group, made from some of the [largest names in finance](http://uk.reuters.com/article/us-ethereum-enterprises-consortium-idUKKBN1662K7), with the aim of harnessing the potential of these technologies. These firms invest time and money in many things, but theres a reason [FinTech](https://en.wikipedia.org/wiki/Financial_technology) is seeing more startups than any other area at the moment.
## Stability and spending power
Despite their successes, cryptocurrencies are highly volatile and not without the potential for serious problems.
{{< figure src="ethereum-candles.png" caption="The [Kraken ETH/USD](https://cryptowat.ch/kraken/ethusd) exchange demonstrates the volatility in cryptocurrency value today." alt="A financial candle chart of Ethereum's price from May 17th to 21st, 2017" >}}
This chart displays the dollar value of a single Ether coin in the past 5 days—from $90 to $140, with fluctuations of 2% in a day being commonplace. The [growth of the currency](https://cryptowat.ch/kraken/ethusd/3d), from around $5 in February this year, through to $140 only 4 months later, displays huge potential and international investment in these technologies fuels that growth, but huge plummets in value are commonplace as issues are discovered then recovered from.
The problems that are encountered are novel too, often complex enough that it can be hard to wrap heads around.
China operates a scarily large proportion of the worlds [Bitcoin mining operations](http://www.bbc.com/future/story/20160504-we-looked-inside-a-secret-chinese-bitcoin-mine) which is risky as a single entity with a [51% share of mining power](http://www.coindesk.com/51-attacks-real-threat-bitcoin/) can, in theory, selectively allow double spending. Ethereum took a massive hit last year when “The DAO”—the then-preeminent Ethereum based decentralised autonomous organisation which facilitated startup investment to the tune of $200m—was “hacked” or, to phrase [more correctly](https://www.cryptocompare.com/coins/guides/the-dao-the-hack-the-soft-fork-and-the-hard-fork/), someone exploited a bug in the Smart Contracts it was built upon to extract $70m in an unintended manner.
Ethereum recovered from that scandal (some say it [demonstrated its maturity](https://www.cryptocoinsnews.com/dao-best-thing-happen-ethereum-can-back/) as it did) and vigilance and self-interest seems to be keep the [51% problem Bitcoin faces](http://www.coindesk.com/ahead-bitcoin-halving-51-attack-risks-reappear/) in check; but new technology always brings new risk.
These are risks Im happy taking, as I think the potential is far, far greater; Im certainly polishing my Smart Contract writing skills.

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

View file

@ -0,0 +1,93 @@
---
title: "The Webs Missing Communication Faculty"
emoji: 🛡️
date: 2016-01-30T11:59:33.912Z
draft: false
tags:
- trust
- credence
- web
---
The internet can be seen as a mechanism for speeding up and broadening information transfer; Wikipedia shares [knowledge](https://en.wikipedia.org/wiki/User:Alan_Liefting/Essays/The_sum_of_all_human_knowledge), Newseum makes [local news global](http://www.newseum.org/todaysfrontpages/), Reddit, Twitter, Imgur and countless more give anyone access to subcultures, viewpoints and opinions from all over our planet—I dont need to highlight why were calling this this [Information Age](http://www.sciencemuseum.org.uk/educators/plan_and_book_a_visit/things_to_do/galleries/information_age.aspx#content). All this is an extension of the human sharing processes that humans use in face-to-face communication, but I think theres one facet which hasnt quite made the jump to the internet yet.
In person, assessing the believability of what you hear is intuitive, you might know the person and trust their opinions, or they could be a stranger and youd be wary of what they have to say. Online, most communication is functionally anonymous, either because the other party is masking their identity, or because youve never met them and have no context for their existence despite knowing their (user)name. This, as well as the sheer quantity of knowledge available, makes it almost impossibly hard to fact-check or otherwise judge a source of information for believability in the long distance communication the internet enables.
> “Rust is superior to Go as a systems-level software language.”
>
> “Genuine French antique grandfather clocks strike the hour twice, two minutes apart from each other.”
The extent to which I believe these two phrases depends directly on _who_ I hear them from. From a fellow software engineer Id believe the first phrase until I had reason to try these languages out myself and Id call bullshit on the second phrase; from my antique dealer father Id hear the second and assume it to be true without question, but chuckle at the first, ignore the opinion and remind him of the last time he tried to update a formula in an Excel spreadsheet.
The key here is, of course, context—specifically around the source of statements like these. Talking to an individual you know gives you contextual information on their areas of expertise as well as their demeanour and body language, something which the internet has to a great extent not been able to replicate.
Early mass-distribution of “statements of fact”, via entities like publishing houses, took a simple approach to this issue: create a reputation. This allowed people to make statements like “I trust this newspaper” or “you shouldnt believe this author” based on previous interactions with that entity. This was aided by management staff that would give publishing brands a recognisable niche, like magazines, specialising in one corner of human endeavour.
The advent of [hyperlinking](https://en.wikipedia.org/wiki/Hyperlink) and the web allowed rapid movement between _vastly_ different topics and authors with deeply different levels of experience in their subject matter. I believe the hole in todays internet — when it comes to inter-human communication — is that there is no well defined mechanism for quickly assessing the believability of the huge amount of information we each come across every day without referring to brand, something the individual has little control over.
---
So how would you build a framework for enhancing your gut instinct for credence on the internet? Clearly the web already lets you research any topic in great depth if you need a deep understanding, but what about at a glance? And how would you allow for the often different and opposing views on whether something should be believed or not? A statement like “The Earth was formed 4,000 years ago” will be considered absolutely true in some circles and absolutely false in others.
Because I like thinking and creating, Ive put together a prototype of a mechanism that allows this, I call it [Credence](http://getcredence.net/).
Credence allows you to make assertions like this:
> [This website](https://twitter.com/RealFakeFacts/status/409062831355486208) states that: “The longest consecutive crowd wave occurred in 2002 at a Denver broncos game. The wave circled the stadium 492 times and lasted over 3 hrs.”
>
> At this time, I believe this to be **false** and I cite [this website as proof](http://www.guinnessworldrecords.com/world-records/longest-mexican-wave-%28timed%29). Signed, JP
There are a number of components to these sentences. I shant go into the technical details of the (nascent) Credence protocol, suffice to say that these components are compiled into a single sharable nugget that I call a _Cred_ which is published and shared with as many other Credence users as possible, so that it is universally accessible. Those components are:
- **Statement**: The specific sentence that is being commented upon.
- **Source**: A website that gives context to the statement.
- **Assertion**: Whether the author believes the statement to be true, false, ambiguous or whether they wish to explicitly state “no comment”.
- **Proof**: Some corroboration for the assertion that is a good starting point for an explanation. It could be a blog post you write, or a reputed commentary on the topic.
- **Time**: When the assertion was made.
- **Signature**: A way for others to know who is making this claim, and thus what context they can apply to it.
A **statement** and **assertion** are clearly required; the need for a **source,** or context, becomes obvious for statements like “the governments actions were justified” (Which government? Which country? What actions?); **proof** is helpful for recipients of the _Cred_ that wish to delve deeper into the topic and a **time** is crucial to understanding the assertions relevance, as any historian will confirm.
**Signatures**, effectively proof of identity, become very interesting on the internet. Being able to disagree with a viewpoint without fear of retribution is a valuable privilege, but a system of credence without identity provides nothing new. I chose to use a facet of [cryptographic signatures](https://en.wikipedia.org/wiki/Digital_signature) that means if a user chooses to share the public half of their cryptographic identity all of their _Creds_ can have their author recognised, but if they choose not to it is impossible to determine if two _Creds_ are even from the same author, allowing an element of selective anonymity.
---
So far I have explained how Credence allows users to proclaim their belief in specific statements, but the use in this comes from interpreting the _Creds_ that others have announced.
Because _Creds_ are designed to be small (the example above condenses to 493 bytes, small enough that even a slow broadband internet connection could transfer thousands a second) and they are shared prolifically (so missing some as they are sent to you is no problem), the Credence service on your computer will have an enormous wealth of assertions stored on it at any given time. It can also request _Creds_ relevant to the topics youre interested in from its neighbours. With this information it analyses the all relevant _Creds_, counts how many people believe each statement is true, false and so on, _weights these numbers_ based on your trust in the authors (if known) and can produce an indication of what your first thoughts on this topic would be if you polled the people you trust.
This aggregated information could be condensed into specific phrases similar to “Likely true”, “Probably false” or“Complex”; it could be worked into a graphic or an alert if a boundary condition is met. There are many interesting ways to cut this data (and the beauty of having that data is that the user can choose how to interpret it).
If we ignore _how much_ you trust each author for a moment, you could use the count of the number of people who believe a statement to be true and false to organise statements into textual categories based on their shape, like this:
![three bar charts showing: lots of "true" and a little "false" being "likely true", lots of "false" and a little "true" being "likely false", and roughly equal "true" and "false" being "complex".](simple-graph.png)
Initially this seems to be a great fit for our problem, but a malicious Credence user could flood a specific statement with assertions in one particular direction to sway opinion, so significantly more weight is given to trusted authors, to the point where anonymous users are essentially ignored, and even if there is an overwhelming anonymous majority the indication given is speculative:
![two bar charts showing: a little trusted "true", with a lot of anonymous tur and false being "possibly true", and a fair amount of trusted "false" a little anonymous "false" and lots of anonymous "true" being "probably false".](anon-graph.png)
A good fit would be showing the user an indication of the data and text which gives a quick indication of how much credence should be given to a statement, with links to allow investigation where appropriate. If youll forgive my terrible UX skills, the example _Cred_ above might be displayed like this:
![an example tweet with a highlighted section and an example pop-over stating "highly likely to be false".](example-tweet.png)
A browser extension can interact with the Credence server and highlight statements on pages youre viewing that you might want to take with a pinch of salt. Im slightly scared by what some newspaper articles might look like.
---
A protocol like Credence can only hope be the infrastructure upon which more useful tools are built, but I hope Ive managed to outline how a system like this might work and the benefits it could offer. I find the decentralised nature of the reputation users can generate using a system like this very interesting as it removes the chance for unquestioning acceptance of facts based on general reputation alone; eg. an incorrect Wikipedia article which is cited by a newspaper, which is in turn used as proof that the Wikipedia article is correct, like [this poor German minister](http://tech.slashdot.org/story/09/02/10/2211220/false-fact-on-wikipedia-proves-itself) whose name was misquoted.
Credence is just a prototype (and a brief experiment in writing in a new software language for me), but I believe this principle of distributed credence is an important one for the future of mass-communication and Id be interested in hearing thoughts on, and references to research around, this and related topics.
You can see how my work on it progresses at [http://getcredence.net](http://getcredence.net).
---
_Some early questions about Credence centred around the fact that it would enable misguided people to propagate provably incorrect information as truth. I thought Id address that here as its clearly something I should have included!_
One key principle in Credences design has been that it should not be opinionated; it will not try to tell you that something is incorrect unless the body of people you trust holds that view. This does allow groups of people to express widely disproved opinions as fact, just as is feasible in non-digital communities, but the important difference is that Credence will continue to check for counter-evidence.
In non-digital interaction if you accept a fringe opinion as truth, the only time youre likely to reassess that opinion is if you have to act upon it with some level of risk. If the opinion carries little risk in belief, or is rarely tested by the believers then it can [continue unchecked for generations](http://www.informationisbeautiful.net/visualizations/common-mythconceptions/) — for example, [Einstein wasnt bad at maths](http://www.todayifoundout.com/index.php/2011/12/albert-einstein-did-not-fail-at-mathematics-in-school/).
Credence however continues to check viewpoints as they shift, so if _one_ trusted user in a community proclaims that “Einstein was bad at maths” is _false_, it could detect this and prompt you saying “the believability of this statement has shifted recently, would you like to look at the newly stated evidence?”.
In this way a Credence-like system could become an agent for stimulating the revaluation of your own opinions as others shift, rather than just the adoption of the consensus. For this reason I think Credence has broad usefulness in academic communities, where theoretical outcomes are based on the believability of statements connecting things seen as axiomatic to high level and unexplored concepts.

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View file

@ -0,0 +1,99 @@
---
title: "What Makes a Good (Tech) Team Great"
emoji: 💪
date: 2017-05-18T12:09:40.901Z
draft: false
tags:
- leadership
- engineering
- team
- deliveroo
---
> The Deliveroo Engineering team has come a long way incredibly fast and is growing even faster. Our Analytics team is undergoing similarly explosive growth, so I thought Id talk to the newest members of that team and share why were so proud of our Engineering culture and how its grown with us. Heres what we spoke about.
![A slide saying: (A definitely incomplete précis of) How to Make a Good (Tech) Team Great](slide-1.png)
There are a huge number of things that affect how well a team works. So many of those things are deeply dependent on the number, experience and diversity of its members but as our Engineering team has grown there have been some constant themes which have formed the deep-rooted and often unspoken core of our culture.
![A slide saying: There is too much to know everything. I am not always right. Others see things differently, maybe usefully.](slide-2.png)
The first of these, as I hope with teams of all types, is communication. Often this is the first thing to go when time is tight, but when theres a need to move fast weve found that good communicationensuring everyone knows how to find out whats going onis _even more_ important.
Some of these can be hard to admit, but theyre important:
- _There is too much to know for me to know everything_. Any team with more than one person doing work achieves enough that no-one has enough hours in a day to keep abreast of all thats going on.
- _I am not always right_. Not only do we all make mistakes but our viewpoints are based on our own experiences, which arent necessarily those of our customers.
- _Others see things differently_. A different perspective on a problem often highlights alternative solutions, some might be better.
![A slide saying: Easy, Asynchronous, Boundaries, Public*.](slide-3.png)
We work hard to make sure that we can communicate clearly and easily, but without disrupting the time we need to be creative and focused.
Calling a meeting or visiting a colleagues desk can be very useful, but as the amount of things that need to be communicated increases you eat into peoples working time. Having _easily accessible_, _publicly visible_ announcements in _well-known places_ means individuals can find what they need asynchronously.
Weve found that communicating in “public” (company wide) is almost always the best way to do things. If these conversations are well organised you avoid missing people off email recipient lists, and the ubiquitous “Copying in Alex” emails that follow.
We classify “communication” as more than just what we say, its also the relevance and discoverability of what weve shared for others. Github pull requests are an excellent way to communicate about the style and structure of our code, as the next person to read it will have all the context they need to understand the discussion.
Weve found [Facebook Workplace](https://workplace.fb.com/) is great for project announcements, [Slack](https://slack.com/) is fantastic for direct requests and, of course, [Github](https://github.com/) excels at code-centric communication.
![A slide saying: Shared context. Communication is faster, Fewer incorrect assumptions, Unity of purpose.](slide-4.png)
I believe that context is critical to everything in life. Im sure theres a books worth of advice on this alone, but weve found that it boils down to this:
- Two people will understand each other faster if they have a shared context.
- If theres a mismatch in shared understanding a group is much more likely to make mistakes and false assumptions.
![A slide saying: Discussion, Naming, Reference, (Self-)Documentation](slide-5.png)
The only true way to build a shared context is to discuss things, often at length and sometimes without specific direction. Putting time aside to chat to your colleaguesfrom all over the businesswill give you an idea of whats important to them and how best to work with them.
“Naming things” is one of the [two hardest problems in computer science](https://twitter.com/codinghorror/status/506010907021828096), and naming them well is _critical_. One word can have many different meaningssome specific to our companyso when you commit words to lasting documentation or code make sure you choose your words carefully.
As engineers we spend a lot of time doing this, even in something as transient as short-lived script variable names. You never know when someone else, or an older you, will need to understand what you were trying to do.
Making code “self” documenting is, for us, frequently the best form of documentation. The further an explanation gets away from the thing its documenting the less likely it is to be in-sync, and the more work the reader has to do to figure out what was meant.
Self-documenting code is incredibly useful, but when it comes to “best practice” weve found that a set of separate, community maintained [guidelines](http://deliveroo.engineering/guidelines/) makes for a great space to both discuss and refer to the approaches we take to common problems.
We also structure our unit tests to demonstrate the specific cases we expect our code to be used in, and the expected outcome. This gives us a reliable shared basis for talking about our code.
Weve found that talking face to faceespecially over _video_ while remoteis important to building foundations, well-written git commits and Pull Requests on [Github](https://github.com/) are worth championing, and the [Atlassian suite](https://www.atlassian.com/) has no equal for tracking work in progress.
![A slide saying: Pride. Satisfaction and joy from what we do, Higher quality work.](slide-6.png)
When we were smaller we often found that we didnt take enough time to congratulate ourselves and each other on jobs well done. In the worst cases, over time, this can lead to becoming unhappy at workanother thing that deserves a book in its own right, and something we want to avoid individually and as a community.
![A slide saying: Celebrate successes, Learn from mistakes… publicly](slide-7.png)
Ensuring we put time aside to celebrate when we do well allow usboth consciously and subconsciouslyto do the things that bring success more often and the things which dont less. Weve found that the work we feel most proud of is the work that has the fewest bugs, that gets completed the fastest and frequently lands best with our customers. Being proud of what we achieve is critical to our continued success.
We are, more than anywhere else Ive worked, something of a family. Even the achievements of the most physically distant or least developed parts of our company are celebrated as much as the grand milestones. We feel motivated to work hard because our hard work is useful and is _recognised_.
On the flip side, admitting that weve made mistakes can be hard, but we will _always_ make mistakes. There are two things we try to do when mistakes happen:
- Recognise the direct mistake, figure out why it happened and communicate what we find to any who might make the same mistake.
- Work to understand the wider situation and, if possible, help build safety mechanisms so that others _cant_ make the same mistake again.
![A slide saying: Responsibility. Allows vou to be proud, Gets rid of process bottlenecks, Ability to act quickly and independently.](slide-8.png)
Its very difficult to feel pride without a sense of responsibility. They go hand in hand, but there are more benefits to fostering a sense of responsibility in everyone, from the battle-hardened team veteran, to the first-week new starter.
The more that responsibility clusters to only some parts of a community, the more that group becomes a bottleneck for decisions. In a fast-moving business the ability to make quick, informed decisions autonomously is critical, so allowing responsibility to spread wide lets us keep our agility, even as we grow.
![A slide saying: Not ownership, "No", Basis in metrics](slide-9.png)
_Responsibility_ is often confused with _ownership_. A sense of ownership of a codebase, a project or process is what can lead to a bottleneckall decisions about that thing going through one person. Responsibility is more than that; its talking to a different team and writing a pull request to improve a codebase when theres a spare hour, its suggesting changes to process to team leadership when we recognise inefficiencies, its looking into the numbers & discussing when we have a gut feeling that something were working on may not be the most leveraged use of our time.
The hardest part of personal responsibility is being able to say “No”; to a good ideabecause there are others that are better for today; to a request for helpbecause youre already helping elsewhere. Saying “No” is important and important to get right.
Our company will always grow so that our teams are _just_ under-staffed (we are passionate people, we stretch ourselves!) and because of this we have to be comfortable saying “No”. When we do, the _most important thing_ about doing this is making sure that we explain _why_. A question that gets a “No” today will be asked again tomorrow, a question that gets a deeper answer will have that explanation propagated to others and will help build the shared context we need to communicate well.
In general, at Deliveroo, we like to give people the responsibility and freedom to make mistakes, but the support and tooling to be warned when something might go wrong (rather than create gates or checkpoints to do our jobs).
This allows us to act independently and very quickly to react to the changing needs of our customers, but its risky. We need to ensure we are communicating well, that we are learning from the successes and mistakes of our colleagues and that we are making decisions based in fact wherever possible.
Metrics allow us to carefully choose which aspects of the business can be improved, then tailor what we build to suit that. How we use and refer to metrics is of critical importance to how we plan the building of our product.
The way we communicate our metrics, plans and goals, the context behind each of these, the pride we take in their upward trends, and the responsibility we assume in their continued improvement are the reason why Deliveroo continues to excel.

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB