kronosapiens.github.io - via RSS









Search Preview

Abacus

kronosapiens.github.io
AbacusI'm Daniel Kronovet, a data scientist living in Tel Aviv. http://kronosapiens.github.io/ Mon, 01 Oct 2018 02:09:36 +0000Mon, 01 Oct 2018 02:09:36
.io > kronosapiens.github.io

SEO audit: Content analysis

Language Error! No language localisation is found.
Title Abacus
Text / HTML ratio 98 %
Frame Excellent! The website does not use iFrame solutions.
Flash Excellent! The website does not have any flash contents.
Keywords cloud people

The data game gtgtgt work time hash = energy system things social reputation

cabinet systems
Keywords consistency
Keyword Content Title Description Headings
60
people 55

The

42
42
data 41
game 41
Headings Error! The website does not use (H) tags.
Images We found 0 images on this web page.

SEO Keywords (Single)

Keyword Occurrence Density
60 3.00 %
people 55 2.75 %

The

42 2.10 %
42 2.10 %
data 41 2.05 %
game 41 2.05 %
gtgtgt 37 1.85 %
work 32 1.60 %
time 32 1.60 %
hash 31 1.55 %
= 31 1.55 %
energy 30 1.50 %
system 29 1.45 %
28 1.40 %
things 27 1.35 %
social 25 1.25 %
reputation 24 1.20 %
24 1.20 %
cabinet 23 1.15 %
systems 21 1.05 %

SEO Keywords (Two Word)

Keyword Occurrence Density
of the 121 6.05 %
in the 63 3.15 %
to the 43 2.15 %
and the 39 1.95 %
it is 31 1.55 %
is a 31 1.55 %
of a 30 1.50 %
is that 27 1.35 %
the same 27 1.35 %
in which 27 1.35 %
can be 25 1.25 %
on the 25 1.25 %
in a 22 1.10 %
of these 22 1.10 %
with a 21 1.05 %
to be 21 1.05 %
is the 21 1.05 %
that the 19 0.95 %
for the 19 0.95 %
as a 19 0.95 %

SEO Keywords (Three Word)

Keyword Occurrence Density Possible Spam
10 0.50 % No
2018 000000 0000 7 0.35 % No
most of the 6 0.30 % No
the hash table 6 0.30 % No
and so on 6 0.30 % No
class=highlighterrouge>
gtgtgt
6 0.30 % No
the end of 6 0.30 % No
the programmer and 6 0.30 % No
as much as 6 0.30 % No
be able to 6 0.30 % No
in the same 6 0.30 % No
to find the 5 0.25 % No
that there is 5 0.25 % No
and the like 5 0.25 % No
in order to 5 0.25 % No
in which the 5 0.25 % No
a set of 5 0.25 % No
the idea of 5 0.25 % No
a number of 5 0.25 % No
a single number 5 0.25 % No

SEO Keywords (Four Word)

Keyword Occurrence Density Possible Spam
gtgtgt
6 0.30 % No
programmer and the brogrammer 4 0.20 % No
the names in the 4 0.20 % No
  • Why is Square Roots
  • 3 0.15 % No
    gtgtgt secondCabinet = triefindsecondCabinetLocation 3 0.15 % No
    the programmer and the 3 0.15 % No
    a cabinet with 100 3 0.15 % No
    hash of your password 3 0.15 % No
    can be said to 3 0.15 % No
    size of the cabinet 3 0.15 % No

    Beneath that there is

    3 0.15 % No

    Beneath that there

    3 0.15 % No

    Beneath that

    3 0.15 % No
    names in the drawers 3 0.15 % No
    cabinet with 100 drawers 3 0.15 % No
    secondCabinet = triefindsecondCabinetLocation gtgtgt 3 0.15 % No
    class=highlight>
    gtgtgt hash3dog 0x237
    3 0.15 % No
    simple to understand and 3 0.15 % No
    the size of the 3 0.15 % No
    the other hand the 3 0.15 % No

    Internal links in - kronosapiens.github.io

    About
    About
    Strange Loops and Blockchains
    Strange Loops and Blockchains
    Trie, Merkle, Patricia: A Blockchain Story
    Trie, Merkle, Patricia: A Blockchain Story
    Reputation Systems: Promise and Peril
    Reputation Systems: Promise and Peril
    The Future of Housing, in Three Parts
    The Future of Housing, in Three Parts
    Proof of Work vs Proof of Stake: a Mirror of History
    Proof of Work vs Proof of Stake: a Mirror of History
    Introducing Talmud
    Introducing Talmud
    The Economics of Urban Farming
    The Economics of Urban Farming
    Time and Authority
    Time and Authority
    On Meaning in Games
    On Meaning in Games
    Objective Functions in Machine Learning
    Objective Functions in Machine Learning
    A Basic Computing Curriculum
    A Basic Computing Curriculum
    The Problem of Information II
    The Problem of Information II
    The Problem of Information
    The Problem of Information
    Elements of Modern Computing
    Elements of Modern Computing
    Blockchain as Talmud
    Blockchain as Talmud
    Understanding Variational Inference
    Understanding Variational Inference
    OpsWorks, Flask, and Chef
    OpsWorks, Flask, and Chef
    On Learning Some Math
    On Learning Some Math
    Understanding Unix Permissions
    Understanding Unix Permissions
    30 Feet from Michael Bloomberg
    30 Feet from Michael Bloomberg
    The Academy: A Machine Learning Framework
    The Academy: A Machine Learning Framework
    Setting up a queue service: Django, RabbitMQ, Celery on AWS
    Setting up a queue service: Django, RabbitMQ, Celery on AWS
    Versioning and Orthogonality in an API
    Versioning and Orthogonality in an API
    Designing to be Subclassed
    Designing to be Subclassed
    Understanding Contexts in Flask
    Understanding Contexts in Flask
    Setting up Unit Tests with Flask, SQLAlchemy, and Postgres
    Setting up Unit Tests with Flask, SQLAlchemy, and Postgres
    Understanding Package Imports in Python
    Understanding Package Imports in Python
    Setting up Virtual Environments in Python
    Setting up Virtual Environments in Python
    Creating superfunctions in Python
    Creating superfunctions in Python
    Some Recent Adventures
    Some Recent Adventures
    Sorting in pandas
    Sorting in pandas
    Mimicking DCI through Integration Tests
    Mimicking DCI through Integration Tests
    From Ruby to Python
    From Ruby to Python
    Self-Focus vs. Collaboration in a Programming School
    Self-Focus vs. Collaboration in a Programming School
    Designing Software to Influence Behavior
    Designing Software to Influence Behavior
    Maintaining Octopress themes as git submodules
    Maintaining Octopress themes as git submodules
    Setting up a test suite with FactoryGirl and Faker
    Setting up a test suite with FactoryGirl and Faker
    To Unit Test or not to Unit Test
    To Unit Test or not to Unit Test
    A Dynamic and Generally Efficient Front-End Filtering Algorithm
    A Dynamic and Generally Efficient Front-End Filtering Algorithm
    Trails & Ways: A Look at Rails Routing
    Trails & Ways: A Look at Rails Routing
    Getting Cozy with rspec_helper
    Getting Cozy with rspec_helper
    Exploring the ActiveRecord Metaphor
    Exploring the ActiveRecord Metaphor
    Civic Hacking as Inspiration
    Civic Hacking as Inspiration
    From Scheme to Ruby
    From Scheme to Ruby
    Setting up Auto-Indent in Sublime Text 2
    Setting up Auto-Indent in Sublime Text 2
    hello world
    hello world
    via RSS
    Abacus

    Kronosapiens.github.io Spined HTML


    Abacus I'm Daniel Kronovet, a data scientist living in Tel Aviv. http://kronosapiens.github.io/ Mon, 01 Oct 2018 02:09:36 +0000 Mon, 01 Oct 2018 02:09:36 +0000 Jekyll v3.7.4 Strange Loops and Blockchains <p>In which idealists set expectations concerning the problem of governance.</p> <h3 id="i-naming-things-is-hard">I. Naming things is hard</h3> <p>In his Pulitzer-prize winning magnum opus, <em>Gödel, Escher, Bach</em>, cognitive scientist Douglas Hofstadter discusses the rencontre of naming things.</p> <p>Naming things is hard, Hofstadter explains, considering every name given to a thing is inevitably simpler than the thing itself. A name is a summary, and names are chosen to highlight the most <em>important</em> aspects (according to… someone) of the thing stuff named. Of course, highlighting unrepealable aspects of something necessarily ways downplaying other aspects of that thing.</p> <p>Naming things is hard, then, considering there is unchangingly something a name leaves out, and that omission usually ends up stuff important at some point lanugo the road. A “good” name is one which gets us most of the way there, most of the time – but no name is perfect. This is the same idea as the stardom between the “<a href="https://en.wikipedia.org/wiki/Map%E2%80%93territory_relation">map and the territory</a>”: a map is unchangingly a summary of the territory, a reduction of the dimensionality; a perfect map would be the size of the territory, and thus not useful. A “perfect” name would be as complicated as the thing itself, and thus untellable to speak!</p> <p>It’s worth noting that that naming is only really a problem for things that are complex. For example, a variable named <code class="highlighter-rouge">time-delay</code> is fairly complete, just like the name “goalie” is a fairly good unravelment of that role on a football team. But what well-nigh a job like “president”? When dealing with increasingly complicated things, naming gets harder.</p> <p>Hofstadter plays with this idea via a humorous dialogue between Achilles and the Tortoise, in which the former attempts to solve a puzzle posed by the latter, with little success:</p> <blockquote> <p>Achilles: Confound it all! Every time you requite one of my answers a NAME, it seems to signal the imminent shattering of my hopes that that wordplay will satisfy you. Why don’t we just leave thisWordplaySchema nameless?</p> </blockquote> <blockquote> <p>Tortoise: We can whimsically do that, Achilles. We wouldn’t have any way to refer to it without a name. And besides, there is something inevitable and rather trappy well-nigh this particularWordplaySchema. It would be quite ungraceful to leave it nameless!</p> </blockquote> <p>Achilles has an <em>intuition</em> for the wordplay – he understands the essence of the puzzle – but every time he unquestionably has to transcend undefined intuition and commit <em>formally</em> to an answer, that formalization contains some inherent limitation (this is the origin of the term “strange loop”). This is the essential insight of Hofstadter’s work: unendingly we struggle to formalize something ramified (“give it a name”), that formalization necessarily leaves <em>something</em> out. This is considering formalizations are stock-still summaries of the things themselves, and can never capture things in their entirety. In a unrepealable quite profound sense, the daily headache of programmers naming variables is substantially unfluctuating to Russell and Whitehead’s valiant but vain effort to place mathematics on solid, static foundations (it is highly suggestive that Whitehead spent the rest of his career developing a metaphysics of dynamism known as “Process Philosophy”).</p> <p>The truth is that we are limited beings attempting to discern the nature of things which are superior to our power of comprehension. We can incrementally expand our horizons, and iteratively modernize our understanding, but we will never quite reach the boundaries.</p> <h3 id="ii-a-guiding-metaphor">II. A guiding metaphor</h3> <p>Before moving on, let’s introduce three wacky thinkers and use their work to develop useful guiding metaphor.</p> <ul> <li> <p>The first is <a href="https://en.wikipedia.org/wiki/George_Lakoff">a cognitive linguist out in California</a> who thinks that our minds run on metaphor, that they are the essential towers blocks of our understanding.</p> </li> <li> <p>The second is a <a href="https://en.wikipedia.org/wiki/Ken_Wilber">mystical philosopher living out in the mountains somewhere</a>, who thinks that all life forms can be understood as stuff recursively well-balanced of increasingly fundamental life forms, equal to some unvarying set of rules.</p> </li> <li> <p>The third is <a href="https://en.wikipedia.org/wiki/Georg_Wilhelm_Friedrich_Hegel">a long-dead german philosopher</a>, who thought that many of the world’s social phenomena could be seen as a dynamic tension of opposites.</p> </li> </ul> <p>A lot of people think this trio is totally bananas. But let’s play a game and for the next 90 seconds pretend that they were all basically right well-nigh everything. I made you an image containing our important metaphor.Squintat it for a minute and we’ll discuss.</p> <p><img src="https://s3.amazonaws.com/kronosapiens.github.io/images/dialectic.jpg" alt="Dialectic" /></p> <p>What do we see here? In the center, Da Vinci’s famous Vitruvian Man, here taken as an typical human. Off to the sides, we see an Ameoba (minimally structured biomass) and a skeleton (highly structured but lifeless). The metaphor here is that humans come into stuff with the hardness (skeleton) is brought into a well-turned tension (magenta arrow) with the softness (the organs and tissue). Too far in either lattermost and the soft-hued complexity of the human cannot survive: a lifeless skeleton, or a puddle of goop. This image provides us our first example of a <em>dialectical tension</em>, an essential component of Hegel’s philosophy. We see similar tensions elsewhere: in between liberals and conservatives, between process and outcome, between self-rule and security, and between individual and community, among others. Each one of those words captures the end of a spectrum, but life cannot be sustained at the end of the spectrum. It can be sustained only in the tension which comes from bringing the extremes into a <em>dynamic but stable balance.</em> A small nonprofit with pages of bureaucratic rules will get nothing done; likewise, a multinational firm without unobjectionable procedures and policies will be mired in dysfunction.</p> <p>Note moreover that the Ameoba can live just fine without a skeleton; but that Ameoba is a simple life form. The skeleton literally provides the windrow for supporting increasingly ramified types of life (there’s a reason why vertebrates are the headliners in the supplies chain). “Solving” a dialectical tension is not the end of the story: it simply sets the stage for the whence of a <em>new</em> story – this is the essence of Wilber’s treatise of increasing levels of complexity, each succeeding level of complexity made possible by the foundation provided by the resolving of tensions of the level below.</p> <p>As an interesting aside, it is interesting to consider the arthropods (beetles, etc) as an volitional solution to the problem of “structural support” (indulge me my ventriloquist evolutionary biology). Vertebrates put the structure on the inside, arthropods on the outside. Both solutions worked, but had variegated long-term consequences: the former seems to have been largest at scaling up (vertebrates are bigger), while the latter largest at scaling wideness (there are many increasingly species of arthropods).</p> <h3 id="iii-no-perfect-rules">III. No perfect rules</h3> <p>As mentioned, words can describe the static ends of the spectrum (“freedom”, “security”, “individual”, “community”), but it is much harder to describe the wastefulness in the center, which can only overly be largest and largest <em>approximated.</em> And so, the struggle of naming variables is the same struggle of developing formal systems is the same struggle of reconciling simple extremes into a dynamic tension: the objects we pursue are unchangingly just vastitude our comprehension.</p> <p>Even our greatest and most universal “systems” unsupportable some context: Adam Smith’s initial unravelment of self-ruling market suffrage unsupportable some stratum of social cohesion (“fellow feeling” in his words). The various flavors of communist and socialist dream seem some baseline of material zillions to go around. The American republic was <a href="https://en.wikipedia.org/wiki/Federalist_No._10">designed to withstand factionalism</a>, up to a point.PlaneBitcoin, the buzzing, urgent Ozymandias of trustlessness, assumes some stratum of distribution of computing power.</p> <p>There is a lesson here for the dreamers of utopian dreams, a lesson taught by wits then and again. There is no system (skeleton) which is guaranteed to work from one end of the universe to the other, from now until the end of time. Every system comes working only in a living context (the amoeba, the living matter) into which it is embedded; it is the interaction of the system and the context which yield a stable dynamism.</p> <p>In a <a href="https://logicmag.io/05-everybodys-brain-knows-how-to-run-a-tail/">recent interview</a>, Jaron Lainer and Glen Weyl discuss “living” technologies:</p> <blockquote> <p>The most successful technologies in history are what you might undeniability living technologies. They engage the people who use them in an ongoing conversation in which both the people and the technology change. Or you could use the word evolve if you like.</p> </blockquote> <p>What we see here is the difference between plain rules and a set of rules in tension with a living force. The former is necessarily partial and incomplete, while the latter is capable of wondrous things.</p> <p>Also, note that most of these successful fusions of rules and context ripened incrementally (recall our biological metaphor).Planethe American constitution, considered at the time a unvigilant experiment, was an <a href="https://en.wikipedia.org/wiki/Federalist_No._15">incremental response</a> to the failures of the previous Articles of Confederation. To develop an elaborate new mechanism and deploy it whole reticulum is to magistrate failure.</p> <p>As an aside, it is worth noting that incorporating <em>adverserial</em> structures into governance can to some extent reduce the need for structure (or at least transpiration the the types of structure necessary). Since measuring and adapting to an <em>outcome</em> without the fact is much easier than anticipating the process which led to that outcome, competitive or relational mechanisms (think courts of law, games of chess, or plane employee reviews) can play an important role in giving governance frameworks the worthiness to evolve over time.</p> <h3 id="iv-what-to-strive-for">IV. What to strive for</h3> <p>In 1984, statisticians Persi Diaconis and David Freedman released a landmark paper titled <a href="https://projecteuclid.org/download/pdf_1/euclid.aos/1176346703">“Asymptotics of Graphical Projection Pursuit”</a>, in which they prove that under suitable conditions, <em>most</em> low-dimensional projections of high-dimensional data are approximately Gaussian, i.e. very lossy. The trick is to find the projections which result in non-Gaussian projection, i.e. those which capture increasingly of the original structure of the high-dimensional problem.</p> <p>Put flipside way: some names are largest than others, and naming something poorly can be worse than not naming it at all. Consider how the monothiestic diety is often referred to indirectly, via signifiers like “The Powers”, “The Name”, “My Lord”, etc, while the mystery surrounding the “true name” has wilt <a href="https://en.wikipedia.org/wiki/Pi_(film)">an traffic-stopping subject of estoric study</a>.</p> <p>Bringing things when to earth, it will be instructive to squint at how variegated crypto communities have been unescapable governance on the ground. Current “on-chain” (i.e. explicit) approaches, such as those used by EOS and the original, infamous, Ethereum DAO suffer from meager participation among voters. On the other hand, the “off-chain” approaches taken by Bitcoin, Ethereum, et al (in which the “mechanisms” are implicit, or “unpsoken”) have achieved varying degrees of success, leading Vitalik to <a href="https://toshitimes.com/vitalik-discusses-chain-governance-and-self-improvement-in-blockchains/">reverse his position</a> in favor of off-chain governance.</p> <p>The issue at hand is that the “rules” for on-chain governance are too transplanted to stave stuff captured by the social context (see: collusion among EOS woodcut producers). Given these transplanted tools, it’s largest to leave governance “unspoken”: it will necessarily be smaller and increasingly sectional (the Ameoba), but this opacity is a baby-sit versus explicit capture by keeping the rules unseen inside of “culture”. The conclusion is not that off-chain governance is largest (to conclude that would be to conclude that cliquish optimacy is better), but rather that we still need to develop the language for describing governance mechanisms that can hold tension with the living gravity of the community.</p> <p>What, then, to build? In short, largest backbones, embedded within a good community. Build new social infrastructure which solves a few current problems without reintroducing ones we’ve once solved – while current governance systems might seem far from perfect, don’t underestimate the value of weight they successfully support. Try to make it robust versus most types of failure. Don’t expect your thing to work forever; sooner the social context will transpiration and the tension will closure to hold. But a few years is plenty, a few decades ideal. Buy us time so that the next time virtually we can see a little bit farther and do a little bit better.</p> Fri, 28 Sep 2018 00:00:00 +0000 http://kronosapiens.github.io/blog/2018/09/28/blockchain-governance.html http://kronosapiens.github.io/blog/2018/09/28/blockchain-governance.html blockchain governance politics math blog Trie, Merkle, Patricia: A Blockchain Story <p>In which we tell the story of the Patricia Tree.</p> <h2 id="i-introduction">I. Introduction</h2> <p>Spend a few days virtually blockchain engineers and unrepealable words will start to sound familiar. “Merkle Tree” and “Patricia Tree” in particular will start to seem… important somehow. You’ll sooner gather that these are quite essential parts of this whole blockchain thing… but why? What problems, exactly, do they solve?</p> <p>You might do a quick search and stumble upon increasingly than a few peices of #content which explain these things, but retreat upon seeing the complicated-looking diagrams. Fear not, dear reader. Here we will explain these things, not with graphs, but with story.</p> <p>Where to begin? The beginning, I suppose.</p> <h2 id="ii-the-hash-table">II. The Hash Table</h2> <p>In the whence there was the <strong>computer,</strong> stretching infinitely in all directions. In fact, it’s nonflexible to say that there plane <em>was</em> the computer, since existence implies absence, and there was nothing that wasn’t the computer. So there was the computer, but the computer was inert. Nothing was <em>happening</em>. Boring. So the computer decided to create a <strong>programmer.</strong> Pop.</p> <p>At first the programmer wasn’t very good, but over time she got better. There wasn’t much else going on at this time, so the programmer kept going, programming increasingly and increasingly things into the world. Animals and the like.Withouta while there were a lot of animals, which meant a lot of names to alimony track of. This was a problem.</p> <p>The programmer thought – “how can I alimony track of all of the names of these animals? I want to be worldly-wise to hands squint up the name I gave to each species of animal. I could write all the names lanugo in a big list, but sooner looking up the names will get really slow. If only I had the right <em>data structure</em>”.</p> <p>And so the programmer created the <strong>hash table.</strong></p> <p>What is a hash table? For starters, its the understructure of everything else that’s going to happen, so we’re going to talk well-nigh it for a minute. Essentially, a hash table is a type of “key-value store”. This ways that for a given “key” (i.e. an unprepossessing specie) you can save the “value” (i.e. the name of the animal). The main property of the hash table is that when you have a key, you can find the value <em>fast</em>, regardless of how many other items are in the hash table. In computer science terms, this is known as “constant-time lookup” and is very useful, which is why hashtables are <a href="http://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html">“arguably the single most important data structure known to mankind”</a>). Here’s an example:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt;&gt;&gt; hashtable.set("dog", "fido") &gt;&gt;&gt; hashtable.get("dog") "fido" </code></pre></div></div> <p>How do they work? To understand the hash table, we have to digress for a moment and talk the <strong>hash function</strong>. Hash functions are a magical secret sauce which make some wondrous things possible. Hash functions are the “cryptography” people talk well-nigh when they talk well-nigh blockchains. Hash functions are legit.</p> <p>What is a hash function? Fortunately, hash functions are simple to understand. They are substantially tiny machines which take in some value, shake it virtually for a while (imagine a bartender shaking a cocktail), and output some other crazy-looking value (a big number). Their essential properties are:</p> <ul> <li>For a given input (like “cat”), you will unchangingly get the same output (like “0x52763589”)</li> <li>Two similar inputs (like “cat” and “car”) should not have similar outputs. Put flipside way, given an output, you should not be worldly-wise to guess the input.</li> </ul> <p>This makes hash functions extremely useful considering they let us handle sensitive information safely. Have you overly wondered how <em>responsible</em> websites alimony your passwords safe? They don’t store your password, they store a hash of your password. When you type in your password to log in, they take the hash of your password and compare that versus what they have in their database. But if a hacker overly gets in, all they’ll know is the gibberish hash of your password – useless since they have no way of figuring out what your very password was.</p> <p>The other thing they’re useful for is making hash tables. Why? Remember that the output of the hash function is a <em>number</em>. So when you hash the key, you substantially get a number telling you where to find the value. Imagine the hash table as a cabinet with 100 drawers. You <code class="highlighter-rouge">hash("dog")</code> and get <code class="highlighter-rouge">34</code> – you go to cabinet 34 and get the name out. You <code class="highlighter-rouge">hash("cat")</code> and get 89 – you go to cabinet 89. No need to squint through a whole list – you skip directly to the finish line.</p> <p>Pretty tomfool right? Yes it is.</p> <p>And so the programmer had the hash table, and for a while things were good. Great, even! But it couldn’t last. Eventually, the <strong>brogrammer</strong> appeared.</p> <p>At first things were good between them: they shared ideas, they shared code, they shared space. But sooner visionless clouds appeared on the horizon. They wanted variegated things. The programmer was fine with a little randomness thrown into things, but the brogrammer wanted certainty, and he wasn’t happy with hash tables anymore. They’re “not deterministic”, he said.</p> <p>What did he mean? To understand this point, we’ll have to talk a little increasingly well-nigh hash functions and hash tables. The first thing to note is that the “range” of the hash function (the possible values the output can take) is very large – depending on the computer, it can take as much as 2^256, but increasingly typically 2^32 or 2^64 possible values. 2^32 is 4,294,967,296 – and the others are much, much larger. Hash tables have to support this whole range, but we can’t make cabinets with that many drawers – there wouldn’t be room for anything else! So overdue the scenes, we do a little trick: we take the hash value <em>modulo</em> the size of the cabinet. The modulo operation (<code class="highlighter-rouge">%</code>) is substantially division’s sidekick: it gives you the <em>remainder</em>. The nice thing well-nigh modulo is that the output (the remainder) is unchangingly between 0 and the wiring – so no matter how big the input, the output can only be so big.</p> <p>So overdue the scenes, we make a cabinet with 100 drawers, and when deciding where to put the name of <code class="highlighter-rouge">"dog"</code>, we squint in drawer <code class="highlighter-rouge">hash("dog") % 100</code>.Consideringthe hash value is random, the remainder will still be random, just smaller. This works great, but there’s a big downside: two animals might end up in the same drawer! Let’s say that <code class="highlighter-rouge">hash("dog")</code> is <code class="highlighter-rouge">1,000,034</code> and <code class="highlighter-rouge">hash("shark")</code> is <code class="highlighter-rouge">200,034</code>.Variegatedvalues, but both will be <code class="highlighter-rouge">34</code> without the modulo. So we put them in the same drawer, and we have to squint through the drawer to find the dog’s name. It’s still fast, since there’s usually only one or two names in the drawer.</p> <p>So it’s fine in practice, but the brogrammer’s point is that the spot you put the name in is not 100% unswayable by the hash function you’re using. Two increasingly factors come in: the size of the cabinet, and the other animals! The size of the cabinet matters considering a cabinet with 10 drawers will put both <code class="highlighter-rouge">72</code> and <code class="highlighter-rouge">182</code> in the same place (<code class="highlighter-rouge">2</code>), but a cabinet with 100 drawers will put them in variegated places (<code class="highlighter-rouge">72</code> and <code class="highlighter-rouge">82</code>). Also, you can’t tell in whop if a name will be vacated in a drawer, or if it will have to share with other names.</p> <p>The brogrammer wasn’t happy well-nigh this, but dealt with his feelings in a healthy way and went off into the mountains for a few weeks to think well-nigh alternatives. “A place for everything, and everything in its place,” he kept repeating in his head. When he sooner came down, he had a new idea.</p> <h2 id="iii-the-trie">III. The Trie</h2> <p>The problem, the brogrammer had realized, was that we were trying to put everything into a single huge cabinet, which could never be big enough. The solution, the brogrammer said, was to use a sequence of <em>smaller</em> cabinets. The first cabinet would requite you the write of the second cabinet, the second cabinet the third, and sooner you would get to the cabinet which had the name you were looking for. You would need increasingly cabinets (but not that many, as it turns out), and each cabinet could be quite small (maybe 16 drawers, or plane 2!). Here’s an example, using an 8-drawer, 3-cabinet system (which gives us 8^3 = 512 drawers total):</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt;&gt;&gt; hash3("dog") 0x237 &gt;&gt;&gt; firstCabinet = trie.find(firstCabinetLocation) &gt;&gt;&gt; secondCabinetLocation = firstCabinet.drawer(7).contents &gt;&gt;&gt; secondCabinet = trie.find(secondCabinetLocation) &gt;&gt;&gt; thirdCabinetLocation = secondCabinet.drawer(3).contents &gt;&gt;&gt; thirdCabinet = trie.find(thirdCabinetLocation) &gt;&gt;&gt; thirdCabinet.drawer(2).contents "fido" </code></pre></div></div> <p>Note that each number tells us which drawer to open, and each number ways one increasingly cabinet. The brogrammer tabbed this system a “<a href="https://en.wikipedia.org/wiki/Trie">Trie</a>” (as in re<strong>trie</strong>ve), and said that the eyeful of it was that you didn’t need to build all the cabinets at once – you could start out with just one cabinet, and only build new cabinets the first time you needed them, wherever there was room. And while it ways a little increasingly work (opening increasingly drawers), every name will have a secure drawer, unchangingly in the same place. And the brogrammer knew that no one would overly need <em>all</em> the drawers, and so most of the cabinets would never need to be built (although you can’t rule it out).</p> <p>The programmer looked at the Trie and well-set it was a clever idea (although it involved quite a bit increasingly walking), and there was harmony between them.</p> <p>Years passed, and a new <strong>people</strong> started to towards in the nearby valley. Curious, the programmer and the brogrammer journeyed over to see these people and learn well-nigh their culture. They found the people intriguing, with a curious religion revolving virtually the worship of a particular wattle of carved granite blocks.</p> <p>The people were quite friendly, and without meeting with some of their priests, the programmer and brogrammer learned that these people had once been warlike, but without years of mismatch ripened a new system of “trust” which unliable them to co-exist in remarkable peace and prosperity. The computer, they said, was only as good as the programmer, and that humans could not be trusted to program alone. These people knew of the hash table and the trie, but they had found that people would cheat: sometimes people would come in the night and transpiration the names in the drawers; there was no way to prove that the names in the drawers were the right names. For a while these people had a warrior matriculation who guarded the cabinets, but found that this only led to increasingly conflict.</p> <p>Eventually a number of their most skilled artisans ripened the technique of scarification blocks of granite; these blocks, they realized, were very difficult to carve, and so things carved into these blocks could be trusted in yonder that the names in the cabinets could not. It was unfeasible to whittle every name into the block, however, and to whittle new blocks when the names changed. What they needed, they said, was some way to whittle a <em>signature</em> of the names onto the block, such that if any one name changes, the signature would change; but if the names were the same, the signature would unchangingly be the same. Eventually, one of their scientists, Ralph, ripened a <a href="https://en.wikipedia.org/wiki/Merkle_tree">solution</a>: the Merkle tree.</p> <h2 id="iv-the-merkle-tree">IV. The Merkle Tree</h2> <p>The Merkle tree behaves much like a Trie, but with a new rule: the drawers of each cabinet will not contain the location of the next cabinet, but rather the <em>hash</em> of all of the contents of the next cabinet. Separately, we alimony track of the location of each cabinet (using, of all things, a simple hash table):</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt;&gt;&gt; hash3("dog") 0x237 &gt;&gt;&gt; firstCabinetLocation = hashtable.get(firstCabinetHash) &gt;&gt;&gt; firstCabinet = trie.find(firstCabinetLocation) &gt;&gt;&gt; secondCabinetHash = firstCabinet.drawer(7).contents &gt;&gt;&gt; secondCabinetLocation = hashtable.get(secondCabinetHash) &gt;&gt;&gt; secondCabinet = trie.find(secondCabinetLocation) &gt;&gt;&gt; thirdCabinetHash = secondCabinet.drawer(3).contents &gt;&gt;&gt; thirdCabinetLocation = hashtable.get(thirdCabinetHash) &gt;&gt;&gt; thirdCabinet = trie.find(thirdCabinetLocation) &gt;&gt;&gt; thirdCabinet.drawer(2).contents "fido" </code></pre></div></div> <p>Remember our hash function?Olderwe talked well-nigh hashing simple values like “dog” and “cat”, but in truth you can hash anything, including other hashes or sets of hashes. What Ralph realized was that by keeping the hashes in the cabinets, you can create a “hash trail” which will transpiration whenever any value changes (remember how websites store your passwords? Same idea). Here is how you update a value:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt;&gt;&gt; hash3("dog") 0x237 ### Find cabinet same as surpassing &gt;&gt;&gt; thirdCabinet.drawer(2).contents = "rover" ### But then you start working backwards... &gt;&gt;&gt; thirdCabinetHash = hash3(thirdCabinet.drawers) &gt;&gt;&gt; hashtable.set(thirdCabinetHash, thirdCabinetLocation) &gt;&gt;&gt; secondCabinet.drawer(3).contents = thirdCabinetHash &gt;&gt;&gt; secondCabinetHash = hash3(secondCabinet.drawers) &gt;&gt;&gt; hashtable.set(secondCabinetHash, secondCabinetLocation) &gt;&gt;&gt; firstCabinet.drawer(7).contents = secondCabinetHash &gt;&gt;&gt; firstCabinetHash = hash3(firstCabinet.drawers) &gt;&gt;&gt; hashtable.set(firstCabinetHash, firstCabinetLocation) &gt;&gt;&gt; firstCabinetHash 0x375 </code></pre></div></div> <p>Now the final value, <code class="highlighter-rouge">0x375</code>, is a “fingerprint” of the unshortened Merkle tree. You can save this fingerprint (or engrave it into a granite block), and know that if anyone changes any of the names in the drawers, the process of making the hashes will requite a variegated result – you’ll know something has changed. Notice that this adds increasingly steps compared to a simple Trie: you need to have a separate hashtable to alimony track of locations. But what you get is <em>security</em>.</p> <p>The programmer and the brogrammer walked up to get a closer squint at the granite blocks, and to their surprise, on them they saw engraved a series of hashes! <code class="highlighter-rouge">0x736</code>, <code class="highlighter-rouge">0x264</code>, <code class="highlighter-rouge">0x123</code>, and so on, with <code class="highlighter-rouge">0x542</code> stuff the most recent. They were amazed! Nearby, they noticed some activity: one of this peculiar tribe wanted to prove that he had purchased a horse from another. He brought forward the name of the horse and his own name, set <code class="highlighter-rouge">trie.set(horse, name)</code> and through an elaborate ritual showed that his name, hashed with unrepealable other names, with unrepealable other names… voila! He arrived at <code class="highlighter-rouge">0x542</code>, and thus all well-set that the horse was his.</p> <p>What a remarkable society, the programmer and brogrammer agreed. There was something nagging at the programmer, though. This was a small tribe – only 512 members. As they grow, they will need a new hash function with a larger range – thousands, millions, billions. And so updating and verifying the values in the Merkle tree will wilt increasingly and increasingly plush – from three cabinets to five, to ten, to sixty and beyond! And for what? Most of these drawers will be empty. It seems like an expensive system, slow and costly. Surely there must be a largest way? If only there was a Practical Algorithm To Retrieve Information Coded In Alphanumeric…</p> <h3 id="v-the-patricia-tree">V. The Patricia Tree</h3> <p>To gather their thoughts, the programmer and the brogrammer took a walk into the hills whilom the valley. “There must be some way to optimize this tree!” they thought to themselves. The brogrammer suggested they squint at a few random hashes, to build some intuition:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt;&gt;&gt; hash8("cat") 0x14350235 &gt;&gt;&gt; hash8("dog") 0x14350762 </code></pre></div></div> <p>Then the brogrammer got excited – he noticed that both of these hashes happened to start with the same numbers: <code class="highlighter-rouge">14350</code>. With just these two entries, getting to the final drawer should only need two cabinets: one for <code class="highlighter-rouge">14350</code>, and one for whatever was left: <code class="highlighter-rouge">235</code> or <code class="highlighter-rouge">762</code>. This would be much faster than using eight cabinets. You could unchangingly add increasingly cabinets later, but why make increasingly than you need? On each drawer we tape a little slip of paper, where we write lanugo the worldwide prefix for that drawer. Finally, the first cabinet is unquestionably just a single drawer.</p> <p>Looking up values would go like this:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&gt;&gt;&gt; hash8("dog") 0x14350762 &gt;&gt;&gt; firstDrawerLocation = hashtable.get(firstDrawerHash) &gt;&gt;&gt; firstDrawer = trie.find(firstDrawerLocation) &gt;&gt;&gt; split(14350762, firstDrawer.commonPrefix) (14350, 762) &gt;&gt;&gt; secondCabinetHash = firstDrawer.contents &gt;&gt;&gt; secondCabinetLocation = hashtable.get(secondCabinetHash) &gt;&gt;&gt; secondCabinet = trie.find(secondCabinetLocation) &gt;&gt;&gt; secondDrawer = secondCabinet.drawer(7) &gt;&gt;&gt; split(62, secondDrawer.commonPrefix) (62,) &gt;&gt;&gt; secondDrawer.contents "fido" </code></pre></div></div> <p>The programmer got excited – she felt pretty good well-nigh this. It would make the algorithm a little trickier, to make sure that cabinets were created thus and that worldwide prefixes are kept up-to-date, but nothing they couldn’t icon out. A little increasingly work at the whence to set this all up would save the valley people a lot of time over the long run.</p> <p>The pair sat lanugo and worked out the details of this new system, which they tabbed the <a href="https://github.com/ethereum/wiki/wiki/Patricia-Tree">“Patricia Tree”</a>. Satisfied, they descended to the valley and presented their work to the people there. They people were joyous; the slow Merkle tree had been a stilt on their society. With the Patricia tree, they hoped, they would be worldly-wise to whop their arts, sciences, and industry faster.</p> <p>Satisfied, the programmer and the brogrammer left the valley. As they crested the ridge and began to make their way through the surrounding grassland, they heard a soft humming sound. Looking up, they saw a flying car sailing off into the horizon.</p> <h2 id="vi-summary">VI. Summary</h2> <p>What did we learn from this completely stylistically original story?</p> <p><strong>First</strong>, that hash tables, tries, merkle trees, and patricia trees are all do substantially the same thing: they let you map <em>keys</em> to <em>values</em>. While there are differences between them, this is substantially what they do.</p> <p><strong>Second</strong>, in computer science, nothing is self-ruling (but some things are cheap). Everything has a trade-off. Hash tables are fast, but have some randomness. Tries are fully determinstic, but slower. Merkle trees have nice security properties, but use a increasingly complicated algorithm and are slower to update. Finally, Patricia trees are faster than Tries and Merkle trees, but require an plane <em>more</em> complicated algorithm.</p> <p><strong>Third</strong>, Patricia trees are useful for blockchains considering they let you “prove” a potentially large value of data is correct, without having to store all of that data. This is very convenient: you can have a big tree with a lot of data (such as all of the transactions in the last 24 hours), but you only have to store a few numbers (like 0x323757382) on the very blockchain. You can alimony the rest of the data on a regular database somewhere and know that no one will be worldly-wise to tamper it and get yonder with it. Note that here the blockchain is only <em>part</em> of the system: it is co-dependent on other data stores to function.</p> <p><strong>Fourth</strong>, the hash function is the magical machine that makes all of this possible. The diamond and implementation of hash functions has been the ongoing work of computer scientists for decades, and they are very nonflexible to get right. You should take a moment and fathom the years of work that made this magical technology possible.</p> Wed, 04 Jul 2018 00:00:00 +0000 http://kronosapiens.github.io/blog/2018/07/04/patricia-trees.html http://kronosapiens.github.io/blog/2018/07/04/patricia-trees.html blockchain data-structures algorithms trees blog Reputation Systems: Promise and Peril <h2 id="i-introduction">I. Introduction</h2> <p>When dealing with unfamiliar people, places, and companies, reputation can be powerful. Having a good reputation oneself will lead others to treat us increasingly favorably, and we are increasingly willing to deal with people and merchantry which are themselves well-reputed. The role and importance of reputation in markets has been known by economists since at least the 1970’s, with George Akerlof famously defining the <a href="https://en.wikipedia.org/wiki/The_Market_for_Lemons">“Market for Lemons”</a>, describing how a market can goof when participants cannot properly gauge the quality of the offerings.</p> <p>Historically, much of reputation has been implicit, qualitative, and socially embedded: we retain other’s reputations in our memories and learn them through our own experiences or by discussing with others. Companies embark on public relations campaigns to build goodwill with their customers.</p> <p>Sometimes, reputation can been made explicit and quantitative: a notable example stuff the ubiquitous credit score, which condenses our financial reputation to a single number, bringing benefits to the financially stable and consequences to the rest. Other examples are the credit rating systems such as those offered by Moody’s and S&amp;P, which evaluate and rate securities (with some success and a number of <a href="https://en.wikipedia.org/wiki/Subprime_mortgage_crisis">high-profile failures</a>).</p> <p>In the last two decades, firms have emerged which seek to leverage new technologies and data to increasingly virtuously rate and evaluate the merchantry and people of the world. Companies like Foursquare and Yelp seek to establish reputations for businesses based on the wisdom of the crowd, while OnDeck, Lemonade, and the like aim to determine well-judged credit worthiness by ingesting myriad traces of our digital identities. Sharing economy services like Uber and AirBnB encourage us to rate our interactions, helping us to find the weightier (and stave the worst) cars to ride in and homes to stay in.</p> <p>None of these methods are perfect and a quick internet search will <a href="https://www.inc.com/magazine/20100201/youve-been-yelped_pagen_3.html">surface</a> <a href="https://qz.com/1244155/good-luck-leaving-your-uber-driver-less-than-five-stars/">much</a> digital ink spilt in their critique. Yet this project seems likely to continue, and on an increasingly large scale: in the past year, China has begun to roll out a <a href="https://foreignpolicy.com/2018/04/03/life-inside-chinas-social-credit-laboratory/">“social credit system”</a> which extends the idea of a credit score to encompass increasingly and increasingly facets of life: our policies in traffic, volunteer hours, and the like.</p> <p>Many see visionless clouds on the horizon. This mood is most famously captured by the now-classic Black Mirror episode <a href="https://en.wikipedia.org/wiki/Nosedive">“Nosedive”</a>. This episode, set in a futuristic society in which every personal interaction is rated from one to five, tells the story of a woman who experiences personal ruin while engaging in an ill-fated struggle to uplift her rating.</p> <p>The remainder of this essay will take up the question of reputation systems, their characteristics, and the problems they seek to solve in an struggle to understand the promise and peril of such systems, and to discern what kinds of reputation, in what contexts, may help us to largest navigate and thrive in the world of the future.</p> <h2 id="ii-peril">II. Peril</h2> <p>Before turning to the promise of reputation systems, it is prudent to consider where other systems have failed. Understanding the failure of past systems will help us to discern diamond principles for the future.</p> <p>Here, we will compare the fictitious world of “Nosedive” with the reality of Uber ratings, discuss the early experiments of China’s social credit system, and transiently mention the rating products of Foursquare and Yelp.</p> <p><strong>Both “Nosedive” and Uber make prominent use of 5-star ratings.</strong> The key difference between them, however, is that Nosedive’s fictional app combines ratings for <em>every</em> interaction into a single score, while Uber’s ratings are highly specific, concerning the limited interaction between a rider and a driver. Human beings are deep and ramified creatures, with variegated relationships to variegated people. To slaver our value and worth into a single number is to both deny the complexity of the individual and guarantee shallow and invidious comparisons. In the specimen of Uber, however, such a score can be secure on the grounds that it is highly <em>specific</em>: someone can meaningfully be said to be a largest or worse suburbanite or passenger of a car.</p> <p>The first thing, then, is to distinguish between some sort of <em>global</em> or <em>general</em> reputation and a task-specific one, with the latter stuff increasingly meaningfully captured by a single number. Note that there are unchangingly shades of nuance and complexity: plane the act of driving a car has many dimensions (reaction to traffic conditions, car maintenance, and so on), but a single number can get us most of the way there. Put flipside way, the <em>benefit</em> of the rating can be argued to outweigh the <em>cost</em> (there is unchangingly some forfeit to measuring anything).</p> <p><strong>Now, what of China’s social credit system?</strong> It is an ambitious, country-wide effort stuff implemented jointly by many local governments and agencies. There is no “single” system: rather, variegated towns and cities are experimenting with slightly variegated systems. To hear the reports of citizens in these variegated locales is to receive valuable insights.</p> <p>Listening to these citizens, we hear that social credit systems which seek to simply enforce the law (traffic violations, etc) are well received. This is in large part due to the lack of trust Chinese citizens have in the government courts. In a country with weak rule of law, a social credit system which steps in for the judiciary is welcome. In other cases, where officials have ambitions for social credit to encompass all facets of human character, the system is less welcome. Jurisdictions which struggle to track volunteering hours, charitable donations, and the like place distorted expectations on their citizens. A specimen study in <a href="https://en.wikipedia.org/wiki/Goodhart%27s_law">Goodhart’s law</a>, this type of system creates perverse incentives, replacing human relationships with rigid and quickly-counterproductive policy.</p> <p>What can we take from the experiment in China? First is that people will welcome a reputation system which limits itself to objective, tranquil standards of conduct. To forego any reputation system out of fear of a dystopian outcome is to run into the stovepipe of flipside darkness: fraud and corruption. The second is that while some simple behaviors can be measured numerically, higher level understandings of goodness and value need to be treated with increasingly care, lest we create increasingly problems than we solve.Ramifiedphenomena require increasingly ramified representations and measurements: it may be that some things are weightier left unmeasured, rather than measured poorly.</p> <p><strong>Finally, let’s consider the local search services provided by Foursquare and Yelp.</strong> These products indulge people to submit numeric and text reviews of bars, restaurants, and the like, and determine ratings for these venues using various proprietary algorithms (full disclosure: I was previously a machine learning engineer at Foursquare). While these companies provide useful services, they are not without their drawbacks. First, the subjectivity of the reviews invites skew and bias: Yelp in particular is known for inviting quite hostile reviews. Second, and increasingly subtly, in reality there is no “bar”, there is only “me at the bar”. <a href="https://foursquare.com/v/happyfun-hideaway/518fed68498e67e8b8c705b0">Happyfun Hideaway</a> is my favorite bar in New York, but the hipster-chic stimulating isn’t for everyone. I don’t particularly like <a href="https://foursquare.com/v/employees-only/41e46880f964a520d41e1fe3">Employee’s Only</a>, but it’s “better”, ratings-wise. Assigning every venue a single number paints only a partial picture.</p> <h2 id="iii-promise">III. Promise</h2> <p>What then to do? The first thing to recognize is that variegated problems will undeniability for variegated types of reputation systems.</p> <p>For <strong>concrete, specific skills</strong>, a single numerical reputation could work well. <a href="https://colony.io/">Colony</a>, a blockchain startup, is taking this approach, developing a reputation system in which participants earn reputation within a taxonomy of skills and specialties. If I write a well-received blog post, I can receive reputation as a “writer”. If I write some lawmaking to speed up our testing, I earn reputation as an “engineer”. The incorporation of a skills taxonomy allows for striking a wastefulness between specificity and generality and permitting for earned reputation to be put to use, for example to weight votes (full disclosure: I am currently employed by Colony as an engineer).</p> <p>For <strong>higher-level aspects of our personality and character</strong>, however, numerical representations will fail. Numbers beg to be gamed, and so here we should prefer systems in which there is no way to “win”. To understand how we might tideway this type of reputation, it will pay to take a leaf out of the psychologist’s book. Since the 1980’s, the <a href="https://en.wikipedia.org/wiki/Big_Five_personality_traits">“Big Five”</a> model of personality traits has been a worldwide (if imperfect) tool to assess individual personality. In this system, each person’s personality is seen as a basket of five trait dimensions (specifically, “openness”, “neuroticism”, “conscientiousness”, “agreeableness”, and “extraversion”). As each trait is a dimension, or dialectic, there is nothing inherently “better” or “worse” well-nigh stuff highly agreeable, extroverted, and so on compared with the opposite. Conscientious individuals are increasingly diligent and hardworking, but moreover stubborn: in contrast, people low in conscientiousness are increasingly flexible and spontaneous, but can be unreliable. In one setting, one might be preferable, in flipside setting, the other. The essential difference, compared to a single 1-5 scale, is that no position on the scale is largest or worse, only different.</p> <p>Personality and weft are tricky issues, and the question is far from solved plane today. To develop our sense of possibility, it is worth taking a quick tour of some “artistic” approaches to personality: specifically, the archetype Dungeons &amp; Dragons <a href="https://en.wikipedia.org/wiki/Alignment_(Dungeons_%26_Dragons)">alignment system</a> and the <a href="https://en.wikipedia.org/wiki/Enneagram_of_Personality">Enneagram</a>.</p> <p>Dungeon &amp; Dragons is a archetype game in which players take the role of venture heroes and explore various fantasy worlds. A major speciality of each weft is their “alignment”, specified as a position on two axes: the “Lawful/Chaotic” turning and the “Good/Evil” axis. A weft can be Lawful Good (a soldier, for example), Chaotic Good (a revolutionary leader), Chaotic Evil (a worldwide criminal), Lawful Evil (a rapacious merchantry leader), and so on. As structuring exists withal two axes, or dialectics, no one position can be largest or worse than another: only different. We have the self-rule to decide, based on the situation (and ourselves), what type of structuring is most suitable.</p> <p>The Enneagram is a popular personality system which divides people into nine “types”, each type stuff associated with a set of fears, desires, strengths, and weaknesses. As with the other personality systems described, the essential full-length is that no type is “better” or “worse” than another, only different.</p> <p>For <strong>inter-personal and inter-item compatibility</strong>, a third tideway is tabbed for. The rencontre here is that variegated people like variegated things. Someone I find witty you might find annoying. A restaurant you hate I could love. While you could oppose that the flexible personality types described older could be used here (“put two extroverts together”, etc), it is worth thinking what other options exist. There is much research in the social science (and increasingly recently, machine learning) literature on predicting the compatibility of a single person-item or person-person matching. A worldwide theme in these approaches is to take a large dataset of interactions (for example, individual movie reviews, or whether two roommates like each other) and to pericope a set of high-level traits which can be used to predict the success of new interactions (such as new movies or new roommates). While the specifics of these approaches is vastitude the telescopic of this essay (you can learn increasingly <a href="https://datajobs.com/data-science-repo/Recommender-Systems-[Netflix].pdf">here</a> and <a href="http://jmlr.csail.mit.edu/papers/volume9/airoldi08a/airoldi08a.pdf">here</a>), the essential takeaway is that no potential movie or roommates is inherently good or bad, just good or bad <em>for you</em>.</p> <p>One could imagine towers a roommate-matching system which asks participants to requite a simple thumbs-up or thumbs-down as to whether they would live with a given roommate again, and use this to infer implicit polity memberships (“partier”, “neat freak”, “chiller”, and the like), and match people based on whether they would likely be compatible. One wholesomeness of this tideway (as opposed to one where people self-evaluate on these categories) is that it provides a stronger signal (based on very experience) and arguably avoids some self-perception biases.</p> <h2 id="iv-conclusions">IV. Conclusions</h2> <p>The aim of this essay was to review the idea of reputation and rating systems, and to oppose that while such systems <em>can</em> be immensely useful, they must be ripened with care. In particular:</p> <ul> <li>Numerical scores are towardly only when they point to <strong>specific</strong> skills and competencies.</li> <li>Personality is multifaceted and dialectic: there should not be “better” or “worse”, only “different”.</li> <li>What one person likes someone else might dislike: the viability of a pairing should be a function of what is stuff paired.</li> </ul> <p>For those of us living in dumbo urban centers, it is worldwide to hear people describe feeling “alone in a crowd”. While we are surrounded by people, they are strangers to us. Many of us lack the support infrastructure to navigate relationships in a transient world; this leads to loneliness. We must exercise circumspection in our personal and professional dealings to stave stuff scammed, while people with quiet integrity run the risk of stuff overlooked in favor of the loud. All of this leads to friction, cost, and pain.Towardlyreputation and rating systems can help us navigate and thrive in our ever-expanding world, while poorly-designed systems can rationalization problems worthier than they sought to solve.</p> <p>The unfurled minutiae of such systems is inevitable; the task of towers them well falls to us.</p> Fri, 29 Jun 2018 00:00:00 +0000 http://kronosapiens.github.io/blog/2018/06/29/reputation-promise-peril.html http://kronosapiens.github.io/blog/2018/06/29/reputation-promise-peril.html reputation blockchain economics governance blog Scala's Thrift-Flatmap Pattern <h2 id="i-introduction">I. Introduction</h2> <p>Working with Foursquare’s machine learning stack was a unconfined opportunity to see how a mature organization handles data at scale. While not a Google or a Facebook in terms of data size, Foursquare nonetheless ingests millions of data points per day, and runs these data through myriad data pipelines to power their various products, remoter increasing the value of derivative data to work with.</p> <p>Foursquare has a permissive engineering culture, in which individual contributors (in coordination with their teammates) are given liberty to add or proffer existing datatypes in order to solve their problems at hand. On its face, this might seem like a big risk: a loose swarm of engineers continually modifying shared data definitions could only lead to disaster. But it is not so. Through some clever infrastructure and diamond decisions, the engineering team was worldly-wise to unzip robustness and resiliency in their systems, while at the same time giving individual engineers significant latitude in solving their particular technical problems.</p> <p>This essay will discuss one noteworthy piece of this solution, dubbed the “Thrift-Flatmap” pattern.</p> <h2 id="ii-thrift">II. Thrift</h2> <p><a href="https://thrift.apache.org/static/files/thrift-20070401.pdf">Thrift</a> is an open-source project (originally ripened at Facebook, now governed by Apache) which allows for the language-agnostic definition of data types. In essence, Thrift provides two things:</p> <ol> <li>A DSL (domain-specific language) for defining wrong-headed data types (or “structs”).</li> <li>A set of lawmaking generation tools for working with these structs (serializing and deserializing) in your language of choice.</li> </ol> <p>The goal of Thrift is to indulge a visitor to pinpoint data types separately from the lawmaking in which they are used, permitting Python lawmaking and Scala lawmaking (for example) to work with the same data. Using Thrift, a visitor could write an API server in Scala, for example, to handle requests coming from their users, savaing the results in the results to some shared data store (such as HDFS, the Hadoop Distributed File System) as a Thrift struct. Later, someone could read these Thrift structs into a Python notebook to perform some analysis.</p> <p>Here is an example Thrift struct, specified in <code class="highlighter-rouge">my_struct.thrift</code>:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>struct MyThriftStruct { 1: optional string requestId, 2: optional i32 value } </code></pre></div></div> <p>The <code class="highlighter-rouge">optional</code> denotes that the field does not need to be set for the serialization/deserialization to occur (this will wilt relevant later).</p> <p>Here is a unenduring pseudocode tableau of the desired language interoperability:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Bash thrift gen --python --scala my_struct ... later ... // Scala import company.Api import thrift.Thrift import thrift.gen.my_struct.MyThriftStruct val typedDataSequence: Seq[MyThriftStruct] = Api.handleRequests() Thrift.write(typedDataSequence, 'data.dat') ... later ... # Python import pandas as pd from thrift import Thrift from thrift.gen.my_struct import MyThriftStruct dataList = Thrift.read('data.dat', MyThriftStruct) pd.DataFrame(dataList).value.mean() </code></pre></div></div> <p>We see here how the Scala process generated some typed data, which it wrote out using Thrift’s Scala-specific writer. Later, we read that same data into a Python process using equivalent Python-specific reader. This is made possible by Thrift’s language-agnostic binary storage format, which all languages can read and write.</p> <h2 id="iii-scala-options-flatmap">III. Scala, Options, Flatmap</h2> <p>So that’s Thrift in a nutshell. Now, how does Thrift enable the relatively smooth coordination of multiple teams, particularly in a strongly typed Scala environment? The wordplay is through the strict us of <code class="highlighter-rouge">optional</code> fields, and Scala’s <code class="highlighter-rouge">flatMap</code> operation.</p> <p>In the context of a large, fast-moving company, the use of <code class="highlighter-rouge">optional</code> fields is essential. First, incoming data itself is subject to tremendous variation (data comes in from a variety of sources, under a variety of conditions – variegated devices, variegated versions of software, etc), making it difficult to guarantee the presence of any particular field. Second, data are unchangingly changing: if a new version of iOS allows for the gathering of gyroscopic information, we might want to add a new <code class="highlighter-rouge">gyroscope</code> field to our struct.</p> <p>Now, variegated teams are responsible for variegated services, each of which operate on overlapping sets of data but are deployed at variegated times. If team A adds a new field to a shared Thrift struct, we don’t want team B’s service to break. Each service needs to alimony running in a shifting environment: achieving this ways that services need to be worldly-wise to:</p> <ol> <li>Ignore fields which are present in the data but they aren’t yet enlightened of (if the struct was updated surpassing the service), and</li> <li>Skip over fields which are woolgathering in the data but the service is enlightened of (if the data is incomplete)</li> </ol> <p>Thrift’s <code class="highlighter-rouge">optional</code> fields indulge services to handle ever-changing structs without choking. It’s worth asking, though, what <code class="highlighter-rouge">optional</code> ways in a Scala context. To understand this, we need to transiently discuss Scala’s idea of an <code class="highlighter-rouge">Option</code>.</p> <p>Scala is a strongly-typed language, meaning every value has a specific type, and every function needs to return a value of a unrepealable type. This enables very helpful compiler debugging and optimization, and makes lawmaking easier to read and maintain. There are cases, however, where we can’t guarantee that a function will return a value of a unrepealable type (for instance, if a function depends on some external data I/O which may fail). In these cases, Scala provides the idea of an <code class="highlighter-rouge">Option</code>. An <code class="highlighter-rouge">Option</code> is a “wrapper-type” which wraps virtually flipside of Scala’s types. So we have <code class="highlighter-rouge">Option[Int]</code>, <code class="highlighter-rouge">Option[String]</code>, and so on. An <code class="highlighter-rouge">Option[Int]</code> is substantially a type which can be any <code class="highlighter-rouge">Int</code>, or <code class="highlighter-rouge">None</code>. This allows for Scala programmers to worth for uncertainty in their code: any function which returns an <code class="highlighter-rouge">Option</code> is communicating a measure of uncertainty well-nigh what will happen.</p> <p>Under the hood, an <code class="highlighter-rouge">Option</code> can be thought of as a sequence of zero or one elements (zero elements ways <code class="highlighter-rouge">None</code>, one element ways whatever the type is). Now, When reading a Thrift struct into a Scala environment, the Thrift reader will interpret every <code class="highlighter-rouge">optional</code> field as an <code class="highlighter-rouge">Option</code> (sensibly). This can be cumbersome, however, as in order to work with any of these data, a consumer of these data will need to trammels every field to see if the value is set or not. Enter <code class="highlighter-rouge">flatMap</code>.</p> <p>Flatmap is a standard Scala operation on sequences, in which a <code class="highlighter-rouge">map</code> operation is followed, sensibly, by a <code class="highlighter-rouge">flatten</code> operation, resulting in a single-level sequence of elements. Notably, if the <code class="highlighter-rouge">map</code> operation results in a <code class="highlighter-rouge">None</code> value, the <code class="highlighter-rouge">flatten</code> operation will simply omit it.</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Seq[Option[Int]](Some(1), Some(2), None, Some(4)).flatMap(x =&gt; x) &gt;&gt;&gt; Seq(1, 2, 4) </code></pre></div></div> <p>In order to read in Thrift structs with optional fields, we simply <code class="highlighter-rouge">flatMap</code> over them, extracting the value of each field using a for-comprehension. Each line of the for-comprehension extracts the value of the option. If any field is empty, then the for-comprehension will yield <code class="highlighter-rouge">None</code>. If all are present, then it will yeild a tuple of (non-<code class="highlighter-rouge">Option</code>) values:</p> <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>val dataSeq: Seq[(String, Int]) = Thrift.read('data.dat', MyThriftStruct) .flatMap(struct =&gt; for { requestId &lt;- struct.requestIdOption value &lt;- struct.valueOption } yield { (requestId, value) } ) </code></pre></div></div> <p>It is useful to think of this in terms of functions and guarantees. Prior to the flatmap, we have substantially a struct of optional values, which may or many not be present. This type of data is very nonflexible to analyze, as we know nothing well-nigh the information these data contain.Withoutthe flatmap, we have guarantees well-nigh the data we are working with. In the context of a fast-moving company, the <code class="highlighter-rouge">flatMap</code> can be seen as providing a kind of semi-permeable filtering membrane: everything surpassing the <code class="highlighter-rouge">flatMap</code> is a somewhat vague unknown, subject to all of the shifting forces of the world outside (software and hardware changes, internal service changes, and so on).Withoutthe <code class="highlighter-rouge">flatMap</code>, we have guarantees well-nigh the data we are working with, permitting that specific team to pinpoint and solve the problem at hand. Afterwards, they output their own data, which will be consumed by flipside team in the same fashion.</p> <p>It is worth highlighting that this “semi-permeable membrane” is achieved via a coordination of two ostensibly unrelated components. The first is a flexible data representation, and the second is a language-specific mechanism for mapping over data. What is remarkable is the way that the two combine to provide an essential functionality, enabling teams to work with a unconfined deal of autonomy without needing to worry well-nigh remaining in unvarying synchronization virtually shared data types.</p> <h2 id="iv-conclusion">IV: Conclusion</h2> <p>Allowing for individual- and team-level autonomy while ensuring system-wide stability is difficult, but important to unzip in order to create a flexible and responsive engineering organization. Foursquare was worldly-wise to unzip this by leveraging a specific interaction of open-source tools (the Thrift project) and language-specific features (Scala’s flatmap), which combine to create an constructive mediation layer in between individuals and teams and the engineering organization at large.</p> Tue, 22 May 2018 00:00:00 +0000 http://kronosapiens.github.io/blog/2018/05/22/thrift-flatmap.html http://kronosapiens.github.io/blog/2018/05/22/thrift-flatmap.html programming scala thrift blog The Future of Housing, in Three Parts <p>The future of housing will squint very variegated from the past. This essay will discuss three aspects of the future of housing. The first section looks at the economics of housing, particularly the forfeit savings which come from shifting accent to worldwide space over private. The second looks at the social dimension of cohabitation, proposing ways by which the interpersonal challenges associated with communal living might be reduced. The third looks at the question of ownership and residency, and proposes mechanisms for aligning incentives between renters and owners.</p> <h2 id="i-economics">I. Economics</h2> <p>There are many challenges associated with life in cities; here we will focus on two:</p> <p>The first rencontre is that housing is damned expensive. As a knowledge-driven economy has pushed increasingly and increasingly people into cities, demand for housing has increased. While new minutiae is helping to meet this demand, we inevitably end up paying increasingly for less, with a room in a shared suite costing upwards of $1,400 a month in many cities.</p> <p>The second rencontre is that people in cities are lonely. Despite stuff surrounded by people, many urban dwellers wits feelings of profound social isolation. Some people find social stressing at work, or among a lucky yank of roommates, but many do not.</p> <p>Now consider: these problems are each other’s solution.</p> <p>Increased demand for limited urban space and an unsatisfied hunger for meaningful social interactions creates heady opportunity for a new tideway to housing, one which emphasizes shared space and increasingly efficient infrastructure. For example, instead of offering a dozen studio apartments, each with small bathrooms and kitchens, offer fifteen bedrooms, with a shared industrial kitchen, worldwide areas, and three or four large bathrooms. This latter tideway allows increasingly people to live in the same space, reduce financing via economies of scale, all the while creating myriad opportunities for affirming social interaction. Further, offering housing at the bed or room level rather than the suite level makes it easier to provide flexible contracts and lends itself naturally to the inclusion of pre-existing furnishings: both lulu conveniences for urban dwellers. In short, increasingly of the good stuff, and for less.</p> <p>While this model of housing is not new, with roots in the decades-old cooperative movement, it is in the process of stuff re-discovered by for-profit housing providers wideness the United States. The vital sketch is this: modern urban dwellers value flexibility and convenience increasingly than personal space, so offer them small personal spaces paired with suavities and worldwide spaces, via flexible contracts as reasonable prices. Starcity, Common, Ollie, and WeLive are a number of companies attempting to innovate withal these lines, often under the imprint of “co-living”. While similar in spirit, these organizations differ in their target demographics, and thus in their approaches to amenities: some, like WeLive and Ollie, segregate to tuition a premium for events and services; others, like StarCity and Common, seek to pass much of their savings withal to the residents, offering housing at competitive price points and letting residential social dynamics unfold organically.</p> <p>While this model of housing may be unfamiliar to many, the significant advantages it provides to urban residents all but guarantees that this model will protract to expand in the years to come. As early adopters help refine early experiments, a virtuous trundling will be created, improving the wits of communal living in the short and medium term and shaping tastes and expectations among the unstipulated population in the long term.</p> <p>Current ventures in the space focus primarily on new construction. It would be interesting to see a visitor struggle to develop a unstipulated model for turning towardly single-family homes (such as a New York brownstone) into communal living space. While this tideway likely poses spare challenges, it stands to reason that many of these homes are increasingly suitable than not, once stuff possessed of shared kitchens and bathrooms. The property management visitor that manages to develop a quality product – offering low prices and flexibility to renters, and a stable income stream to owners – is positioned to do quite well.</p> <p>Quoth <a href="https://starcity.com/faq">Starcity</a>:</p> <blockquote> <blockquote> <p>Communal housing is often the highest and weightier use of existing real estate, and we work with owners and developers to turn their properties into resource efficient spaces with higher-than-market yield.</p> </blockquote> </blockquote> <p>As an aside, the adoption of the shared kitchen model leads directly to the viability of shared supplies buying, in which the towers purchases supplies at zillion prices and/or participates in CSAs, making it easier to provide residents with high-quality supplies at low cost, and with less waste.</p> <h2 id="ii-relationships">II. Relationships</h2> <p>הִנֵּה מַה טוֹב וּמַה נָּעִים שֶׁבֶת אָחִים גַּם יַחַד</p> <blockquote> <blockquote> <p>Behold, how good and how pleasant it is for brethren to dwell together in unity!</p> </blockquote> </blockquote> <p>Beyond physical health, relationships are the <a href="https://news.harvard.edu/gazette/story/2017/04/over-nearly-80-years-harvard-study-has-been-showing-how-to-live-a-healthy-and-happy-life/">most important thing</a> in life. While relationships are built in many ways: through school, work, hobbies, and sports, one tried and true route to friendship remains shared housing. When people live together, there are myriad opportunities for interaction, creating the conditions for friendships to blossom. Having friends at home turns the home into a warm space: an emotional as well as physical refuge.</p> <p>If living with friends and loved ones is so great, then why isn’t everybody leading fun, affirming home lives? The wordplay is that living with people is hard. There are boundaries to be negotiated, tasks to be distributed, and decisions to be made. Without the towardly structure and maintenance, tensions accumulate, the good times run out, and folks decide that it’s a bad idea to live with friends. Some people have the luck or maturity to pull it off, but many don’t. It’s a prisoners dilemma-style tragedy (if everyone cooperates, everyone wins, but if only one person doesn’t cooperate, they goody from everyone else’s work, so in the end no one cooperates).</p> <p>Fortunately, there’s hope. Just like we invented tools to build houses and to do math, we invented tools to make help us make choices. Voting systems. Legal systems. Chore wheels. Mechanisms and processes of all kinds, each with their strengths and weaknesses. And while the work of living together goes vastitude a single system or process (as generations of idealistic leaders inevitably rediscover), these tools can and do help.Withoutall, decision-making is fundamentally a problem of information-processing, and we’ve gotten quite good at that.</p> <p>As an aside, it is worth noting that most of the mechanisms we socialize with self-ruling decision-making were ripened hundreds or plane thousands of years ago: proposals, votes, elections, representatives. These tools were ripened during an era of significantly increasingly limited technology. If we had to start again, with all of our sophisticated information-processing tools, <a href="http://nbviewer.jupyter.org/github/kronosapiens/thesis/blob/master/tex/thesis.pdf">what might we build</a>?</p> <p>Imagine for a moment that there was technology layer which significantly reduced the friction involved in living with others. A technology layer which made it easier to resolve conflict, to organize work, and to manage resources. Such a tool would indulge increasingly people, from increasingly backgrounds, to successfully navigate the ups and downs of shared space, with less overhead than the managed solutions discussed earlier.</p> <p>One could oppose that there is no tool which can really substitute for a group of people gathering with intention. In response, consider that we requite children training wheels when they learn to ride a bike. By providing a tool to help the child, they are worldly-wise to develop the foundational skills to sooner ride on their own. For groups who are once functioning at a upper level, they should protract to do so. The question is developing tools to make it easier for increasingly people, with potentially less intention, to successfully live together.</p> <p>Now, what are some things we might expect this tool to do?</p> <ul> <li>A way to describe, prioritize, track, and reward chores and household work.</li> <li>A way to pool funds for shared expenses like utilities, vital supplies, etc.</li> <li>A way to describe and decide between towers goals , such as parties and major purchases.</li> <li>A way to represent seniority, if desired, with senior residents receiving uneaten priority or influence over domestic affairs, such as voting or room selection.</li> <li>A way to penalize members for bad behavior.</li> </ul> <p>A tool which made it easy for groups of people without prior wits in self-governance to succeed these tasks would significantly lower the frictions involved with shared living, and indulge increasingly people to wangle the financial and emotional benefits which come from low-conflict cohabitation.</p> <p>Such a tool could go much further. By providing a flexible and powerful ways for explicitly measuring and rewarding household work, this tool provides a potential ways for addressing the long-standing devaluation of domestic labor, a miracle historically linked to gender and racial inequality.</p> <p>There are many ways in which one might build such a tool. One creative and promising tideway involves leveraging trendy ideas from the cryptocurrency community, in which a multi-purpose token is used to create an internal economy. Here’s how it might work:</p> <p>Imagine that all residents possessed some value of a towers token. Every week, a stock-still percentage of existing tokens are re-allocated to a pool. All chores for the week are prescribed a token-denominated bounty, which can be dynamically increased by residents if they finger the chore is pressing. Residents who well-constructed chores (with verification) receive tokens, with those taking on high-value chores getting increasingly tokens. Holding tokens gives residents voting power on house issues, which ways that residents who take on increasingly of the work of the house have a worthier say in house issues. Residents who misbehave can be fined in tokens, which go when into the shared pool. If a resident runs out of tokens, they may be asked to leave.</p> <p>This tideway is promising in that it makes explicit the implicit link between contributions to a towers and influence over the direction of the space. Further, it allows for the residents to collectively, dynamically determine the value of various tasks, without specifying when and by whom those tasks must be completed. If a task, such as dishes, is going undone, residents can upvote the task until a member feels that the bounty is worth the work. If one resident is regularly contributing increasingly than another, the overall typecasting of tokens will shift towards the person contributing increasingly to the building. If all residents are contributing equally, then the token distribution remains equal.</p> <p>In regards to the dollar value of these tokens, one idea might be to peg the tokens to a security deposit: moving in, you receive a unrepealable number of tokens. When you move out, thesping you have the same number of tokens, you receive your petrifaction back. If, during your tenure, you have piled increasingly tokens, you receive increasingly than your deposit. If you have lost tokens, you receive less. This creates an internal market in which residents are incentivized, but not obligated, to participate on the ongoing maintenance of the building.</p> <p>The hope is that by providing a transparent, explicit mechanism for coordinating house activities, a increasingly diverse (economically, culturally, neurologically) group of individuals will be worldly-wise to successfully live together.</p> <p>This could go plane further. It would not be a stretch to take a resident’s activities in a single towers (priorities, contributions, reliability, etc) and feed it into a persistent reputation system which carries in between buildings, making it easier for people to find uniform housemates in the future, as well as making the provider of this tool an indispensable resource in the long-run. An essential stardom would be made between wool traits (such as timely rent payments) and relative traits (some people prefer a increasingly laid-back environment, some a increasingly tidy one, the important thing is to pair people with similar wants).</p> <h2 id="iii-ownership">III. Ownership</h2> <p>This section begins with a personal story. In January of 2016, I moved into the ground floor of a brand-new towers in Bushwick. Our 4-bedroom unit came with a backyard, and as the first occupants of the apartment, we found our new yard filled with the construction refuse that the contractors had neglected to remove: trash, metal, and unset touchable left in the rain. When we signed our lease, the property managers pledged that when summer came around, they would have the yard cleaned up.</p> <p>June rolled around, and as management unfurled to stilt its feet, one of my roommates and I decided to take ownership of the situation. We went to the local hardware store and bought some tools: rakes, shovels, and a pickaxe. Over the next month, we spent afternoons and weekends restoring our yard: transplanting out the metal and glass, digging the garbage and rocks out of the soil. We pulled what seemed to be a never-ending stream of garbage (pipe! tire!) out of the ground – it felt as though we were the first people in years to requite that land any love.</p> <p>We cleared the ground, built a firepit out of the reclaimed stones, planted grass, and plane set up an archery range. For a time, it was a magical yard, with archery during the day and friends virtually the wildfire at night. Creating that yard was a physical labor, but plane more, it was a spiritual one. It was a powerful experience, to use one’s own soul to create an stimulating and harmonious order in a living space, and one which left a permanent, positive mark on the apartment, the building, and plane the neighborhood.</p> <p>Fast forward well-nigh a year, and things at the suite had gone south. Poor communication, excessive partying, and lack of well-spoken boundaries had brought the good times to a close. Myself and flipside of the roommates (ironically, the two who had built the yard) decided to undeniability it quits (at well-nigh the same time).</p> <p>Since we were moving out mid-lease, we had to pay a fee. I reached out to the management visitor to ask if they would unbelieve any of the fee in light of the contributions I had made to the apartment. They refused. I then asked if they would be willing to at least recoup me for the forfeit of the tools and my time, in light of their failure to follow through on their own promise to do work on the yard. They refused again. They made no wisecrack of the value which my labor created for their property. It hurt, and made me cautious well-nigh giving again.</p> <p>Demand for housing in cities has created a perpetual seller’s market, in which landlords have few incentives to provide good service, often vicarial as “rent-seekers” in the archetype sense of the term. This can, and often does, create an viperish relationship between renters and landlords. Some owners are motivated to pericope as much value as possible from tenants, and provide as little as possible in return. As a consequence, renters learn to pericope as much as possible from the landlords, and requite as little as possible in return: a trundling of neglect leading to derelict living spaces. While some owners and renters establish good relationships and work towards bilateral benefit, bad actors create a market-for-lemons in housing. While efforts have been made to write this, there remains work to be done.</p> <p>It is important to realize that properties exist in space, but they moreover exist in time. Neighborhoods change, and properties increase or subtract in value considering of the people who live in them. When a person occupies a place for a period of time, they contribute to that place for the elapsing of that time. If a person occupies a building, and that towers appreciates in value, we can oppose that the person played a part in creating that value. To fix the wrenched relationship between owners and tenants, we need a way for tenants to capture a share of that value. Further, while gentrification may be inevitable, the stormy pill would be much easier to swallow if it could be washed lanugo with a sweet nectar of a four to seven icon dividend (depending on the situation).</p> <p>On the other hand, it is important to unclose that tenants destroy value (via unstipulated wear and tear), just as much as they can be said to create it (although we would say that this depreciation is once built into rents). Further, the effect of individual tenants on property value is highly contextual. To take the example of New York City, a group of individual tenants living in the Lower East Side (a well-established, popular neighborhood) in 2018 are unlikely to be contributing much to the value of the neighborhood. On the other hand, the group of artists and proprietors living in Williamsburg in 2000, and who lay the foundations the vibrant neighborhood it would later become, can be said to have unsalaried immensely. The same could be said for the punks who squatted in x-rated buildings in AlphabetMunicipalityin the 70s and 80s and built a series of polity gardens, many of which <a href="https://en.wikipedia.org/wiki/C-Squat">exist to this day</a>.</p> <p>With that in mind, we can say that there are some situations in which tenants have a legitimate requirement to the appreciation of their buildings, and some where they do not. For short-term tenants in established and desirable neighborhoods, there is likely little that they can be said to have directly contributed. For tenants in less established neighborhoods, or long-term tenants in gentrifying neighborhoods, there is a stronger specimen for their receiving some fraction of the appreciated value.</p> <p>The solution need not be dramatic, and there are a number of ways to tideway the issue.</p> <p>The first is for the owner to take out an probity loan versus the value increase of the building, and to disburse this loan to tenants as a function of their tenure and behavior. As part of the lease, the management could guarantee that 2% of the increase in appraised value will stockpile to the tenants, with rules that late rent payments will result in a penalty to the disbursement.</p> <p>The second is to set whispered some percentage of future rental income in a separate fund, and to disburse shares of this fund to tenants. In this way, tenants can enjoy some of the future rental income of the building: worthwhile if they expect that future rent will be higher than present. Conditions could be placed on these shares limiting the horizon of time for which they hold value (i.e. a share could represent the right to 1% of rental income each month for the next eighteen months).</p> <p>The third is to have tenants purchase a share in the building, in a similar spirit to a condominium purchase, which gives the tenant the right to rent a room in the building. When moving out, the tenant can sell this share on an unshut market, letting the tenant capture the differential in the desirability of the space from when they moved in to when they moved out: a security petrifaction which increases in value as the neighborhood does.</p> <p>The essential idea is to encourage tenants to think as though they were owners: creating wealth slowly and for the long-term. Such a mechanic has the potential to modernize the relationships between tenants and landowners, as well as provide a novel ways for renters to build wealth and establish themselves in life – particularly compelling for younger renters with less work experience, and expressly for those who are struggling to proceeds a foothold in the modern economy. All of these mechanisms entail the owner giving up a small fraction of their asset, but we believe that this value be increasingly than repaid by the improved relationships with the tenants. Our hope is that owners who offer these terms find that they vamp <a href="https://www.castlebraid.com/">more desirable tenants</a>, and thus competitive forces will bring these practices into the mainstream.</p> <h2 id="iv-conclusion">IV. Conclusion</h2> <p>This essay has discussed three aspects of the future of housing. Each issue was treated separately, but it is not difficult to imagine how all three of these aspects naturally synergize. Housing stock emphasizing shared space, internal tools to facilitate self-management, and leases providing a share of ownership could come together to create a radically new type of housing which transforms the wits of life in cities.</p> Tue, 20 Mar 2018 00:00:00 +0000 http://kronosapiens.github.io/blog/2018/03/20/housing-future.html http://kronosapiens.github.io/blog/2018/03/20/housing-future.html economics housing governance blockchain blog Proof of Work vs Proof of Stake: a Mirror of History <p>I.</p> <p>I went to an wondrous debate tonight at Grand Central Tech.</p> <p>Hosted by Crypto NYC, the event pit two prominent Proof of Work advocates versus Proof of State well-wisher Nate Rush in an engaging debate over arguably the most important question facing the blockchain community.</p> <p>For those unfamiliar, “Proof of Work” and “Proof of Stake” are types of what is known as a “consensus algorithm”: a set of rules for how a blockchain decides what transactions wilt “canonical” and which do not. A blockchain’s consensus algorithm is a little bit like its constitution: the fundamental rules which pinpoint it and determine its behavior.</p> <p>Of the two, Proof of Work (PoW) is currently the de-facto standard, powering both Bitcoin and Ethereum, the world’s two largest cryptocurrencies. In essence, PoW requires participants to demonstrate that they have washed-up a unrepealable value of computational work in order to place a transaction into the canon. By imposing this work requirement, Bitcoin and Ethereum make it economically inefficient to struggle to place fraudulent transactions into the canon. As long as the “good guys” have at least half of the computers, the “bad guys” will not be worldly-wise to commit fraud, and the transactions in the blockchain can be trusted as stuff accurate.</p> <p>Proof of Work was pioneered in 2008 in the original Bitcoin paper, written by the pseudonymous Satoshi Nakamoto. It was the first algorithm to solve the “double spend problem”, the achilles heel of prior cryptocurrencies. It is lauded for stuff effective, simple to understand, and simple to implement. Its essential drawback is its profound energy requirement: since the “work” of Proof of Work involves wrong-headed (and unproductive) computation, participants in the network are substantially competing to waste the most electricity.</p> <p>Proof of Stake (PoS) is a increasingly recent, experimental consensus algorithm often touted as a potential replacement for Proof of Work, and seeks to stave PoW’s substantial energy cost. It does so by making the determination of which transactions enter the weltanschauung a function not of computing power, but rather of possessing and committing tokens. A participant commits some tokens (such as Bitcoin or Ether) in order to have a say in which transactions wilt canon. The increasingly tokens they commit, the increasingly likely they will get to decide. If you commit coins to try to include fraudulent transactions, there is a upper endangerment those coins will be lost. Therefore, PoS creates an incentive to try and include honest transactions over fraudulent (assuming most of the token holders will prefer honest transactions). The rencontre with PoS is that it is increasingly vulnerable to unrepealable types of attack, such as those coming from manipulations of the price of the token. There is much interest in the Ethereum polity well-nigh moving to a Proof of Stake algorithm in the future, and it is an zone of zippy research.</p> <p>II.</p> <p>Listening to the debate (and reflecting on reading I had washed-up in the past on these protocols), I could not help but be reminded of a similar debate occurring in courses of international affairs. In international affairs, there is the notion of realpolitik, ripened in Germany in the 19th century, is a political philosophy which holds that, in the sparsity of a hypothetical strong global government, practical realities like military strength determine the relationships among nations. They view nations as co-existing in a “state of nature”, in which ideologies, values, and norms are irrelevant or minimally impactful. As a philosophy, it is known to be effective, simple to understand, and simple to implement.</p> <p>In sparsity of trusted diplomacy, states are incentivized to engage in arms’ race, competing to build stronger armies with increasingly wide weaponry. Resources are diverted from social goods like schools and hospitals, as the prosperous nation with a weaker military will inevitably be overrun. Periods of stability exist either when one nation is so powerful that there can be no challengers (a hegemony), or when multiple nations are similarly matched, and so the settle into a peaceful, if tense, stalemate (a multipolar world). Wars litter history like so many punctuation marks.</p> <p>Towards the end of World War II, the cooperating nations of the world came together in Bretton Woods, New Hampshire and set to work developing an alternative. This war of all versus all had gone on for too long, they said. We will develop an international system of organizations and connect the nations together via a network of finance and trade, with mechanisms to debate, regulate, and resolve disputes. We will write-up our swords into ploughshares, and learn war no more.</p> <p>This system has proven to be very effective. While it has facilitated the intense concentration of global wealth into the hands of a few, it has moreover succeeded in preventing total war among the unconfined powers, and in unstipulated is understood to have promoted science, technology, culture, and an improved quality of life for billions.</p> <p>III.</p> <p>It is interesting to unrelatedness these two systems of international wires with the two consensus algorithms stuff presented, and to reflect on the essential similarity in the problems they solve. In both cases, we seek to unzip order among competing, possibly viperish parties. The first tideway is to swivel the result on a show of force. This tideway works in as much as gravity is a proxy for other desirable attributes: tenancy over resources, organizational ability, conviction, and it is simple to understand and to implement. This tideway is limited in that it necessitates hard-won energy stuff put towards no productive work. Inasmuch as the essential process of life is the vanquishment and typecasting of energy, this is necessarily suboptimal.</p> <p>The second tideway is to struggle to create a increasingly nuanced system of mental relationships, and to hope that this framework is robust to the inevitable attempts at exploitation and capture by those seeking influence over the outcomes. Unlike the first approach, this tideway is increasingly vulnerable to stuff undermined, and in ways which can be difficult predict, detect, and respond. If we as a polity – a cryptocurrency community, or a world polity – have the skill and transferral to execute on the vision, then this system would indulge participants to contend in a way that is pearly and in which outcomes swivel on a exhibit of desirable attributes, but moreover highly efficient, in as much as it consumes as little energy as possible to preserve energy for other tasks. Higher risk, but higher reward.</p> <p>Looking at these two debates, which is substantially one debate, it is nonflexible not to take a moment to squint overly remoter when and yank a second connection, between these debates and our own minutiae as animals, in which we began as simple persons but over time ripened sophisticated minds. And the same way, the tensions between these schools of thought is the same as the tension between our persons and our minds: the mind carries risk, and often we wonder if the soul was all we needed. On the other hand, the soul is limited, and the mind holds such unconfined promise. Do we have the skill, vision, and fortitude to make the leap, without losing touch with where we came?</p> Fri, 16 Mar 2018 00:00:00 +0000 http://kronosapiens.github.io/blog/2018/03/16/pow-vs-pos.html http://kronosapiens.github.io/blog/2018/03/16/pow-vs-pos.html economics governance blockchain algorithms blog Introducing Talmud <p>It is with a mix of excitement and trepidation that I present <a href="http://talmud.ai">Talmud</a>, a recent undertaking self-styled as a “collaborative art project” exploring identity. Why “Talmud”?Consideringthe name evokes the idea of a stream of learning, with every participant increasing the knowledge of the whole.</p> <p>I.</p> <p>The seed of Talmud was sown in the Winter of 2012, when I was living in Jerusalem during one of the Gaza conflicts. Rockets were literally flying overhead, and the dialogues playing out over the internet were tense. It seemed that much of the vitriol fell withal the lines of identity. Amongst Jews, some felt their Zionist identity came first (in which Israel should take a hawkish defender militaristic stance towards Palestine); amongst others, their Humanist identity (in which Israel should take a increasingly dovish diplomatic stance). For others their Jewish identities came first, and so they did not take a side, not wanting to undermine their communal relationships.</p> <p>I remember thinking at that time that most of us are a little bit of all these things: part hawk, part dove, members of one or flipside community. We have many identities, but in variegated contexts some are increasingly salient than others, leading to contextually-specific mismatch when those identities differ. Wouldn’t it be helpful if people could indicate that although in this setting one identity came first, there was increasingly there? Some way to indicate that while there was a understructure for disagreement and conflict, there was moreover a understructure for coming-together and reconciliation? Some way to say <strong>“I am an X first, and a Y second”?</strong></p> <p>That was the idea; I envisioned people stuff worldly-wise to generate badges and displaying them on their social media profiles. Of course, stuff a dilletantish twenty-three year old, nothing came of it. In the intervening years, increasingly examples of these types of conflicts came to mind. Consider the American Civil War, pitting “brother versus brother, father versus son”. Here, political identity trumped the ostensibly powerful familial identity. Consider the McCarthy Era, in which people were often forced to segregate between their professional and their political identities: most chose the former. Consider flipside example from Jewish culture: the mucosa “Fiddler on the Roof”, in which the protaganist rejects his daughter without she marries outside the faith, placing religious identity whilom familial.</p> <p>Ultimately, we are all multi-faceted and have many identities: child, friend, lover, colleague. In wing to the high-profile conflicts mentioned above, we make these choices <strong>implicitly</strong> every day as we try to wastefulness our personal and professional lives: balancing friend and colleague, parent and professional. We make these choiced implicitly, underneath the surface and wieldy to understanding via our actions. What if there was a way to make these choices explicit, to facilitate our understanding of ourselves and each other? What if we could answer, empirically, the old question of whether we are fundamentally the same and our seperateness an illusion, or whether our differences run deep and the road to coexistence needs be arduous?</p> <p>II.</p> <p>Addressing the question of identity empirically is challenging, in that our subject matter is highly subjective: “who am I?” Conveniently, I wrote my <a href="http://kronosapiens.github.io/blog/2017/02/06/thesis.html">master’s thesis</a> on the very topic of measuring subjectivities. As much as Talmud is the realization of an idea several years old, it is moreover an expression of theory and algorithms ripened much increasingly recently.</p> <p>Talmud (and the thesis on which it draws) is based on the notion of “pairwise preference”: given two options, you segregate one (or potentially neither). The goody of pairwise preferences are twofold. First, it is an efficient and robust way to measure something subjective: you either like A largest than B, B largest than A, or you can’t decide. Second, pairwise preferences are responsible to many types of mathematical and computational analysis, permitting us to derive powerful and highly interpretable insights from simple data.</p> <p>For instance, Talmud users can wordplay the pursuit questions:</p> <ol> <li>What are my most important identities (as percentages of a whole)?</li> <li>How similar or variegated are my identities to those of flipside group?</li> </ol> <p>Other questions we could potentially answer:</p> <ol> <li>How strong or flexible are my preferences overall?</li> <li>Are identities stuff presented at the right level of wresting (such as “Musician” instead of “Pianist”)?</li> </ol> <p>One nice thing is that the theory overdue Talmud is increasingly unstipulated than the question of identities. For example, Talmud could be trivially well-timed to the pursuit use cases:</p> <ol> <li>Participatory budgeting by <strong>local government</strong> (“Parks”, “Police”, “Roads”, “Schools”, etc.)</li> <li>Interest group insemination at a <strong>co-working space</strong> (“Hiking”, “Crafting”, “Music”, “Board Games”, etc.)</li> <li>Roommate matching in a <strong>housing cooperative</strong> (“Clean”, “Social”, “Quiet”, “Food”, “Space”, etc.)</li> </ol> <p>The first and second example makes use of the ranking analysis, the second and third make use of the similarity analysis. I’ll note that these ideas are not new: the use of pairwise interactions to derive rankings is a standard technique in machine learning (being the cadre idea behing Google’s original PageRank algorithm), and the use of pairwise preferences as a survey tool was washed-up a number of years ago by <a href="http://www.allourideas.com">AllOurIdeas</a>, a unconfined project and uncontrived inspiration overdue this work. The use of pairwise preferences to determine <em>similarity</em>, however, is not something I have seen elsewhere (although it very well may have been washed-up before).</p> <p>All said, my hope is that Talmud will find using as a flexible, efficient, and reliable instrument for measuring and analyzing subjective preference. An would-be hope to be sure, but not an untellable one.</p> Thu, 08 Feb 2018 00:00:00 +0000 http://kronosapiens.github.io/blog/2018/02/08/introducing-talmud.html http://kronosapiens.github.io/blog/2018/02/08/introducing-talmud.html economics governance measurement javascript machine-learning blog The Economics of Urban Farming <p>A few weeks ago, my girlfriend and I went on an urban sublet tour put on by Square Roots, an energetic participant in the urban farming movement. We were curious urban farming and wanted to learn more. The promise of urban farming is appealing: supplies production distributed throughout dumbo urban centers, giving municipality dwellers (half the world population) wangle to fresh and high-quality supplies grown under optimal conditions, while simultaneously eliminating the stat emissions necessitated by transporting supplies wideness long distances from rural production centers, as well as eliminating loss due to pests and disease, and reducing water usage via efficient reclamation.</p> <p>These benefits are real. However, there is a shadow side: much of this flexibility comes from growing supplies indoors: in specially-constructed <a href="http://aerofarms.com/">farming facilities</a>, or as Square Roots proposes, in standard shipping containers. Growing supplies indoors necessitates a new input, which traditional threshing gets for free: <strong>light</strong>.</p> <p>The importance of this input should be unmistakably stated: inasmuch as earth’s energy comes from the sun, the majority of our sources of energy involve harnessing this solar energy and making it misogynist for later consumption. Plants capture and use this energy in photosynthesis. The herbivores and omnivores which slosh the plants are using that same solar energy. Our fossil fuels consist of this same energy, well-matured over the undertow of thousands of years. Solar panels capture this same energy in increasingly sophisticated ways. As far as our planet is concerned, the Sun is primary source input from which new energy enters our system.</p> <p>A new form of agriculture, then, in which this solar power must be provided from <strong>within</strong> the system, would seem to have a pathological economics. To shrivel coal to power the lights which grow the plants is to leak energy out of a porous loop: urgent coal to grow the plants to feed the humans to mine the coal. From where does energy enter this system, to indulge it to grow? Light-powered threshing is fine for speciality crops, but would seem questionable as an input into our cadre sustenance loop.</p> <p>One could oppose that indoor, urban threshing brings many efficiencies which offset this new cost. Controlled environments reduce lost due to ripply weather and pests, powerfully multiplying the value of solar energy ultimately brought to market.Largestwater reclamation ways that supplies is grown with a fraction of the water used on traditional unshut farms. This saves energy financing previously needed to aquire and wipe water. In addition, growing supplies within a mile of where it is ultimately consumed brings transporation financing to nearly zero, eliminating the need for remoter energy inputs for transportation. Finally, as the supplies is of a higher quality, one could oppose that such supplies has benefits on the humans which ultimately slosh it, leading to myriad hard-to-measure personal and social benefits. The treatise concludes that despite needing an essential new input, the process has so many efficiencies that it ultimately becomes a increasingly efficient system for converting energy and material to food.</p> <p>How does this treatise hold up when unromantic to the specimen of Square Roots? At the sublet tour, I asked Tobias Peggs, the co-founder and CEO, the question concerning the new light inputs, and flipside attendee asked well-nigh land costs. His response was that a shipping container sublet unit forfeit well-nigh $1,200 per month to run: $600 to rent the parking space in Brooklyn, and flipside $600 to power the lights. These lights slosh 100 kilowatt-hours (kWh) of electricity per day: to put that in perspective, a modern fridge uses 350 kWh per <strong>year</strong>: these shipping containers require the energy equivalent of 100 modern fridges. Water financing are negligible.</p> <p>Now we ask: how much supplies does this grow? This containers are not huge. By maximizing output and minimizing loss, these containers produce well-nigh 50lb of vegetables per week, 200 per month: an impressive yield for the space. Dividing by cost, we get $1200 / 200 = $6 per pound of supplies (overwhelmingly, leafy greens). This is three <a href="https://www.bloomberg.com/news/articles/2017-08-28/amazon-cuts-prices-at-whole-foods-as-much-as-50-on-first-day">3x the cost</a> of a pound of organic Fuji apples at a midtown-Manhattan Whole Foods ($1.99), and 1.7x the forfeit of organic Baby kale ($3.49), without the Bezos price drop.</p> <p>Not great, but not terrible, expressly when you consider that this supplies is of higher quality plane than Whole Food’s best. Yet plane with all these efficiencies, it appears as though the new energy forfeit dominates the equation, making it difficult for these modern farmers to compete with their increasingly traditional counterparts. The sitution becomes increasingly chalenging when you consider a wider range of produce. These containers are usually growing herbs and leafy greens: plants with low biomass. There is interest in growing heaver foods like strawberries and tomatoes, but such foods would (unsurprisingly) require plane increasingly energy, the urban farmer’s disadvantage.</p> <p>One would naturally ask well-nigh solar panels. Could we not line the tops of these shipping containers with solar panels, and substantially protract to grow these plants using energy straight from the sun? When asked this, Peggs replied that current solar technology would indulge for rooftop panels to meet well-nigh 25% of the container farm’s energy needs.Thespingself-ruling installation and maintenance, installing rooftop panels would reduce energy forfeit by $150/mo, bringing cost-per-pound of supplies lanugo to $5.25, still a full 50% increasingly expensive than the $3.49 Whole Foods alternative.</p> <p>So what is Square Roots doing?</p> <ul> <li>Why is Square Roots iterating on the merchantry model of “entrepreneural urban farmer?”</li> <li>Why is Square Roots towers out a network of these farmers, each one hustling to sell their greens to local restaurants and specialty groceries, under Square Roots’ imprint?</li> <li>Why is Square Roots working to raise sensation of these volitional greens, focusing first on chefs and restaurants, tastemakers willing to pay a premium provide an no-go experience?</li> </ul> <p>They are, as Wayne Gretzky’s father famously taught, “skat[ing] to where the puck is going.” With Kimball Musk, brother of Elon, on the board, it seems fairly well-spoken that Square Roots is financial on a untried energy revolution. While today’s solar panels would power only 25% of the needs of a container farm, today’s solar panels are only virtually <a href="https://www.technologyreview.com/s/600922/first-solars-cells-break-efficiency-record/">20% efficient</a> in capturing the misogynist solar energy. If solar panels were ripened which were plane 80% efficient (no midpoint feat), then these container farms would be energy-independent, recreating the increasingly fundamental argricultural energy relationship. That growing (as opposed to leaking) energy loop, combined with the many efficiencies of container farming, would lead to container farms rhadamanthine a revolutionary gravity in supplies production.</p> <p>Today solar technology is not there. But in five or ten or twenty years, they perhaps might be. And when that day comes, Square Roots intends to be ready: with a vast network, a scalable merchantry model, and a powerful brand. Is this a gamble? Perhaps. But remember that risk is in the mind of the perceiver. What appears risky to one may not towards risky to another, as they see things differently.</p> Sun, 22 Oct 2017 00:00:00 +0000 http://kronosapiens.github.io/blog/2017/10/22/economics-urban-farming.html http://kronosapiens.github.io/blog/2017/10/22/economics-urban-farming.html econmics threshing blog Time andValidity<p>I.</p> <p>Living together, humans mart ideas.</p> <p>Some of those ideas have staying power. Views concerning good and evil and right self-mastery have been virtually for millenia. Notions of individual self-rule and equal rights have been virtually for centuries. Concepts of gender and racial equality, decades.</p> <p>Ideas come in and out of fashion; some last longer than others. Not all of them are good, and sometimes we have to let them go.</p> <p>Still, we expect people to stick to their beliefs: expressly our leaders and people we depend on. It is treasonous when leaders renege on important issues to suit their firsthand needs.</p> <p>At the same time, we don’t want people to finger like they must perform their beliefs under external pressure. As we change, our attitudes change, and our expression of those attitudes should be self-ruling to transpiration with them.</p> <p>We want freedom. We want stability. How do we wastefulness self and society? If something is good, will it last? If something lasts, is it good?</p> <p>II.</p> <p>Since the end of World War II and the ushering in of the postmodern age, it has wilt the norm to rencontre and disassemble the authorities of yesteryear. An idea which has been passed on for hundreds of years is of the same value as one freshly conceived that morning; it is our intellect, and nothing else, that arbitrates between them.</p> <p>The deconstruction was a cultural breakthrough, but has left us increasingly sensitive to dialectical tensions yet <a href="https://www.theatlantic.com/politics/archive/2016/05/the-peril-of-writing-a-provocative-email-at-yale/484418/">poorly-equipped</a> to resolve them.</p> <p>Ultimately, the postmodern vision has been a souvenir and a curse. We cannot hold ourselves right <em>a priori</em> and we must ultimately find a way to wastefulness flexiblity of thought with a valuing of tradition. The platonic wastefulness is one that allows an individual to transpiration their mind, while at the same time creating some incentive to stick to one’s beliefs. We must find a way to embrace transpiration without fearing destruction.</p> <p>It is easy to speak in generalities; it is nonflexible to put things into action. In an struggle at the latter, we will bring this wastefulness into practice, as a sit-in and extension of <a href="http://nbviewer.jupyter.org/github/kronosapiens/thesis/blob/master/tex/thesis.pdf">this theory</a> of preference graphs.</p> <p>III.</p> <p>To review the language of preference graphs, we an individual <script type="math/tex">e</script>, who has preferences written as <script type="math/tex">(b,a)</script> when <script type="math/tex">e</script> prefers <script type="math/tex">a</script> over <script type="math/tex">b</script>. We can imagine <script type="math/tex">(b,a)</script> as a preference, or arrow, from from <script type="math/tex">b</script> to <script type="math/tex">a</script>.</p> <p>Thusfar when aggregating preferences, all preferences are given a weight of 1. Now we introduce a new dimension to preferences: the <em>authority</em> of a preference, a variable weight specified as some function of the time <script type="math/tex">t</script> since <script type="math/tex">e</script> first expressed the preference <script type="math/tex">p = (b,a)</script>.If <script type="math/tex">p</script> is an wrong-headed preference and <script type="math/tex">t_p</script> is the time since that preference was first expressed, then the validity of <script type="math/tex">p</script> can be specified as:</p> <script type="math/tex; mode=display">auth(p) \triangleq f(t_p)</script> <p>The validity function is intentionally general; any function will do, and the nomination of function will shape our intereptation of the “authority.” Using a monotonically-increasing function, like the logarithm, creates an validity lines which is intuitive and useful.</p> <p>IV.</p> <p>What happens when we incorporate time into applications of preference graphs?Thespinga monotonically-increasing validity function and rational, self-interested participants, we might expect the following.</p> <ol> <li> <p>Individuals are incentivized to register their preferences as early as possible.Seemthat individuals would like their views to have the maximum impact on the group. In the context of an online using or service, this creates an valuable incentive to prefer the product as early as possible.</p> </li> <li> <p>Individuals will transpiration their preferences less frequently. If an individual changes their preference, the validity of that preference resets. If an individual then decided that their original preference was the right one, the preference resets again, and the piled validity of thier initial preference is lost. There is an incentive to get it right the first time.</p> </li> <li> <p>Individuals will transpiration their preference when their views truly change. There is no goody to holding on to views one no longer agrees with: if an individual truly feels differently well-nigh an issue, then updating their preference will unzip the desired directional affect.</p> </li> </ol> <p>In summary, the wing of a time dimension to a preference-aggregation platform creates powerful incentives to both prefer the platform and to behave responsibly once on the platform. It is expressly worth noting that the spare computational complexity associated with incorporating the time dimension is small: <script type="math/tex">O(n)</script>. That so many positive effects sally from a simple computation is highly suggestive.</p> Thu, 14 Sep 2017 00:00:00 +0000 http://kronosapiens.github.io/blog/2017/09/14/time-and-authority.html http://kronosapiens.github.io/blog/2017/09/14/time-and-authority.html voting consensus blockchain blog On Meaning in Games <h1 id="i">I.</h1> <p>Many years ago I read an interview of one of the game designers of World of Warcraft, a very popular massively multiplayer online role-playing game. It was a unconfined interview; I was most struck by the way the designer thought well-nigh the construction of the game world. I’ve tried to find the interview, to no avail. Here is my recollection of this response:</p> <blockquote> <p>When you’re designing a game like World of Warcraft, you need to realize that you’re not designing a single game, but rather many games, one nested inside the other like a set of Russian dolls. At the top level, you have the main narrative: Arthas the Lich King is wilting on destroying Azeroth, and you as the player must wilt strong to defeat him.</p> </blockquote> <blockquote> <p>Beneath that, there is the game of rhadamanthine a strong hero. You go on vita and fight monsters and whop your skills and reap powerful, enchanted items.</p> </blockquote> <blockquote> <p>Beneath that, there is the very dungeon raid: you must fight through the dungeon (or mountain, or fortress) and defeat the dragon (or necromancer, or baron) who guards the treasure.</p> </blockquote> <blockquote> <p>Beneath that, there is gainsay with a single monster: tossing spells, swinging swords, pressing “heal” every sixty seconds.</p> </blockquote> <blockquote> <p>Each one of these levels is a game, and each one of these games has to be fun.Weftdevelopment must be fun. Dungeon crawls must be fun.Gainsaymust be fun. If the game world is compelling and richly realized, but gainsay mechanics are tedious, then the game will not be fun to play. Conversely, if gainsay mechanics are well-executed, but the game world is unappetizing and boring, then the game will lose its appeal. For a game to have staying power, each of the multiple layers of the game needs to be fun.</p> </blockquote> <p>I loved this description, and what it revealed well-nigh the nature of games, experience, and meaning. The top-level game (defeat Arthas!) provides the main structure of the story: a single loop, without which the whole game ends. This top-level loop provides meaning to the levels of gameplay which support it: you are developing your hero, fighting monsters, etc <em>in order to</em> defeat Arthas. Without Arthas, the other games would have no meaning.</p> <p>Looking at it from the other direction, we see how the top-level game (defeat Arthas!) is realized, or implemented, by the levels underneath it. To defeat Arthas, we must strengthen our character, confront dangers, and defeat monsters. The top-level game is realized via the lower-level games, which provide the substance of the game experience. If these lower level games are poorly realized, then the process of defeating Arthas will be unrewarding.</p> <p>Notice moreover how the top-level games consist of longer narrative loops which trundling less frequently, while the low-level games are short cycles which repeat frequently.</p> <p>These relationships exist in miniature between any subset of these games. The desire to “clear” a dungeon provides meaning to individual fights with monsters; the individual fights with monsters consists of the wits of transplanting the dungeon.</p> <p>By the time we get to the simplest of games, that of “pressing the heal sawed-off every sixty seconds,” that simple whoopee has been imbued with meaning from the multiple games stacked upon it.</p> <h1 id="ii">II.</h1> <p>More than a handful of <a href="https://en.wikipedia.org/wiki/Nir_Eyal">careers</a> have been made in Silicon Valley selling foolproof formulas for creating “addictive” products, doling out “dopamine hits” at irregular intervals.</p> <p>As an exercise, lets unriddle a selection of products from the perspective of hierarchichal levels of gameplay and struggle to understand their appeal, with a mind to meaning coming top-down and substance coming bottom-up.</p> <p>Along the way, we will discuss the various forms which these games can take. For example, we will see how meaning can come from real-world social relationships, as much as from in-game narratives.</p> <h3 id="pokemon-go">Pokemon Go</h3> <p>Pokemon Go made waves when it was released in Summer 2016, notable for the way it incorporated real-world location into gameplay. Players would walk virtually the real world and encounter Pokemon via a google maps-style game screen. The game soared to the top of the charts, and that summer the streets were full of people playing the game.</p> <p>As summer turned to fall, however, players started to waif off. The cadre game mechanics had lost their lustre, and with no support for duels and trading, players found little reason to alimony transmissible pokemon.</p> <p>Here, we see how a well-executed (in fact, groundbreaking) low-level game mechanic (walk virtually and reservation pokemon) became unappealing without time, as there was no higher-level narrative to provide meaning to the game. The original Game Boy games pioneered the walk-and-catch mechanic (albeit without the real-world link), and made that mechanic the foundation for a larger narrative involving personal rivalry, evil organizations, and a league of fellow trainers to fight. Pokemon Go upgraded the cadre mechanic but failed to include any higher-level structure, such as a narrative or any type of peer-to-peer gameplay.</p> <p>What is remarkable is how Niantic, the maker of Pokemon Go, failed to implement any of these levels of gameplay in the year pursuit the game’s release. They spent the months pursuit the release working to make the hugely popular game increasingly stable (the weeks pursuit the release were plagued with crashes), which was the right thing to do.Withoutthat, though, they chose to add spare nuances to the cadre reservation mechanic (which was fine as-is) rather than implement any higher-level mechanics. As the game is now, it is incomplete.</p> <p>The huge miracle the game became in the initial months suggest that there is an want for an augmented-reality Pokemon game; if they were overly to well-constructed the game, it is likely that users would return.</p> <h3 id="facebook">Facebook</h3> <p>At first glance, Facebook might not towards to be game. But as an using which millions of people interact with regularly during their leisure time, it is worth considering it as such.</p> <p>With Facebook, the low-level loop comes via participation in the history feed. We post updates and share media, and our contributions are undisputed via likes and comments. The “game” is that of contributing content which is the most well-flavored to our network.</p> <p>One might observe that this “low-level” game loop is the entirety of the platform; where then are the higher-level game loops seemingly necessary for long-term appeal? The wordplay to that is that for Facebook, the higher-level game loop is our social life itself, which exists outside of the network, and is augmented by it. The genius of Facebook is that it embeds itself within an existing narrative structure, and makes itself indispensible to it.</p> <h3 id="donkey-kong">Donkey Kong</h3> <p>A archetype shopping game, in which the iconic notation of Mario and Donkey Kong make their debut. This game consists of manouvering Mario up a series of platforms and ladders, while lamister the rolling barrels that Donkey Kong continualy throws down. Donkey Kong has kidnapped a princess, and Mario is trying to reach her to rescue her.</p> <p>The game features a handful of levels, each level stuff completed when Mario has reached the top of the screen. The game ends when Mario reaches the top of the last level and rescues the princess.</p> <p>Although the game is simple, it has stood the test of time, plane rhadamanthine the subject of a <a href="https://en.wikipedia.org/wiki/The_King_of_Kong">documentary</a>. As with the example of Facebook, one might wonder as to the source of the game’s long-term appeal. The low-level loops are evident: jump over barrels and climb up ladders. What is it well-nigh this game which brings players back, year without year?</p> <p>The answer, as with Facebook, is the social embeddedness, in the form of the upper score board. While an individual play through Donkey Kong takes place in isolation and with minimal narrative, the opportunity to earn a upper score and add one’s initials to the public workbench (marking one’s territory as a reigning champion) gives meaning to what would otherwise wilt a fairly rote game.</p> <h3 id="swarm">Swarm</h3> <p>Swarm is a social life-logging app ripened by my visitor (Foursquare). In it, users “check in” to places they go in the real world, unlocking badges, earning coins, and competing for mayorships. Checking in to venues comprises the game’s low-level loop. The game’s initial diamond tried to create three higher-level loops: one for single players (badges), multiple players (mayorships), and social networks (leaderboards).</p> <p>This diamond was constructive for a period, and the app (then known as Foursquare) grew quickly in popularity. Over time, however, adoption leveled and the app failed to unzip the popularity of Facebook. With fewer users, the app failed to unzip the network effects of Facebook, and the leaderboards were not compelling for many users. The single-player token loop and multi-player mayorship loop are engaging, and serve well as mid-level game loops, but do not go far unbearable in constructing a top-level narrative to provide meaning to the vital check-in.</p> <p>One idea for Swarm would be to proffer the idea of badges and create a hierarchy of “Explorer’s Clubs,” encompassing increasingly large geographies. As a resident of Bushwick, a neighborhood in Brooklyn, I can join the Bushwick Explorer’s Club by checking in at least 50 times, to 10 variegated venues, in 5 categories. I can join the Crown Heights Explorer’s Club by meeting the same criteria in that neighborhood. The Brooklyn Explorer’s Club (corresponding to a larger geography) can be entered by joining the Explorer’s Clubs of at least four plug-in neighborhoods. The New YorkMunicipalityclub is joined analagously, without gaining entry to the clubs of at least three boroughs. We can envision state and national level clubs pursuit the same structure.</p> <p>The Explorer’s Club mechanic provides a top-level narrative by furnishing the implicit goal of gaining entry to the peerage “World Explorer’s Club,” at which point the user has “won” Swarm. In the same stroke, it creates spare mid-level loops via the increasingly wieldy neighborhood and municipality clubs. It creates an incentive for users to trammels in to a variety of places as they visit new cities, as joining local clubs helps the user proceeds wangle to regional and national clubs.</p> <p>Foursquare could enhance this mechanic remoter by providing in-app (or plane real-world) benefits to the members of these myriad clubs (who by definition are power users of the app). These benefits, if implemented well, would add to the meaning of these Explorer’s Clubs, and consequently imbue the cadre check-in mechanic with plane increasingly meaning.</p> Mon, 29 May 2017 00:00:00 +0000 http://kronosapiens.github.io/blog/2017/05/29/on-meaning-in-games.html http://kronosapiens.github.io/blog/2017/05/29/on-meaning-in-games.html games diamond philosophy blog